|
1 | 1 | # KEP-2395: Removing In-Tree Cloud Provider Code
|
2 | 2 |
|
3 | 3 | <!-- toc -->
|
4 |
| -- [Release Signoff Checklist](#release-signoff-checklist) |
5 |
| -- [Terms](#terms) |
6 |
| -- [Summary](#summary) |
7 |
| -- [Motivation](#motivation) |
8 |
| - - [Goals](#goals) |
9 |
| - - [Non-Goals](#non-goals) |
10 |
| -- [Proposal](#proposal) |
11 |
| - - [Risks and Mitigations](#risks-and-mitigations) |
12 |
| -- [Design Details](#design-details) |
13 |
| - - [Phase 1 - Moving Cloud Provider Code to Staging](#phase-1---moving-cloud-provider-code-to-staging) |
14 |
| - - [Phase 2 - Building CCM from Provider Repos](#phase-2---building-ccm-from-provider-repos) |
15 |
| - - [Phase 3 - Migrating Provider Code to Provider Repos](#phase-3---migrating-provider-code-to-provider-repos) |
16 |
| - - [Phase 4 - Disabling In-Tree Providers](#phase-4---disabling-in-tree-providers) |
17 |
| - - [Staging Directory](#staging-directory) |
18 |
| - - [Cloud Provider Instances](#cloud-provider-instances) |
19 |
| - - [Test Plan](#test-plan) |
20 |
| - - [Prerequisite testing update](#prerequisite-testing-update) |
21 |
| - - [Unit tests](#unit-tests) |
22 |
| - - [Integration tests](#integration-tests) |
23 |
| - - [e2e tests](#e2e-tests) |
24 |
| - - [Graduation Criteria](#graduation-criteria) |
25 |
| - - [Alpha](#alpha) |
26 |
| - - [Beta](#beta) |
27 |
| - - [GA](#ga) |
28 |
| - - [Deprecation](#deprecation) |
29 |
| - - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) |
30 |
| - - [Cloud Provider Specific Guidance](#cloud-provider-specific-guidance) |
31 |
| - - [General Guidance](#general-guidance) |
32 |
| - - [Version Skew Strategy](#version-skew-strategy) |
33 |
| -- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire) |
34 |
| - - [Feature Enablement and Rollback](#feature-enablement-and-rollback) |
35 |
| - - [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning) |
36 |
| - - [Monitoring Requirements](#monitoring-requirements) |
37 |
| - - [Dependencies](#dependencies) |
38 |
| - - [Scalability](#scalability) |
39 |
| - - [Troubleshooting](#troubleshooting) |
40 |
| -- [Implementation History](#implementation-history) |
41 |
| -- [Drawbacks](#drawbacks) |
42 |
| -- [Alternatives](#alternatives) |
43 |
| - - [Staging Alternatives](#staging-alternatives) |
44 |
| - - [Git Filter-Branch](#git-filter-branch) |
45 |
| - - [Build Location Alternatives](#build-location-alternatives) |
46 |
| - - [Build K8s/K8s from within K8s/Cloud-provider](#build-k8sk8s-from-within-k8scloud-provider) |
47 |
| - - [Build K8s/Cloud-provider within K8s/K8s](#build-k8scloud-provider-within-k8sk8s) |
48 |
| - - [Config Alternatives](#config-alternatives) |
49 |
| - - [Use component config to determine where controllers run](#use-component-config-to-determine-where-controllers-run) |
| 4 | +- [KEP-2395: Removing In-Tree Cloud Provider Code](#kep-2395-removing-in-tree-cloud-provider-code) |
| 5 | + - [Release Signoff Checklist](#release-signoff-checklist) |
| 6 | + - [Terms](#terms) |
| 7 | + - [Summary](#summary) |
| 8 | + - [Motivation](#motivation) |
| 9 | + - [Goals](#goals) |
| 10 | + - [Non-Goals](#non-goals) |
| 11 | + - [Proposal](#proposal) |
| 12 | + - [Risks and Mitigations](#risks-and-mitigations) |
| 13 | + - [Design Details](#design-details) |
| 14 | + - [Phase 1 - Moving Cloud Provider Code to Staging](#phase-1---moving-cloud-provider-code-to-staging) |
| 15 | + - [Phase 2 - Building CCM from Provider Repos](#phase-2---building-ccm-from-provider-repos) |
| 16 | + - [Phase 3 - Migrating Provider Code to Provider Repos](#phase-3---migrating-provider-code-to-provider-repos) |
| 17 | + - [Phase 4 - Disabling In-Tree Providers](#phase-4---disabling-in-tree-providers) |
| 18 | + - [Staging Directory](#staging-directory) |
| 19 | + - [Cloud Provider Instances](#cloud-provider-instances) |
| 20 | + - [Test Plan](#test-plan) |
| 21 | + - [Prerequisite testing update](#prerequisite-testing-update) |
| 22 | + - [Unit tests](#unit-tests) |
| 23 | + - [Integration tests](#integration-tests) |
| 24 | + - [e2e tests](#e2e-tests) |
| 25 | + - [Graduation Criteria](#graduation-criteria) |
| 26 | + - [Alpha](#alpha) |
| 27 | + - [Beta](#beta) |
| 28 | + - [GA](#ga) |
| 29 | + - [Deprecation](#deprecation) |
| 30 | + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) |
| 31 | + - [Cloud Provider Specific Guidance](#cloud-provider-specific-guidance) |
| 32 | + - [General Guidance](#general-guidance) |
| 33 | + - [Version Skew Strategy](#version-skew-strategy) |
| 34 | + - [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire) |
| 35 | + - [Feature Enablement and Rollback](#feature-enablement-and-rollback) |
| 36 | + - [How can this feature be enabled / disabled in a live cluster?](#how-can-this-feature-be-enabled--disabled-in-a-live-cluster) |
| 37 | + - [Does enabling the feature change any default behavior?](#does-enabling-the-feature-change-any-default-behavior) |
| 38 | + - [Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)?](#can-the-feature-be-disabled-once-it-has-been-enabled-ie-can-we-roll-back-the-enablement) |
| 39 | + - [What happens if we reenable the feature if it was previously rolled back?](#what-happens-if-we-reenable-the-feature-if-it-was-previously-rolled-back) |
| 40 | + - [Are there any tests for feature enablement/disablement?](#are-there-any-tests-for-feature-enablementdisablement) |
| 41 | + - [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning) |
| 42 | + - [How can a rollout or rollback fail? Can it impact already running workloads?](#how-can-a-rollout-or-rollback-fail-can-it-impact-already-running-workloads) |
| 43 | + - [What specific metrics should inform a rollback?](#what-specific-metrics-should-inform-a-rollback) |
| 44 | + - [Were upgrade and rollback tested? Was the upgrade-\>downgrade-\>upgrade path tested?](#were-upgrade-and-rollback-tested-was-the-upgrade-downgrade-upgrade-path-tested) |
| 45 | + - [Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.?](#is-the-rollout-accompanied-by-any-deprecations-andor-removals-of-features-apis-fields-of-api-types-flags-etc) |
| 46 | + - [Monitoring Requirements](#monitoring-requirements) |
| 47 | + - [How can an operator determine if the feature is in use by workloads?](#how-can-an-operator-determine-if-the-feature-is-in-use-by-workloads) |
| 48 | + - [How can someone using this feature know that it is working for their instance?](#how-can-someone-using-this-feature-know-that-it-is-working-for-their-instance) |
| 49 | + - [What are the reasonable SLOs (Service Level Objectives) for the enhancement?](#what-are-the-reasonable-slos-service-level-objectives-for-the-enhancement) |
| 50 | + - [What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service?](#what-are-the-slis-service-level-indicators-an-operator-can-use-to-determine-the-health-of-the-service) |
| 51 | + - [Are there any missing metrics that would be useful to have to improve observability of this feature?](#are-there-any-missing-metrics-that-would-be-useful-to-have-to-improve-observability-of-this-feature) |
| 52 | + - [Dependencies](#dependencies) |
| 53 | + - [Does this feature depend on any specific services running in the cluster?](#does-this-feature-depend-on-any-specific-services-running-in-the-cluster) |
| 54 | + - [Scalability](#scalability) |
| 55 | + - [Will enabling / using this feature result in any new API calls?](#will-enabling--using-this-feature-result-in-any-new-api-calls) |
| 56 | + - [Will enabling / using this feature result in introducing new API types?](#will-enabling--using-this-feature-result-in-introducing-new-api-types) |
| 57 | + - [Will enabling / using this feature result in any new calls to the cloud provider?](#will-enabling--using-this-feature-result-in-any-new-calls-to-the-cloud-provider) |
| 58 | + - [Will enabling / using this feature result in increasing size or count of the existing API objects?](#will-enabling--using-this-feature-result-in-increasing-size-or-count-of-the-existing-api-objects) |
| 59 | + - [Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs?](#will-enabling--using-this-feature-result-in-increasing-time-taken-by-any-operations-covered-by-existing-slisslos) |
| 60 | + - [Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components?](#will-enabling--using-this-feature-result-in-non-negligible-increase-of-resource-usage-cpu-ram-disk-io--in-any-components) |
| 61 | + - [Can enabling / using this feature result in resource exhaustion of some node resources (PIDs, sockets, inodes, etc.)?](#can-enabling--using-this-feature-result-in-resource-exhaustion-of-some-node-resources-pids-sockets-inodes-etc) |
| 62 | + - [Troubleshooting](#troubleshooting) |
| 63 | + - [How does this feature react if the API server and/or etcd is unavailable?](#how-does-this-feature-react-if-the-api-server-andor-etcd-is-unavailable) |
| 64 | + - [What are other known failure modes?](#what-are-other-known-failure-modes) |
| 65 | + - [What steps should be taken if SLOs are not being met to determine the problem?](#what-steps-should-be-taken-if-slos-are-not-being-met-to-determine-the-problem) |
| 66 | + - [Implementation History](#implementation-history) |
| 67 | + - [Drawbacks](#drawbacks) |
| 68 | + - [Alternatives](#alternatives) |
| 69 | + - [Staging Alternatives](#staging-alternatives) |
| 70 | + - [Git Filter-Branch](#git-filter-branch) |
| 71 | + - [Build Location Alternatives](#build-location-alternatives) |
| 72 | + - [Build K8s/K8s from within K8s/Cloud-provider](#build-k8sk8s-from-within-k8scloud-provider) |
| 73 | + - [Build K8s/Cloud-provider within K8s/K8s](#build-k8scloud-provider-within-k8sk8s) |
| 74 | + - [Config Alternatives](#config-alternatives) |
| 75 | + - [Use component config to determine where controllers run](#use-component-config-to-determine-where-controllers-run) |
50 | 76 | <!-- /toc -->
|
51 | 77 |
|
52 | 78 | ## Release Signoff Checklist
|
@@ -627,6 +653,7 @@ the previous in-tree implementations.
|
627 | 653 | - 2021-08-04 - First Kubernetes release (v1.22) with `DisableCloudProviders` and `DisableKubeletCloudCredentialProviders` feature gates.
|
628 | 654 | - 2023-09-02 - Enable external CCMs by default for k/k CI.
|
629 | 655 | - 2023-05-07 - All the in-tree cloud providers have been removed.
|
| 656 | +- 2024-05-06 - Removed the last remaining in-tree gcp cloud provider and credential provider. The feature gates are promoted to GA and locked. |
630 | 657 |
|
631 | 658 | ## Drawbacks
|
632 | 659 |
|
|
0 commit comments