Easily create an EKS cluster in AWS using eksctl
For me, not a while ago, Kubernetes cluster administration and creation in AWS was synonymous with kops as their cloud build Kubernetes service (EKS) was lacking features and was a handful when it came to creating and administrating a cluster. Since then things took a turn for the best, new tools were developed and made creation and administration of an EKS clusters more pleasant.
Such a tool is eksctl created and maintained by Weaveworks. Eksctl is a CLI tool built in GO that helps with creation of AWS EKS clusters.
You can easily create a cluster using eksctl with a simple command line instruction where you can specify the name, Kubernetes version, AWS region, the name of the worker nodegroup, EC2 machine node-type, number of nodes from the get go, a minimum number and a maximum number of nodes for autoscalling purposes and if you want the node group to be managed and provisioned by AWS EKS which you certainly want to:
eksctl create cluster \
--name prod \
--version 1.14 \
--region eu-central-1 \
--nodegroup-name prod_node_group \
--node-type t3.large \
--nodes 2 \
--nodes-min 1 \
--nodes-max 3 \
--managedIf you are an adept of IAC (Infrastructure as code) you can in depth customize your cluster by using a yaml config file:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: prod
region: eu-central-1
version: 1.14
managedNodeGroups:
- name: prod
instanceType: t3.large
desiredCapacity: 1
availabilityZones: ["eu-central-1a"]
minSize: 1
maxSize: 3
tags:
nodegroup-role: worker
labels: {role: worker}
iam:
withAddonPolicies:
externalDNS: true
certManager: trueThe config above is similar to the CLI instruction but it also adds new options for customization like specifying availabilityZones, addons policies and many more, a full list of features can be found at eksctl homepage.
The yaml config can be easily applied using: eksctl create cluster -f cluster.yaml.
EndPost
Eksctl is a great tool that simplifies cluster creation and even Amazon recommends using it in their official documentation.