Como Criar um Cluster Kubernetes com o AWS EKS CLI

Se você é um desenvolvedor, normalmente desejará implantar aplicativos em contêineres no Kubernetes. Mas a questão é, como? Que tal experimentar o AWS EKS CLI?

Neste tutorial, você aprenderá como configurar o AWS EKS CLI para criar um cluster Kubernetes, para que você possa focar no seu código em vez de gerenciar a infraestrutura.

Continue lendo e comece a criar seu cluster hoje mesmo!

Pré-requisito

Este tutorial será uma demonstração prática. Se você deseja acompanhar, certifique-se de ter um PC e uma conta AWS. Se você não tem uma conta AWS, uma conta gratuita está disponível.

Criando um Usuário Administrador

Antes de criar um cluster Kubernetes, você criará um usuário administrador. Um usuário administrador permite que você faça login no console AWS para configurar seu cluster. Inicie este tutorial criando um usuário com permissões de administrador através do Console AWS.

1. Faça login no seu Console AWS e acesse o painel do IAM.

Clique em Usuários (painel esquerdo) —> Adicionar usuários (canto superior direito) conforme mostrado abaixo para iniciar a adição de usuários.

Initializing User Creation

2. Em seguida, forneça um nome de usuário no campo Nome de usuário, aqui é usado K8-Admin, marque a opção Chave de acesso – Acesso programático, e clique em Próximo: Permissões.

Você está selecionando a opção Chave de acesso – Acesso programático pois é acessível de forma programática. Como resultado, pode usar um aplicativo para se comunicar diretamente com a AWS sobre quais ações tomar.

Configuring User Details

3. Clique na opção Anexar diretamente políticas existentes, marque a política AdministratorAccess e clique em Próximo: Tags.

A política AdministratorAccess dá ao usuário (K8-Admin) acesso total à AWS, e mais como segue:

Setting up AdministratorAccess policies

4. Clique em Próximo: Revisão para pular a adição de tags.

Skipping the tags screen

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

Creating the admin user

Assim que a criação do usuário administrador estiver completa, você receberá uma mensagem de Sucesso na parte superior da tela, como a abaixo. Observe a ID da chave de acesso e a chave de acesso secreta pois você usará essas chaves para fazer login posteriormente.

Previewing the admin user keys

Iniciando 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 da sua EC2, clique em EC2, depois em Iniciar instâncias na parte mais à direita da página. Fazendo isso, seu navegador será redirecionado para uma página onde você pode escolher uma Amazon Machine Image (AMI) (passo dois).

Launching an EC2 Instance

2. Em seguida, clique em Selecionar ao lado (à direita) da Amazon Linux 2 AMI (HVM) na lista, como mostrado abaixo.

Amazon Linux 2 AMI (HVM) fornece o kernel Linux 5.10 ajustado para um desempenho ótimo da última geração de hardware. Esta AMI também possui muitos recursos necessários para clusters Kubernetes em nível de produção.

Selecting Amazon Linux 2 AMI (HVM)

3. Mantenha o padrão (t2.micro) para o tipo de instância e clique em Próximo: Configurar detalhes da instância para configurar a instância.

Previewing the instance type

4. Ative a opção Atribuir automaticamente IP público e clique em Próximo: Adicionar armazenamento. Esta opção garante que cada um dos seus contêineres possa acessar o IP público do seu nó principal do Kubernetes e suas instâncias EC2.

Configuring instance details

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 gravar dados de dentro da instância.

Configuring the storage

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

Previewing the tags

7. Mantenha os padrões no grupo de segurança, como mostrado abaixo, e clique em Revisar e Lançar.

Previewing the Security Group

8. Revise os detalhes do lançamento da instância e clique em Lançar para lançar a instância. Um pop-up aparecerá onde você pode optar por selecionar um par de chaves existente ou criar um novo (passo nove).

Launching an instance

9. No pop-up do diálogo, configure o par de chaves conforme abaixo:

  • Selecione Criar um novo par de chaves na caixa suspensa.
  • Escolha RSA como o Tipo de par de chaves.
  • Forneça o nome do seu Par de chaves preferido. Mas para este tutorial, o nome do par de chaves é definido como meu-nvkp.
  • Clique em Baixar Par de Chaves, depois Lançar Instâncias.
Creating a new key pair

Sua instância pode levar um minuto ou dois para ser lançada completamente. Uma vez que sua instância esteja em execução, você verá ela listada em seu painel do EC2, como mostrado abaixo.

Previewing the newly-created instance

Configurando a Ferramenta AWS CLI

Agora que 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 painel do EC2, marque a caixa para selecionar a instância, conforme mostrado abaixo. Clique em Conectar para iniciar a conexão com a instância.

Connecting to the Ec2 instance.

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

Connecting to the instance

Depois de conectar à sua instância EC2, seu navegador será redirecionado para o terminal interativo mostrado abaixo como sua sessão SSH temporária com sua instância EC2.

O terminal interativo permite que você se conecte à linha de comando e execute comandos administrativos em sua nova instância.

Previewing the interactive terminal

3. Execute o comando aws abaixo para verificar a versão da sua CLI.

aws --version

Como pode ser visto na saída abaixo, você está executando a versão 1.18.147 em sua instância Amazon Linux 2, que está desatualizada. É necessário baixar e instalar a AWS CLI na versão 2+ para garantir o acesso a todos os recursos do Kubernetes (passo três).

Checking the AWS CLI version

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

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 
Downloading the CLI tool v2+

5. Execute os comandos a seguir para descompactar o arquivo baixado e determinar onde a versão desatualizada da AWS CLI está instalada.

unzip awscliv2.zip
which aws

Como pode ser visto na saída abaixo, a AWS CLI desatualizada está instalada em /usr/bin/aws. É necessário atualizar este caminho com a versão mais recente.

Updating outdated AWS CLI

6. Execute o comando abaixo para realizar o seguinte e – atualizar o caminho de instalação da AWS CLI na sua instância:

  • Instale as ferramentas AWS CLI atualizadas na 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 transferir a AWS CLI atualizada para outras instâncias sem reinstalar as ferramentas CLI.
  • Atualize (--update) o seu ambiente shell atual com o novo caminho para as ferramentas AWS CLI se houver um no seu ambiente atual.
sudo ./aws/install --bin-dir /usr/bin --install-dir /usr/bin/aws-cli --update
Installing the CLI tool v2

7. Execute novamente o comando aws --version abaixo para verificar se a AWS CLI atualizada está instalada corretamente.

aws --version

A versão da AWS CLI instalada é 2.4.7, como mostrado abaixo, que é a última versão da AWS CLI 2.4.7 no momento da escrita.

Checking the AWS CLI updated version

8. Em seguida, execute o comando aws configure para configurar sua instância com as novas ferramentas AWS CLI.

aws configure

Insira os valores apropriados nos prompts conforme abaixo:

  • Chave de acesso AWS [Nenhum] – Insira a Chave de Acesso AWS que você anotou na seção anterior “Criando seu Usuário Admin”.
  • Chave de acesso secreta AWS [Nenhum] – Insira a Chave de Acesso Secreta que você anotou na seção anterior “Criando seu Usuário Admin”.
  • 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 Kubernetes.
Configuring the AWS Environment

Configurando a Ferramenta de Linha de Comando do Amazon EKS (eksctl)

Como seu objetivo é criar um cluster Kubernetes com a AWS EKS CLI, você também configurará a ferramenta de linha de comando Amazon EKS (eksctl). Essa ferramenta permite que você crie e gerencie clusters Kubernetes no Amazon EKS.

1. Instale a versão mais recente da ferramenta de linha de comando do Kubernetes (kubectl) em sua instância EC2. Essa ferramenta permite que você execute 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 eksctl no GitHub (--location) como um arquivo .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 opção --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 AWS CLI (/usr/bin)
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/bin

1. Por fim, execute o comando abaixo para confirmar que você instalou o eksctl com sucesso.

eksctl version

A saída abaixo confirma que você instalou o eksctl com sucesso.

Checking the eksctl CLI tool version

Se você é novo no eksctl, pode executar o comando abaixo para obter uma lista de todos os comandos suportados pelo eksctl e suas utilizações.

eksctl --help
Previewing the eksctl help page

Provisionando seu Cluster EKS

Agora que você configurou o eksctl, pode provisionar seu primeiro Cluster EKS com os 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ó como t3.micro e região como us-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 standard-workers.
  • Crie um grupo de nós com o nome standard-workers e selecione um tipo de máquina para o grupo de nós standard-workers.
eksctl create cluster --name dev --version 1.21 --region us-east-1 --nodegroup-name standard-workers --node-type t3.micro --nodes 3 --nodes-min 1 --nodes-max 4 --managed
Provisioning your EKS Cluster

2. Vá para o seu painel do CloudFormation para ver as ações realizadas pelo comando. O comando eksctl create cluster utiliza o CloudFormation para provisionar a infraestrutura em sua conta AWS.

Como você pode ver abaixo, uma pilha de CloudFormation chamada eksctl-dev-cluster está sendo criada. Esse processo pode levar 15 minutos ou mais para ser concluído.

Previewing the eksctl-dev-cluster stack.

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.

Navigating to the dev EKS Cluster dashboard.

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

Previewing the dev EKS Cluster dashboard.

4. Mude para o painel do EC2 e você verá que quatro nós estão em execução, com três tendo o papel t3.micro em sua conta AWS (três nós trabalhadores e um nó mestre).

Previewing the EC2 dashboard.

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

aws eks update-kubeconfig --name dev --region us-east-1
Updating kubectl config

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 sentado no canto. Para esta demonstração, você usará o cluster EKS implantando uma aplicação NGINX.

1. Execute o comando yum abaixo para instalar o git aceitando todas as solicitações automaticamente (-y) durante a instalação.

sudo yum install -y git
Installing Git

2. Em seguida, execute o comando git clone abaixo para clonar os arquivos de configuração do repositório do GitHub para o 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).

git clone https://github.com/Adam-the-Automator/aws-eks-cli.git
Cloning the configuration files

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).

# Mudar para o diretório ata-elk
cd ata-elk
# Aplicar a configuração em ./nginx-svc.yaml a um pod
kubectl apply -f ./nginx-svc.yaml
Creating a service for NGINX

4. Em seguida, execute o comando kubectl get service para verificar o status do seu serviço NGINX.

kubectl get service

Como você pode ver abaixo, o tipo de serviço é um balanceador de carga, e o Kubernetes criou um serviço (nginx-svc), que é a sua implantação do NGINX. Você também pode ver o nome do host DNS externo do balanceador de carga criado pelo EKS na coluna IP EXTERNO.

Anote o nome do host DNS externo do balanceador de carga, pois você precisará dele mais tarde para testar o balanceador de carga.

Checking the status of your NGINX

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

kubectl apply -f ./nginx-deployment.yaml
Deploying the NGINX pods

6. Execute os seguintes comandos kubectl get para verificar o status do seu deployment NGINX e do seu pod NGINX.

kubectl get deployment
kubectl get pod

Como você pode ver na saída abaixo, existem três pods do seu deployment, e todos estão em execução.

Checking the status of the NGINX deployment and pods

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

kubectl get node
Check the status of your worker nodes

8. Agora, execute o comando curl abaixo para testar seu balanceador de carga. Substitua <LOAD_BALANCER_DNS_HOSTNAME> pelo nome DNS que você anotou anteriormente (passo cinco).

curl "<LOAD_BALANCER_DNS_HOSTNAME>"

Você verá a página de boas-vindas do NGINX do serviço NGINX criado pelo EKS, conforme mostrado abaixo. A saída abaixo confirma que seu balanceador de carga está funcionando corretamente e que você pode acessar seus pods NGINX.

Checking your load balancer

9. Por fim, para verificação adicional, copie e cole o nome DNS do balanceador de carga em uma nova aba do navegador.

Você também obterá uma página de boas-vindas do NGINX, o que indica que seu aplicativo está funcionando.

Checking your load balancer with a browser

Testando o Controle do Kubernetes Altamente Disponível

Agora que você tem um cluster em execução, você testará se o plano de controle do Kubernetes está altamente disponível. O tempo de atividade do seu aplicativo depende dessa funcionalidade. Se o plano de controle não funcionar, seus aplicativos ficarão inativos e não poderão atender aos usuários.

Com o recurso de controle do Kubernetes altamente disponível, você aumenta a disponibilidade do seu aplicativo. Você testará esse recurso interrompendo seus nós de trabalho do EKS e verá se o Kubernetes traz novos nós para substituir os que falharam.

1. No seu painel EC2, pare todas as instâncias de nó de trabalho do EKS, conforme mostrado abaixo.

Stopping all of your EKS worker node instances

2. Em seguida, execute o seguinte comando para verificar o status do nó de trabalho.

kubectl get node

Você obterá uma mistura de status, como Pendente, Executando e Encerrando. Por quê? Porque ao tentar parar todos os nós de trabalho, o Kubernetes detecta a falha e rapidamente inicia outro nó.

Checking the status of the worker node

3. Agora execute o comando kubectl get pod para testar o recurso de controle do Kubernetes altamente disponível.

kubectl get pod

Você pode ver na saída que existem três novos pods (identificados pela idade) no estado Executando. Esses novos pods indicam que o recurso de controle do Kubernetes altamente disponível está funcionando conforme o esperado.

Checking the status of the pods

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

kubectl get service
Kubernetes has created a new 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ê deve ter uma boa compreensão de como criar clusters EKS em seu ambiente AWS.

O que vem a seguir para você? Talvez aprender a implantar um aplicativo NodeJS usando Docker e K8s na AWS?

Source:
https://adamtheautomator.com/aws-eks-cli/