Deploy an Ubuntu Pro cluster with EKS Pro AMI

This guide shows how to deploy an Ubuntu Pro EKS cluster using an EKS Pro AMI. You can also use Pro tokens and an EC2 launch template to deploy such a cluster. For instructions on how to do that, refer to Deploy an Ubuntu Pro EKS cluster with Pro tokens.

An EKS Pro AMI is an Ubuntu EKS AMI with the Pro service included, which provides services such as Livepatch for LTS-based nodes and Expanded Security Maintenance (ESM).

Currently, only Ubuntu Pro 22.04 is available as an EKS AMI, and it does not include the FIPS components. If you need FIPS or Ubuntu Pro 20.04, you’ll have to use Pro tokens and follow the instructions from the other how-to guide mentioned above.

Prerequisites

You need:

Create the eksctl config file

Create a config.yaml with the following content:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
    name: your-pro-cluster
    region: us-east-1
NodeGroups:
- name: ng-procluster
  instanceType: m5.large
  amiFamily: UbuntuPro2204
  desiredCapacity: 2

This config file will allow you to use eksctl to create an EKS cluster and node groups. By specifying amiFamily: UbuntuPro2204, we ensure that the EKS Pro AMI will be used during creation and deployment.

For further cluster customisation check out eksctl details.

Deploy the EKS cluster

To create the EKS cluster, run:

eksctl create cluster -f config.yaml

You might need to specify the --profile option if you have multiple profiles.

You can confirm the status of the nodes on your cluster using:

$ kubectl get nodes

NAME                                           STATUS   ROLES    AGE     VERSION
ip-xxx-xxx-xx-xxx.us-east-1.compute.internal   Ready    <none>   2m45s   v1.23.x
ip-xxx-xxx-x-xx.us-east-1.compute.internal     Ready    <none>   2m45s   v1.23.x

(Optional) Verify Pro subscription

To check deployed nodes have Ubuntu Pro, run:

$ aws --region <region_name> ec2 describe-instances --filters Name=instance-state-name,Values=running --query 'Reservations[*].Instances[*].[InstanceType, LaunchTime, PlatformDetails]' --output table
$ pro status

----------------------------------------------------------------
|                       DescribeInstances                      |
+-----------+-----------------------------+--------------------+
|  t3.medium|  2024-05-07T19:57:33+00:00  |  Ubuntu Pro Linux  |
|  t3.medium|  2024-05-07T19:57:33+00:00  |  Ubuntu Pro Linux  |
+-----------+-----------------------------+--------------------+