eksctl - The official CLI for Amazon EKS

Eksctl es una herramienta simple de CLI para crear clústeres en EKS.


Eksctl es una herramienta simple de CLI para crear clústeres en EKS, lo cual a mi parecer me parece lo mejor para administrar clústeres de kubernetes en aws porque con un solo comando puedes crear el eks e infraestructura como en ec2 o en fragate e agregar clústeres a eks o quitar.

Vamos a ver diferentes maneras de crear un eks con diferentes clústeres.

Comencemos con lo básico

Instalación

Linux

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin

Homebrew

brew tap weaveworks/tap
brew install weaveworks/tap/eksctl

chocolatey (windows)

chocolatey install eksctl

Crear un clúster

eksctl create cluster --name=cluster-1 --nodes-min=3 --nodes-max=5 -- --node-volume-size=50 --node-volume-type=io1 version=1.16

permitir acceso ssh a nuestros nodos

eksctl create cluster --ssh-access --ssh-public-key=my_eks_node_id.pub

Crear clúster de fargate

Solo tienes que poner un flat --fargate

eksctl create cluster --fargate

Eliminar clúster

eksctl delete cluster --name=<name> [--region=<region>]

o podrías tener un archivo de configuración, entre otras cosas, para mayor información https://eksctl.io/introduction/

Pero la creación de un clúster no es algo super funcional, lo podría hacer con terraform o manualmente o cloudformation etc.

Bueno supongamos un caso donde tengamos que crear nuestro clúster a una vpc sobre unas subnet públicas o privadas, para mayor informacion https://eksctl.io/usage/vpc-networking/

Bueno comencemos, como me parece mas practico voy a crearme un archivo .yaml para poner mi configuración.

nano eksctl-vpc.yaml

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

#eks config
metadata:
  name: cluster-vpc-ec2
  region: us-east-2
vpc:
 id: vpc-XXXXXXX #vpc sobre la cual va estar nuestro cluster 
 cidr: 10.XX.0.0/16
 subnets:
   public:
     us-east-2a:
       id: subnet-XXXXX #subnet sobre la cual va estar nuestro cluster 
       cidr: 10.XXX.0.0/24
    
     us-east-2b:
       id: subnet-XXXXXX #subnet sobre la cual va estar nuestro cluster 
       cidr: 10.XXX.XXX.0/24

# Nodos
nodeGroups:
  - name: managed-ng-2
    instanceType: t2.large
    privateNetworking: false 
    minSize: 2
    maxSize: 3
    ssh:
      allow: true
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub

eksctl-vpc.yaml

Ejecutamos

eksctl create cluster --config-file=eksctl-vpc.yaml

si por alguna razón quieres agregar otro nodo o te fallo la creación del nodo solo agrega en la parte de nodeGroups y ejecutas eksctl create o eksctl upgrate.

eksctl upgrade nodegroup --config-file=eksctl-vpc.yaml

Reference:

eksctl
The official CLI for Amazon EKS