Description
What would you like to be added (User Story)?
As a user, I want to be able to create clusters with kubeadm 1.31 (which most probably is going to use v1beta4 API)
As a user, I want to be able to use latest and greatest introduced by kubeadm v1beta4 API
Detailed Description
Changes introduced by kubeadm v1beta4 that we might add to CABPK without breaking changes (caveats, those changes apply only to clusters with K8s >= 1.31, for older cluster they are no-op)
- ClusterConfiguration.Proxy.Disabled (note, this might has a correlation with the controlplane.cluster.x-k8s.io/skip-coredns annotation)
- ClusterConfiguration.DNS.Disabled (note, this might has a correlation with the controlplane.cluster.x-k8s.io/skip-kube-proxy annotation)
- ClusterConfiguration.EncryptionAlgorithm (note, exposing this flag might imply other changes in Cluster API certificate management)
- ClusterConfiguration.CertificateValidityPeriod (note, exposing this flag might imply other changes in Cluster API certificate management)
- ClusterConfiguration.CACertificateValidityPeriod (note, exposing this flag might imply other changes in Cluster API certificate management)
- ClusterConfiguration.*.ExtraEnvs
- Init/JoinConfiguration.NodeRegistrationOptions.ImagePullSerial
- Init/JoinConfiguration.Timeouts. Note:
- ClusterConfiguration.TimeoutForControlPlane is now Init/JoinConfiguration.Timeout.ControlPlaneComponentHealthCheck
- JoinConfiguration.Discovery.Timeout is now JoinConfiguration.Timeout.TLSBootstrap
Changes introduced by kubeadm v1beta4 that require CABPK breaking changes to be implemented
- ClusterConfiguration.*.ExtraArgs allowing to set multiple values for the same key
- Init/JoinConfiguration.NodeRegistrationOptions.KubeletExtraArgs allowing to set multiple values for the same key
Changes introduced by kubeadm v1beta4 that are not relevant to CABPK
- Init/JoinConfiguration.DryRun (dry run makes sense only when using kubeadm from the CLI in interactive mode)
- ResetConfiguration, UpgradeConfiguration (we are not using this commands in CABPK)
Anything else you would like to add?
rif kubernetes/kubernetes#125029
Action Plan
Mandatory tasks to support Kubernetes v1.31:
- Implements conversions from CAPI v1beta1 types to kubeadm v1beta4 ✨ Add kubeadm v1beta4 types #10709
- Special handling should be implemented for ClusterConfiguration.TimeoutForControlPlane and JoinConfiguration.Discovery.Timeout
Optional non breaking changes to be implemented ASAP:
- Before adding new fields, check potential impacts on things like , also ClusterClass and topology reconcile ✨ Add ExtraEnvs and ImagePullSerial to KubeadmConfig #10846
- Add ClusterConfiguration.*.ExtraEnvs ✨ Add ExtraEnvs and ImagePullSerial to KubeadmConfig #10846
- Add Init/JoinConfiguration.NodeRegistrationOptions.ImagePullSerial ✨ Add ExtraEnvs and ImagePullSerial to KubeadmConfig #10846
- Add Init/JoinConfiguration.Timeout
- Important: Timeout.ControlPlaneComponentHealthCheck and Timeout.TLSBootstrap must not be added now to ensure a clean migration of ClusterConfiguration.TimeoutForControlPlane and JoinConfiguration.Discovery.Timeout when we introduce CAPI v1beta2 types
Changes deferred to when we review certificate management / renewal
- Add ClusterConfiguration.CertificateValidityPeriod and ClusterConfiguration.CACertificateValidityPeriod
Changes deferred to when we review kubeadm/KCP addon management
- Add ClusterConfiguration.Proxy.Disabled and ClusterConfiguration.DNS.Disabled
Changes deferred to when we implement #10077
- Add ClusterConfiguration.EncryptionAlgorithm
Changes deferred to when we implement CAPI v1beta2 types
- Refactor ClusterConfiguration.*.ExtraArgs and Init/JoinConfiguration.NodeRegistrationOptions.KubeletExtraArgs
- Add Timeout.ControlPlaneComponentHealthCheck and Timeout.TLSBootstrap and remove ClusterConfiguration.TimeoutForControlPlane and JoinConfiguration.Discovery.Timeout
Label(s) to be applied
/kind feature
Activity