Skip to main content
Este artigo contém a infraestrutura como código (IaC) Terraform e Terragrunt para gerenciar a plataforma EKB no AWS EKS, com suporte preliminar para GKE, AKS e Kubernetes bare-metal. Ele inclui todas as implantações de charts Helm e templates de configuração de ambiente.

Documentação


Estrutura do Repositório


Início Rápido

1. Instale as Ferramentas Necessárias

Terraform
Terragrunt
kubectl e Helm
Verificar instalação

2. Crie um Novo Ambiente

Novos ambientes são criados copiando env-template-folder e preenchendo os placeholders. Consulte o Guia de Implantação Terragrunt para o processo completo passo a passo. O fluxo de alto nível é:

Flags de Habilitação/Desabilitação de Serviços

Todos os serviços opcionais são alternados via variáveis de ambiente. Defina-as antes de executar terragrunt apply.
Ordem de Implantação do Supabase Auto-HospedadoOs componentes do Supabase devem ser implantados em sequência:

Referência de Charts Helm


Referência de Módulos

modules/eks

O módulo principal. Provisiona:
  • VPC com sub-redes públicas/privadas em 3 AZs
  • Cluster EKS (Kubernetes 1.33) e node group gerenciado para Karpenter
  • Controlador Karpenter + NodePool + EC2NodeClass
  • Funções IAM (cluster, node group, Karpenter, controlador ALB, EBS CSI driver)
  • Todas as releases Helm via o mapa de entrada helm_releases

modules/aws-services

Provisiona ElastiCache Redis e Amazon MQ RabbitMQ. Somente ativo quando ENABLE_AWS_SERVICES=true.

modules/state

Inicializa o bucket de estado S3 para um novo ambiente (versionamento, criptografia, bloqueio de acesso público).

modules/helm

Módulo de release Helm reutilizável suportando tanto repositórios de chart upstream quanto charts locais com chart_path.

Configuração do Ambiente

Placeholders

Cada valor em env-template-folder que é específico do ambiente usa um placeholder <YOUR_*>. Execute o seguinte para verificar se nada foi esquecido antes de implantar:

Estado Remoto

O estado é armazenado no S3 por ambiente. O bucket é inicializado por state/terragrunt.hcl e referenciado por root.hcl. O padrão de nomenclatura é ekb-terraform-state-<nome-do-ambiente>.

Segredos

Valores sensíveis (senhas, chaves de API, ARNs de certificados) nunca são commitados. Eles são passados como variáveis de ambiente consumidas por chamadas get_env() em terragrunt.hcl, ou como placeholders <YOUR_*> em arquivos de valores que devem ser preenchidos antes da implantação.

Solução de Problemas

Verificar credenciais AWS
Verificar acesso ao cluster
Verificar o Controlador ALB
Verificar o Karpenter
Verificar lock de estado
Verificar se não há placeholders restantes
Verificar status da release Helm

Suporte Multi-Cloud (Planejado)