Migrar o registry de container para o ECR

TLDR: Criar repositórios ECR na conta AWS shared como registry de container da organização, copiar as imagens em uso do registry antigo e apontar os projetos para o ECR — primeiro passo de descontinuar a DigitalOcean, já que os nós do EKS puxam do ECR nativamente pela role do nó, sem pull secret.

Contexto

A DigitalOcean está sendo descontinuada. O registry da organização era o DOCR (registry.digitalocean.com/wehive, gerido em src/platform/registry). A migração do gateway para o EKS expôs o custo de mantê-lo: pull privado do DOCR no EKS exige credencial explícita, e o token do gateway estava morto.

Decisão do usuário: abandonar completamente o trabalho de credencial e mover as imagens para o ECR na conta shared — a role do nó do EKS já tem AmazonEC2ContainerRegistryReadOnly, então o pull não precisa de configuração nenhuma por projeto.

Objetivos

  • Repositórios ECR em shared--production para as imagens da organização, com a lista dirigida por configuração (começando por gateway).
  • Imagem do gateway copiada para o ECR e seus deployments puxando de lá.

Fora de escopo

  • Fazer o pipeline de build dar push no ECR — spec separada (build pipeline para ECR).
  • Descomissionar o DOCR e o stack platform/registry — spec separada (descomissionar DOCR).
  • Migrar os outros repos (onion-backend etc.) — cada um na sua vez, pelo mesmo caminho.

Mudanças

infrastructure

Novo stack src/shared/registry/terraform: um aws_ecr_repository por nome em var.registry_repositories (default ["gateway"]), imutabilidade de tag desligada (usa latest), scan no push e política de lifecycle mantendo as últimas 20 imagens. Provider com assume-role na TerraformRole da conta shared, chave de state stacks/shared/registry.

CI: filtro registry mais os jobs plan/apply baseados em ward em infra.yml e infra-pr.yml.

Operação pontual

Pull de registry.digitalocean.com/wehive/gateway:latest (com o token de infra — é ação de plataforma) e push em <shared>.dkr.ecr.us-east-1.amazonaws.com/gateway:latest.

gateway

Deployments (terraform + kustomize) com a imagem apontada para o ECR; remoção do trabalho de pull secret, do provider digitalocean e do uso de do_token.

Como verificar

  • aws ecr describe-repositories mostra gateway, com a tag latest presente depois da cópia.
  • Os pods do gateway no EKS puxam do ECR e chegam a Running sem imagePullSecrets.
  • grep -rn digitalocean gateway/.infra/terraform → nenhum provider restante.

Documentação

⚠️ Pendência conhecida ao fechar esta spec: os pipelines continuavam empurrando para o DOCR, então um novo deploy do gateway atualizava o registry antigo, não o ECR. O follow-up precisava entrar antes da próxima release do gateway, ou as releases ficariam obsoletas.