Skip to content

Commit eedfb6b

Browse files
authored
Merge pull request kubernetes#79223 from rosti/kubeadm-component-configs-versioned
kubeadm: component configs versioned
2 parents ce11622 + 994df0d commit eedfb6b

File tree

16 files changed

+77
-493
lines changed

16 files changed

+77
-493
lines changed

cmd/kubeadm/app/apis/kubeadm/BUILD

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ go_library(
1818
],
1919
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm",
2020
deps = [
21-
"//pkg/kubelet/apis/config:go_default_library",
22-
"//pkg/proxy/apis/config:go_default_library",
2321
"//staging/src/k8s.io/api/core/v1:go_default_library",
2422
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
2523
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
2624
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
2725
"//staging/src/k8s.io/cluster-bootstrap/token/api:go_default_library",
2826
"//staging/src/k8s.io/cluster-bootstrap/token/util:go_default_library",
2927
"//staging/src/k8s.io/cluster-bootstrap/util/secrets:go_default_library",
28+
"//staging/src/k8s.io/kube-proxy/config/v1alpha1:go_default_library",
29+
"//staging/src/k8s.io/kubelet/config/v1beta1:go_default_library",
3030
"//vendor/github.com/pkg/errors:go_default_library",
3131
],
3232
)

cmd/kubeadm/app/apis/kubeadm/types.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ package kubeadm
1919
import (
2020
v1 "k8s.io/api/core/v1"
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
22-
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
23-
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
22+
kubeproxyconfigv1alpha1 "k8s.io/kube-proxy/config/v1alpha1"
23+
kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
2424
)
2525

2626
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
@@ -182,9 +182,9 @@ type ImageMeta struct {
182182
// ComponentConfigs holds known internal ComponentConfig types for other components
183183
type ComponentConfigs struct {
184184
// Kubelet holds the ComponentConfiguration for the kubelet
185-
Kubelet *kubeletconfig.KubeletConfiguration
185+
Kubelet *kubeletconfigv1beta1.KubeletConfiguration
186186
// KubeProxy holds the ComponentConfiguration for the kube-proxy
187-
KubeProxy *kubeproxyconfig.KubeProxyConfiguration
187+
KubeProxy *kubeproxyconfigv1alpha1.KubeProxyConfiguration
188188
}
189189

190190
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

cmd/kubeadm/app/apis/kubeadm/validation/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ go_test(
3232
deps = [
3333
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
3434
"//cmd/kubeadm/app/apis/kubeadm/v1beta2:go_default_library",
35-
"//pkg/proxy/apis/config:go_default_library",
3635
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
3736
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
3837
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
38+
"//staging/src/k8s.io/kube-proxy/config/v1alpha1:go_default_library",
3939
"//vendor/github.com/spf13/pflag:go_default_library",
4040
"//vendor/k8s.io/utils/pointer:go_default_library",
4141
],

cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ import (
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
"k8s.io/apimachinery/pkg/util/sets"
2828
"k8s.io/apimachinery/pkg/util/validation/field"
29+
kubeproxyconfigv1alpha1 "k8s.io/kube-proxy/config/v1alpha1"
2930
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
3031
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
31-
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
3232
utilpointer "k8s.io/utils/pointer"
3333
)
3434

@@ -449,23 +449,23 @@ func TestValidateInitConfiguration(t *testing.T) {
449449
},
450450
},
451451
ComponentConfigs: kubeadm.ComponentConfigs{
452-
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
452+
KubeProxy: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
453453
BindAddress: "192.168.59.103",
454454
HealthzBindAddress: "0.0.0.0:10256",
455455
MetricsBindAddress: "127.0.0.1:10249",
456456
ClusterCIDR: "192.168.59.0/24",
457457
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
458458
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
459-
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
459+
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
460460
MasqueradeAll: true,
461461
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
462462
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
463463
},
464-
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
464+
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
465465
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
466466
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
467467
},
468-
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
468+
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
469469
MaxPerCore: utilpointer.Int32Ptr(1),
470470
Min: utilpointer.Int32Ptr(1),
471471
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
@@ -495,23 +495,23 @@ func TestValidateInitConfiguration(t *testing.T) {
495495
},
496496
},
497497
ComponentConfigs: kubeadm.ComponentConfigs{
498-
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
498+
KubeProxy: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
499499
BindAddress: "192.168.59.103",
500500
HealthzBindAddress: "0.0.0.0:10256",
501501
MetricsBindAddress: "127.0.0.1:10249",
502502
ClusterCIDR: "192.168.59.0/24",
503503
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
504504
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
505-
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
505+
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
506506
MasqueradeAll: true,
507507
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
508508
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
509509
},
510-
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
510+
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
511511
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
512512
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
513513
},
514-
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
514+
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
515515
MaxPerCore: utilpointer.Int32Ptr(1),
516516
Min: utilpointer.Int32Ptr(1),
517517
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},

cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/kubeadm/app/componentconfigs/BUILD

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,6 @@ go_library(
1818
"//cmd/kubeadm/app/features:go_default_library",
1919
"//cmd/kubeadm/app/util:go_default_library",
2020
"//cmd/kubeadm/app/util/apiclient:go_default_library",
21-
"//pkg/kubelet/apis/config:go_default_library",
22-
"//pkg/kubelet/apis/config/v1beta1:go_default_library",
23-
"//pkg/kubelet/apis/config/validation:go_default_library",
24-
"//pkg/proxy/apis/config:go_default_library",
25-
"//pkg/proxy/apis/config/v1alpha1:go_default_library",
26-
"//pkg/proxy/apis/config/validation:go_default_library",
2721
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
2822
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
2923
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
@@ -41,38 +35,31 @@ go_library(
4135
],
4236
)
4337

44-
filegroup(
45-
name = "package-srcs",
46-
srcs = glob(["**"]),
47-
tags = ["automanaged"],
48-
visibility = ["//visibility:private"],
49-
)
50-
51-
filegroup(
52-
name = "all-srcs",
53-
srcs = [":package-srcs"],
54-
tags = ["automanaged"],
55-
visibility = ["//visibility:public"],
56-
)
57-
5838
go_test(
5939
name = "go_default_test",
60-
srcs = [
61-
"config_test.go",
62-
"validation_test.go",
63-
],
40+
srcs = ["config_test.go"],
6441
embed = [":go_default_library"],
6542
deps = [
66-
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
6743
"//cmd/kubeadm/app/constants:go_default_library",
6844
"//cmd/kubeadm/app/util/apiclient:go_default_library",
69-
"//pkg/kubelet/apis/config:go_default_library",
70-
"//pkg/proxy/apis/config:go_default_library",
7145
"//staging/src/k8s.io/api/core/v1:go_default_library",
7246
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
7347
"//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
7448
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
7549
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
76-
"//vendor/k8s.io/utils/pointer:go_default_library",
7750
],
7851
)
52+
53+
filegroup(
54+
name = "package-srcs",
55+
srcs = glob(["**"]),
56+
tags = ["automanaged"],
57+
visibility = ["//visibility:private"],
58+
)
59+
60+
filegroup(
61+
name = "all-srcs",
62+
srcs = [":package-srcs"],
63+
tags = ["automanaged"],
64+
visibility = ["//visibility:public"],
65+
)

cmd/kubeadm/app/componentconfigs/config.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ import (
2525
"k8s.io/apimachinery/pkg/runtime"
2626
"k8s.io/apimachinery/pkg/util/version"
2727
clientset "k8s.io/client-go/kubernetes"
28+
kubeproxyconfigv1alpha1 "k8s.io/kube-proxy/config/v1alpha1"
29+
kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
2830
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
2931
"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
30-
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
31-
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
3232
)
3333

3434
// GetFromKubeletConfigMap returns the pointer to the ComponentConfig API object read from the kubelet-config-version
@@ -49,7 +49,7 @@ func GetFromKubeletConfigMap(client clientset.Interface, version *version.Versio
4949
}
5050

5151
// Decodes the kubeletConfigData into the internal component config
52-
obj := &kubeletconfig.KubeletConfiguration{}
52+
obj := &kubeletconfigv1beta1.KubeletConfiguration{}
5353
err = unmarshalObject(obj, []byte(kubeletConfigData))
5454
if err != nil {
5555
return nil, err
@@ -82,7 +82,7 @@ func GetFromKubeProxyConfigMap(client clientset.Interface, version *version.Vers
8282
}
8383

8484
// Decodes the Config map dat into the internal component config
85-
obj := &kubeproxyconfig.KubeProxyConfiguration{}
85+
obj := &kubeproxyconfigv1alpha1.KubeProxyConfiguration{}
8686
err = unmarshalObject(obj, []byte(kubeproxyConfigData))
8787
if err != nil {
8888
return nil, err

cmd/kubeadm/app/componentconfigs/defaults.go

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ import (
2727
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
2828
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
2929
"k8s.io/kubernetes/cmd/kubeadm/app/features"
30-
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
31-
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
3230
utilpointer "k8s.io/utils/pointer"
3331
)
3432

@@ -58,14 +56,16 @@ const (
5856

5957
// DefaultKubeProxyConfiguration assigns default values for the kube-proxy ComponentConfig
6058
func DefaultKubeProxyConfiguration(internalcfg *kubeadmapi.ClusterConfiguration) {
61-
externalproxycfg := &kubeproxyconfigv1alpha1.KubeProxyConfiguration{FeatureGates: make(map[string]bool)}
6259
kind := "KubeProxyConfiguration"
6360

64-
// Do a roundtrip to the external version for defaulting
65-
if internalcfg.ComponentConfigs.KubeProxy != nil {
66-
Scheme.Convert(internalcfg.ComponentConfigs.KubeProxy, externalproxycfg, nil)
61+
if internalcfg.ComponentConfigs.KubeProxy == nil {
62+
internalcfg.ComponentConfigs.KubeProxy = &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
63+
FeatureGates: map[string]bool{},
64+
}
6765
}
6866

67+
externalproxycfg := internalcfg.ComponentConfigs.KubeProxy
68+
6969
if externalproxycfg.ClusterCIDR == "" && internalcfg.Networking.PodSubnet != "" {
7070
externalproxycfg.ClusterCIDR = internalcfg.Networking.PodSubnet
7171
} else if internalcfg.Networking.PodSubnet != "" && externalproxycfg.ClusterCIDR != internalcfg.Networking.PodSubnet {
@@ -83,29 +83,20 @@ func DefaultKubeProxyConfiguration(internalcfg *kubeadmapi.ClusterConfiguration)
8383
if enabled, present := internalcfg.FeatureGates[features.IPv6DualStack]; present {
8484
externalproxycfg.FeatureGates[features.IPv6DualStack] = enabled
8585
}
86-
87-
// Run the rest of the kube-proxy defaulting code
88-
Scheme.Default(externalproxycfg)
89-
90-
if internalcfg.ComponentConfigs.KubeProxy == nil {
91-
internalcfg.ComponentConfigs.KubeProxy = &kubeproxyconfig.KubeProxyConfiguration{}
92-
}
93-
94-
// TODO: Figure out how to handle errors in defaulting code
95-
// Go back to the internal version
96-
Scheme.Convert(externalproxycfg, internalcfg.ComponentConfigs.KubeProxy, nil)
9786
}
9887

9988
// DefaultKubeletConfiguration assigns default values for the kubelet ComponentConfig
10089
func DefaultKubeletConfiguration(internalcfg *kubeadmapi.ClusterConfiguration) {
101-
externalkubeletcfg := &kubeletconfigv1beta1.KubeletConfiguration{}
10290
kind := "KubeletConfiguration"
10391

104-
// Do a roundtrip to the external version for defaulting
105-
if internalcfg.ComponentConfigs.Kubelet != nil {
106-
Scheme.Convert(internalcfg.ComponentConfigs.Kubelet, externalkubeletcfg, nil)
92+
if internalcfg.ComponentConfigs.Kubelet == nil {
93+
internalcfg.ComponentConfigs.Kubelet = &kubeletconfigv1beta1.KubeletConfiguration{
94+
FeatureGates: map[string]bool{},
95+
}
10796
}
10897

98+
externalkubeletcfg := internalcfg.ComponentConfigs.Kubelet
99+
109100
if externalkubeletcfg.StaticPodPath == "" {
110101
externalkubeletcfg.StaticPodPath = kubeadmapiv1beta2.DefaultManifestsDir
111102
} else if externalkubeletcfg.StaticPodPath != kubeadmapiv1beta2.DefaultManifestsDir {
@@ -181,16 +172,6 @@ func DefaultKubeletConfiguration(internalcfg *kubeadmapi.ClusterConfiguration) {
181172
// We cannot show a warning for RotateCertificates==false and we must hardcode it to true.
182173
// There is no way to determine if the user has set this or not, given the field is a non-pointer.
183174
externalkubeletcfg.RotateCertificates = kubeletRotateCertificates
184-
185-
Scheme.Default(externalkubeletcfg)
186-
187-
if internalcfg.ComponentConfigs.Kubelet == nil {
188-
internalcfg.ComponentConfigs.Kubelet = &kubeletconfig.KubeletConfiguration{}
189-
}
190-
191-
// TODO: Figure out how to handle errors in defaulting code
192-
// Go back to the internal version
193-
Scheme.Convert(externalkubeletcfg, internalcfg.ComponentConfigs.Kubelet, nil)
194175
}
195176

196177
// warnDefaultComponentConfigValue prints a warning if the user modified a field in a certain

cmd/kubeadm/app/componentconfigs/registrations.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ import (
2626
kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
2727
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
2828
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
29-
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
30-
kubeletconfigv1beta1scheme "k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1"
31-
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
32-
kubeproxyconfigv1alpha1scheme "k8s.io/kubernetes/pkg/proxy/apis/config/v1alpha1"
3329
)
3430

3531
// AddToSchemeFunc is a function that adds known types and API GroupVersions to a scheme
@@ -96,15 +92,15 @@ var Known Registrations = map[RegistrationKind]Registration{
9692
// TODO: When a beta version of the kube-proxy ComponentConfig API is available, start using it
9793
MarshalGroupVersion: kubeproxyconfigv1alpha1.SchemeGroupVersion,
9894
// AddToSchemeFuncs must use v1alpha1scheme defined in k8s.io/kubernetes, because the schema defined in k8s.io/kube-proxy doesn't have defaulting functions
99-
AddToSchemeFuncs: []AddToSchemeFunc{kubeproxyconfig.AddToScheme, kubeproxyconfigv1alpha1scheme.AddToScheme},
95+
AddToSchemeFuncs: []AddToSchemeFunc{kubeproxyconfigv1alpha1.AddToScheme},
10096
DefaulterFunc: DefaultKubeProxyConfiguration,
101-
ValidateFunc: ValidateKubeProxyConfiguration,
102-
EmptyValue: &kubeproxyconfig.KubeProxyConfiguration{},
97+
ValidateFunc: NoValidator("kubelet"),
98+
EmptyValue: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{},
10399
GetFromInternalConfig: func(cfg *kubeadmapi.ClusterConfiguration) (runtime.Object, bool) {
104100
return cfg.ComponentConfigs.KubeProxy, cfg.ComponentConfigs.KubeProxy != nil
105101
},
106102
SetToInternalConfig: func(obj runtime.Object, cfg *kubeadmapi.ClusterConfiguration) bool {
107-
kubeproxyConfig, ok := obj.(*kubeproxyconfig.KubeProxyConfiguration)
103+
kubeproxyConfig, ok := obj.(*kubeproxyconfigv1alpha1.KubeProxyConfiguration)
108104
if ok {
109105
cfg.ComponentConfigs.KubeProxy = kubeproxyConfig
110106
}
@@ -115,15 +111,15 @@ var Known Registrations = map[RegistrationKind]Registration{
115111
KubeletConfigurationKind: {
116112
MarshalGroupVersion: kubeletconfigv1beta1.SchemeGroupVersion,
117113
// PAddToSchemeFuncs must use v1alpha1scheme defined in k8s.io/kubernetes, because the schema defined in k8s.io/kubelet doesn't have defaulting functions
118-
AddToSchemeFuncs: []AddToSchemeFunc{kubeletconfig.AddToScheme, kubeletconfigv1beta1scheme.AddToScheme},
114+
AddToSchemeFuncs: []AddToSchemeFunc{kubeletconfigv1beta1.AddToScheme},
119115
DefaulterFunc: DefaultKubeletConfiguration,
120-
ValidateFunc: ValidateKubeletConfiguration,
121-
EmptyValue: &kubeletconfig.KubeletConfiguration{},
116+
ValidateFunc: NoValidator("kube-proxy"),
117+
EmptyValue: &kubeletconfigv1beta1.KubeletConfiguration{},
122118
GetFromInternalConfig: func(cfg *kubeadmapi.ClusterConfiguration) (runtime.Object, bool) {
123119
return cfg.ComponentConfigs.Kubelet, cfg.ComponentConfigs.Kubelet != nil
124120
},
125121
SetToInternalConfig: func(obj runtime.Object, cfg *kubeadmapi.ClusterConfiguration) bool {
126-
kubeletConfig, ok := obj.(*kubeletconfig.KubeletConfiguration)
122+
kubeletConfig, ok := obj.(*kubeletconfigv1beta1.KubeletConfiguration)
127123
if ok {
128124
cfg.ComponentConfigs.Kubelet = kubeletConfig
129125
}

0 commit comments

Comments
 (0)