IaC provisionada de EKS cluster na AWS com Terraform.
Repositório principal: tech-challenge
Cluster do Elastic Kubernetes Service (EKS), com adição de AWS Secrets and Configuration Provider (ASCP) para utilização de secrets do Secrets Manager e parâmetros do SSM Parameter Store como um volume montado nos pods (conforme configuração de secret provider em manifesto do Kubernetes), AWS Load Balancer Controller (ao invés de in-tree controller) para uso de annotations para definir configurações como nome do load balancer, e uma IAM role para service account com as policies necessárias.
- VPC e as subnets privadas
- Secrets (username e password) no SecretsManager e parâmetros (endpoint e nome do BD) no SSM Parameter Store para o RDS
- Secrets da integração com o Mercado Pago no Secrets Manager
Essas dependências são criadas nos outros repositórios de infraestrutura da organização e são utilizadas neste repositório através remote state como data source.
.
├── .github/
│ └── workflows/
│ ├── manifest.yml # deployment dos manifestos do Kubernetes
│ └── provisioning.yml # provisionamento de IaC com Terraform
├── manifests/ # manifestos do Kubernetes
└── terraform/ # IaC com Terraform
Para usar o kubectl, atualize o kubeconfig:
aws eks update-kubeconfig --name tech-challenge --region us-east-1 --profile my-profile
Considerando o profile definido em ~/.aws/credentials
:
[my-profile]
aws_access_key_id = **************
aws_secret_access_key = **************
region = us-east-1
É necessário que este usuário IAM esteja configurado como IAM access entry no cluster, com a access policy AmazonEKSClusterAdminPolicy
.
Teste de acesso:
kubectl auth can-i "*" "*"