Infraestrutura k8s para staging
TLDR: Adiciona
.infra/com Terraform + Kustomize para fazer o deploy do onion-backend no Kubernetes em staging (e production).
Contexto
O onion-backend era deployado via supervisor numa VM. O objetivo é migrar para Kubernetes usando o mesmo padrão Terraform + Kustomize já adotado por outros projetos wehive (marketing-automation, gateway).
Objetivos
- Deployar web, worker, beat e habits-worker como Deployments k8s separados
- Provisionar PostgreSQL e Valkey/Redis via clusters gerenciados da DigitalOcean
- Usar RabbitMQ (compartilhado) como broker em staging; SQS em production
- DNS via Cloudflare:
staging.onion.ibft.app/onion.ibft.app - Secrets gerenciados com SOPS + age, aplicados via Terraform
Fora de escopo
— (não registrado na spec original)
Mudanças
.infra/terraform/backend.tf— backend de state S3 em DO Spaces (onion/backend/).infra/terraform/versions.tf— providers requeridos.infra/terraform/data.tf— secrets SOPS, remote states, configuração de provider.infra/terraform/main.tf— locals de workspace → namespace/fqdn.infra/terraform/namespace.tf—onion-staging/onion-production.infra/terraform/database.tf— PostgreSQL 16 gerenciado da DO + user + job de grants.infra/terraform/cache.tf— Valkey 8 gerenciado da DO.infra/terraform/messagebroker.tf— vhost/user RabbitMQ (só staging,countcondicional).infra/terraform/secrets.tf— ConfigMap + Secret com todas as env vars.infra/terraform/kustomize.tf— aplica os overlays e faz patch da tag da imagem a partir do secretapp_version.infra/terraform/dns.tf— registro A no Cloudflare.infra/terraform/secrets/staging.yaml.example— template de secrets de staging.infra/terraform/secrets/production.yaml.example— template de secrets de production.infra/k8s/base/— manifests base: web deployment+service, worker, beat, habits-worker, ingress.infra/k8s/overlays/staging/— namespace, host do ingress, 1 réplica cada.infra/k8s/overlays/production/— namespace, host do ingress, 2 réplicas, mais recursosMakefile— adicionainclude .commons/make/shared/terraform.mk.gitignore— adiciona entradas de state do terraform e.terraform/
Como verificar
```bash # 1. Inicializar secrets make terraform.secrets.staging.init
2. Preview
make terraform.staging.plan
3. Apply
make terraform.staging.apply
4. Checar pods
kubectl get pods -n onion-staging ```
Os quatro deployments (onion-web, onion-worker, onion-beat, onion-habits-worker) devem estar Running.
Documentação
— (não registrado na spec original)