Este projeto Terraform cria um cluster EKS (Elastic Kubernetes Service) na AWS, incluindo toda a infraestrutura necessária e componentes adicionais.
- Cria uma VPC com subnets públicas e privadas.
- Configura um cluster EKS na VPC criada.
- Cria um grupo de nós gerenciado para o cluster EKS.
- Instala add-ons essenciais (CoreDNS, kube-proxy, vpc-cni, aws-ebs-csi-driver).
- Configura o AWS Load Balancer Controller.
- Gera e salva o arquivo kubeconfig do cluster.
- Terraform (versão 0.12 ou superior)
- AWS CLI configurado com suas credenciais
- kubectl (opcional, para interagir com o cluster após a criação)
main.tf
: Configuração principal do cluster EKS e VPCvariables.tf
: Definição de variáveis utilizadas no projetooutputs.tf
: Outputs do Terraform após a criação dos recursosproviders.tf
: Configuração dos providers necessáriosalb.tf
: Configuração do AWS Load Balancer Controller
- Clone este repositório:
git clone https://github.com/Tech-Preta/terraform-aws-eks.git
- Inicialize o Terraform:
terraform init
- Revise o plano de execução:
terraform plan
- Aplique as mudanças:
terraform apply
- Após a conclusão, o arquivo kubeconfig será gerado no diretório do projeto. Use-o para se conectar ao cluster:
export KUBECONFIG=./kubeconfig_<nome-do-cluster>
kubectl get nodes
Você pode personalizar o projeto modificando as variáveis em variables.tf
. Algumas das principais variáveis incluem:
region
: Região da AWS onde o cluster será criadocluster_name
: Nome do cluster EKScluster_version
: Versão do Kubernetes para o clustervpc_cidr
: CIDR block para a VPCinstance_types
: Tipos de instância EC2 para os nós do cluster
Para destruir todos os recursos criados:
terraform destroy
- Este projeto cria recursos na AWS que podem resultar em custos. Certifique-se de entender os custos associados antes de aplicar.
- O arquivo kubeconfig gerado contém informações sensíveis. Trate-o com cuidado e não o compartilhe publicamente.
Contribuições são bem-vindas! Por favor, abra uma issue ou pull request para sugestões de melhorias ou correções.
Este projeto está licenciado sob a MIT License.