Se és um programador, normalmente desejas implementar aplicações em contentores no Kubernetes. Mas a questão é, como? Por que não experimentar o AWS EKS CLI?
Neste tutorial, aprenderás como configurar o AWS EKS CLI para criar um cluster Kubernetes, para que possas focar no teu código em vez de gerir a infraestrutura.
Lê e começa a criar o teu cluster hoje!
Pré-requisito
Este tutorial será uma demonstração prática. Se quiseres acompanhar, certifica-te de que tens um PC e uma conta AWS. Se não tiveres uma conta AWS, está disponível uma conta gratuita na camada gratuita.
Criar um Utilizador Admin
Antes de criar um cluster Kubernetes, criarás um utilizador admin. Um utilizador admin permite-te entrar na consola AWS para configurar o teu cluster. Inicia este tutorial criando um utilizador com permissões de administrador através da Consola AWS.
1. Inicia sessão na tua Consola AWS e acede ao teu painel IAM.
Clica em Utilizadores (painel esquerdo) —> Adicionar Utilizadores (canto superior direito) como mostrado abaixo para iniciar a adição de utilizadores.

2. Em seguida, forneça um nome de usuário no campo Nome de usuário, aqui é utilizado K8-Admin, marque a opção Chave de acesso – Acesso programático e clique em Avançar: Permissões.
Você está selecionando a opção Chave de acesso – Acesso programático porque é acessível programaticamente. Como resultado, você pode usar um aplicativo para se comunicar diretamente com a AWS sobre quais ações tomar.

3. Clique na opção Anexar políticas existentes diretamente, marque a política AdministratorAccess e clique em Avançar: Tags.
A política AdministratorAccess concede ao usuário (K8-Admin) acesso total à AWS e mais, conforme a seguir:
- Permite que o usuário use CloudFormation
- Crie instâncias EC2 e registre logs do CloudWatch
- Configure balanceadores de carga elásticos.

4. Clique em Avançar: Revisão para pular a adição de tags.

5. Por fim, revise os detalhes do usuário e clique em Criar usuário para finalizar a criação do usuário administrador.

Assim que a criação do usuário administrador estiver completa, você receberá uma mensagem de Sucesso na parte superior da tela, semelhante à abaixo. Observe a ID da chave de acesso e a Chave de acesso secreta para acessar posteriormente.

Lançando uma Instância EC2
Agora que você criou o K8-Admin, você pode criar sua primeira instância EC2. Você usará esta instância como seu nó principal, onde executará seus comandos para criar o cluster.
1. Navegue até o painel EC2, clique em EC2, depois em Launch Instances na parte mais à direita da página. Isso redireciona seu navegador para uma página onde você pode escolher uma Amazon Machine Image (AMI) (passo dois).

2. Em seguida, clique em Select ao lado (mais à direita) da Amazon Linux 2 AMI (HVM) da lista, como mostrado abaixo.
Amazon Linux 2 AMI (HVM) fornece um kernel Linux 5.10 ajustado para o desempenho ideal da última geração de hardware. Esta AMI também possui muitos recursos necessários para clusters Kubernetes de nível de produção.

3. Mantenha o padrão (t2.micro) para o tipo de instância e clique em Next: Configure Instance Details para configurar a instância.

4. Ative a opção Auto-assign Public IP e clique em Next: Add Storage. Essa opção garante que cada um dos seus contêineres possa acessar o IP público do seu nó principal do Kubernetes e de suas instâncias EC2.

5. Mantenha o padrão (Root) na página Adicionar Armazenamento e clique em Avançar: Adicionar tags. O volume Root é necessário para ler e escrever dados de dentro da instância.

6. Pule a adição de tags e clique em Avançar: Configurar Grupo de Segurança.

7. Mantenha as configurações padrão no grupo de segurança, como mostrado abaixo, e clique em Revisar e Iniciar.

8. Revise os detalhes do lançamento da instância e clique em Iniciar para iniciar a instância. Uma janela pop-up aparecerá, onde você pode escolher selecionar um par de chaves existente ou criar um novo (passo nove).

9. Na janela pop-up, configure o par de chaves da seguinte forma:
- Selecione Criar um novo par de chaves na caixa suspensa.
- Escolha RSA como o Tipo de par de chaves.
- Forneça o nome desejado para o Nome do par de chaves. Mas, para este tutorial, o nome do par de chaves é definido como my-nvkp.
- Clique em Baixar Par de Chaves, em seguida, Iniciar Instâncias.

Sua instância pode levar um ou dois minutos para ser lançada completamente. Uma vez que sua instância estiver em execução, você a verá listada em seu painel EC2, conforme mostrado abaixo.

Configurando a Ferramenta AWS CLI
Agora que a sua instância está em execução, é hora de configurar as ferramentas de linha de comando (CLI). O uso das ferramentas de CLI em conjunto com sua conta AWS é essencial para criar seu cluster Kubernetes.
1. No seu painel do EC2, marque a caixa para selecionar a instância, conforme mostrado abaixo. Clique em Connect para iniciar a conexão com a instância.

2. Em seguida, clique no botão Connect para se conectar à instância selecionada anteriormente no passo um.

Depois de se conectar à sua instância EC2, o navegador redireciona para o terminal interativo mostrado abaixo como sua sessão temporária SSH com sua instância EC2.
O terminal interativo permite que você se conecte à linha de comando e execute comandos administrativos para a nova instância.

3. Execute o comando aws
abaixo para verificar a versão da sua CLI.
Como você pode ver na saída abaixo, você está executando a versão 1.18.147 na sua instância Amazon Linux 2, que está desatualizada. Você precisa baixar e instalar a AWS CLI versão 2+ para garantir o acesso a todos os recursos do Kubernetes (passo três).

4. Agora, execute o comando curl
abaixo para baixar a ferramenta CLI v2+ e salvá-la em um arquivo zip chamado awscliv2.zip
.

5. Execute os comandos a seguir para descompactar o arquivo baixado e determinar onde a CLI desatualizada da AWS está instalada.
Como você pode ver na saída abaixo, a CLI desatualizada da AWS está instalada em /usr/bin/aws. Você precisa atualizar este caminho com a versão mais recente.

6. Execute o comando abaixo para realizar o seguinte e atualizar o caminho de instalação da AWS CLI em sua instância:
- Instale as ferramentas atualizadas da AWS CLI em sua instância Amazon Linux 2 (
sudo ./aws/install
). - Configure o diretório (
--install-dir /usr/bin/aws-cli
) onde instalar as ferramentas CLI. Fazê-lo permite que você transfira a AWS CLI atualizada para outras instâncias sem reinstalar as ferramentas CLI. - Atualize (
--update
) seu ambiente de shell atual com o novo caminho para as ferramentas da AWS CLI se houver um em seu ambiente atual.

7. Execute novamente o comando aws --version
abaixo para verificar se a AWS CLI atualizada está instalada corretamente.
A versão da AWS CLI instalada é 2.4.7, conforme mostrado abaixo, que é a versão mais recente da AWS CLI, que é 2.4.7 no momento da redação.

8. Em seguida, execute o comando aws configure
para configurar sua instância com as novas ferramentas da AWS CLI.
Insira os valores apropriados nos prompts conforme abaixo:
- ID da Chave de Acesso da AWS [Nenhum] – Insira o ID da Chave de Acesso que você anotou na seção anterior “Criando seu Usuário Administrador”.
- Chave de Acesso Secreta da AWS [Nenhum] – Insira a Chave de Acesso Secreta que você anotou na seção anterior “Criando seu Usuário Administrador”.
- Nome da região padrão [Nenhum] – Selecione uma região suportada, como us-east-1.
- Formato de saída padrão [Nenhum] – Insira json, pois o formato JSON é o padrão preferido para uso com o Kubernetes.

Configurando a Ferramenta de Linha de Comando do Amazon EKS (eksctl)
Como seu objetivo é criar um cluster Kubernetes com a CLI AWS EKS, você também configurará a ferramenta de linha de comando do Amazon EKS (eksctl). Esta ferramenta permite criar e gerenciar clusters Kubernetes no Amazon EKS.
1. Instale a versão mais recente da ferramenta de linha de comando Kubernetes (kubectl) em sua instância EC2. Essa ferramenta permite executar comandos em clusters Kubernetes.
2. Em seguida, execute o comando curl
abaixo para obter a versão mais recente do lançamento do eksctl
no GitHub para o seu diretório /tmp como um arquivo .tar.gz, e depois extraia o conteúdo do arquivo no diretório /tmp.
Execute os comandos abaixo para realizar o seguinte:
- Obtenha a versão mais recente do lançamento do
eksctl
no GitHub (--location
) como um arquivo de arquivamento .tar.gz ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz"
) - Extraia o conteúdo do arquivo para o diretório /tmp (
tar xz -C /tmp
), enquanto a flag--silent
suprime a saída de progresso do comando. - Mova (
sudo mv
) o binário eksctl (/tmp/eksctl
) para o caminho onde você instalou a CLI AWS (/usr/bin
)
3. Por fim, execute o comando abaixo para confirmar que você instalou com sucesso o eksctl
.
A saída abaixo confirma que você instalou o eksctl com sucesso.

Se você é novo no eksctl
, pode executar o comando abaixo para obter uma lista de todos os comandos eksctl
suportados e seus usos.

Provisionamento do seu Cluster EKS
Agora que você configurou o eksctl, pode provisionar seu primeiro Cluster EKS com comandos do eksctl
.
Execute o comando eksctl
abaixo para criar seu primeiro cluster e realizar o seguinte:
- Crie um cluster Kubernetes de 3 nós chamado
dev
com um tipo de nó comot3.micro
e região comous-east-1
. - Defina um mínimo de um nó (
--nodes-min 1
) e um máximo de quatro nós (--nodes-max 4
) para este grupo de nós gerenciado pelo EKS. O grupo de nós é chamado destandard-workers
. - Crie um grupo de nós com o nome
standard-workers
e selecione um tipo de máquina para o grupo de nósstandard-workers
.

2. Acesse o seu painel CloudFormation para ver as ações realizadas pelo comando. O comando eksctl create cluster
usa CloudFormation para provisionar a infraestrutura em sua conta AWS.
Como você pode ver abaixo, uma pilha de CloudFormation eksctl-dev-cluster está sendo criada. Esse processo pode levar 15 minutos ou mais para ser concluído.

3. Agora, acesse o painel do seu EKS e você verá um cluster chamado dev provisionado. Clique no hiperlink dev para acessar o painel do Cluster EKS dev.

Abaixo, você pode ver os detalhes do cluster EKS dev, como Nome do Nó, Tipo de Instância, Grupo de Nós e Status.

4. Mude para o painel do EC2 e você verá quatro nós em execução, sendo três com a função t3.micro em sua conta AWS (três nós worker e um nó master).

5. Por fim, execute o comando abaixo para atualizar sua configuração do kubectl (update-kubeconfig
) com o endpoint do seu cluster, certificado e credenciais.

Implantando uma Aplicação no Cluster EKS
Você criou seu cluster EKS e confirmou que está funcionando perfeitamente. Mas agora, o cluster EKS está apenas lá. Para esta demonstração, você irá utilizar o cluster EKS implantando uma aplicação NGINX.
1. Execute o comando yum
abaixo para instalar
o git
enquanto aceita automaticamente todas as solicitações (-y
) durante a instalação.

2. Em seguida, execute o comando git clone
abaixo para clonar os arquivos de configuração do repositório GitHub para seu diretório atual. Você usará esses arquivos para criar uma implantação do NGINX em seus pods e criar um balanceador de carga (ELB).

3. Execute os seguintes comandos para entrar no diretório ata-elk
e criar (kubectl apply
) um serviço para o NGINX (./nginx-svc.yaml
).

4. Em seguida, execute o comando kubectl get service
para verificar o status do seu serviço NGINX.
Como você pode ver abaixo, o tipo de serviço é um balanceador de carga, e o Kubernetes criou um serviço (nginx-svc), que é sua implantação do NGINX. Você também pode ver o nome de host DNS externo do balanceador de carga criado pelo EKS na coluna IP EXTERNO.
Anote o nome de host DNS externo do balanceador de carga, pois você precisará dele mais tarde para testar o balanceador de carga.

5. Execute o comando kubectl
abaixo para implantar os pods NGINX.

6. Execute os seguintes comandos kubectl get
para verificar o estado do seu deployment
NGINX e do seu pod
NGINX.
Como pode ver no resultado abaixo, existem três pods do seu deployment, e todos estão em execução.

7. Em seguida, execute o comando kubectl get node
para verificar o estado dos seus nós de trabalho.

8. Agora, execute o comando curl
abaixo para testar o seu balanceador de carga. Substitua <LOAD_BALANCER_DNS_HOSTNAME>
pelo nome DNS que anotou anteriormente (passo cinco).
Você verá a página de boas-vindas do NGINX do serviço criado pelo EKS, conforme mostrado abaixo. A saída confirma que o seu balanceador de carga está a funcionar corretamente e que pode aceder aos seus pods NGINX.

9. Por fim, para verificação adicional, copie e cole o nome DNS do balanceador de carga numa nova aba do navegador.
Você também verá uma página de boas-vindas do NGINX, o que indica que a sua aplicação está a funcionar.

Testando o Controlo Kubernetes Altamente Disponível
Agora que tem um cluster em execução, irá testar se o plano de controlo do Kubernetes está altamente disponível. O tempo de atividade da sua aplicação depende desta funcionalidade. Se o plano de controlo não funcionar, as suas aplicações ficarão inoperantes e não poderão atender aos utilizadores.
Com a funcionalidade de controlo Kubernetes altamente disponível, aumenta a disponibilidade da sua aplicação. Irá testar esta funcionalidade ao parar os nós de trabalho EKS e verificar se o Kubernetes inicia novos nós para substituir os que falharam.
1. No seu painel do EC2, pare todas as instâncias dos seus nós de trabalho EKS, conforme mostrado abaixo.

2. Em seguida, execute o seguinte comando para verificar o estado do nó trabalhador.
Você obterá uma mistura de estados, como Pendente, Executando e Encerrando. Por quê? Porque ao tentar parar todos os nós trabalhadores, o Kubernetes detecta a falha e rapidamente inicia outro nó.

3. Agora execute o comando kubectl get pod
para testar a funcionalidade de controle do Kubernetes altamente disponível.
Você pode ver na saída que existem três novos pods (identificados pela idade) no estado Executando. Esses novos pods indicam que a funcionalidade de controle do Kubernetes altamente disponível está funcionando conforme o esperado.

4. Execute o comando kubectl get service
abaixo para listar todos os serviços disponíveis.
Você pode ver abaixo que o Kubernetes criou um novo serviço, e o nome do DNS do balanceador de carga é diferente agora. kubectl get service

5. Por fim, copie e cole o nome do DNS do balanceador de carga em seu navegador. Você obterá a página de boas-vindas do NGINX, assim como fez na última etapa da seção “Implantando um Aplicativo no Cluster EKS”.
Conclusão
Ao longo deste tutorial, você aprendeu como criar um cluster EKS, implantar um serviço NGINX a partir do seu contêiner e testar a funcionalidade do plano de controle altamente disponível.
Neste ponto, você deveria ter uma boa compreensão de como criar clusters EKS em seu ambiente AWS.
O que vem a seguir para você? Talvez aprender como implementar um aplicativo NodeJS usando Docker e K8s na AWS?