Implementando o Amazon Elastic Kubernetes Service: Do zero ao deploy (Parte 1/6)
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á! =)