Implementando o Amazon Elastic Kubernetes Service: Do zero ao deploy (Parte 1/6)

Carlos Diego C. P.
cdiego.blog
Published in
3 min readApr 18, 2022

--

O Amazon Elastic Kubernetes Service (Amazon EKS) é um serviço Kubernetes totalmente gerenciado na AWS. Com ele, clientes como a Intel, Snap, Intuit, GoDaddy, entre outras empresas, executam seus aplicativos mais confidenciais e essenciais à missão devido à segurança, confiabilidade e escalabilidade. Nesta série de publicações veremos como implementar o Amazon EKS do zero até o deploy de uma aplicação. Os tópicos que serão abordados:

  • Parte 1 — Configurando um cluster no EKS
  • Parte 2 — Configurando node-groups no EKS
  • Parte 3 — Configurando usuarios IAM como Masters
  • Parte 4 — Empacotando a partir do código fonte
  • Parte 5 — Publicando uma imagem de conteiner para o ECR
  • Parte 6 — Deploy no EKS a partir de uma imagem no ECR

Para essa série, todo processo será realizado por meio do AWS CLI. Neste sentido, o primeiro passo que precisa ser realizado é a instalação e configuração do AWS CLI. Mais detalhes sobre como configurar e instalar o AWS CLI podem ser encontrados em https://docs.aws.amazon.com/pt_br/cli/latest/userguide/install-cliv2.html.

Parte 1 — Configurando um cluster no EKS

Primeiramente, vamos configurar os serviços do IAM para o provisionamento do nosso cluster EKS.

  • No IAM, crie uma role para o EKS
  • IAM > Roles > EKS
  • Associar as policies “AmazonEKSClusterPolicy” e “AmazonEKSServicePolicy” e criar uma role com o nome “EKSServiceRole”.
  • Acessar o CloudFormation e criar uma stack com o nome “EKS-VPC” para provisionar uma VPC com subnets alocadas em 3 (três) diferentes zonas de disponibilidade. Utilizar o template disponível em https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-11-07/amazon-eks-vpc-sample.yaml
  • O stack acima irá criar: 1(uma) VPC, 3 (três) subnets e 1 (um) security group

Agora, iremos criar o cluster no EKS. O nome do cluster será EKSDeepDive e deverá ser associada a role criada no passo [1]. Criaremos o cluster com o “eksctl”. Essa etapa pode demorar alguns minutos — em média, entre 10 e 15 minutos.

eksctl create cluster — region=us-east-1 — node-type=t2.small

Se você receber um erro que diz “a zona de disponibilidade de destino, atualmente não tem capacidade suficiente para suportar o cluster”, então você deverá especificar as AZs a serem usadas, listadas na mensagem de saída de erro. Por exemplo:

eksctl create cluster — region=us-east-1 — node-type=t2.medium — zones=us-east-1a,us-east-1b,us-east-1c

Após finalizado o processo, vamos verificar se nosso cluster está sendo executado corretamente. Para isso, conecte-se ao seu novo cluster EKS usando “kubectl”.

kubectl get nodes

Agora, vamos configurar nosso cluster EKS e preparar uma instância para servir como bastion-host.

Provisionar uma instância EC2 com o Amazon Linux 2, na mesma VPC do cluster do EKS. Para saber como provisionar uma instância EC2 com o Amazon Linux, acesse https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/EC2_GetStarted.html.

Após provisionar a instância EC2, vamos configurar os serviços do Kubernetes para gerenciarmos nosso cluster. Vamos configurar o kubectl na instância para gerenciar o cluster EKS.

mkdir $HOME/bincurl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/\1.12.10/2019-08-14/bin/linux/amd64/kubectlchmod +x ./kubectlcp ./kubectl $HOME/bin/kubectlexport PATH=$HOME/bin:$PATHecho ‘export PATH=$HOME/bin:$PATH’ >> ~/.bashrckubectl version — client

Agora, vamos configurar os serviços do IAM para autenticação do cluster. Para isso, vamos instalar o aws-iam-authenticator.

mkdir $HOME/bincurl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/\1.10.3/2018-07-26/bin/linux/amd64/\aws-iam-authenticatorchmod +x ./aws-iam-authenticatorcp ./aws-iam-authenticator $HOME/binexport PATH=$HOME/bin:$PATHecho ‘export PATH=$HOME/bin:$PATH’ >> ~/.bashrcaws-iam-authenticator help

Finalizado este processo, vamos configurar o kubectl para o gerenciamento e controle do EKS.

curl -O https://bootstrap.pypa.io/get-pip.pypython get-pip.py — userpip install awscli — upgrade — userexport PATH=$HOME/.local/bin:$PATHecho ‘export PATH=$HOME/.local/bin:$PATH’ >> ~/.bashrcaws configureaws eks update-kubeconfig — name EKSDeepDivekubectl config viewkubectl get svckubectl cluster-info

Pronto! Seu cluster EKS deve estar sendo executado.

Nos próximos posts, iremos falar sobre:

  • Parte 2 — Configurando node-groups no EKS
  • Parte 3 — Configurando usuarios IAM como Masters
  • Parte 4 — Empacotando a partir do código fonte
  • Parte 5 — Publicando uma imagem de conteiner para o ECR
  • Parte 6 — Deploy no EKS a partir de uma imagem no ECR

Até lá! =)

--

--

Carlos Diego C. P. é Cientista da Computação, Empreendedor e Professor. Especialista em Arq. Software Nativa em Nuvem e Eng. Confiabilidade de Sistemas.