Projeto de criação de cluster EKS utilizando Terraform
-
Terraform
-
AWS CLI configurado com suas credenciais
-
Bucket S3
Colocar os parametros de backend dentro do arquivo providers.tf para armazenamento do state remoto do Terraform no bucket AWS.
backend "s3" {
bucket = "NOME_DO_SEU_BUCKET"
key = "PASTA/terraform.tfstate"
region = "SUA_REGIAO_AWS"
}
A titulo de organização e manutenção do codigo alguns parâmetros estão em variavéis que devem ser passadas no arquivo terraform.tfvars.
#CIDR Block que será usado na criação da VPC EX:10.0.0.0/16
cidr_block = "10.0.0.0/16"
#Nome do Projeto, que servirá de prefixo na definição de nome de todos os recursos provisionados
prefixo_projeto = "EKS-Homolog"
#Região de Provisionamento da Estrutura Ex:us-east-1
region = "us-east-1"
#Tags a serem inseridas nos recursos para organização
tags = {
Department = "DevOps"
Project = "Pessoal"
Enviroment = "Development"
"Gerenciado Por" = "Terraform"
}
Após preparação das variáveis e configuração do Backend já inicializar nosso projeto terraform, para downloads das dependências do projeto e inicialização do backend execute
terraform init
Uma vez inicializado o backend, podemos rodar o plan para o terraform planejar e preparar o provisionamento da estrutura
terraform plan
Se o plan ocorrer sem erros é provavel que todas as variáveis tenham sido informadas corretamente e o codigo está pronto para ser executado e provisionar a estrutura conforme o que saida do comando plan no terminal. Para provisionar sua estrutura você pode rodar os seguintes comandos:
- Com confirmação
terraform apply
- Sem confirmação
terraform apply --auto-approve
Com apenas poucos comandos você provisionou todo um cluster EKS usando o Terraform, utilizando as melhores praticas recomendadas pela AWS e atendendo pré-requisitos para correto funcionamento do cluster,Resumo da Estrutura criada
-
Network
- VPC
- Subnets publicas e privadas
- Internet Gateway
- Nat Gateway
- Elastic IP
- Route Tables
-
EKS Cluster
- Policies
- IAM Roles
- Security Groups
- OIDC Provider
-
Node Groups
- Policies
- IAM Roles
- Node Groups
-
Add-On Eks Cluster
- Sevice Account
- Policies
- Roles
- Aws Load balancer Controller
No caso de necessidade de eliminiar a estrutura basta
- Planejar a destruição
terraform plan -destroy
- Executar com confirmação
terraform apply -destroy
Ou
- Executar sem confirmação
terraform apply -destroy --auto-approve
Name | Version |
---|---|
aws | 5.38.0 |
helm | 2.12.1 |
kubernetes | 2.26.0 |
No providers.
Name | Source | Version |
---|---|---|
eks_aws_load_balancer_controller | ./modules/aws-load-balancer-controller | n/a |
eks_cluster | ./modules/eks | n/a |
eks_network | ./modules/network | n/a |
eks_node_group | ./modules/node-group | n/a |
No resources.
Name | Description | Type | Default | Required |
---|---|---|---|---|
cidr_block | CIDR de Rede para ser usado na VPC | string |
n/a | yes |
prefixo_projeto | Prefixo para nome de recursos | string |
n/a | yes |
region | Região AWS para criação dos Recursos | string |
n/a | yes |
tags | TAGS padrões a serem incluidas para identificações dos recursos | map(any) |
n/a | yes |
Name | Description |
---|---|
certificate_authority | n/a |
endpoint | n/a |
oidc | n/a |