From e317648d577a441ae16af86fc06fe5e24c2efbce Mon Sep 17 00:00:00 2001 From: John Gardiner Myers Date: Sat, 15 Jul 2023 23:25:40 -0700 Subject: [PATCH] Remove references to control-plane-specific ClusterSpec fields from nodeup --- nodeup/pkg/model/containerd_test.go | 12 ------------ nodeup/pkg/model/kube_controller_manager.go | 2 +- nodeup/pkg/model/kube_proxy_test.go | 20 +++++++++----------- nodeup/pkg/model/kube_scheduler.go | 2 +- nodeup/pkg/model/kubelet_test.go | 7 ++++--- pkg/apis/nodeup/config.go | 17 +++++++++++++++++ 6 files changed, 32 insertions(+), 28 deletions(-) diff --git a/nodeup/pkg/model/containerd_test.go b/nodeup/pkg/model/containerd_test.go index aa4d0ddd47..6a7fb127a4 100644 --- a/nodeup/pkg/model/containerd_test.go +++ b/nodeup/pkg/model/containerd_test.go @@ -182,20 +182,8 @@ func runContainerdBuilderTest(t *testing.T, key string, distro distributions.Dis } func TestContainerdConfig(t *testing.T) { - cluster := &kops.Cluster{ - Spec: kops.ClusterSpec{ - ContainerRuntime: "containerd", - Containerd: &kops.ContainerdConfig{}, - KubernetesVersion: "1.21.0", - Networking: kops.NetworkingSpec{ - Kubenet: &kops.KubenetNetworkingSpec{}, - }, - }, - } - b := &ContainerdBuilder{ NodeupModelContext: &NodeupModelContext{ - Cluster: cluster, NodeupConfig: &nodeup.Config{ ContainerRuntime: "containerd", ContainerdConfig: &kops.ContainerdConfig{}, diff --git a/nodeup/pkg/model/kube_controller_manager.go b/nodeup/pkg/model/kube_controller_manager.go index d40995dcdb..dafcf5bd86 100644 --- a/nodeup/pkg/model/kube_controller_manager.go +++ b/nodeup/pkg/model/kube_controller_manager.go @@ -52,7 +52,7 @@ func (b *KubeControllerManagerBuilder) Build(c *fi.NodeupModelBuilderContext) er pathSrvKCM := filepath.Join(b.PathSrvKubernetes(), "kube-controller-manager") - kcm := *b.Cluster.Spec.KubeControllerManager + kcm := b.NodeupConfig.ControlPlaneConfig.KubeControllerManager kcm.RootCAFile = filepath.Join(b.PathSrvKubernetes(), "ca.crt") // Include the CA Key diff --git a/nodeup/pkg/model/kube_proxy_test.go b/nodeup/pkg/model/kube_proxy_test.go index ce98ad8bb6..baff90595a 100644 --- a/nodeup/pkg/model/kube_proxy_test.go +++ b/nodeup/pkg/model/kube_proxy_test.go @@ -38,18 +38,17 @@ func TestKubeProxyBuilder_buildPod(t *testing.T) { // https://pkg.go.dev/k8s.io/kops/pkg/apis/kops#ClusterSpec // https://pkg.go.dev/k8s.io/kops/pkg/apis/kops#KubeProxyConfig - cluster := &kops.Cluster{} - - cluster.Spec.KubeProxy = &kops.KubeProxyConfig{} - cluster.Spec.KubeProxy.Image = "kube-proxy:1.2" - cluster.Spec.KubeProxy.CPURequest = resource.NewScaledQuantity(20, resource.Milli) - cluster.Spec.KubeProxy.CPULimit = resource.NewScaledQuantity(30, resource.Milli) - - nodeupConfig := &nodeup.Config{ - KubeProxy: cluster.Spec.KubeProxy, + kubeProxy := kops.KubeProxyConfig{ + Image: "kube-proxy:1.2", + CPURequest: resource.NewScaledQuantity(20, resource.Milli), + CPULimit: resource.NewScaledQuantity(30, resource.Milli), } - flags, _ := flagbuilder.BuildFlagsList(cluster.Spec.KubeProxy) + nodeupConfig := &nodeup.Config{ + KubeProxy: &kubeProxy, + } + + flags, _ := flagbuilder.BuildFlagsList(&kubeProxy) flags = append(flags, []string{ "--kubeconfig=/var/lib/kube-proxy/kubeconfig", @@ -70,7 +69,6 @@ func TestKubeProxyBuilder_buildPod(t *testing.T) { "Setup KubeProxy for kubernetes version 1.20", fields{ &NodeupModelContext{ - Cluster: cluster, NodeupConfig: nodeupConfig, kubernetesVersion: semver.Version{Major: 1, Minor: 20}, }, diff --git a/nodeup/pkg/model/kube_scheduler.go b/nodeup/pkg/model/kube_scheduler.go index b033268240..355bd31ff1 100644 --- a/nodeup/pkg/model/kube_scheduler.go +++ b/nodeup/pkg/model/kube_scheduler.go @@ -66,7 +66,7 @@ func (b *KubeSchedulerBuilder) Build(c *fi.NodeupModelBuilderContext) error { return nil } - kubeScheduler := *b.Cluster.Spec.KubeScheduler + kubeScheduler := b.NodeupConfig.ControlPlaneConfig.KubeScheduler if err := b.writeServerCertificate(c, &kubeScheduler); err != nil { return err diff --git a/nodeup/pkg/model/kubelet_test.go b/nodeup/pkg/model/kubelet_test.go index e60900ef69..1661aeb9da 100644 --- a/nodeup/pkg/model/kubelet_test.go +++ b/nodeup/pkg/model/kubelet_test.go @@ -55,8 +55,10 @@ func TestTaintsApplied(t *testing.T) { for _, g := range tests { cluster := &kops.Cluster{Spec: kops.ClusterSpec{ - KubernetesVersion: g.version, - KubeAPIServer: &kops.KubeAPIServerConfig{}, + KubernetesVersion: g.version, + KubeAPIServer: &kops.KubeAPIServerConfig{}, + KubeControllerManager: &kops.KubeControllerManagerConfig{}, + KubeScheduler: &kops.KubeSchedulerConfig{}, }} input := testutils.BuildMinimalMasterInstanceGroup("eu-central-1a") input.Spec.Taints = g.taints @@ -69,7 +71,6 @@ func TestTaintsApplied(t *testing.T) { config, bootConfig := nodeup.NewConfig(cluster, ig) b := &KubeletBuilder{ &NodeupModelContext{ - Cluster: cluster, BootConfig: bootConfig, NodeupConfig: config, }, diff --git a/pkg/apis/nodeup/config.go b/pkg/apis/nodeup/config.go index 46f4a15c25..f09f080e32 100644 --- a/pkg/apis/nodeup/config.go +++ b/pkg/apis/nodeup/config.go @@ -94,6 +94,8 @@ type Config struct { // APIServerConfig is additional configuration for nodes running an APIServer. APIServerConfig *APIServerConfig `json:",omitempty"` + // ControlPlaneConfig is additional configuration for control-plane nodes. + ControlPlaneConfig *ControlPlaneConfig `json:",omitempty"` // GossipConfig is configuration for gossip DNS. GossipConfig *kops.GossipConfig `json:",omitempty"` // DNSZone is the DNS zone we should use when configuring DNS. @@ -190,6 +192,14 @@ type APIServerConfig struct { ServiceAccountPublicKeys string } +// ControlPlaneConfig is additional configuration for control-plane nodes. +type ControlPlaneConfig struct { + // KubeControllerManager is the configuration for the kube-controller-manager. + KubeControllerManager kops.KubeControllerManagerConfig + // KubeScheduler is the configuration for the kube-scheduler. + KubeScheduler kops.KubeSchedulerConfig +} + func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Config, *BootConfig) { role := instanceGroup.Spec.Role @@ -341,6 +351,13 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi config.GossipConfig = cluster.Spec.GossipConfig } + if instanceGroup.IsControlPlane() { + config.ControlPlaneConfig = &ControlPlaneConfig{ + KubeControllerManager: *cluster.Spec.KubeControllerManager, + KubeScheduler: *cluster.Spec.KubeScheduler, + } + } + if len(instanceGroup.Spec.SysctlParameters) > 0 { config.SysctlParameters = append(config.SysctlParameters, "# Custom sysctl parameters from instance group spec",