Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement support for kubeadm v1beta4 API #10708

Open
1 of 10 tasks
fabriziopandini opened this issue May 30, 2024 · 4 comments · Fixed by #10709
Open
1 of 10 tasks

Implement support for kubeadm v1beta4 API #10708

fabriziopandini opened this issue May 30, 2024 · 4 comments · Fixed by #10709
Assignees
Labels
kind/feature Categorizes issue or PR as related to a new feature. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.

Comments

@fabriziopandini
Copy link
Member

fabriziopandini commented May 30, 2024

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
    match, diff, err := compare.Diff(machineClusterConfig, kcpLocalClusterConfiguration)
    , also ClusterClass and topology reconcile
  • Add ClusterConfiguration.*.ExtraEnvs
  • Add Init/JoinConfiguration.NodeRegistrationOptions.ImagePullSerial
  • 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

@k8s-ci-robot k8s-ci-robot added kind/feature Categorizes issue or PR as related to a new feature. needs-priority Indicates an issue lacks a `priority/foo` label and requires one. labels May 30, 2024
@k8s-ci-robot
Copy link
Contributor

This issue is currently awaiting triage.

If CAPI contributors determine this is a relevant issue, they will accept it by applying the triage/accepted label and provide further guidance.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label May 30, 2024
@fabriziopandini
Copy link
Member Author

/priority important-soon
note: priority assumes we can continue to work with v1beta3 API, but if this is not true it must be bumped to critical-urgent

@k8s-ci-robot k8s-ci-robot added priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. and removed needs-priority Indicates an issue lacks a `priority/foo` label and requires one. labels May 30, 2024
@sbueringer
Copy link
Member

/reopen

@k8s-ci-robot
Copy link
Contributor

@sbueringer: Reopened this issue.

In response to this:

/reopen

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot reopened this Jun 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants