Skip to content

Support out-of-process and out-of-tree cloud providers #88

Closed
@errordeveloper

Description

Feature Description:
Support out-of-tree and out-of-process cloud providers, a.k.a pluggable cloud providers.

Feature Progress:
In order to complete this feature, cloud provider dependencies need to be moved out the the following Kubernetes binaries, then docs and tests need to be added. The Links to the right hand side of the binary denote the PRs that lead to the completion of the sub-feature

  1. Kube-controller-manager -
  1. Kubelet
  1. Docs
  1. Tests
e2e Tests - Incomplete

The cloud-specific functionality of the above features needs to be moved into a new binary called cloud-controller-manager that support a plugin architecture.

Primary Contact: @wlan0

Responsible SIG: @k8s-mirror-cluster-lifecycle-feature-re

Design Proposal Link: kubernetes/community#128

Reviewers:
@luxas
@roberthbailey
@thockin

Approver:
@thockin

Feature Target:
Alpha: 1.7
Beta: 1.8
Stable: 1.10


Here's an updated status report for this feature, please let me know if anything needs clarification:

Beta (starting v1.11)

  • The common interface used by cloud providers has been well tested and support will not be dropped, though implementation details may change. Any methods that are deprecated should follow the Kubernetes Deprecation Policy.
  • The cloud controller manager has been tested by various cloud providers and is considered safe to use for out-of-tree providers. Features to be deprecated that are part of the cloud controller manager (controllers, component flags, etc) will follow the Kubernetes Deprecation Policy.
  • The cloud controller manager does not run in any cluster by default. It must be explicitly turned on and added like any other control plane component. Instructions for setup may slightly vary per cloud provider. More details here.

Reasoning for Graduation

There were a few things on our TODO list that we wanted to get done before graduating to beta such as collecting E2E tests from all providers & improving out-of-tree storage. However, many of these initiatives require collaboration from external parties that was delaying progress on this effort. In addition, there was uncertainty since we do not develop some of the components we rely on, a good example is whether CSI would be able to meet demands for out-of-tree storage that was on par with in-tree storage support. Though in hindsight we have more confidence in CSI, prior to its beta release it was unclear if it would meet our requirements. With this context in mind, we had decided to graduate to beta because:

  • blocking out-of-tree cloud providers from going beta meant that less in-tree providers will adopt this feature.
  • some goals (like E2E tests from cloud providers) requires a significant amount of collaboration and may unnecessarily block progress for many releases.
  • features that are lacking from the cloud controller manager (mainly storage) would be handled by future projects from other SIGs (e.g. CSI by SIG Storage).

Goals for GA (targetted for v1.13/v1.14)

  • Frequently collect E2E tests results from all in-tree & out-of-tree cloud providers SIG Cloud Provider KEP: Reporting Conformance Test Results to Testgrid community#2224
  • Cloud Provider Documentation includes:
    • “Getting Started” documentation - outlines the necessary steps required to stand up a Kubernetes cluster.
    • Documentation outlining all cloud provider features such as LoadBalancers, Volumes, etc. There should be docs providing a high-level overview and docs that dig into sufficient details on how each feature works under the hood.
    • Docs should also be centralized in an automated fashion where documentation from all cloud providers are placed into a central location (ideally https://kubernetes.io/docs/home/).
  • A well-documented plan exists for how to migrate a cluster from using in-tree cloud provider to out-of-tree cloud provider, this only applies to AWS, Azure, GCP, OpenStack, and VMWare.
  • All current cloud providers have implemented an out-of-tree solution, deprecation of in-tree code is preferred but not a requirement.

Metadata

Labels

kind/featureCategorizes issue or PR as related to a new feature.sig/cloud-providerCategorizes an issue or PR as relevant to SIG Cloud Provider.sig/cluster-lifecycleCategorizes an issue or PR as relevant to SIG Cluster Lifecycle.stage/betaDenotes an issue tracking an enhancement targeted for Beta statustracked/noDenotes an enhancement issue is NOT actively being tracked by the Release Team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions