diff --git a/bootstrap/kubeadm/api/v1alpha4/zz_generated.conversion.go b/bootstrap/kubeadm/api/v1alpha4/zz_generated.conversion.go index 4c6e516f9c9e..0703878062df 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 5fc0c8a24038..4c5e693eab4f 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 @@ -189,6 +194,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 { @@ -467,6 +479,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 de1edd185463..05c8ed299964 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 459cf26f11c4..d9e946f1ecfa 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 @@ -2364,6 +2364,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 @@ -3124,6 +3139,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 3c8efabb694c..51f378111187 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 @@ -2375,6 +2375,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 @@ -3187,6 +3203,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 9065a7c586f5..5ee1b0d4545c 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 caea3a59757b..1859a4816fd7 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 bbf1149a3ac0..714dd8a9e6b5 100644 --- a/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go +++ b/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go @@ -453,6 +453,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, @@ -638,6 +639,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, @@ -765,6 +767,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 dc02544686e9..d252294a0843 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 fa0bad3a589f..f670cafa5ca3 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 eb5597550e65..f1a56bb264a5 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 8d04a45f1349..d52ecd670a76 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 @@ -2838,6 +2838,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 @@ -3630,6 +3646,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 984575176b42..922207f4717f 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 @@ -1446,6 +1446,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 @@ -2293,6 +2310,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