From 7e35426496b6857c389e86444d8b7a31b0121b28 Mon Sep 17 00:00:00 2001 From: Jiayi Wang Date: Wed, 23 Nov 2022 09:26:28 -0500 Subject: [PATCH 21/34] Support configuring bottlerocket admin container image --- .../api/v1alpha4/zz_generated.conversion.go | 2 + .../kubeadm/api/v1beta1/kubeadm_types.go | 17 ++++ .../api/v1beta1/zz_generated.deepcopy.go | 18 ++++ ...strap.cluster.x-k8s.io_kubeadmconfigs.yaml | 30 +++++++ ...uster.x-k8s.io_kubeadmconfigtemplates.yaml | 32 ++++++++ .../internal/bottlerocket/bootstrap_test.go | 82 ++++++++++++++++++- .../internal/bottlerocket/bottlerocket.go | 2 + .../controllers/kubeadmconfig_controller.go | 3 + .../zz_generated.conversion.go | 2 + .../zz_generated.conversion.go | 2 + .../zz_generated.conversion.go | 2 + ...cluster.x-k8s.io_kubeadmcontrolplanes.yaml | 32 ++++++++ ...x-k8s.io_kubeadmcontrolplanetemplates.yaml | 34 ++++++++ 13 files changed, 256 insertions(+), 2 deletions(-) diff --git a/bootstrap/kubeadm/api/v1alpha4/zz_generated.conversion.go b/bootstrap/kubeadm/api/v1alpha4/zz_generated.conversion.go index de8032f59..7af108f9e 100644 --- a/bootstrap/kubeadm/api/v1alpha4/zz_generated.conversion.go +++ b/bootstrap/kubeadm/api/v1alpha4/zz_generated.conversion.go @@ -694,6 +694,7 @@ func autoConvert_v1beta1_ClusterConfiguration_To_v1alpha4_ClusterConfiguration(i if err := Convert_v1beta1_BottlerocketBootstrap_To_v1alpha4_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_v1alpha4_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } @@ -1114,6 +1115,7 @@ func autoConvert_v1beta1_JoinConfiguration_To_v1alpha4_JoinConfiguration(in *v1b if err := Convert_v1beta1_BottlerocketBootstrap_To_v1alpha4_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_v1alpha4_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } diff --git a/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go b/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go index 48e5f4b8e..409d724b3 100644 --- a/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go +++ b/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go @@ -83,6 +83,11 @@ type ClusterConfiguration struct { // +optional BottlerocketBootstrap BottlerocketBootstrap `json:"bottlerocketBootstrap,omitempty"` + // BottlerocketAdmin holds the image source for admin container + // This is only for bottlerocket + // +optional + BottlerocketAdmin BottlerocketAdmin `json:"bottlerocketAdmin,omitempty"` + // BottlerocketControl holds the image source for control container // This is only for bottlerocket // +optional @@ -196,6 +201,13 @@ type BottlerocketBootstrap struct { ImageMeta `json:",inline"` } +// BottlerocketAdmin holds the settings of admin container for bottlerocket nodes +// This setting is ONLY for bottlerocket nodes. +type BottlerocketAdmin struct { + // ImageMeta allows to customize the image used for the BottlerocketAdmin component + ImageMeta `json:",inline"` +} + // BottlerocketControl holds the settings of control container for bottlerocket nodes // This setting is ONLY for bottlerocket nodes. type BottlerocketControl struct { @@ -498,6 +510,11 @@ type JoinConfiguration struct { // +optional BottlerocketBootstrap BottlerocketBootstrap `json:"bottlerocketBootstrap,omitempty"` + // BottlerocketAdmin holds the image source for admin container + // This is only for bottlerocket + // +optional + BottlerocketAdmin BottlerocketAdmin `json:"bottlerocketAdmin,omitempty"` + // BottlerocketControl holds the image source for control container // This is only for bottlerocket // +optional diff --git a/bootstrap/kubeadm/api/v1beta1/zz_generated.deepcopy.go b/bootstrap/kubeadm/api/v1beta1/zz_generated.deepcopy.go index f408188c5..12b57078d 100644 --- a/bootstrap/kubeadm/api/v1beta1/zz_generated.deepcopy.go +++ b/bootstrap/kubeadm/api/v1beta1/zz_generated.deepcopy.go @@ -143,6 +143,22 @@ func (in *BootstrapTokenString) DeepCopy() *BootstrapTokenString { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BottlerocketAdmin) DeepCopyInto(out *BottlerocketAdmin) { + *out = *in + out.ImageMeta = in.ImageMeta +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BottlerocketAdmin. +func (in *BottlerocketAdmin) DeepCopy() *BottlerocketAdmin { + if in == nil { + return nil + } + out := new(BottlerocketAdmin) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BottlerocketBootstrap) DeepCopyInto(out *BottlerocketBootstrap) { *out = *in @@ -213,6 +229,7 @@ func (in *ClusterConfiguration) DeepCopyInto(out *ClusterConfiguration) { out.TypeMeta = in.TypeMeta out.Pause = in.Pause out.BottlerocketBootstrap = in.BottlerocketBootstrap + out.BottlerocketAdmin = in.BottlerocketAdmin out.BottlerocketControl = in.BottlerocketControl in.Proxy.DeepCopyInto(&out.Proxy) out.RegistryMirror = in.RegistryMirror @@ -637,6 +654,7 @@ func (in *JoinConfiguration) DeepCopyInto(out *JoinConfiguration) { out.TypeMeta = in.TypeMeta out.Pause = in.Pause out.BottlerocketBootstrap = in.BottlerocketBootstrap + out.BottlerocketAdmin = in.BottlerocketAdmin out.BottlerocketControl = in.BottlerocketControl in.Proxy.DeepCopyInto(&out.Proxy) out.RegistryMirror = in.RegistryMirror diff --git a/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigs.yaml b/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigs.yaml index 44057be54..388e41cfd 100644 --- a/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigs.yaml +++ b/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigs.yaml @@ -2367,6 +2367,21 @@ spec: schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source for admin + container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container registry to + pull images from. if not set, the ImageRepository defined + in ClusterConfiguration will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag for the image. + In case this value is set, kubeadm does not change automatically + the version of the above components during upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only for bottlerocket @@ -3144,6 +3159,21 @@ spec: schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source for admin + container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container registry to + pull images from. if not set, the ImageRepository defined + in ClusterConfiguration will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag for the image. + In case this value is set, kubeadm does not change automatically + the version of the above components during upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only for bottlerocket diff --git a/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigtemplates.yaml b/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigtemplates.yaml index 6279dedee..67a8e8111 100644 --- a/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigtemplates.yaml +++ b/bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigtemplates.yaml @@ -2398,6 +2398,22 @@ spec: convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source + for admin container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container registry + to pull images from. if not set, the ImageRepository + defined in ClusterConfiguration will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag for + the image. In case this value is set, kubeadm does + not change automatically the version of the above + components during upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only for bottlerocket @@ -3230,6 +3246,22 @@ spec: convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source + for admin container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container registry + to pull images from. if not set, the ImageRepository + defined in ClusterConfiguration will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag for + the image. In case this value is set, kubeadm does + not change automatically the version of the above + components during upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only for bottlerocket diff --git a/bootstrap/kubeadm/internal/bottlerocket/bootstrap_test.go b/bootstrap/kubeadm/internal/bottlerocket/bootstrap_test.go index 9065a7c58..5ee1b0d45 100644 --- a/bootstrap/kubeadm/internal/bottlerocket/bootstrap_test.go +++ b/bootstrap/kubeadm/internal/bottlerocket/bootstrap_test.go @@ -8,7 +8,44 @@ import ( bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1" ) -const userData = ` +const userDataFullSetting = ` +[settings.host-containers.admin] +enabled = true +superpowered = true +source = "REPO:TAG" +user-data = "B64USERDATA" +[settings.host-containers.kubeadm-bootstrap] +enabled = true +superpowered = true +source = "REPO:TAG" +user-data = "B64USERDATA" + +[settings.kubernetes] +cluster-domain = "cluster.local" +standalone-mode = true +authentication-mode = "tls" +server-tls-bootstrap = false +pod-infra-container-image = "PAUSE" +provider-id = "PROVIDERID" + +[settings.bootstrap-containers.BOOTSTRAP] +essential = false +mode = "MODE" +user-data = "B64USERDATA" +[settings.network] +https-proxy = "PROXY" +no-proxy = [] +[settings.container-registry.mirrors] +"public.ecr.aws" = ["https://REGISTRYENDPOINT"] +[settings.pki.registry-mirror-ca] +data = "REGISTRYCA" +trusted=true +[settings.kubernetes.node-labels] +KEY=VAR +[settings.kubernetes.node-taints] +KEY=VAR` + +const userDataNoAdminImage = ` [settings.host-containers.admin] enabled = true superpowered = true @@ -66,6 +103,47 @@ func TestGenerateUserData(t *testing.T) { { Name: "admin", Superpowered: true, + ImageMeta: bootstrapv1.ImageMeta{ + ImageRepository: "REPO", + ImageTag: "TAG", + }, + UserData: "B64USERDATA", + }, + { + Name: "kubeadm-bootstrap", + Superpowered: true, + ImageMeta: bootstrapv1.ImageMeta{ + ImageRepository: "REPO", + ImageTag: "TAG", + }, + UserData: "B64USERDATA", + }, + }, + BootstrapContainers: []bootstrapv1.BottlerocketBootstrapContainer{ + { + Name: "BOOTSTRAP", + Mode: "MODE", + UserData: "B64USERDATA", + }, + }, + }, + output: userDataFullSetting, + }, + { + name: "no admin image meta", + input: &BottlerocketSettingsInput{ + PauseContainerSource: "PAUSE", + HTTPSProxyEndpoint: "PROXY", + RegistryMirrorEndpoint: "REGISTRYENDPOINT", + RegistryMirrorCACert: "REGISTRYCA", + NodeLabels: "KEY=VAR", + Taints: "KEY=VAR", + ProviderId: "PROVIDERID", + HostContainers: []bootstrapv1.BottlerocketHostContainer{ + { + Name: "admin", + Superpowered: true, + ImageMeta: bootstrapv1.ImageMeta{}, UserData: "B64USERDATA", }, { @@ -86,7 +164,7 @@ func TestGenerateUserData(t *testing.T) { }, }, }, - output: userData, + output: userDataNoAdminImage, }, } for _, testcase := range testcases { diff --git a/bootstrap/kubeadm/internal/bottlerocket/bottlerocket.go b/bootstrap/kubeadm/internal/bottlerocket/bottlerocket.go index caea3a597..1859a4816 100644 --- a/bootstrap/kubeadm/internal/bottlerocket/bottlerocket.go +++ b/bootstrap/kubeadm/internal/bottlerocket/bottlerocket.go @@ -25,6 +25,7 @@ const ( type BottlerocketConfig struct { Pause bootstrapv1.Pause BottlerocketBootstrap bootstrapv1.BottlerocketBootstrap + BottlerocketAdmin bootstrapv1.BottlerocketAdmin BottlerocketControl bootstrapv1.BottlerocketControl ProxyConfiguration bootstrapv1.ProxyConfiguration RegistryMirrorConfiguration bootstrapv1.RegistryMirrorConfiguration @@ -160,6 +161,7 @@ func getBottlerocketNodeUserData(bootstrapContainerUserData []byte, users []boot { Name: "admin", Superpowered: true, + ImageMeta: config.BottlerocketAdmin.ImageMeta, UserData: b64AdminContainerUserData, }, { diff --git a/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go b/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go index 85e198d39..42313cfb9 100644 --- a/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go +++ b/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go @@ -467,6 +467,7 @@ func (r *KubeadmConfigReconciler) handleClusterNotInitialized(ctx context.Contex bottlerocketConfig = &bottlerocket.BottlerocketConfig{ Pause: scope.Config.Spec.ClusterConfiguration.Pause, BottlerocketBootstrap: scope.Config.Spec.ClusterConfiguration.BottlerocketBootstrap, + BottlerocketAdmin: scope.Config.Spec.ClusterConfiguration.BottlerocketAdmin, BottlerocketControl: scope.Config.Spec.ClusterConfiguration.BottlerocketControl, BottlerocketCustomHostContainers: scope.Config.Spec.ClusterConfiguration.BottlerocketHostContainers, BottlerocketCustomBootstrapContainers: scope.Config.Spec.ClusterConfiguration.BottlerocketCustomBootstrapContainers, @@ -671,6 +672,7 @@ func (r *KubeadmConfigReconciler) joinWorker(ctx context.Context, scope *Scope) bottlerocketConfig := &bottlerocket.BottlerocketConfig{ Pause: scope.Config.Spec.JoinConfiguration.Pause, BottlerocketBootstrap: scope.Config.Spec.JoinConfiguration.BottlerocketBootstrap, + BottlerocketAdmin: scope.Config.Spec.JoinConfiguration.BottlerocketAdmin, BottlerocketControl: scope.Config.Spec.JoinConfiguration.BottlerocketControl, BottlerocketCustomHostContainers: scope.Config.Spec.JoinConfiguration.BottlerocketCustomHostContainers, BottlerocketCustomBootstrapContainers: scope.Config.Spec.JoinConfiguration.BottlerocketCustomBootstrapContainers, @@ -799,6 +801,7 @@ func (r *KubeadmConfigReconciler) joinControlplane(ctx context.Context, scope *S bottlerocketConfig := &bottlerocket.BottlerocketConfig{ Pause: scope.Config.Spec.JoinConfiguration.Pause, BottlerocketBootstrap: scope.Config.Spec.JoinConfiguration.BottlerocketBootstrap, + BottlerocketAdmin: scope.Config.Spec.JoinConfiguration.BottlerocketAdmin, BottlerocketControl: scope.Config.Spec.JoinConfiguration.BottlerocketControl, BottlerocketCustomHostContainers: scope.Config.Spec.JoinConfiguration.BottlerocketCustomHostContainers, BottlerocketCustomBootstrapContainers: scope.Config.Spec.JoinConfiguration.BottlerocketCustomBootstrapContainers, diff --git a/bootstrap/kubeadm/types/upstreamv1beta1/zz_generated.conversion.go b/bootstrap/kubeadm/types/upstreamv1beta1/zz_generated.conversion.go index fee4713a8..de60d4d01 100644 --- a/bootstrap/kubeadm/types/upstreamv1beta1/zz_generated.conversion.go +++ b/bootstrap/kubeadm/types/upstreamv1beta1/zz_generated.conversion.go @@ -528,6 +528,7 @@ func autoConvert_v1beta1_ClusterConfiguration_To_upstreamv1beta1_ClusterConfigur if err := Convert_v1beta1_BottlerocketBootstrap_To_upstreamv1beta1_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_upstreamv1beta1_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } @@ -840,6 +841,7 @@ func autoConvert_v1beta1_JoinConfiguration_To_upstreamv1beta1_JoinConfiguration( if err := Convert_v1beta1_BottlerocketBootstrap_To_upstreamv1beta1_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_upstreamv1beta1_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } diff --git a/bootstrap/kubeadm/types/upstreamv1beta2/zz_generated.conversion.go b/bootstrap/kubeadm/types/upstreamv1beta2/zz_generated.conversion.go index 2e3bc99ea..8b6475592 100644 --- a/bootstrap/kubeadm/types/upstreamv1beta2/zz_generated.conversion.go +++ b/bootstrap/kubeadm/types/upstreamv1beta2/zz_generated.conversion.go @@ -528,6 +528,7 @@ func autoConvert_v1beta1_ClusterConfiguration_To_upstreamv1beta2_ClusterConfigur if err := Convert_v1beta1_BottlerocketBootstrap_To_upstreamv1beta2_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_upstreamv1beta2_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } @@ -844,6 +845,7 @@ func autoConvert_v1beta1_JoinConfiguration_To_upstreamv1beta2_JoinConfiguration( if err := Convert_v1beta1_BottlerocketBootstrap_To_upstreamv1beta2_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_upstreamv1beta2_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } diff --git a/bootstrap/kubeadm/types/upstreamv1beta3/zz_generated.conversion.go b/bootstrap/kubeadm/types/upstreamv1beta3/zz_generated.conversion.go index 1b2d94a1d..4584e6266 100644 --- a/bootstrap/kubeadm/types/upstreamv1beta3/zz_generated.conversion.go +++ b/bootstrap/kubeadm/types/upstreamv1beta3/zz_generated.conversion.go @@ -532,6 +532,7 @@ func autoConvert_v1beta1_ClusterConfiguration_To_upstreamv1beta3_ClusterConfigur if err := Convert_v1beta1_BottlerocketBootstrap_To_upstreamv1beta3_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_upstreamv1beta3_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } @@ -836,6 +837,7 @@ func autoConvert_v1beta1_JoinConfiguration_To_upstreamv1beta3_JoinConfiguration( if err := Convert_v1beta1_BottlerocketBootstrap_To_upstreamv1beta3_BottlerocketBootstrap(&in.BottlerocketBootstrap, &out.BottlerocketBootstrap, s); err != nil { return err } + // WARNING: in.BottlerocketAdmin requires manual conversion: does not exist in peer-type if err := Convert_v1beta1_BottlerocketControl_To_upstreamv1beta3_BottlerocketControl(&in.BottlerocketControl, &out.BottlerocketControl, s); err != nil { return err } diff --git a/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanes.yaml b/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanes.yaml index b6325ac35..8e1d920b2 100644 --- a/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanes.yaml +++ b/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanes.yaml @@ -2839,6 +2839,22 @@ spec: schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source for + admin container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container registry + to pull images from. if not set, the ImageRepository + defined in ClusterConfiguration will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag for the + image. In case this value is set, kubeadm does not change + automatically the version of the above components during + upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only for bottlerocket @@ -3650,6 +3666,22 @@ spec: schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source for + admin container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container registry + to pull images from. if not set, the ImageRepository + defined in ClusterConfiguration will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag for the + image. In case this value is set, kubeadm does not change + automatically the version of the above components during + upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only for bottlerocket diff --git a/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanetemplates.yaml b/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanetemplates.yaml index 235ff121f..e435df3e1 100644 --- a/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanetemplates.yaml +++ b/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanetemplates.yaml @@ -1467,6 +1467,23 @@ spec: value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source + for admin container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container + registry to pull images from. if not set, the + ImageRepository defined in ClusterConfiguration + will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag + for the image. In case this value is set, kubeadm + does not change automatically the version of + the above components during upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only @@ -2334,6 +2351,23 @@ spec: value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string + bottlerocketAdmin: + description: BottlerocketAdmin holds the image source + for admin container This is only for bottlerocket + properties: + imageRepository: + description: ImageRepository sets the container + registry to pull images from. if not set, the + ImageRepository defined in ClusterConfiguration + will be used instead. + type: string + imageTag: + description: ImageTag allows to specify a tag + for the image. In case this value is set, kubeadm + does not change automatically the version of + the above components during upgrades. + type: string + type: object bottlerocketBootstrap: description: BottlerocketBootstrap holds the image source for kubeadm bootstrap container This is only -- 2.40.0