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

📖 docs: add Cluster API 1.4 and Kubernetes 1.26 to supported versions page #7696

Merged
merged 1 commit into from
Dec 6, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 48 additions & 39 deletions docs/book/src/reference/versions.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,18 +63,20 @@ These diagrams show the relationships between components in a Cluster API releas

#### Core Provider (`cluster-api-controller`)

| | v0.3 (v1alpha3) | v0.4 (v1alpha4) | v1.0 (v1beta1) | v1.1 (v1beta1) | v1.2 (v1beta1) | v1.3 (v1beta1) |
|-------------------|----------------------|----------------------|---------------------|-------------------|----------------------|---------------------|
| Kubernetes v1.16 | ✓ | | | | | |
| Kubernetes v1.17 | ✓ | | | | | |
| Kubernetes v1.18 | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.19 | ✓ | ✓ | ✓ | ✓ | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.20 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.21 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.22 | ✓ (only workload) | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.23* | | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.24 | | | | ✓ | ✓ | ✓ |
| Kubernetes v1.25 | | | | | ✓ | ✓ |
| | v0.3 (v1alpha3) | v0.4 (v1alpha4) | v1.0 (v1beta1) | v1.1 (v1beta1) | v1.2 (v1beta1) | v1.3 (v1beta1) | v1.4 (v1beta1) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's a blocker from this PR, but I think we should consider removing v1.0 and v1.1 from these tables. We now have two supported releases, and users can review those versions of the book if they want the correct version support for those releases.

I think v0.3 and v0.4 are different cases as they're different API versions, but we could also consider removing those in favor of keeping their compatibility information in their versions of the book.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another question: should the lowest supported Kubernetes version change? CAPI supports a lot of versions that aren't being developed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the CAPI support policy has been to assume that version of Kubernetes works up until there's a signal that it doesn't, or an actual breaking change.

There's still tests being run against these older versions of K8s too - so the community would have to make an affirmative decision to stop supporting some of these older versions IMO - possibly a good question for a community meeting.

There's also a couple of related issues open to enforce this in webhooks (at least for KCP) e.g. #7010. Today we don't enforce the versions of Kubernetes at all, so that would definitely be a start IMO, but it would create a situation where choosing to not support a version becomes explicit and strict i.e. someone has to make a PR that will block Kubernetes 1.16 in KCP.

Copy link
Member

@sbueringer sbueringer Dec 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will bring up discussions next year in January to discuss a few of our support policies where this will be included.

|-------------------|----------------------|-------------------|-------------------|-------------------|-------------------|-------------------|-------------------|
| Kubernetes v1.16 | ✓ | | | | | | |
| Kubernetes v1.17 | ✓ | | | | | | |
| Kubernetes v1.18 | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.19 | ✓ | ✓ | ✓ | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.20 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.21 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.22 | ✓ (only workload) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.23* | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.24 | | | | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.25 | | | | | ✓ | ✓ | ✓ |
| Kubernetes v1.26 | | | | | | | |


\* There is an issue with CRDs in Kubernetes v1.23.{0-2}. ClusterClass with patches is affected by that (for more details please see [this issue](https://github.com/kubernetes-sigs/cluster-api/issues/5990)). Therefore we recommend to use Kubernetes v1.23.3+ with ClusterClass.
Previous Kubernetes **minor** versions are not affected.
Expand All @@ -85,35 +87,37 @@ The Core Provider also talks to API server of every Workload Cluster. Therefore,

#### Kubeadm Bootstrap Provider (`kubeadm-bootstrap-controller`)

| | v0.3 (v1alpha3) | v0.4 (v1alpha4) | v1.0 (v1beta1) | v1.1 (v1beta1) | v1.2 (v1beta1) | v1.3 (v1beta1) |
|-------------------------------------------------------------------|----------------------|----------------------|---------------------|-------------------|----------------------|--------------------|
| Kubernetes v1.16 + kubeadm/v1beta2 | ✓ | | | | | |
| Kubernetes v1.17 + kubeadm/v1beta2 | ✓ | | | | | |
| Kubernetes v1.18 + kubeadm/v1beta2 | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.19 + kubeadm/v1beta2 | ✓ | ✓ | ✓ | ✓ | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.20 + kubeadm/v1beta2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.21 + kubeadm/v1beta2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.22 + kubeadm/v1beta2 (v0.3) kubeadm/v1beta3 (v0.4+) | ✓ (only workload) | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.23 + kubeadm/v1beta3 | | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.24 + kubeadm/v1beta3 | | | | ✓ | ✓ | ✓ |
| Kubernetes v1.25 + kubeadm/v1beta3 | | | | | ✓ | ✓ |
| | v0.3 (v1alpha3) | v0.4 (v1alpha4) | v1.0 (v1beta1) | v1.1 (v1beta1) | v1.2 (v1beta1) | v1.3 (v1beta1) | v1.4 (v1beta1) |
|--------------------------------------------------------------------|----------------------|----------------------|---------------------|-------------------|-------------------|-------------------|-------------------|
| Kubernetes v1.16 + kubeadm/v1beta2 | ✓ | | | | | | |
| Kubernetes v1.17 + kubeadm/v1beta2 | ✓ | | | | | | |
| Kubernetes v1.18 + kubeadm/v1beta2 | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.19 + kubeadm/v1beta2 | ✓ | ✓ | ✓ | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.20 + kubeadm/v1beta2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.21 + kubeadm/v1beta2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.22 + kubeadm/v1beta2 (v0.3) kubeadm/v1beta3 (v0.4+) | ✓ (only workload) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.23 + kubeadm/v1beta3 | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.24 + kubeadm/v1beta3 | | | | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.25 + kubeadm/v1beta3 | | | | | ✓ | ✓ | ✓ |
| Kubernetes v1.26 + kubeadm/v1beta3 | | | | | | | |

The Kubeadm Bootstrap Provider generates kubeadm configuration using the API version recommended for the target Kubernetes version.

#### Kubeadm Control Plane Provider (`kubeadm-control-plane-controller`)

| | v0.3 (v1alpha3) | v0.4 (v1alpha4) | v1.0 (v1beta1) | v1.1 (v1beta1) | v1.2 (v1beta1) | v1.3 (v1beta1) |
|----------------------------|----------------------|----------------------|---------------------|-------------------|---------------------|---------------------|
| Kubernetes v1.16 + etcd/v3 | ✓ | | | | | |
| Kubernetes v1.17 + etcd/v3 | ✓ | | | | | |
| Kubernetes v1.18 + etcd/v3 | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.19 + etcd/v3 | ✓ | ✓ | ✓ | ✓ | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.20 + etcd/v3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.21 + etcd/v3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.22 + etcd/v3 | ✓* (only workload) | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.23 + etcd/v3 | | ✓* | ✓* | ✓ | ✓ | ✓ |
| Kubernetes v1.24 + etcd/v3 | | | | ✓ | ✓ | ✓ |
| Kubernetes v1.25 + etcd/v3 | | | | | ✓ | ✓ |
| | v0.3 (v1alpha3) | v0.4 (v1alpha4) | v1.0 (v1beta1) | v1.1 (v1beta1) | v1.2 (v1beta1) | v1.3 (v1beta1) | v1.4 (v1beta1) |
|----------------------------|----------------------|----------------------|---------------------|-------------------|-------------------|-------------------|-------------------|
| Kubernetes v1.16 + etcd/v3 | ✓ | | | | | | |
| Kubernetes v1.17 + etcd/v3 | ✓ | | | | | | |
| Kubernetes v1.18 + etcd/v3 | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.19 + etcd/v3 | ✓ | ✓ | ✓ | ✓ | ✓ (only workload) | ✓ (only workload) | ✓ (only workload) |
| Kubernetes v1.20 + etcd/v3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.21 + etcd/v3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.22 + etcd/v3 | ✓* (only workload) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.23 + etcd/v3 | | ✓* | ✓* | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.24 + etcd/v3 | | | | ✓ | ✓ | ✓ | ✓ |
| Kubernetes v1.25 + etcd/v3 | | | | | ✓ | ✓ | ✓ |
| Kubernetes v1.26 + etcd/v3 | | | | | | | |

The Kubeadm Control Plane Provider talks to the API server and etcd members of every Workload Cluster whose control plane it owns. It uses the etcd v3 API.

Expand All @@ -131,11 +135,17 @@ The Kubeadm Control Plane requires the Kubeadm Bootstrap Provider.
| v1.1 (v1beta1) | v1.9.3 |
| v1.2 (v1beta1) | v1.9.3 (v1.10.0 with >= v1.2.7) |
| v1.3 (v1beta1) | v1.10.0 |
| v1.4 (v1beta1) | v1.10.0 |

#### Kubernetes version specific notes

**1.24**:
**1.26**:
* No specific notes

**1.25**:
* No specific notes

**1.24**:
* Kubeadm Bootstrap Provider:
* `kubeadm` now sets both the `node-role.kubernetes.io/control-plane` and `node-role.kubernetes.io/master` taints on control plane nodes.
* `kubeadm` now only sets the `node-role.kubernetes.io/control-plane` label on control plane nodes (the `node-role.kubernetes.io/master` label is not set anymore).
Expand All @@ -144,8 +154,7 @@ The Kubeadm Control Plane requires the Kubeadm Bootstrap Provider.

#### clusterctl

It is strongly recommended to always use the latest version of [clusterctl](../clusterctl/overview.md), in order to
get all the fixes/latest changes.
It is strongly recommended to always use the latest version of [clusterctl](../clusterctl/overview.md), in order to get all the fixes/latest changes.

In case of upgrades, clusterctl should be upgraded first and then used to upgrade all the other components.

Expand Down