From b4b4718fc1cddd8b33ab920433a62710bd054c8c Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Wed, 21 Nov 2018 21:34:48 +0200 Subject: [PATCH] kubeadm: override node registration options from command line 'kubeadm init' silently ignores --node-name and --cri-socket command line options if --config option is specified. Implemented setting 'name' and 'criSocket' options from the command line even if --config command line option is used. --- cmd/kubeadm/app/apis/kubeadm/validation/validation.go | 2 +- cmd/kubeadm/app/cmd/init.go | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/validation/validation.go b/cmd/kubeadm/app/apis/kubeadm/validation/validation.go index c97566b6ec..77f12dea1c 100644 --- a/cmd/kubeadm/app/apis/kubeadm/validation/validation.go +++ b/cmd/kubeadm/app/apis/kubeadm/validation/validation.go @@ -399,7 +399,7 @@ func ValidateMixedArguments(flag *pflag.FlagSet) error { mixedInvalidFlags := []string{} flag.Visit(func(f *pflag.Flag) { - if f.Name == "config" || f.Name == "ignore-preflight-errors" || strings.HasPrefix(f.Name, "skip-") || f.Name == "dry-run" || f.Name == "kubeconfig" || f.Name == "v" || f.Name == "rootfs" || f.Name == "print-join-command" { + if f.Name == "config" || f.Name == "ignore-preflight-errors" || strings.HasPrefix(f.Name, "skip-") || f.Name == "dry-run" || f.Name == "kubeconfig" || f.Name == "v" || f.Name == "rootfs" || f.Name == "print-join-command" || f.Name == "node-name" || f.Name == "cri-socket" { // "--skip-*" flags or other whitelisted flags can be set with --config return } diff --git a/cmd/kubeadm/app/cmd/init.go b/cmd/kubeadm/app/cmd/init.go index 4e779f2f2b..22939087d9 100644 --- a/cmd/kubeadm/app/cmd/init.go +++ b/cmd/kubeadm/app/cmd/init.go @@ -305,6 +305,15 @@ func newInitData(cmd *cobra.Command, options *initOptions, out io.Writer) (initD if err != nil { return initData{}, err } + + // override node name and CRI socket from the command line options + if options.externalcfg.NodeRegistration.Name != "" { + cfg.NodeRegistration.Name = options.externalcfg.NodeRegistration.Name + } + if options.externalcfg.NodeRegistration.CRISocket != kubeadmapiv1beta1.DefaultCRISocket { + cfg.NodeRegistration.CRISocket = options.externalcfg.NodeRegistration.CRISocket + } + if err := configutil.VerifyAPIServerBindAddress(cfg.LocalAPIEndpoint.AdvertiseAddress); err != nil { return initData{}, err }