From 6fbf2da60b0d7ba596c743bc1b005f0e024e41e1 Mon Sep 17 00:00:00 2001 From: Jason Stangroome Date: Thu, 29 Mar 2018 14:02:10 +1100 Subject: [PATCH] Ensure ControllerManagerExtraArgs take precedence over generated args --- cmd/kubeadm/app/apis/kubeadm/types.go | 4 ---- .../app/phases/controlplane/manifests.go | 21 +++++++++---------- .../app/phases/controlplane/manifests_test.go | 7 ++++--- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/types.go b/cmd/kubeadm/app/apis/kubeadm/types.go index 714b3f39ad0..15ee0923c3f 100644 --- a/cmd/kubeadm/app/apis/kubeadm/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/types.go @@ -157,10 +157,6 @@ type Networking struct { PodSubnet string // DNSDomain is the dns domain used by k8s services. Defaults to "cluster.local". DNSDomain string - // NodeCIDRMaskSize is the size of the Pod subnet allocated to each node. Only - // applies when PodSubnet is also specified. Defaults to "24" for IPv4 or a - // calculated subset of an IPv6 PodSubnet. - NodeCIDRMaskSize string } // Etcd contains elements describing Etcd configuration. diff --git a/cmd/kubeadm/app/phases/controlplane/manifests.go b/cmd/kubeadm/app/phases/controlplane/manifests.go index 769f36795e8..728a2f0dab8 100644 --- a/cmd/kubeadm/app/phases/controlplane/manifests.go +++ b/cmd/kubeadm/app/phases/controlplane/manifests.go @@ -321,28 +321,27 @@ func getControllerManagerCommand(cfg *kubeadmapi.MasterConfiguration, k8sVersion defaultArguments["cluster-signing-cert-file"] = "" } - command := []string{"kube-controller-manager"} - command = append(command, kubeadmutil.BuildArgumentListFromMap(defaultArguments, cfg.ControllerManagerExtraArgs)...) - if cfg.CloudProvider != "" { - command = append(command, "--cloud-provider="+cfg.CloudProvider) + defaultArguments["cloud-provider"] = cfg.CloudProvider // Only append the --cloud-config option if there's a such file if _, err := os.Stat(DefaultCloudConfigPath); err == nil { - command = append(command, "--cloud-config="+DefaultCloudConfigPath) + defaultArguments["cloud-config"] = DefaultCloudConfigPath } } // Let the controller-manager allocate Node CIDRs for the Pod network. // Each node will get a subspace of the address CIDR provided with --pod-network-cidr. if cfg.Networking.PodSubnet != "" { - maskSize := cfg.Networking.NodeCIDRMaskSize - if maskSize == "" { - maskSize = calcNodeCidrSize(cfg.Networking.PodSubnet) - } - command = append(command, "--allocate-node-cidrs=true", "--cluster-cidr="+cfg.Networking.PodSubnet, - "--node-cidr-mask-size="+maskSize) + maskSize := calcNodeCidrSize(cfg.Networking.PodSubnet) + defaultArguments["allocate-node-cidrs"] = "true" + defaultArguments["cluster-cidr"] = cfg.Networking.PodSubnet + defaultArguments["node-cidr-mask-size"] = maskSize } + + command := []string{"kube-controller-manager"} + command = append(command, kubeadmutil.BuildArgumentListFromMap(defaultArguments, cfg.ControllerManagerExtraArgs)...) + return command } diff --git a/cmd/kubeadm/app/phases/controlplane/manifests_test.go b/cmd/kubeadm/app/phases/controlplane/manifests_test.go index 712f44b1486..16587c7bee2 100644 --- a/cmd/kubeadm/app/phases/controlplane/manifests_test.go +++ b/cmd/kubeadm/app/phases/controlplane/manifests_test.go @@ -776,9 +776,10 @@ func TestGetControllerManagerCommand(t *testing.T) { }, { cfg: &kubeadmapi.MasterConfiguration{ - Networking: kubeadmapi.Networking{PodSubnet: "10.0.1.15/16", NodeCIDRMaskSize: "20"}, - CertificatesDir: testCertsDir, - KubernetesVersion: "v1.7.0", + Networking: kubeadmapi.Networking{PodSubnet: "10.0.1.15/16"}, + ControllerManagerExtraArgs: map[string]string{"node-cidr-mask-size": "20"}, + CertificatesDir: testCertsDir, + KubernetesVersion: "v1.7.0", }, expected: []string{ "kube-controller-manager",