KubeletConfiguration should be a member of MasterConfiguration

This commit is contained in:
xiangpengzhao
2017-11-16 19:32:01 +08:00
parent 880648f3f1
commit c365e179e6
6 changed files with 67 additions and 33 deletions

View File

@@ -24,6 +24,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
kubeletconfigv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1"
utilpointer "k8s.io/kubernetes/pkg/util/pointer"
)
// Funcs returns the fuzzer functions for the kubeadm apis.
@@ -39,20 +41,41 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
obj.Networking.DNSDomain = "foo"
obj.AuthorizationModes = []string{"foo"}
obj.CertificatesDir = "foo"
obj.APIServerCertSANs = []string{}
obj.APIServerCertSANs = []string{"foo"}
obj.Token = "foo"
obj.Etcd.Image = "foo"
obj.Etcd.DataDir = "foo"
obj.ImageRepository = "foo"
obj.CIImageRepository = ""
obj.UnifiedControlPlaneImage = "foo"
obj.FeatureGates = map[string]bool{}
obj.FeatureGates = map[string]bool{"foo": true}
obj.APIServerExtraArgs = map[string]string{"foo": "foo"}
obj.APIServerExtraVolumes = []kubeadm.HostPathMount{{
Name: "foo",
HostPath: "foo",
MountPath: "foo",
}}
obj.Etcd.ExtraArgs = map[string]string{"foo": "foo"}
obj.Etcd.SelfHosted = &kubeadm.SelfHostedEtcd{
CertificatesDir: "/etc/kubernetes/pki/etcd",
ClusterServiceName: "etcd-cluster",
EtcdVersion: "v0.1.0",
OperatorVersion: "v0.1.0",
}
obj.KubeletConfiguration = kubeadm.KubeletConfiguration{
BaseConfig: &kubeletconfigv1alpha1.KubeletConfiguration{
PodManifestPath: "foo",
AllowPrivileged: utilpointer.BoolPtr(true),
ClusterDNS: []string{"foo"},
ClusterDomain: "foo",
Authorization: kubeletconfigv1alpha1.KubeletAuthorization{Mode: "foo"},
Authentication: kubeletconfigv1alpha1.KubeletAuthentication{
X509: kubeletconfigv1alpha1.KubeletX509Authentication{ClientCAFile: "foo"},
},
CAdvisorPort: utilpointer.Int32Ptr(0),
},
}
kubeletconfigv1alpha1.SetDefaults_KubeletConfiguration(obj.KubeletConfiguration.BaseConfig)
},
func(obj *kubeadm.NodeConfiguration, c fuzz.Continue) {
c.FuzzNoCustom(obj)

View File

@@ -30,6 +30,7 @@ type MasterConfiguration struct {
API API
Etcd Etcd
KubeletConfiguration KubeletConfiguration
Networking Networking
KubernetesVersion string
CloudProvider string

View File

@@ -104,6 +104,7 @@ func SetDefaults_MasterConfiguration(obj *MasterConfiguration) {
}
SetDefaultsEtcdSelfHosted(obj)
SetDefaults_KubeletConfiguration(obj)
}
// SetDefaults_NodeConfiguration assigns default values to a regular node
@@ -150,26 +151,29 @@ func SetDefaultsEtcdSelfHosted(obj *MasterConfiguration) {
}
// SetDefaults_KubeletConfiguration assigns default values to kubelet
func SetDefaults_KubeletConfiguration(obj *KubeletConfiguration) {
if obj.BaseConfig.PodManifestPath == "" {
obj.BaseConfig.PodManifestPath = DefaultManifestsDir
func SetDefaults_KubeletConfiguration(obj *MasterConfiguration) {
if obj.KubeletConfiguration.BaseConfig == nil {
obj.KubeletConfiguration.BaseConfig = &kubeletconfigv1alpha1.KubeletConfiguration{}
}
if obj.BaseConfig.AllowPrivileged == nil {
obj.BaseConfig.AllowPrivileged = utilpointer.BoolPtr(true)
if obj.KubeletConfiguration.BaseConfig.PodManifestPath == "" {
obj.KubeletConfiguration.BaseConfig.PodManifestPath = DefaultManifestsDir
}
if obj.BaseConfig.ClusterDNS == nil {
obj.BaseConfig.ClusterDNS = []string{DefaultClusterDNSIP}
if obj.KubeletConfiguration.BaseConfig.AllowPrivileged == nil {
obj.KubeletConfiguration.BaseConfig.AllowPrivileged = utilpointer.BoolPtr(true)
}
if obj.BaseConfig.ClusterDomain == "" {
obj.BaseConfig.ClusterDomain = DefaultServiceDNSDomain
if obj.KubeletConfiguration.BaseConfig.ClusterDNS == nil {
obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{DefaultClusterDNSIP}
}
if obj.BaseConfig.Authorization.Mode == "" {
obj.BaseConfig.Authorization.Mode = kubeletconfigv1alpha1.KubeletAuthorizationModeWebhook
if obj.KubeletConfiguration.BaseConfig.ClusterDomain == "" {
obj.KubeletConfiguration.BaseConfig.ClusterDomain = DefaultServiceDNSDomain
}
if obj.BaseConfig.Authentication.X509.ClientCAFile == "" {
obj.BaseConfig.Authentication.X509.ClientCAFile = DefaultCACertPath
if obj.KubeletConfiguration.BaseConfig.Authorization.Mode == "" {
obj.KubeletConfiguration.BaseConfig.Authorization.Mode = kubeletconfigv1alpha1.KubeletAuthorizationModeWebhook
}
if obj.BaseConfig.CAdvisorPort == nil {
obj.BaseConfig.CAdvisorPort = utilpointer.Int32Ptr(0)
if obj.KubeletConfiguration.BaseConfig.Authentication.X509.ClientCAFile == "" {
obj.KubeletConfiguration.BaseConfig.Authentication.X509.ClientCAFile = DefaultCACertPath
}
if obj.KubeletConfiguration.BaseConfig.CAdvisorPort == nil {
obj.KubeletConfiguration.BaseConfig.CAdvisorPort = utilpointer.Int32Ptr(0)
}
}

View File

@@ -30,6 +30,7 @@ type MasterConfiguration struct {
API API `json:"api"`
Etcd Etcd `json:"etcd"`
KubeletConfiguration KubeletConfiguration `json:"kubeletConfiguration"`
Networking Networking `json:"networking"`
KubernetesVersion string `json:"kubernetesVersion"`
CloudProvider string `json:"cloudProvider"`

View File

@@ -355,8 +355,7 @@ func (i *Init) Run(out io.Writer) error {
if err != nil {
return err
}
kubeletConfig := &kubeadmapiext.KubeletConfiguration{}
kubeletBytes, err := kubeadmutil.MarshalToYamlForCodecs(kubeletConfig.BaseConfig, kubeletconfigv1alpha1.SchemeGroupVersion, *kubeletCodecs)
kubeletBytes, err := kubeadmutil.MarshalToYamlForCodecs(i.cfg.KubeletConfiguration.BaseConfig, kubeletconfigv1alpha1.SchemeGroupVersion, *kubeletCodecs)
if err != nil {
return err
}

View File

@@ -51,6 +51,8 @@ func TestPrintConfiguration(t *testing.T) {
image: ""
keyFile: ""
imageRepository: ""
kubeletConfiguration:
baseConfig: null
kubernetesVersion: v1.7.1
networking:
dnsDomain: ""
@@ -82,6 +84,8 @@ func TestPrintConfiguration(t *testing.T) {
image: ""
keyFile: ""
imageRepository: ""
kubeletConfiguration:
baseConfig: null
kubernetesVersion: v1.7.1
networking:
dnsDomain: ""
@@ -123,6 +127,8 @@ func TestPrintConfiguration(t *testing.T) {
etcdVersion: v0.1.0
operatorVersion: v0.1.0
imageRepository: ""
kubeletConfiguration:
baseConfig: null
kubernetesVersion: v1.7.1
networking:
dnsDomain: ""