Skip to content

Commit

Permalink
Merge pull request #3577 from consideRatio/pr/refine-k8s-upgrade-policy
Browse files Browse the repository at this point in the history
Refine and detail k8s cluster upgrade policy
  • Loading branch information
consideRatio authored Jan 16, 2024
2 parents eb13f49 + 353d37d commit f38c1f4
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions docs/howto/upgrade-cluster/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,26 @@ clusters on AWS.

## Upgrade policy

We aim to ensure we use a k8s version for the control plane and node groups that is at least **five minor versions** behind the latest one available at any given time.

Ideally, the following rules should also be respected:

1. Every new cluster we deploy should be using the latest available kubernetes version.
1. All of the clusters deployed in a cloud provider should be using the same version.
1. Check if new upgrades are needed at least every 3 months.


```{warning}
As of now, we have not yet established practices on how to ensure these upgrades happen according to the policy above. Establishing this is tracked in [this GitHub
issue](https://github.com/2i2c-org/infrastructure/issues/412).
```
1. To keep our k8s cluster's control plane and node pools upgraded to the latest
_three_ and _four_ [official minor k8s versions] respectively at all times.
2. To await a level of maturity for minor k8s versions before we adopt them.

| Kubernetes distribution | Our maturity criteria |
| - | - |
| GKE | Part of [GKE's regular release channel] |
| EKS | [Supported by `eksctl`] and is GKE mature |
| AKS | Listed as [generally available on AKS] |
3. To upgrade k8s cluster's control plane and node pools at least _twice_ and
_once_ per year respectively.
4. To not disrupt user nodes with running users, by instead rolling out new user
node pools if needed and cleaning up the old at a later time.
5. To check if actions needs to be scheduled related to this in the beginning of
every quarter.

[official minor k8s versions]: https://kubernetes.io/releases/
[gke's regular release channel]: https://cloud.google.com/kubernetes-engine/docs/release-notes-regular
[supported by `eksctl`]: https://eksctl.io/getting-started/#basic-cluster-creation
[generally available on aks]: https://learn.microsoft.com/en-gb/azure/aks/supported-kubernetes-versions?tabs=azure-cli#aks-kubernetes-release-calendar

```{toctree}
:maxdepth: 1
Expand Down

0 comments on commit f38c1f4

Please sign in to comment.