From 353d37dfd3253a1093a3af31b00cd74aea3f1332 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Fri, 5 Jan 2024 02:49:00 +0100 Subject: [PATCH] Refine and detail k8s cluster upgrade policy --- docs/howto/upgrade-cluster/index.md | 33 +++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/docs/howto/upgrade-cluster/index.md b/docs/howto/upgrade-cluster/index.md index fe7a56180f..9d12a501c7 100644 --- a/docs/howto/upgrade-cluster/index.md +++ b/docs/howto/upgrade-cluster/index.md @@ -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