Skip to content

Commit ec46f28

Browse files
committed
docs: Kubernetes support matrix
Signed-off-by: Daniel Lipovetsky <dlipovetsky@d2iq.com>
1 parent 9970a17 commit ec46f28

6 files changed

+142
-0
lines changed

docs/book/src/SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,5 @@
5252
- [Ports](./reference/ports.md)
5353
- [Code of Conduct](./code-of-conduct.md)
5454
- [Contributing](./CONTRIBUTING.md)
55+
- [Version Support](./reference/versions.md)
5556
- [Roadmap](./roadmap.md)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
@startuml
2+
3+
[clusterctl]
4+
5+
package "Management/Workload Cluster" {
6+
[Kubeadm Control Plane Provider] as cakcp
7+
[Core Provider] as capi
8+
[Kubeadm Bootstrap Provider] as cabpk
9+
[Infrastructure Provider] as infra #white
10+
[API Server] as api #white
11+
[etcd] #white
12+
capi --> api
13+
cabpk --> api
14+
cakcp --> api
15+
infra --> api
16+
cakcp --> etcd
17+
}
18+
19+
clusterctl -> api
20+
21+
@enduml
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
@startuml
2+
3+
[clusterctl]
4+
5+
package "Management Cluster" {
6+
[Kubeadm Bootstrap Provider] as cabpk
7+
[Core Provider] as capi
8+
[Kubeadm Control Plane Provider] as cakcp
9+
[Infrastructure Provider] as infra #white
10+
[API Server] as api #white
11+
capi --> api
12+
cabpk --> api
13+
cakcp --> api
14+
infra --> api
15+
}
16+
17+
clusterctl -> api
18+
19+
package "Workload Cluster 1" {
20+
[API Server] as api1 #white
21+
[etcd] as etcd1 #white
22+
capi ---> api1
23+
cakcp ---> api1
24+
cakcp ---> etcd1
25+
}
26+
27+
package "Workload Cluster 2" {
28+
[API Server] as api2 #white
29+
[etcd] as etcd2 #white
30+
capi ---> api2
31+
cakcp ---> api2
32+
cakcp ---> etcd2
33+
}
34+
35+
@enduml
Loading

docs/book/src/reference/versions.md

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Cluster API Version Support and Kubernetes Version Skew Policy
2+
3+
## Supported Versions
4+
5+
The Cluster API team maintains release branches for **(v1alpha3) v0.3** and **(v1alpha2) v0.2**, the two most recent releases.
6+
7+
Releases include these components:
8+
9+
- Core Provider
10+
- Kubeadm Bootstrap Provider
11+
- Kubeadm Control Plane Provider
12+
- clusterctl client
13+
14+
All Infrastructure Providers are maintained by independent teams. Other Bootstrap and Control Plane Providers are also maintained by independent teams. For more information about their version support, see [below](#providers-maintained-by-independent-teams).
15+
16+
## Supported Kubernetes Versions
17+
18+
The project aims to keep the current minor release compatible with the actively supported Kubernetes minor releases, i.e., the current release (N), N-1, and N-2. To find out the exact range of Kubernetes versions supported by each component, please see the [tables](#release-components) below.
19+
20+
See the [following section](#kubernetes-version-support-as-a-function-of-cluster-topology) to understand how cluster topology affects version support.
21+
22+
### Kubernetes Version Support As A Function Of Cluster Topology
23+
24+
The Core Provider, Kubeadm Bootstrap Provider, and Kubeadm Control Plane Provider run on the Management Cluster, and clusterctl talks to that cluster's API server.
25+
26+
In some cases, the Management Cluster is separate from the Workload Clusters. The Kubernetes version of the Management and Workload Clusters are allowed to be different. For example, the current Cluster API release is compatible with Kubernetes versions 1.16 through 1.18. For example, the Management Cluster can run v1.18.2, and two Workload Clusters can run v1.16.9 and v1.17.5.
27+
28+
These diagrams show the relationships between components in a Cluster API release (yellow), and other components (white).
29+
30+
#### Management And Workload Cluster Are the Same (Self-hosted)
31+
32+
![Management/Workload Same Cluster](../images/management-workload-same-cluster.png)
33+
34+
#### Management And Workload Clusters Are Separate
35+
36+
![Management/Workload Separate Clusters](../images/management-workload-separate-clusters.png)
37+
38+
### Release Components
39+
40+
#### Core Provider (`cluster-api-controller`)
41+
42+
||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)|
43+
|-|-|-|
44+
|Kubernetes v1.13|||
45+
|Kubernetes v1.14|||
46+
|Kubernetes v1.15|||
47+
|Kubernetes v1.16|||
48+
|Kubernetes v1.17|||
49+
|Kubernetes v1.18|||
50+
51+
The Core Provider also talks to API server of every Workload Cluster. Therefore, the Workload Cluster's Kubernetes version must also be compatible.
52+
53+
#### Kubeadm Bootstrap Provider (`kubeadm-bootstrap-controller`)
54+
55+
||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)|
56+
|-|-|-|
57+
|Kubernetes v1.13|||
58+
|Kubernetes v1.14 + kubeadm/v1beta1|||
59+
|Kubernetes v1.15 + kubeadm/v1beta1|||
60+
|Kubernetes v1.16 + kubeadm/v1beta1|||
61+
|Kubernetes v1.17 + kubeadm/v1beta1|||
62+
|Kubernetes v1.18 + kubeadm/v1beta1|||
63+
64+
The Kubeadm Bootstrap Provider generates configuration using the v1beta1 kubeadm API.
65+
66+
#### Kubeadm Control Plane Provider (`kubeadm-control-plane-controller`)
67+
68+
||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)|
69+
|-|-|-|
70+
|Kubernetes v1.13|||
71+
|Kubernetes v1.14|||
72+
|Kubernetes v1.15|||
73+
|Kubernetes v1.16 + etcd/v3|||
74+
|Kubernetes v1.17 + etcd/v3|||
75+
|Kubernetes v1.18 + etcd/v3|||
76+
77+
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.
78+
79+
The Kubeadm Control Plane requires the Kubeadm Bootstrap Provider.
80+
81+
## Providers Maintained By Independent Teams
82+
83+
In general, if a Provider version M says it is compatible with Cluster API version N, then version M must be compatible with a subset of the Kubernetes versions supported by Cluster API version N.
84+
85+
To understand the version compatibility of a specific provider, please see its documentation. This book includes [a list of independent providers](providers.md)

0 commit comments

Comments
 (0)