Remove references to control-plane-specific ClusterSpec fields from nodeup

This commit is contained in:
John Gardiner Myers 2023-07-15 23:25:40 -07:00
parent 683761a816
commit e317648d57
6 changed files with 32 additions and 28 deletions

View File

@ -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{},

View File

@ -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

View File

@ -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},
},

View File

@ -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

View File

@ -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,
},

View File

@ -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",