Skip to main content

Upgrade EKS cluster(s)

EKS clusters are created using terraform-aws-eks module, when new EKS is released it’s usually followed by new terraform module version

EKS cluster upgrades consist in two things:

  • Upgrade Control Plane
  • Upgrade Node Groups

Pre-requisites

Before you begin, there are a few pre-requisites:

  • Your GPG key must be added to the infrastructure repo so that you are able to run git-crypt unlock.

  • You have the AWS CLI profile moj-cp with suitable credentials.

  • You have terraform and docker installed

Run the upgrade

Upgrade Control Plane

As we mentioned before: almost always new EKS version implies new terraform-aws-eks module version. As an example, the following instructions were applied to upgrade from 1.14 to 1.15:

1) Create a PR in Cloud Platform Infrastructure repo against EKS module (file encrypted with git-crypt to protect users identity) which upgrade to the desired terraform-aws-eks version that supports the EKS version you want to upgrade to

 module "eks" {
   source  = "terraform-aws-modules/eks/aws"
-  version = "v8.1.0"
+  version = "v10.0.0"

2) Execute terraform plan to check what is going to happen and finally terraform apply to execute the change. 3) Verify using AWS CLI or AWS Console the Control Plane has the right version.

$ aws eks describe-cluster --query 'cluster.version' --name manager
"1.15"
$

AWS Console

4) Most of the time new EKS version implies new versions for kube-proxy/kube-dns/aws-node daemonset. The upgrade process can be found directly in the official AWS Control Plane upgrade documentation and MUST BE FOLLOWED, PLEASE DON’T SKIP IT.

Upgrade Node Groups

The best way to upgrade node groups are through AWS Console. We advise to follow the upgrade instructions from the official AWS Managed Node Group documentation.

This page was last reviewed on 11 May 2021. It needs to be reviewed again on 11 August 2021 by the page owner #cloud-platform .
This page was set to be reviewed before 11 August 2021 by the page owner #cloud-platform. This might mean the content is out of date.