
Nesse artigo irei demostrar a utilização da ferramenta de linha de comando chamada eksctl feita em Golang e criada pela empresa Weaveworks para criação e gerenciamento de um cluster EKS.
Com essa ferramenta de linha de comando é possível criar um cluster EKS e também gerenciar seus node groups que não foram criados com o eksctl por exemplo um cluster que foi provisionado através do terraform.
Lembrando que o EKS não está na oferta de free tier da AWS então caso prossiga com esse lab você será cobrado pelo tempo de utilização do cluster EKS
Instalação
O eksctl pode ser instalado em máquinas que utilizam Windows, Linux e MAC ou também ser executado através do Docker.
Para Linux
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmpsudo mv /tmp/eksctl /usr/local/bin
Para MAC
Também pode ser utilizado a seguinte linha de comando para usuários Mac:
brew tap weaveworks/tap
brew install weaveworks/tap/eksctl
Para Windows
chocolatey install eksctl
No windows também pode ser utilizado o PowerShell.
No meu caso eu utilizei uma máquina Linux. Para verificar se a instalação foi bem sucedida basta executar o comando abaixo:
eksctl version
Ou digitando apenas eksctl deve retornar a saída abaixo:

Para mais detalhes sobre a instalação pode consultar esse link
Pré-Requisitos
- Usuário AWS com as permissões abaixo:

Para mais informações sobre as permissões necessárias para o eksctl funcionar acesse esse link. Abaixo segue como ficou as minhas políticas no IAM:

Para instruções de como criar um usuário na AWS consulte este link.
- AWS CLI instalado. Segue abaixo procedimento para a instalação:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Dependendo da distribuição Linux será necessário instalar o unzip.
Para mais informações sobre a instalação do aws cli consulte esse link.
- Kubectl instalado. Segue abaixo procedimento para a instalação:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"chmod +x ./kubectlmv ./kubectl /usr/local/bin/
Para mais informações sobre a instalação do kubectl consulte esse link.
Criando seu primeiro cluster EKS com eksctl
Após a instalação dos pré-requisitos da seção anterior você está pronto para a criação do seu primeiro cluster. O eksctl é uma forma mais simples de subir um cluster EKS em background o eksctl provisiona todos os recursos de infraestrutura utilizando Cloudformation.
Por padrão o eksctl sobe instâncias do tipo m5.large para economizar dinheiro optei pela criação do cluster utilizando o arquivo abaixo setando o tipo de instância para utilizar t3.medium.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: cluster-demoeksctl
region: us-east-1
nodeGroups:
- name: ng-1
instanceType: t3.medium
desiredCapacity: 1
- name: ng-2
instanceType: t3.medium
desiredCapacity: 1
Criar um arquivo com o nome eksctl.yml com conteúdo acima e executar o comando abaixo:
eksctl create cluster -f eksctl.yml
Abaixo a execução do comando e a saída para criação do cluster.

Na saída abaixo é mostrado o provisionamento dos dois Nodegroups

Criado os dois Nodegroups com um node por nodegroup conforme imagens abaixo.


Criando um novo Nodegroup com eksctl
Com o eksctl você consegue também gerenciar seu cluster criado ou não pelo eksctl. Algumas tarefas que conseguimos executar com o eksctl:
- Criação de um novo Nodegroup;
- Criação de um Fargate Profile;
- Update de versão do cluster;
Para mais informações podem consultar a documentação oficial do eksctl que vou deixar na seção de referências.
No meu caso irei demonstar a criação de um novo nodegroup no cluster EKS criado anteriormente. Novamente vou fazer a criação de forma declarativa usando o arquivo abaixo:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: cluster-demoeksctl
region: us-east-1
nodeGroups:
- name: ng-3
instanceType: t3.medium
desiredCapacity: 1
Criar um arquivo com o nome nodegroup.yml com conteúdo acima e executar o comando abaixo:
eksctl create nodegroup -f nodegroup.yml


Deletando os Nodegroups e o cluster EKS
Para deletar apenas o nodegroup basta executar o comando abaixo:
eksctl delete nodegroup -f nodegroup.yml --approve

Podemos perceber na imagem abaixo que temos apenas 2 nodes que foram criados juntamente com o cluster.

Agora para deletar o cluster EKS criado basta executar o comando abaixo:
eksctl delete cluster -f eksctl.yml
