eksctl

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:

eksctl-2

Para mais detalhes sobre a instalação pode consultar esse link

Pré-Requisitos

  • Usuário AWS com as permissões abaixo:

eksctl-3

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:

eksctl-4

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.

eksctl-5

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

eksctl-6

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

eksctl-7

eksctl-8

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

eksctl-9

eksctl-10

Deletando os Nodegroups e o cluster EKS

Para deletar apenas o nodegroup basta executar o comando abaixo:

eksctl delete nodegroup -f nodegroup.yml --approve

eksctl-11

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

eksctl-12

Agora para deletar o cluster EKS criado basta executar o comando abaixo:

eksctl delete cluster -f eksctl.yml

eksctl-13

Referências