mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
Update unit tests
This commit is contained in:
parent
35673da7c5
commit
3594d2ca39
@ -25,8 +25,10 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
|
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
|
||||||
|
kubeletconfigscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme"
|
||||||
kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1"
|
kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1"
|
||||||
kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
|
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -81,8 +83,7 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
|
|||||||
Name: "foo",
|
Name: "foo",
|
||||||
Taints: []v1.Taint{},
|
Taints: []v1.Taint{},
|
||||||
}
|
}
|
||||||
obj.KubeletConfiguration = kubeadm.KubeletConfiguration{
|
extkubeletconfig := &kubeletconfigv1beta1.KubeletConfiguration{
|
||||||
BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{
|
|
||||||
StaticPodPath: "foo",
|
StaticPodPath: "foo",
|
||||||
ClusterDNS: []string{"foo"},
|
ClusterDNS: []string{"foo"},
|
||||||
ClusterDomain: "foo",
|
ClusterDomain: "foo",
|
||||||
@ -98,11 +99,12 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
RotateCertificates: true,
|
RotateCertificates: true,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
kubeletconfigv1beta1.SetDefaults_KubeletConfiguration(obj.KubeletConfiguration.BaseConfig)
|
obj.ComponentConfigs.Kubelet = &kubeletconfig.KubeletConfiguration{}
|
||||||
obj.KubeProxy = kubeadm.KubeProxy{
|
kubeletconfigv1beta1.SetDefaults_KubeletConfiguration(extkubeletconfig)
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
scheme, _, _ := kubeletconfigscheme.NewSchemeAndCodecs()
|
||||||
|
scheme.Convert(extkubeletconfig, obj.ComponentConfigs.Kubelet, nil)
|
||||||
|
obj.ComponentConfigs.KubeProxy = &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
FeatureGates: map[string]bool{"foo": true},
|
FeatureGates: map[string]bool{"foo": true},
|
||||||
BindAddress: "foo",
|
BindAddress: "foo",
|
||||||
HealthzBindAddress: "foo:10256",
|
HealthzBindAddress: "foo:10256",
|
||||||
@ -110,31 +112,30 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
|
|||||||
EnableProfiling: bool(true),
|
EnableProfiling: bool(true),
|
||||||
ClusterCIDR: "foo",
|
ClusterCIDR: "foo",
|
||||||
HostnameOverride: "foo",
|
HostnameOverride: "foo",
|
||||||
ClientConnection: kubeproxyconfigv1alpha1.ClientConnectionConfiguration{
|
ClientConnection: kubeproxyconfig.ClientConnectionConfiguration{
|
||||||
KubeConfigFile: "foo",
|
KubeConfigFile: "foo",
|
||||||
AcceptContentTypes: "foo",
|
AcceptContentTypes: "foo",
|
||||||
ContentType: "foo",
|
ContentType: "foo",
|
||||||
QPS: float32(5),
|
QPS: float32(5),
|
||||||
Burst: 10,
|
Burst: 10,
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 1},
|
SyncPeriod: metav1.Duration{Duration: 1},
|
||||||
},
|
},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeBit: utilpointer.Int32Ptr(0),
|
MasqueradeBit: utilpointer.Int32Ptr(0),
|
||||||
SyncPeriod: metav1.Duration{Duration: 1},
|
SyncPeriod: metav1.Duration{Duration: 1},
|
||||||
},
|
},
|
||||||
OOMScoreAdj: utilpointer.Int32Ptr(0),
|
OOMScoreAdj: utilpointer.Int32Ptr(0),
|
||||||
ResourceContainer: "foo",
|
ResourceContainer: "foo",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1},
|
UDPIdleTimeout: metav1.Duration{Duration: 1},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
MaxPerCore: utilpointer.Int32Ptr(2),
|
MaxPerCore: utilpointer.Int32Ptr(2),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5},
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5},
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5},
|
||||||
},
|
},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1},
|
||||||
},
|
|
||||||
}
|
}
|
||||||
obj.AuditPolicyConfiguration = kubeadm.AuditPolicyConfiguration{
|
obj.AuditPolicyConfiguration = kubeadm.AuditPolicyConfiguration{
|
||||||
Path: "foo",
|
Path: "foo",
|
||||||
|
@ -28,8 +28,8 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1"
|
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
|
||||||
kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1"
|
"k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig"
|
||||||
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
|
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -467,24 +467,24 @@ func TestValidateMasterConfiguration(t *testing.T) {
|
|||||||
DataDir: "/some/path",
|
DataDir: "/some/path",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "192.168.59.103",
|
BindAddress: "192.168.59.103",
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -512,24 +512,24 @@ func TestValidateMasterConfiguration(t *testing.T) {
|
|||||||
DataDir: "/some/path",
|
DataDir: "/some/path",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "192.168.59.103",
|
BindAddress: "192.168.59.103",
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -679,60 +679,56 @@ func TestValidateIgnorePreflightErrors(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestValidateKubeletConfiguration(t *testing.T) {
|
func TestValidateKubeletConfiguration(t *testing.T) {
|
||||||
successCase := &kubeadm.KubeletConfiguration{
|
successCase := &kubeletconfig.KubeletConfiguration{
|
||||||
BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{
|
CgroupsPerQOS: true,
|
||||||
CgroupsPerQOS: utilpointer.BoolPtr(true),
|
|
||||||
EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved"},
|
EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved"},
|
||||||
SystemCgroups: "",
|
SystemCgroups: "",
|
||||||
CgroupRoot: "",
|
CgroupRoot: "",
|
||||||
EventBurst: 10,
|
EventBurst: 10,
|
||||||
EventRecordQPS: utilpointer.Int32Ptr(5),
|
EventRecordQPS: 5,
|
||||||
HealthzPort: utilpointer.Int32Ptr(10248),
|
HealthzPort: 10248,
|
||||||
ImageGCHighThresholdPercent: utilpointer.Int32Ptr(85),
|
ImageGCHighThresholdPercent: 85,
|
||||||
ImageGCLowThresholdPercent: utilpointer.Int32Ptr(80),
|
ImageGCLowThresholdPercent: 80,
|
||||||
IPTablesDropBit: utilpointer.Int32Ptr(15),
|
IPTablesDropBit: 15,
|
||||||
IPTablesMasqueradeBit: utilpointer.Int32Ptr(14),
|
IPTablesMasqueradeBit: 14,
|
||||||
KubeAPIBurst: 10,
|
KubeAPIBurst: 10,
|
||||||
KubeAPIQPS: utilpointer.Int32Ptr(5),
|
KubeAPIQPS: 5,
|
||||||
MaxOpenFiles: 1000000,
|
MaxOpenFiles: 1000000,
|
||||||
MaxPods: 110,
|
MaxPods: 110,
|
||||||
OOMScoreAdj: utilpointer.Int32Ptr(-999),
|
OOMScoreAdj: -999,
|
||||||
PodsPerCore: 100,
|
PodsPerCore: 100,
|
||||||
Port: 65535,
|
Port: 65535,
|
||||||
ReadOnlyPort: 0,
|
ReadOnlyPort: 0,
|
||||||
RegistryBurst: 10,
|
RegistryBurst: 10,
|
||||||
RegistryPullQPS: utilpointer.Int32Ptr(5),
|
RegistryPullQPS: 5,
|
||||||
HairpinMode: "promiscuous-bridge",
|
HairpinMode: "promiscuous-bridge",
|
||||||
},
|
|
||||||
}
|
}
|
||||||
if allErrors := ValidateKubeletConfiguration(successCase, nil); len(allErrors) != 0 {
|
if allErrors := ValidateKubeletConfiguration(successCase, nil); len(allErrors) != 0 {
|
||||||
t.Errorf("failed ValidateKubeletConfiguration: expect no errors but got %v", allErrors)
|
t.Errorf("failed ValidateKubeletConfiguration: expect no errors but got %v", allErrors)
|
||||||
}
|
}
|
||||||
|
|
||||||
errorCase := &kubeadm.KubeletConfiguration{
|
errorCase := &kubeletconfig.KubeletConfiguration{
|
||||||
BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{
|
CgroupsPerQOS: false,
|
||||||
CgroupsPerQOS: utilpointer.BoolPtr(false),
|
|
||||||
EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved", "illegal-key"},
|
EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved", "illegal-key"},
|
||||||
SystemCgroups: "/",
|
SystemCgroups: "/",
|
||||||
CgroupRoot: "",
|
CgroupRoot: "",
|
||||||
EventBurst: -10,
|
EventBurst: -10,
|
||||||
EventRecordQPS: utilpointer.Int32Ptr(-10),
|
EventRecordQPS: -10,
|
||||||
HealthzPort: utilpointer.Int32Ptr(-10),
|
HealthzPort: -10,
|
||||||
ImageGCHighThresholdPercent: utilpointer.Int32Ptr(101),
|
ImageGCHighThresholdPercent: 101,
|
||||||
ImageGCLowThresholdPercent: utilpointer.Int32Ptr(101),
|
ImageGCLowThresholdPercent: 101,
|
||||||
IPTablesDropBit: utilpointer.Int32Ptr(-10),
|
IPTablesDropBit: -10,
|
||||||
IPTablesMasqueradeBit: utilpointer.Int32Ptr(-10),
|
IPTablesMasqueradeBit: -10,
|
||||||
KubeAPIBurst: -10,
|
KubeAPIBurst: -10,
|
||||||
KubeAPIQPS: utilpointer.Int32Ptr(-10),
|
KubeAPIQPS: -10,
|
||||||
MaxOpenFiles: -10,
|
MaxOpenFiles: -10,
|
||||||
MaxPods: -10,
|
MaxPods: -10,
|
||||||
OOMScoreAdj: utilpointer.Int32Ptr(-1001),
|
OOMScoreAdj: -1001,
|
||||||
PodsPerCore: -10,
|
PodsPerCore: -10,
|
||||||
Port: 0,
|
Port: 0,
|
||||||
ReadOnlyPort: -10,
|
ReadOnlyPort: -10,
|
||||||
RegistryBurst: -10,
|
RegistryBurst: -10,
|
||||||
RegistryPullQPS: utilpointer.Int32Ptr(-10),
|
RegistryPullQPS: -10,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
if allErrors := ValidateKubeletConfiguration(errorCase, nil); len(allErrors) == 0 {
|
if allErrors := ValidateKubeletConfiguration(errorCase, nil); len(allErrors) == 0 {
|
||||||
t.Errorf("failed ValidateKubeletConfiguration: expect errors but got no error")
|
t.Errorf("failed ValidateKubeletConfiguration: expect errors but got no error")
|
||||||
@ -742,24 +738,24 @@ func TestValidateKubeletConfiguration(t *testing.T) {
|
|||||||
func TestValidateKubeProxyConfiguration(t *testing.T) {
|
func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
successCases := []kubeadm.MasterConfiguration{
|
successCases := []kubeadm.MasterConfiguration{
|
||||||
{
|
{
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "192.168.59.103",
|
BindAddress: "192.168.59.103",
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -772,7 +768,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, successCase := range successCases {
|
for _, successCase := range successCases {
|
||||||
if errs := ValidateProxy(successCase.KubeProxy.Config, nil); len(errs) != 0 {
|
if errs := ValidateProxy(successCase.ComponentConfigs.KubeProxy, nil); len(errs) != 0 {
|
||||||
t.Errorf("failed ValidateProxy: expect no errors but got %v", errs)
|
t.Errorf("failed ValidateProxy: expect no errors but got %v", errs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -783,8 +779,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
masterConfig: kubeadm.MasterConfiguration{
|
masterConfig: kubeadm.MasterConfiguration{
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
// only BindAddress is invalid
|
// only BindAddress is invalid
|
||||||
BindAddress: "10.10.12.11:2000",
|
BindAddress: "10.10.12.11:2000",
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
@ -792,16 +788,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -815,8 +811,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
masterConfig: kubeadm.MasterConfiguration{
|
masterConfig: kubeadm.MasterConfiguration{
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
// only HealthzBindAddress is invalid
|
// only HealthzBindAddress is invalid
|
||||||
HealthzBindAddress: "0.0.0.0",
|
HealthzBindAddress: "0.0.0.0",
|
||||||
@ -824,16 +820,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -847,8 +843,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
masterConfig: kubeadm.MasterConfiguration{
|
masterConfig: kubeadm.MasterConfiguration{
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
// only MetricsBindAddress is invalid
|
// only MetricsBindAddress is invalid
|
||||||
@ -856,16 +852,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0/24",
|
ClusterCIDR: "192.168.59.0/24",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -879,8 +875,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
masterConfig: kubeadm.MasterConfiguration{
|
masterConfig: kubeadm.MasterConfiguration{
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
@ -888,16 +884,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
ClusterCIDR: "192.168.59.0",
|
ClusterCIDR: "192.168.59.0",
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -911,8 +907,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
masterConfig: kubeadm.MasterConfiguration{
|
masterConfig: kubeadm.MasterConfiguration{
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
@ -920,16 +916,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
// only UDPIdleTimeout is invalid
|
// only UDPIdleTimeout is invalid
|
||||||
UDPIdleTimeout: metav1.Duration{Duration: -1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: -1 * time.Second},
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -943,8 +939,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
masterConfig: kubeadm.MasterConfiguration{
|
masterConfig: kubeadm.MasterConfiguration{
|
||||||
KubeProxy: kubeadm.KubeProxy{
|
ComponentConfigs: kubeadm.ComponentConfigs{
|
||||||
Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{
|
KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{
|
||||||
BindAddress: "10.10.12.11",
|
BindAddress: "10.10.12.11",
|
||||||
HealthzBindAddress: "0.0.0.0:12345",
|
HealthzBindAddress: "0.0.0.0:12345",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
@ -952,16 +948,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second},
|
||||||
// only ConfigSyncPeriod is invalid
|
// only ConfigSyncPeriod is invalid
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: -1 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: -1 * time.Second},
|
||||||
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
|
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
|
||||||
MasqueradeAll: true,
|
MasqueradeAll: true,
|
||||||
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{
|
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
|
||||||
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
SyncPeriod: metav1.Duration{Duration: 10 * time.Second},
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
Max: utilpointer.Int32Ptr(2),
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
@ -976,7 +972,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, errorCase := range errorCases {
|
for i, errorCase := range errorCases {
|
||||||
if errs := ValidateProxy(errorCase.masterConfig.KubeProxy.Config, nil); len(errs) == 0 {
|
if errs := ValidateProxy(errorCase.masterConfig.ComponentConfigs.KubeProxy, nil); len(errs) == 0 {
|
||||||
t.Errorf("%d failed ValidateProxy: expected error for %s, but got no error", i, errorCase.msg)
|
t.Errorf("%d failed ValidateProxy: expected error for %s, but got no error", i, errorCase.msg)
|
||||||
} else if !strings.Contains(errs[0].Error(), errorCase.msg) {
|
} else if !strings.Contains(errs[0].Error(), errorCase.msg) {
|
||||||
t.Errorf("%d failed ValidateProxy: unexpected error: %v, expected: %s", i, errs[0], errorCase.msg)
|
t.Errorf("%d failed ValidateProxy: unexpected error: %v, expected: %s", i, errs[0], errorCase.msg)
|
||||||
|
@ -238,17 +238,17 @@ func TestEnsureProxyAddon(t *testing.T) {
|
|||||||
expErr,
|
expErr,
|
||||||
actErr)
|
actErr)
|
||||||
}
|
}
|
||||||
if intMaster.KubeProxy.Config.BindAddress != tc.expBindAddr {
|
if intMaster.ComponentConfigs.KubeProxy.BindAddress != tc.expBindAddr {
|
||||||
t.Errorf("%s test failed, expected: %s, got: %s",
|
t.Errorf("%s test failed, expected: %s, got: %s",
|
||||||
tc.name,
|
tc.name,
|
||||||
tc.expBindAddr,
|
tc.expBindAddr,
|
||||||
intMaster.KubeProxy.Config.BindAddress)
|
intMaster.ComponentConfigs.KubeProxy.BindAddress)
|
||||||
}
|
}
|
||||||
if intMaster.KubeProxy.Config.ClusterCIDR != tc.expClusterCIDR {
|
if intMaster.ComponentConfigs.KubeProxy.ClusterCIDR != tc.expClusterCIDR {
|
||||||
t.Errorf("%s test failed, expected: %s, got: %s",
|
t.Errorf("%s test failed, expected: %s, got: %s",
|
||||||
tc.name,
|
tc.name,
|
||||||
tc.expClusterCIDR,
|
tc.expClusterCIDR,
|
||||||
intMaster.KubeProxy.Config.ClusterCIDR)
|
intMaster.ComponentConfigs.KubeProxy.ClusterCIDR)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import (
|
|||||||
"k8s.io/client-go/kubernetes/fake"
|
"k8s.io/client-go/kubernetes/fake"
|
||||||
core "k8s.io/client-go/testing"
|
core "k8s.io/client-go/testing"
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1"
|
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
|
||||||
"k8s.io/kubernetes/pkg/util/version"
|
"k8s.io/kubernetes/pkg/util/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -35,8 +35,8 @@ func TestCreateConfigMap(t *testing.T) {
|
|||||||
cfg := &kubeadmapi.MasterConfiguration{
|
cfg := &kubeadmapi.MasterConfiguration{
|
||||||
NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName},
|
NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName},
|
||||||
KubernetesVersion: "v1.11.0",
|
KubernetesVersion: "v1.11.0",
|
||||||
KubeletConfiguration: kubeadmapi.KubeletConfiguration{
|
ComponentConfigs: kubeadmapi.ComponentConfigs{
|
||||||
BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{},
|
Kubelet: &kubeletconfig.KubeletConfiguration{},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user