From ecb3a7cabf9805c3a480f0972a5be34eb5b40375 Mon Sep 17 00:00:00 2001 From: Katrina Verey Date: Tue, 15 Nov 2022 17:32:41 -0500 Subject: [PATCH] Initial KEP for improving pruning in kubectl apply --- .../3659-kubectl-apply-prune/README.md | 896 ++++++++++++++++++ .../initial-apply.png | Bin 0 -> 24198 bytes .../sig-cli/3659-kubectl-apply-prune/kep.yaml | 40 + .../subsequent-apply.png | Bin 0 -> 43791 bytes 4 files changed, 936 insertions(+) create mode 100644 keps/sig-cli/3659-kubectl-apply-prune/README.md create mode 100644 keps/sig-cli/3659-kubectl-apply-prune/initial-apply.png create mode 100644 keps/sig-cli/3659-kubectl-apply-prune/kep.yaml create mode 100644 keps/sig-cli/3659-kubectl-apply-prune/subsequent-apply.png diff --git a/keps/sig-cli/3659-kubectl-apply-prune/README.md b/keps/sig-cli/3659-kubectl-apply-prune/README.md new file mode 100644 index 00000000000..563a8e1045d --- /dev/null +++ b/keps/sig-cli/3659-kubectl-apply-prune/README.md @@ -0,0 +1,896 @@ + +# KEP-3659: kubectl apply --prune redesign and graduation strategy + + + + +- [Release Signoff Checklist](#release-signoff-checklist) +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Background](#background) + - [Use case](#use-case) + - [Feature history](#feature-history) + - [Current implementation](#current-implementation) + - [Problems with the current implementation](#problems-with-the-current-implementation) + - [Correctness: object leakage](#correctness-object-leakage) + - [Scalability](#scalability) + - [UX: easy to trigger inadvertent over-selection](#ux-easy-to-trigger-inadvertent-over-selection) + - [UX: flag changes affect correctness](#ux-flag-changes-affect-correctness) + - [UX: difficult to use with custom resources](#ux-difficult-to-use-with-custom-resources) + - [Sustainability: incompatibility with server-side apply](#sustainability-incompatibility-with-server-side-apply) +- [Proposal](#proposal) + - [User Stories (Optional)](#user-stories-optional) + - [Story 1](#story-1) + - [Story 2](#story-2) + - [Notes/Constraints/Caveats (Optional)](#notesconstraintscaveats-optional) + - [Risks and Mitigations](#risks-and-mitigations) +- [Design Details](#design-details) + - [Test Plan](#test-plan) + - [Prerequisite testing updates](#prerequisite-testing-updates) + - [Unit tests](#unit-tests) + - [Integration tests](#integration-tests) + - [e2e tests](#e2e-tests) + - [Graduation Criteria](#graduation-criteria) + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) + - [Version Skew Strategy](#version-skew-strategy) +- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire) + - [Feature Enablement and Rollback](#feature-enablement-and-rollback) + - [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning) + - [Monitoring Requirements](#monitoring-requirements) + - [Dependencies](#dependencies) + - [Scalability](#scalability-1) + - [Troubleshooting](#troubleshooting) +- [Implementation History](#implementation-history) +- [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [Infrastructure Needed (Optional)](#infrastructure-needed-optional) + + +## Release Signoff Checklist + +Items marked with (R) are required *prior to targeting to a milestone / release*. + +- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR) +- [ ] (R) KEP approvers have approved the KEP status as `implementable` +- [ ] (R) Design details are appropriately documented +- [ ] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors) + - [ ] e2e Tests for all Beta API Operations (endpoints) + - [ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md) + - [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free +- [ ] (R) Graduation criteria is in place + - [ ] (R) [all GA Endpoints](https://github.com/kubernetes/community/pull/1806) must be hit by [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md) +- [ ] (R) Production readiness review completed +- [ ] (R) Production readiness review approved +- [ ] "Implementation History" section is up-to-date for milestone +- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io] +- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes + + + +[kubernetes.io]: https://kubernetes.io/ +[kubernetes/enhancements]: https://git.k8s.io/enhancements +[kubernetes/kubernetes]: https://git.k8s.io/kubernetes +[kubernetes/website]: https://git.k8s.io/website + +## Summary + + + +When creating objects with `kubectl apply`, it is frequently desired to make changes to the config that remove objects and then re-apply and have those objects deleted. Since Kubernetes v1.5, an alpha-stage `--prune` flag exists to support this workflow: it deletes objects previously applied that no longer exist in the source config. However, the current implementation has fundamental design flaws that limit its performance and lead to surprising behaviours. This KEP proposes a safer and more performant implementation for this feature, along with a plan that will enable it to progress out of alpha while continuing to satisfy the needs of the users who have come to depend on it over the past 20+ releases. + + +## Motivation + +### Goals + +- MUST use a pruning set identification algorithm that remains accurate regardless of what has changed between the previous and current sets +- MUST use a pruning set identification algorithm that scales to thousands of resources across hundreds of types +- MUST natively support custom resources +- MUST provide a way to accurately preview which objects will be deleted +- MUST support namespaced and non-namespaced resources; SHOULD support them within the same operation + + +### Non-Goals + +- MUST NOT formalize the grouping of objects under management (i.e. it is a just a set of objects, not an "application" or other high-level construct) or require the user to do so to use the feature +- MUST NOT require server-side API changes +- MUST NOT require third-party CRDs to be installed +- MAY still have limited performance when used to manage thousands of resources of hundreds of types in a single operation (MUST NOT be expected to overcome performance limitations of issuing many individual deletion requests, for example) + +## Background + +### Use case + +The pruning feature enables kubectl to automatically clean up previously applied objects that have been removed from the current configuration set. + +Adding the `--prune` flag to kubectl apply adds a deletion step after objects are applied, removing all objects that were previously applied AND are not currently being applied: `{objects to prune (delete)} = {previously applied objects} - {currently applied objects}`. + +In the illustration below, we initially apply a configuration set containing two objects: Object A and Object B. Then, we remove Object A from our configuration and add Object C. When we re-apply our configuration with pruning enabled, we expect Object A to be deleted (pruned), Object B to be updated, and Object C to be created. This basic use case works as expected today. + + + + +### Feature history + +The `--prune` flag (and dependent `--prune-whitelist` and `--all` flags) were added to `kubectl apply` back in [Kubernetes v1.5](https://github.com/kubernetes/kubernetes/commit/56a22f925f6f1fd774ad1ae9e04bcf8d75bbde63). Twenty releases later, this feature is still in alpha, as documented in `kubectl apply -h` (though interestingly not on the flag doc string itself, or during usage): + +
+Relevant portion of `kubectl apply -h` + +```shell +$ kubectl version --client --short +Client Version: v1.25.2 + +$ kubectl apply -h +Apply a configuration to a resource by file name or stdin. The resource name must be specified. This resource will be +created if it doesn't exist yet. To use 'apply', always create the resource initially with either 'apply' or 'create +--save-config'. + + JSON and YAML formats are accepted. + + Alpha Disclaimer: the --prune functionality is not yet complete. Do not use unless you are aware of what the current +state is. See https://issues.k8s.io/34274. + +Examples: + # Note: --prune is still in Alpha + # Apply the configuration in manifest.yaml that matches label app=nginx and delete all other resources that are not in +the file and match label app=nginx + kubectl apply --prune -f manifest.yaml -l app=nginx + + # Apply the configuration in manifest.yaml and delete all the other config maps that are not in the file + kubectl apply --prune -f manifest.yaml --all --prune-whitelist=core/v1/ConfigMap + +Options: + --all=false: + Select all resources in the namespace of the specified resource types. + --prune=false: + Automatically delete resource objects, that do not appear in the configs and are created by either apply or + create --save-config. Should be used with either -l or --all. + --prune-whitelist=[]: + Overwrite the default whitelist with for --prune + -l, --selector='': + Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching + objects must satisfy all of the specified label constraints. +``` +
+ +The reason for this stagnation is that the implementation has fundamental limitations that limit performance and cause unexpected behaviours. + +Acknowledging that pruning could not be progressed out of alpha in its current form, SIG CLI created a proof of concept for an alternative implmentation in the [cli-utils](https://github.com/kubernetes-sigs/cli-utils) repo in 2019 (initially [moved over](https://github.com/kubernetes-sigs/cli-utils/pull/1) from [cli-experimental#13](https://github.com/kubernetes-sigs/cli-experimental/pull/13)). This implementation was proposed in [KEP 810](https://github.com/kubernetes/enhancements/pull/810/files), which did not reach consensus and was ultimately closed. In the subsequent three years, work continued on the proof of concept, and other ecosystem tools (notably `kpt live apply`) have been using it successfully while the canoncial implementation in k/k has continued to stagnate. + +### Current implementation + +The implementation of this feature is not as simple as the illustration above might suggest at first glance. The core of the reason is that the previously applied set is not specifically encoded anywhere by the previous apply operation, and therefore that set needs to be dynamically discovered. + +Several different factors are used to select the set of objects to be pruned: + +1. **GVK allowlist**: A user-provided ( via `--prune-whitelist` until v1.26, `--prune-allowlist` in v1.26+) or defaulted list of GVK strings identifying which resources kubectl will consider for pruning. The default list is hardcoded. [[code](https://github.com/kubernetes/kubernetes/blob/e39a0af5ce0a836b30bd3cce237778fb4557f0cb/staging/src/k8s.io/kubectl/pkg/util/prune/prune.go#L28-L50)] +1. **namespace** (for namespaced resources): `kubectl` keeps track of which namespaces it has "visited" during the apply operation and considers both them and the objects they contain for pruning. [[code](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/cmd/apply/prune.go#L78)] +1. **the `kubectl.kubernetes.io/last-applied-configuration` annotation**: kubectl uses this as the signal that the object was created with `apply` as opposed to by another kubectl command or entity. Only objects created by apply are considered for pruning. [[code](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/cmd/apply/prune.go#L117-L120)] +1. **labels**: pruning forces users to specify either `--all` or `-l/--selector`, and in the latter case, the query selecting resources for pruning will be constrained by the provided labels (note that this flag also constrains the resources applied in the main operation) [[code](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/cmd/apply/prune.go#L99)] + +For a more detailed walkthrough of the implementation along with examples, please see [kubectl apply/prune: implementation and limitations](https://docs.google.com/document/d/1y747qL3GYMDDYHR8SqJ-6iWjQEdCJwK_n0z_KHcwa3I/edit#) by @seans3. + +### Problems with the current implementation + +#### Correctness: object leakage + + If an object is supposed to be pruned, but it is not, then it is leaked. This situation occurs when the set of previously applied objects selected is incomplete. There are two main ways this can happen: + - **GVK allowlist mismatch**: the allowlist is hardcoded (either by kubectl or by the user) and as such it is not tied in any way to the list of kinds we actually need to manage to prune effectively. For example, the default allowlist will never prune PDBs, regardless of whether current or previous operations created them. + - **namespace mismatch**: the namespace list is constructed dynamically from the _current_ set of objects, which causes object leakage when the current operation touches fewer namespaces than the previous one did. For example, if the initial operation touched namespaces A and B, and the second touched only B, nothing in namespace A will be pruned. + + TODO: link issues + +#### UX: flag changes affect correctness + +If the user changes the `--prune-allowlist` or `--selector` flags used with the apply command, this may radically change the scoping of the pruning operation, causing it over- or under-select resources. For example, if they add a new label to all their resources and adjust the `--selector` accordingly, this will have the side-effect of leaking ALL resources that should have been deleted during the operation (nothing will be pruned). On the contrary, if `--prune-allowlist` is expanded to include additional types or `--selector` is made more general, any objects that have been manually applied by other actors in the system may automatically get scoped in. + +TODO: link issues + +#### Scalability + +To discover the set of resources to be pruned, kubectl makes a LIST query to every GVR on the allowlist, for every namespace (if applicable): `GVR(namespaced)*Ns + GVR(global)`. For example, with the default list and one target namespace, this is 14 requests; with the default list and two namespaces, it jumps to 26. An obvious fix for some of the correctness issues described would be to get the full list of GVRs from discovery and query ALL of them, ensuring all previous objects are discovered. Indeed some tools do this, and pass the resulting list to kubectl's allowlist. But this strategy is clearly not performant, and many of the additional queries are wasted, as the GVRs in question are extremely unlikely to have resources managed via kubectl. + +A related issue is that the identifier of ownership for pruning is the last-applied annotation, which is not something that can be queried on. This means we cannot avoid retrieving irrelevant resources in the LIST requests we make. + +TODO: link issues + +#### UX: easy to trigger inadvertent over-selection + +The default allowlist, in addition to being incomplete, is unintuitive. Notably, it includes the cluster-scoped Namespace and PersistentVolume resources, and will prune these resources even if the `--namespace` flag is used. Given that Namespace deletion cascades to all the contents of the namespaces, this is particularly catastropic. + +Because every `apply` operation uses the same identity for the purposes of pruning (i.e. has the same last-applied annotation), it is easy to make a small change to the scoping of the command that will inadvertantly cover resources managed by other operations, with potentially disasterous effects. + +TODO: link issues + +#### UX: difficult to use with custom resources + +Because the default allowlist is hard-coded in the kubectl codebase, it inherently does not include any custom resources. Users who want to prune custom resources necessarily need to specify their own allowlist and keep it up to date. + +TODO: link issues + +#### Sustainability: incompatibility with server-side apply + +While it is not disabled, pruning does not work correctly with server-side apply today. If the objects being managed were created with server-side apply, or were migrated to server-side apply using a custom field manager, they will never be pruned. If they were created with client-side apply and migrated to server-side using the default field manager, they will be pruned as needed. The worst case is that the managed set includes objects in multiple of these states, leading to inconsistent behaviour. + +One solution to this would be to use the presence of the current field manager as the indicator of eligibility for pruning. However, field managers cannot be queried on any more than annotations can, so are not a great for an identifier we want to select on. It can also be considered problematic that the default state for server-side applied objects includes at least two field managers, which are then all taken to be object owners for the purposes of pruning, regardless of their intent to use this power. In other words, we end up introducing the possibilty of multiple owners without the possiblity of conflict detection. + +## Proposal + + + +### User Stories (Optional) + + + +#### Story 1 + +#### Story 2 + +### Notes/Constraints/Caveats (Optional) + + + +### Risks and Mitigations + + + +## Design Details + + + +### Test Plan + + + +[ ] I/we understand the owners of the involved components may require updates to +existing tests to make this code solid enough prior to committing the changes necessary +to implement this enhancement. + +##### Prerequisite testing updates + + + +##### Unit tests + + + + + +- ``: `` - `` + +##### Integration tests + + + +- : + +##### e2e tests + + + +- : + +### Graduation Criteria + + + +### Upgrade / Downgrade Strategy + + + +### Version Skew Strategy + + + +## Production Readiness Review Questionnaire + + + +### Feature Enablement and Rollback + + + +###### How can this feature be enabled / disabled in a live cluster? + + + +- [ ] Feature gate (also fill in values in `kep.yaml`) + - Feature gate name: + - Components depending on the feature gate: +- [ ] Other + - Describe the mechanism: + - Will enabling / disabling the feature require downtime of the control + plane? + - Will enabling / disabling the feature require downtime or reprovisioning + of a node? (Do not assume `Dynamic Kubelet Config` feature is enabled). + +###### Does enabling the feature change any default behavior? + + + +###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)? + + + +###### What happens if we reenable the feature if it was previously rolled back? + +###### Are there any tests for feature enablement/disablement? + + + +### Rollout, Upgrade and Rollback Planning + + + +###### How can a rollout or rollback fail? Can it impact already running workloads? + + + +###### What specific metrics should inform a rollback? + + + +###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested? + + + +###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.? + + + +### Monitoring Requirements + + + +###### How can an operator determine if the feature is in use by workloads? + + + +###### How can someone using this feature know that it is working for their instance? + + + +- [ ] Events + - Event Reason: +- [ ] API .status + - Condition name: + - Other field: +- [ ] Other (treat as last resort) + - Details: + +###### What are the reasonable SLOs (Service Level Objectives) for the enhancement? + + + +###### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service? + + + +- [ ] Metrics + - Metric name: + - [Optional] Aggregation method: + - Components exposing the metric: +- [ ] Other (treat as last resort) + - Details: + +###### Are there any missing metrics that would be useful to have to improve observability of this feature? + + + +### Dependencies + + + +###### Does this feature depend on any specific services running in the cluster? + + + +### Scalability + + + +###### Will enabling / using this feature result in any new API calls? + + + +###### Will enabling / using this feature result in introducing new API types? + + + +###### Will enabling / using this feature result in any new calls to the cloud provider? + + + +###### Will enabling / using this feature result in increasing size or count of the existing API objects? + + + +###### 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 non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components? + + + +### Troubleshooting + + + +###### How does this feature react if the API server and/or etcd is unavailable? + +###### What are other known failure modes? + + + +###### What steps should be taken if SLOs are not being met to determine the problem? + +## Implementation History + + + +## Drawbacks + + + +## Alternatives + + + +## Infrastructure Needed (Optional) + + diff --git a/keps/sig-cli/3659-kubectl-apply-prune/initial-apply.png b/keps/sig-cli/3659-kubectl-apply-prune/initial-apply.png new file mode 100644 index 0000000000000000000000000000000000000000..43469c5bf9cb0cd59fcf81ee51e20e8595bc238c GIT binary patch literal 24198 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