Update unit tests

This commit is contained in:
Lucas Käldström 2018-07-08 09:50:10 +03:00
parent 35673da7c5
commit 3594d2ca39
No known key found for this signature in database
GPG Key ID: 3FA3783D77751514
4 changed files with 154 additions and 157 deletions

View File

@ -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,60 +83,59 @@ 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", Authorization: kubeletconfigv1beta1.KubeletAuthorization{
Authorization: kubeletconfigv1beta1.KubeletAuthorization{ Mode: "Webhook",
Mode: "Webhook",
},
Authentication: kubeletconfigv1beta1.KubeletAuthentication{
X509: kubeletconfigv1beta1.KubeletX509Authentication{
ClientCAFile: "/etc/kubernetes/pki/ca.crt",
},
Anonymous: kubeletconfigv1beta1.KubeletAnonymousAuthentication{
Enabled: utilpointer.BoolPtr(false),
},
},
RotateCertificates: true,
}, },
Authentication: kubeletconfigv1beta1.KubeletAuthentication{
X509: kubeletconfigv1beta1.KubeletX509Authentication{
ClientCAFile: "/etc/kubernetes/pki/ca.crt",
},
Anonymous: kubeletconfigv1beta1.KubeletAnonymousAuthentication{
Enabled: utilpointer.BoolPtr(false),
},
},
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()
FeatureGates: map[string]bool{"foo": true}, scheme.Convert(extkubeletconfig, obj.ComponentConfigs.Kubelet, nil)
BindAddress: "foo", obj.ComponentConfigs.KubeProxy = &kubeproxyconfig.KubeProxyConfiguration{
HealthzBindAddress: "foo:10256", FeatureGates: map[string]bool{"foo": true},
MetricsBindAddress: "foo:", BindAddress: "foo",
EnableProfiling: bool(true), HealthzBindAddress: "foo:10256",
ClusterCIDR: "foo", MetricsBindAddress: "foo:",
HostnameOverride: "foo", EnableProfiling: bool(true),
ClientConnection: kubeproxyconfigv1alpha1.ClientConnectionConfiguration{ ClusterCIDR: "foo",
KubeConfigFile: "foo", HostnameOverride: "foo",
AcceptContentTypes: "foo", ClientConnection: kubeproxyconfig.ClientConnectionConfiguration{
ContentType: "foo", KubeConfigFile: "foo",
QPS: float32(5), AcceptContentTypes: "foo",
Burst: 10, ContentType: "foo",
}, QPS: float32(5),
IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ Burst: 10,
SyncPeriod: metav1.Duration{Duration: 1},
},
IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{
MasqueradeBit: utilpointer.Int32Ptr(0),
SyncPeriod: metav1.Duration{Duration: 1},
},
OOMScoreAdj: utilpointer.Int32Ptr(0),
ResourceContainer: "foo",
UDPIdleTimeout: metav1.Duration{Duration: 1},
Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{
MaxPerCore: utilpointer.Int32Ptr(2),
Min: utilpointer.Int32Ptr(1),
TCPEstablishedTimeout: &metav1.Duration{Duration: 5},
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5},
},
ConfigSyncPeriod: metav1.Duration{Duration: 1},
}, },
IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
SyncPeriod: metav1.Duration{Duration: 1},
},
IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
MasqueradeBit: utilpointer.Int32Ptr(0),
SyncPeriod: metav1.Duration{Duration: 1},
},
OOMScoreAdj: utilpointer.Int32Ptr(0),
ResourceContainer: "foo",
UDPIdleTimeout: metav1.Duration{Duration: 1},
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
MaxPerCore: utilpointer.Int32Ptr(2),
Min: utilpointer.Int32Ptr(1),
TCPEstablishedTimeout: &metav1.Duration{Duration: 5},
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5},
},
ConfigSyncPeriod: metav1.Duration{Duration: 1},
} }
obj.AuditPolicyConfiguration = kubeadm.AuditPolicyConfiguration{ obj.AuditPolicyConfiguration = kubeadm.AuditPolicyConfiguration{
Path: "foo", Path: "foo",

View File

@ -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: 5,
EventRecordQPS: utilpointer.Int32Ptr(5), HealthzPort: 10248,
HealthzPort: utilpointer.Int32Ptr(10248), ImageGCHighThresholdPercent: 85,
ImageGCHighThresholdPercent: utilpointer.Int32Ptr(85), ImageGCLowThresholdPercent: 80,
ImageGCLowThresholdPercent: utilpointer.Int32Ptr(80), IPTablesDropBit: 15,
IPTablesDropBit: utilpointer.Int32Ptr(15), IPTablesMasqueradeBit: 14,
IPTablesMasqueradeBit: utilpointer.Int32Ptr(14), KubeAPIBurst: 10,
KubeAPIBurst: 10, KubeAPIQPS: 5,
KubeAPIQPS: utilpointer.Int32Ptr(5), MaxOpenFiles: 1000000,
MaxOpenFiles: 1000000, MaxPods: 110,
MaxPods: 110, OOMScoreAdj: -999,
OOMScoreAdj: utilpointer.Int32Ptr(-999), PodsPerCore: 100,
PodsPerCore: 100, Port: 65535,
Port: 65535, ReadOnlyPort: 0,
ReadOnlyPort: 0, RegistryBurst: 10,
RegistryBurst: 10, RegistryPullQPS: 5,
RegistryPullQPS: utilpointer.Int32Ptr(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: -10,
EventRecordQPS: utilpointer.Int32Ptr(-10), HealthzPort: -10,
HealthzPort: utilpointer.Int32Ptr(-10), ImageGCHighThresholdPercent: 101,
ImageGCHighThresholdPercent: utilpointer.Int32Ptr(101), ImageGCLowThresholdPercent: 101,
ImageGCLowThresholdPercent: utilpointer.Int32Ptr(101), IPTablesDropBit: -10,
IPTablesDropBit: utilpointer.Int32Ptr(-10), IPTablesMasqueradeBit: -10,
IPTablesMasqueradeBit: utilpointer.Int32Ptr(-10), KubeAPIBurst: -10,
KubeAPIBurst: -10, KubeAPIQPS: -10,
KubeAPIQPS: utilpointer.Int32Ptr(-10), MaxOpenFiles: -10,
MaxOpenFiles: -10, MaxPods: -10,
MaxPods: -10, OOMScoreAdj: -1001,
OOMScoreAdj: utilpointer.Int32Ptr(-1001), PodsPerCore: -10,
PodsPerCore: -10, Port: 0,
Port: 0, ReadOnlyPort: -10,
ReadOnlyPort: -10, RegistryBurst: -10,
RegistryBurst: -10, RegistryPullQPS: -10,
RegistryPullQPS: utilpointer.Int32Ptr(-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)

View File

@ -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)
} }
} }
} }

View File

@ -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{},
}, },
} }