Skip to main content

Using eksctl

This section outlines how to build a cluster for the lab exercises using the eksctl tool. This is the easiest way to get started, and is recommended for most learners.

The eksctl utility has been pre-installed in Cloud9 so we can immediately create the cluster. This is the configuration that will be used to build the cluster:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

availabilityZones:
- ${AWS_REGION}a
- ${AWS_REGION}b
- ${AWS_REGION}c

metadata:
name: ${EKS_CLUSTER_NAME}
region: ${AWS_REGION}
version: '1.25'
tags:
karpenter.sh/discovery: ${EKS_CLUSTER_NAME}
created-by: eks-workshop-v2
env: ${EKS_CLUSTER_NAME}

iam:
withOIDC: true

vpc:
cidr: 10.42.0.0/16
clusterEndpoints:
privateAccess: true
publicAccess: true

addons:
- name: vpc-cni
version: v1.12.5-eksbuild.2
configurationValues: "{\"env\":{\"ENABLE_PREFIX_DELEGATION\":\"true\", \"ENABLE_POD_ENI\":\"true\", \"POD_SECURITY_GROUP_ENFORCING_MODE\":\"standard\"}}"
resolveConflicts: overwrite

managedNodeGroups:
- name: default
desiredCapacity: 3
minSize: 3
maxSize: 6
instanceType: m5.large
privateNetworking: true
releaseVersion: 1.25.6-20230304
labels:
workshop-default: 'yes'

Based on this configuration eksctl will:

  • Create a VPC across three availability zones
  • Create an EKS cluster
  • Create an IAM OIDC provider
  • Add a managed node group named default
  • Configure the VPC CNI to use prefix delegation

Apply the configuration file like so:

~$export EKS_CLUSTER_NAME=eks-workshop
~$curl -fsSL https://raw.githubusercontent.com/aws-samples/eks-workshop-v2/dev/cluster/eksctl/cluster.yaml | \
envsubst | eksctl create cluster -f -

This generally takes 20 minutes. Once the cluster is created run this command to use the cluster for the lab exercises:

~$use-cluster $EKS_CLUSTER_NAME

Now that the cluster is ready, head to the Getting Started module or skip ahead to any module in the workshop with the top navigation bar. Once you're completed with the workshop, follow the steps below to clean-up your environment.

Cleaning Up

Before deleting the Cloud9 environment we need to clean up the cluster that we set up above.

First use delete-environment to ensure that the sample application and any left-over lab infrastructure is removed:

~$delete-environment

Next delete the cluster with eksctl:

~$eksctl delete cluster $EKS_CLUSTER_NAME --wait