cluster-api icon indicating copy to clipboard operation
cluster-api copied to clipboard

Tasks to bump to Kubernetes v1.31

Open sbueringer opened this issue 1 year ago • 1 comments

This issue is tracking the tasks that should be implemented after the Kubernetes minor release has been released.

Tasks

Note: If feasible we usually cherry-pick the changes back to the latest release series.

Supporting managing and running on the new Kubernetes version

This section contains tasks to update our book, e2e testing and CI to use and test the new Kubernetes version as well as changes to Cluster API that we might have to make to support the new Kubernetes version. All of these changes should be cherry-picked to all release series that will support the new Kubernetes version.

  • [ ] Continuously modify CAPD to use early versions of the upcoming Kubernetes release (betas and rcs):

    • Bump the Kubernetes version in test/* except for test/infrastructure/kind/*.
    • Prior art: #10384
  • [ ] Modify CAPD to use the new Kubernetes release after it is GA:

    • Bump the Kubernetes version in test/* except for test/infrastructure/kind/*.
    • Prior art: #10454
  • [ ] Ensure the jobs are adjusted to provide test coverage according to our support policy:

    • At the .versions section in the cluster-api-prowjob-gen.yaml file in test-infra:

      • Add a new entry for the new Kubernetes version
      • Adjust the released Kubernetes's version entry to refer stable-1.<minor> instead of ci/latest-1.<minor>
      • Check and update the versions for the keys etcd and coreDNS if necessary:
    • For the .branches.main section in the cluster-api-prowjob-gen.yaml file in test-infra:

      • For the .upgrades section:
        • Drop the oldest upgrade
        • Add a new upgrade entry from the previous to the new Kubernetes version
      • Bump the version set at .kubernetesVersionManagement to the new minimum supported management cluster version (This is the image version available as kind image).
      • Bump the version set at .kubebuilderEnvtestKubernetesVersion to the new minimum supported management cluster version.
    • Run make generate-test-infra-prowjobs to generate the resulting prowjob configuration:

      TEST_INFRA_DIR=../../k8s.io/test-infra make generate-test-infra-prowjobs
      
    • Prior art: #32456

  • [ ] Update book:

    • Update supported versions in versions.md
    • Prior art: #10454
  • [ ] Issues specific to the Kubernetes minor release:

    • Sometimes there are adjustments that we have to make in Cluster API to be able to support a new Kubernetes minor version. Please add these issues here when they are identified.
    • Consider
      • https://github.com/kubernetes-sigs/cluster-api/issues/10708
        • PR: https://github.com/kubernetes-sigs/cluster-api/pull/10709
        • PR: https://github.com/kubernetes-sigs/cluster-api/pull/10771
      • https://github.com/kubernetes-sigs/cluster-api/issues/10737

Bump quickstart and kind image references in CAPD

Prerequisites:

  • The target Kubernetes version is GA

  • There is a new kind version with/or a new set of kind images for the target Kubernetes version

  • [ ] Bump quickstart and kind image references in CAPD:

    • Bump the Kubernetes version in:
      • docs/*
      • Tiltfile
    • Bump kind image references in CAPD (and also kind if necessary, including the latest images for this kind release)
    • Verify the quickstart manually
    • Prior art: #10610
  • [ ] Cherry-pick above PR to the latest release branch.

Using new Kubernetes dependencies

This section contains tasks to update Cluster API to use the latest Kubernetes Go dependencies and related topics like using the right Go version and build images. These changes are only made on the main branch. We don't need them in older releases as they are not necessary to manage workload clusters of the new Kubernetes version or run the Cluster API controllers on the new Kubernetes version.

  • [ ] Ensure there is a new controller-runtime minor release which uses the new Kubernetes Go dependencies.
  • [ ] Update our Prow jobs for the main branch to use the correct kubekins-e2e image via the configuration file and by running make generate-test-infra-prowjobs.
    • It is recommended to have one PR for presubmit and one for periodic jobs to reduce the risk of breaking the periodic jobs.
    • Prior art: https://github.com/kubernetes/test-infra/pull/32380
  • [ ] Bump the Go version in Cluster API: (if Kubernetes is using a new Go minor version)
    • Search for the currently used Go version across the repository and update it
    • We have to at least modify it in: hack/ensure-go.sh, .golangci.yml, cloudbuild*.yaml, go.mod, Makefile, netlify.toml, Tiltfile
    • Prior art: #10452
  • [ ] Bump controller-runtime
  • [ ] Bump controller-tools
  • [ ] Bump the Kubernetes version used in integration tests via KUBEBUILDER_ENVTEST_KUBERNETES_VERSION in Makefile
    • Note: This PR should be cherry-picked as well. It is part of this section as it depends on kubebuilder/controller-runtime releases and is not strictly necessary for Supporting managing and running on the new Kubernetes version.
    • Prior art to release envtest binaries: https://github.com/kubernetes-sigs/kubebuilder/pull/3864
    • Prior art: #7193
  • [ ] Bump conversion-gen via CONVERSION_GEN_VER in Makefile
    • Prior art: #7118

After release of CAPI v1.X.x (that supports Kubernetes v1.Y):

sbueringer avatar May 21 '24 08:05 sbueringer

/assign @sbueringer /assign @chrischdi

/triage accepted

Nothing to do until ~ July.

sbueringer avatar May 21 '24 08:05 sbueringer

FYI, 1.31 beta is out now. Ref: https://github.com/kubernetes/kubernetes/releases/tag/v1.31.0-beta.0

Looking forward to help with few things here out of many. :)

kranurag7 avatar Jul 17 '24 15:07 kranurag7

Thx! Let's see how it goes. Not sure about the critical path to get v1.31 support out, because we have a very tight deadline, so I would like to do this closely coordinated with @chrischdi.

But there are a definitely other tasks on this issue that are not in the critical path (they'll be after Kubernetes 1.31 GA and CAPI v1.8.1 though)

sbueringer avatar Jul 17 '24 16:07 sbueringer

Bump quickstart and kind image references in CAPD

Hi. Can I take this task ?

sivchari avatar Jul 22 '24 07:07 sivchari

This can only be done after the prerequisites are fulfilled:

Prerequisites:

sbueringer avatar Jul 22 '24 08:07 sbueringer

@sbueringer I understood, thanks. When the prerequisites are fulfilled, I'd contribute it. And I'm willing to help with other tasks. :)

sivchari avatar Jul 22 '24 10:07 sivchari

Hey folks, the following two tasks can be done now:

  • Update our ProwJobs for the main branch to use the kubekins-e2e with the correct Kubernetes version
  • Bump the Kubernetes version used in integration tests via KUBEBUILDER_ENVTEST_KUBERNETES_VERSION in Makefile

sbueringer avatar Aug 15 '24 10:08 sbueringer

kind v0.24 was released (https://github.com/kubernetes-sigs/kind/releases/tag/v0.24.0)

So "Bump quickstart and kind image references in CAPD" is also unblocked

sbueringer avatar Aug 19 '24 09:08 sbueringer

All done

Thx everyone!

/close

sbueringer avatar Aug 26 '24 08:08 sbueringer

@sbueringer: Closing this issue.

In response to this:

All done

Thx everyone!

/close

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 avatar Aug 26 '24 08:08 k8s-ci-robot