Skip to content

Commit 2e4bab8

Browse files
authored
Merge pull request kubernetes#90840 from rosti/kubeadm-move-kubelet-featuregates
kubeadm: Move IPv6DualStack feature gate to component config
2 parents db9b0b0 + b46259b commit 2e4bab8

File tree

4 files changed

+48
-12
lines changed

4 files changed

+48
-12
lines changed

cmd/kubeadm/app/componentconfigs/kubelet.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ func (kc *kubeletConfig) Default(cfg *kubeadmapi.ClusterConfiguration, _ *kubead
105105
kc.config.FeatureGates = map[string]bool{}
106106
}
107107

108+
// TODO: The following code should be removed after dual-stack is GA.
109+
// Note: The user still retains the ability to explicitly set feature-gates and that value will overwrite this base value.
110+
if enabled, present := cfg.FeatureGates[features.IPv6DualStack]; present {
111+
kc.config.FeatureGates[features.IPv6DualStack] = enabled
112+
}
113+
108114
if kc.config.StaticPodPath == "" {
109115
kc.config.StaticPodPath = kubeadmapiv1beta2.DefaultManifestsDir
110116
} else if kc.config.StaticPodPath != kubeadmapiv1beta2.DefaultManifestsDir {

cmd/kubeadm/app/componentconfigs/kubelet_test.go

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,45 @@ func TestKubeletDefault(t *testing.T) {
229229
},
230230
},
231231
{
232-
name: "Service subnet, dual stack defaulting works",
232+
name: "Service subnet, explicitly disabled dual stack defaulting works",
233+
clusterCfg: kubeadmapi.ClusterConfiguration{
234+
FeatureGates: map[string]bool{
235+
features.IPv6DualStack: false,
236+
},
237+
Networking: kubeadmapi.Networking{
238+
ServiceSubnet: "192.168.0.0/16",
239+
},
240+
},
241+
expected: kubeletConfig{
242+
config: kubeletconfig.KubeletConfiguration{
243+
FeatureGates: map[string]bool{
244+
features.IPv6DualStack: false,
245+
},
246+
StaticPodPath: kubeadmapiv1beta2.DefaultManifestsDir,
247+
ClusterDNS: []string{"192.168.0.10"},
248+
Authentication: kubeletconfig.KubeletAuthentication{
249+
X509: kubeletconfig.KubeletX509Authentication{
250+
ClientCAFile: constants.CACertName,
251+
},
252+
Anonymous: kubeletconfig.KubeletAnonymousAuthentication{
253+
Enabled: utilpointer.BoolPtr(kubeletAuthenticationAnonymousEnabled),
254+
},
255+
Webhook: kubeletconfig.KubeletWebhookAuthentication{
256+
Enabled: utilpointer.BoolPtr(kubeletAuthenticationWebhookEnabled),
257+
},
258+
},
259+
Authorization: kubeletconfig.KubeletAuthorization{
260+
Mode: kubeletconfig.KubeletAuthorizationModeWebhook,
261+
},
262+
HealthzBindAddress: kubeletHealthzBindAddress,
263+
HealthzPort: utilpointer.Int32Ptr(constants.KubeletHealthzPort),
264+
RotateCertificates: kubeletRotateCertificates,
265+
ResolverConfig: resolverConfig,
266+
},
267+
},
268+
},
269+
{
270+
name: "Service subnet, enabled dual stack defaulting works",
233271
clusterCfg: kubeadmapi.ClusterConfiguration{
234272
FeatureGates: map[string]bool{
235273
features.IPv6DualStack: true,
@@ -240,7 +278,9 @@ func TestKubeletDefault(t *testing.T) {
240278
},
241279
expected: kubeletConfig{
242280
config: kubeletconfig.KubeletConfiguration{
243-
FeatureGates: map[string]bool{},
281+
FeatureGates: map[string]bool{
282+
features.IPv6DualStack: true,
283+
},
244284
StaticPodPath: kubeadmapiv1beta2.DefaultManifestsDir,
245285
ClusterDNS: []string{"192.168.0.10"},
246286
Authentication: kubeletconfig.KubeletAuthentication{

cmd/kubeadm/app/phases/kubelet/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ go_library(
1414
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
1515
"//cmd/kubeadm/app/componentconfigs:go_default_library",
1616
"//cmd/kubeadm/app/constants:go_default_library",
17-
"//cmd/kubeadm/app/features:go_default_library",
1817
"//cmd/kubeadm/app/images:go_default_library",
1918
"//cmd/kubeadm/app/util:go_default_library",
2019
"//cmd/kubeadm/app/util/apiclient:go_default_library",

cmd/kubeadm/app/phases/kubelet/flags.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,12 @@ import (
2828

2929
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
3030
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
31-
"k8s.io/kubernetes/cmd/kubeadm/app/features"
3231
"k8s.io/kubernetes/cmd/kubeadm/app/images"
3332
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
3433
)
3534

3635
type kubeletFlagsOpts struct {
3736
nodeRegOpts *kubeadmapi.NodeRegistrationOptions
38-
featureGates map[string]bool
3937
pauseImage string
4038
registerTaintsUsingFlags bool
4139
}
@@ -63,7 +61,6 @@ func GetNodeNameAndHostname(cfg *kubeadmapi.NodeRegistrationOptions) (string, st
6361
func WriteKubeletDynamicEnvFile(cfg *kubeadmapi.ClusterConfiguration, nodeReg *kubeadmapi.NodeRegistrationOptions, registerTaintsUsingFlags bool, kubeletDir string) error {
6462
flagOpts := kubeletFlagsOpts{
6563
nodeRegOpts: nodeReg,
66-
featureGates: cfg.FeatureGates,
6764
pauseImage: images.GetPauseImage(cfg),
6865
registerTaintsUsingFlags: registerTaintsUsingFlags,
6966
}
@@ -109,12 +106,6 @@ func buildKubeletArgMapCommon(opts kubeletFlagsOpts) map[string]string {
109106
kubeletFlags["hostname-override"] = nodeName
110107
}
111108

112-
// TODO: The following code should be removed after dual-stack is GA.
113-
// Note: The user still retains the ability to explicitly set feature-gates and that value will overwrite this base value.
114-
if enabled, present := opts.featureGates[features.IPv6DualStack]; present {
115-
kubeletFlags["feature-gates"] = fmt.Sprintf("%s=%t", features.IPv6DualStack, enabled)
116-
}
117-
118109
return kubeletFlags
119110
}
120111

0 commit comments

Comments
 (0)