Skip to content

Commit f5fef77

Browse files
authored
Merge pull request #4199 from danwinship/kep-4004-implementable
KEP-4004: change from provisional to implementable
2 parents 9ca0e7c + 8214c39 commit f5fef77

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# The KEP must have an approver from the
2+
# "prod-readiness-approvers" group
3+
# of http://git.k8s.io/enhancements/OWNERS_ALIASES
4+
kep-number: 4004
5+
alpha:
6+
approver: "@wojtek-t"

keps/sig-network/4004-deprecate-kube-proxy-version/README.md

+17-4
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,18 @@ or even if kube-proxy is running.
7676

7777
### Non-Goals
7878

79+
- Having kube-proxy itself set `status.nodeInfo.kubeProxyVersion`. Components should not
80+
be trying to figure out what Service features are available based on the kube-proxy
81+
version anyway, since some clusters may run an alternative service proxy implementation.
82+
If there is a need for a Service proxy feature discovery feature in the future, then
83+
that would need to be designed at that time.
84+
85+
- Changing `v1.Node` validation to *require* that the field be unset.
86+
7987
## Proposal
8088

81-
The proposal is to deprecate the `kubeProxyVersion` field of `NodeStatus`, and to stop setting it in the future.
89+
The proposal is to deprecate the `kubeProxyVersion` field of `NodeStatus`, and to have
90+
kubelet set it to an empty string, rather than the kubelet version, in the future.
8291

8392
This field was used by the GCP cloud provider up until 1.28 for the legacy built-in cloud provider ([kubernetes #117806], and up until 1.29 for the external cloud-provider ([cloud-provider-gcp #533]). It may also be used by other components. Thus, we will use a feature gate to protect it until all components are fixed.
8493

@@ -120,9 +129,10 @@ to implement this enhancement.
120129

121130
- Add a test to `TestVersionInfo` in `pkg/kubelet/nodestatus` to see if FeatureGate behaves as expected when it is turned on or off.
122131
- If DisableNodeKubeProxyVersion FeatureGate is enabled:
123-
- `status.nodeInfo.kubeProxyVersion` will be empty.
132+
- `status.nodeInfo.kubeProxyVersion` will remain unset if it is initially unset.
133+
- `status.nodeInfo.kubeProxyVersion` will be cleared if it is set.
124134
- Else:
125-
- `status.nodeInfo.kubeProxyVersion` will be not empty .
135+
- `status.nodeInfo.kubeProxyVersion` will be set to the same value as `status.nodeInfo.kubeletVersion`
126136

127137
##### Integration tests
128138

@@ -177,7 +187,10 @@ The feature should continue to work just fine.
177187

178188
###### Are there any tests for feature enablement/disablement?
179189

180-
No, we don't need to test what happens when the value of the field changes, because our goal is to make sure no one is looking at the value at all, so no components should notice if the value changes.
190+
In addition to the unit tests, we will manually confirm that restarting kubelet with the
191+
feature gate toggled has the expected behavior (that it sets `kubeProxyVersion` if the
192+
feature gate is disabled, even if it doesn't also need to set `kubeletVersion`, and that
193+
it clears `kubeProxyVersion` if the feature gate is enabled).
181194

182195
### Rollout, Upgrade and Rollback Planning
183196

keps/sig-network/4004-deprecate-kube-proxy-version/kep.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ authors:
55
owning-sig: sig-network
66
participating-sigs:
77
- sig-node
8-
status: provisional
8+
status: implementable
99
creation-date: 2023-05-15
1010
reviewers:
1111
- "@danwinship"
@@ -39,4 +39,4 @@ feature-gates:
3939
disable-supported: true
4040

4141
# The following PRR answers are required at beta release
42-
metrics: []
42+
metrics: []

0 commit comments

Comments
 (0)