From 2c956cf19eb9d5e5d3758628d971f2f5a4f4539a Mon Sep 17 00:00:00 2001 From: Jordan Faust Date: Tue, 30 Jan 2018 12:05:17 -0600 Subject: [PATCH] Add criSocket to kubeadm MasterConfiguration manifest --- cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go | 1 + cmd/kubeadm/app/apis/kubeadm/types.go | 3 +++ .../app/apis/kubeadm/v1alpha1/defaults.go | 6 ++++++ .../app/apis/kubeadm/v1alpha1/types.go | 3 +++ .../v1alpha1/zz_generated.conversion.go | 2 ++ cmd/kubeadm/app/cmd/init.go | 19 +++++++++---------- cmd/kubeadm/app/cmd/phases/preflight.go | 3 +-- cmd/kubeadm/app/preflight/checks.go | 4 ++-- cmd/kubeadm/app/preflight/checks_test.go | 2 +- 9 files changed, 28 insertions(+), 15 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go index 7e667805e24..67b40ceba9c 100644 --- a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go +++ b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go @@ -44,6 +44,7 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} { obj.CertificatesDir = "foo" obj.APIServerCertSANs = []string{"foo"} obj.Token = "foo" + obj.CRISocket = "foo" obj.Etcd.Image = "foo" obj.Etcd.DataDir = "foo" obj.ImageRepository = "foo" diff --git a/cmd/kubeadm/app/apis/kubeadm/types.go b/cmd/kubeadm/app/apis/kubeadm/types.go index 7373a2ec0c5..fc2d274a313 100644 --- a/cmd/kubeadm/app/apis/kubeadm/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/types.go @@ -62,6 +62,9 @@ type MasterConfiguration struct { // TokenTTL is a ttl for Token. Defaults to 24h. TokenTTL *metav1.Duration + // CRISocket is used to retrieve container runtime info. + CRISocket string + // APIServerExtraArgs is a set of extra flags to pass to the API Server or override // default ones in form of =. // TODO: This is temporary and ideally we would like to switch all components to diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go index 772a9612ee6..1d462e46bf9 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go @@ -50,6 +50,8 @@ const ( DefaultImageRepository = "gcr.io/google_containers" // DefaultManifestsDir defines default manifests directory DefaultManifestsDir = "/etc/kubernetes/manifests" + // DefaultCRISocket defines the default cri socket + DefaultCRISocket = "/var/run/dockershim.sock" // DefaultEtcdDataDir defines default location of etcd where static pods will save data to DefaultEtcdDataDir = "/var/lib/etcd" @@ -105,6 +107,10 @@ func SetDefaults_MasterConfiguration(obj *MasterConfiguration) { } } + if obj.CRISocket == "" { + obj.CRISocket = DefaultCRISocket + } + if obj.ImageRepository == "" { obj.ImageRepository = DefaultImageRepository } diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go index d1edd0e1e97..71e1a9bdb00 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go @@ -62,6 +62,9 @@ type MasterConfiguration struct { // TokenTTL is a ttl for Token. Defaults to 24h. TokenTTL *metav1.Duration `json:"tokenTTL,omitempty"` + // CRISocket is used to retrieve container runtime info. + CRISocket string `json:"criSocket,omitempty"` + // APIServerExtraArgs is a set of extra flags to pass to the API Server or override // default ones in form of =. // TODO: This is temporary and ideally we would like to switch all components to diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go index 8afb09456b2..2b2effad450 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go @@ -205,6 +205,7 @@ func autoConvert_v1alpha1_MasterConfiguration_To_kubeadm_MasterConfiguration(in out.PrivilegedPods = in.PrivilegedPods out.Token = in.Token out.TokenTTL = (*v1.Duration)(unsafe.Pointer(in.TokenTTL)) + out.CRISocket = in.CRISocket out.APIServerExtraArgs = *(*map[string]string)(unsafe.Pointer(&in.APIServerExtraArgs)) out.ControllerManagerExtraArgs = *(*map[string]string)(unsafe.Pointer(&in.ControllerManagerExtraArgs)) out.SchedulerExtraArgs = *(*map[string]string)(unsafe.Pointer(&in.SchedulerExtraArgs)) @@ -247,6 +248,7 @@ func autoConvert_kubeadm_MasterConfiguration_To_v1alpha1_MasterConfiguration(in out.PrivilegedPods = in.PrivilegedPods out.Token = in.Token out.TokenTTL = (*v1.Duration)(unsafe.Pointer(in.TokenTTL)) + out.CRISocket = in.CRISocket out.APIServerExtraArgs = *(*map[string]string)(unsafe.Pointer(&in.APIServerExtraArgs)) out.ControllerManagerExtraArgs = *(*map[string]string)(unsafe.Pointer(&in.ControllerManagerExtraArgs)) out.SchedulerExtraArgs = *(*map[string]string)(unsafe.Pointer(&in.SchedulerExtraArgs)) diff --git a/cmd/kubeadm/app/cmd/init.go b/cmd/kubeadm/app/cmd/init.go index 658d3237e57..437fa77551d 100644 --- a/cmd/kubeadm/app/cmd/init.go +++ b/cmd/kubeadm/app/cmd/init.go @@ -113,7 +113,6 @@ func NewCmdInit(out io.Writer) *cobra.Command { var skipTokenPrint bool var dryRun bool var featureGatesString string - var criSocket string var ignorePreflightErrors []string cmd := &cobra.Command{ @@ -132,7 +131,7 @@ func NewCmdInit(out io.Writer) *cobra.Command { ignorePreflightErrorsSet, err := validation.ValidateIgnorePreflightErrors(ignorePreflightErrors, skipPreFlight) kubeadmutil.CheckErr(err) - i, err := NewInit(cfgPath, internalcfg, ignorePreflightErrorsSet, skipTokenPrint, dryRun, criSocket) + i, err := NewInit(cfgPath, internalcfg, ignorePreflightErrorsSet, skipTokenPrint, dryRun) kubeadmutil.CheckErr(err) kubeadmutil.CheckErr(i.Validate(cmd)) kubeadmutil.CheckErr(i.Run(out)) @@ -140,7 +139,7 @@ func NewCmdInit(out io.Writer) *cobra.Command { } AddInitConfigFlags(cmd.PersistentFlags(), cfg, &featureGatesString) - AddInitOtherFlags(cmd.PersistentFlags(), &cfgPath, &skipPreFlight, &skipTokenPrint, &dryRun, &criSocket, &ignorePreflightErrors) + AddInitOtherFlags(cmd.PersistentFlags(), &cfgPath, &skipPreFlight, &skipTokenPrint, &dryRun, &ignorePreflightErrors) return cmd } @@ -191,6 +190,10 @@ func AddInitConfigFlags(flagSet *flag.FlagSet, cfg *kubeadmapiext.MasterConfigur &cfg.TokenTTL.Duration, "token-ttl", cfg.TokenTTL.Duration, "The duration before the bootstrap token is automatically deleted. If set to '0', the token will never expire.", ) + flagSet.StringVar( + &cfg.CRISocket, "cri-socket", cfg.CRISocket, + `Specify the CRI socket to connect to.`, + ) flagSet.StringVar(featureGatesString, "feature-gates", *featureGatesString, "A set of key=value pairs that describe feature gates for various features. "+ "Options are:\n"+strings.Join(features.KnownFeatures(&features.InitFeatureGates), "\n")) @@ -200,7 +203,7 @@ func AddInitConfigFlags(flagSet *flag.FlagSet, cfg *kubeadmapiext.MasterConfigur } // AddInitOtherFlags adds init flags that are not bound to a configuration file to the given flagset -func AddInitOtherFlags(flagSet *flag.FlagSet, cfgPath *string, skipPreFlight, skipTokenPrint, dryRun *bool, criSocket *string, ignorePreflightErrors *[]string) { +func AddInitOtherFlags(flagSet *flag.FlagSet, cfgPath *string, skipPreFlight, skipTokenPrint, dryRun *bool, ignorePreflightErrors *[]string) { flagSet.StringVar( cfgPath, "config", *cfgPath, "Path to kubeadm config file. WARNING: Usage of a configuration file is experimental.", @@ -225,14 +228,10 @@ func AddInitOtherFlags(flagSet *flag.FlagSet, cfgPath *string, skipPreFlight, sk dryRun, "dry-run", *dryRun, "Don't apply any changes; just output what would be done.", ) - flagSet.StringVar( - criSocket, "cri-socket", "/var/run/dockershim.sock", - `Specify the CRI socket to connect to.`, - ) } // NewInit validates given arguments and instantiates Init struct with provided information. -func NewInit(cfgPath string, cfg *kubeadmapi.MasterConfiguration, ignorePreflightErrors sets.String, skipTokenPrint, dryRun bool, criSocket string) (*Init, error) { +func NewInit(cfgPath string, cfg *kubeadmapi.MasterConfiguration, ignorePreflightErrors sets.String, skipTokenPrint, dryRun bool) (*Init, error) { if cfgPath != "" { b, err := ioutil.ReadFile(cfgPath) @@ -265,7 +264,7 @@ func NewInit(cfgPath string, cfg *kubeadmapi.MasterConfiguration, ignorePrefligh fmt.Println("[preflight] Running pre-flight checks.") - if err := preflight.RunInitMasterChecks(utilsexec.New(), cfg, criSocket, ignorePreflightErrors); err != nil { + if err := preflight.RunInitMasterChecks(utilsexec.New(), cfg, ignorePreflightErrors); err != nil { return nil, err } diff --git a/cmd/kubeadm/app/cmd/phases/preflight.go b/cmd/kubeadm/app/cmd/phases/preflight.go index 54b51343aff..a0434943d3a 100644 --- a/cmd/kubeadm/app/cmd/phases/preflight.go +++ b/cmd/kubeadm/app/cmd/phases/preflight.go @@ -70,8 +70,7 @@ func NewCmdPreFlightMaster() *cobra.Command { Example: masterPreflightExample, Run: func(cmd *cobra.Command, args []string) { cfg := &kubeadmapi.MasterConfiguration{} - criSocket := "" - err := preflight.RunInitMasterChecks(utilsexec.New(), cfg, criSocket, sets.NewString()) + err := preflight.RunInitMasterChecks(utilsexec.New(), cfg, sets.NewString()) kubeadmutil.CheckErr(err) }, } diff --git a/cmd/kubeadm/app/preflight/checks.go b/cmd/kubeadm/app/preflight/checks.go index d1b1454b91b..365d27584d0 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -851,7 +851,7 @@ func getEtcdVersionResponse(client *http.Client, url string, target interface{}) } // RunInitMasterChecks executes all individual, applicable to Master node checks. -func RunInitMasterChecks(execer utilsexec.Interface, cfg *kubeadmapi.MasterConfiguration, criSocket string, ignorePreflightErrors sets.String) error { +func RunInitMasterChecks(execer utilsexec.Interface, cfg *kubeadmapi.MasterConfiguration, ignorePreflightErrors sets.String) error { // First, check if we're root separately from the other preflight checks and fail fast if err := RunRootCheckOnly(ignorePreflightErrors); err != nil { return err @@ -869,7 +869,7 @@ func RunInitMasterChecks(execer utilsexec.Interface, cfg *kubeadmapi.MasterConfi checks := []Checker{ KubernetesVersionCheck{KubernetesVersion: cfg.KubernetesVersion, KubeadmVersion: kubeadmversion.Get().GitVersion}, - SystemVerificationCheck{CRISocket: criSocket}, + SystemVerificationCheck{CRISocket: cfg.CRISocket}, IsPrivilegedUserCheck{}, HostnameCheck{nodeName: cfg.NodeName}, KubeletVersionCheck{KubernetesVersion: cfg.KubernetesVersion}, diff --git a/cmd/kubeadm/app/preflight/checks_test.go b/cmd/kubeadm/app/preflight/checks_test.go index a283e92eb45..4c45e430f87 100644 --- a/cmd/kubeadm/app/preflight/checks_test.go +++ b/cmd/kubeadm/app/preflight/checks_test.go @@ -223,7 +223,7 @@ func TestRunInitMasterChecks(t *testing.T) { } for _, rt := range tests { - actual := RunInitMasterChecks(exec.New(), rt.cfg, "", sets.NewString()) + actual := RunInitMasterChecks(exec.New(), rt.cfg, sets.NewString()) if (actual == nil) != rt.expected { t.Errorf( "failed RunInitMasterChecks:\n\texpected: %t\n\t actual: %t\n\t error: %v",