AWS EKS - Parte I - Setup inicial
Tags: kubernetes, aws, terraform, cloud
Published: 2023-01-12 00:47:38


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/twea981osjy5e7hj5rpd.png)


<u>**Objetivo geral:**</u>

Setup completo de um cluster Kubernetes utilizando AWS EKS e Terraform seguindo as melhores práticas e documentações oficias. Demonstração de atualizações de aplicações e demais recursos.

<u>**Objetivo da parte I:** </u>

Setup inicial de um cluster Kubernetes utilizando AWS EKS e Terraform seguindo as melhores práticas e documentações oficias.


<u>**Avisos importantes**</u>

A configuração do cluster é exclusiva para laboratório e testes.

<u>**Pré requisitos**</u>

Para o setup do cluster serão necessários os itens abaixo:

- Conta da AWS
- AWS CLI v2.7.0/v1.24.0 ou mais recente
- kubectl v1.24.0 ou mais recente


<u>**O que será criado**</u>

Segue abaixo alguns recursos que serão criados:

- Auto Scaling
- Security Groups
- IAM Roles
- IAM Policies
- Cluster EKS
- EC2

<u>**Download do repositório**</u>

Vamos utilizar o repositório oficial da Hashicorp para EKS.
Faça o download do repositório  utilizando o comando abaixo:

`git clone https://github.com/hashicorp/learn-terraform-provision-eks-cluster`

<u>**Entendendo o repositório**</u>

Após efetuar o download do repositório, acesse a diretório `learn-terraform-provision-eks-cluster`, todos os arquivos necessários estão aqui.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1t6gis6v8npjgoxqyga.png)

Abaixo algumas informações sobre os arquivos mais importantes.

- `terraform.tf` 
Configura as versões do Terraform e dos provedores usados ​​pela configuração.

- `variables.tf` 
Configura a região da AWS aonde será criado o cluster EKS

- `vpc.tf`
Provisiona uma VPC, sub-redes e AZ´s. 

- `main.tf`
Provisiona AWS EKS e outros recursos necessários.

Para mais detalhes sobre demais arquivos [clique aqui](https://developer.hashicorp.com/terraform/tutorials/kubernetes/eks#prerequisites) e acesse a documentação oficial.

_Agora que "os trem" estão mais claros, Let's go to work!_

<u>**Configurações iniciais**</u>

Antes de começar o setup, alguns ajustes são necessários no código.

No arquivo `variables.tf`, vamos definir a região na variável `Default`. No nosso caso, vamos utilizar a região `us-east-1`. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1uds1l2lvq1l5l1z58wv.png)

No arquivo `main.tf`, vamos definir a versão do cluster EKS na variável `cluster_version`. No nosso caso vamos utilizar a versão `1.24`. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hlqi0wn336b0xe3qqses.png)

Sintam-se a vontade para alterar quaisquer outras variáveis. 


<u>**Setup do cluster**</u>

Vamos iniciar os módulos do Terraform com o comando abaixo:

`terraform init`

Vamos executar o Plan e o Apply para iniciar o setup do cluster com o comando abaixo:

`terraform plan && terraform apply -auto-approve`


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s9r24u79miqwfyj230wc.png)

O tempo do setup é em média de 15 min a 20 min. Aguarde até a conclusão.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sa6zj24zxuufdgl1fx5p.png)

No output final temos as informações do nome do cluster, endpoint, região e security group.


<u>**Validando a instalação**</u>

Vamos validar de 2 formas no cluster, utilizando a Console de gerenciamento da AWS e pela linha de comando.

**Console de gerenciamento da AWS**

Acesse a Console de gerenciamento da AWS, pesquise pelo serviço AWS EKS, localize o cluster que acabamos de criar e confirme o status e a versão do cluster.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z8a45ysr9le3g32wohfe.png)


**Linha de comando**

Vamos autenticar no cluster utilizando o comando abaixo:

`aws eks update-kubeconfig --name "nome-do-cluster" --region "região-criada"`


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klt6awiym4xqm4ndlq5g.png)

Para verificar a versão do cluster instalada, utilize o comando abaixo:

`kubectl.exe version --short`


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyoctyuh0dzztf55uvzw.png)

Para verificar as EC2 que estão nos nodes groups utilize o comando abaixo:

`kubectl.exe get nodes`


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h3ycgyo4iaq2p0tl3svy.png)

Para verificar os pods em execução utilize o comando abaixo:

`kubectl.exe get pods -A`


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g17qg5564u4038fk88hj.png)



<u>**Próximas partes**</u>

- [AWS EKS - Parte II - Habilitando logs do Control Plane](https://dev.to/rodrigofrs13/aws-eks-parte-ii-habilitando-logs-do-control-plane-fe4)
- [AWS EKS - Parte III - Restringindo acesso ao cluster](https://dev.to/rodrigofrs13/aws-eks-parte-iii-restringindo-acesso-ao-cluster-2hd3)
- [AWS EKS - Parte IV - Configurando Add-ons gerenciados](https://dev.to/rodrigofrs13/aws-eks-parte-iv-configurando-add-ons-gerenciados-1f28) (_em construção_)
- [AWS EKS - Parte V - Deploy e atualização de uma app](https://dev.to/rodrigofrs13/aws-eks-parte-v-deploy-e-atualizacao-de-uma-app-46mc) (_em construção_)


<u>**Referências**</u>
- [Provision an EKS Cluster (AWS)](https://developer.hashicorp.com/terraform/tutorials/kubernetes/eks)