Skip to content

Implement support for kubeadm v1beta4 API #10708

Open
@fabriziopandini

Description

@fabriziopandini

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:

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

kind/featureCategorizes issue or PR as related to a new feature.priority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next release.triage/acceptedIndicates an issue or PR is ready to be actively worked on.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions