Pular para o conteúdo
002: Conta Shared Network

002: Conta Shared Network

A conta Shared Network pertence ao Cloud Team e faz uma única coisa: fornecer a rede que o resto da organização ARGLabs usa. Em vez de cada conta construir e manter a sua própria rede, esta conta a constrói uma vez por ambiente e a compartilha por meio do AWS Resource Access Manager (RAM).

O que ela provisiona

O repositório tem duas raízes Terraform, sempre aplicadas em ordem, porque a segunda lê o remote state da primeira.

  • terraform-account-creation: a conta AWS sob a OU Shared, o permission set do time, a hosted zone do subdomínio sharednetwork e sua delegação NS na zona apex, e os índices do Resource Explorer da conta. Roda apenas no workspace default e nunca é destruída junto com um ambiente.
  • terraform-account-configuration: a rede de cada ambiente, construída com o módulo Terraform bigbang-network, mais o resource share do RAM e suas associações de sub-redes, e a zona DNS de cada ambiente com sua delegação. Roda nos workspaces dev, stg e prd.

A rede de um ambiente

  • Uma VPC por região (us-east-1 e us-east-2), com duas zonas de disponibilidade cada, conectadas por VPC peering.
  • Dual stack: a AWS atribui a cada VPC um IPv6 /56, e cada sub-rede recebe um /64 dele.
  • Três camadas de sub-redes:
    • public: load balancers e outros serviços de borda, com rota para o internet gateway.
    • apps: containers e instâncias. Os NAT gateways ficam desligados, então o tráfego de saída sai apenas por IPv6, por um egress-only internet gateway que não custa nada. Um NAT gateway regional por região está a um interruptor de distância.
    • data: bancos de dados, caches e filas. Sem rota para a internet em nenhuma direção, e uma network ACL que admite apenas as camadas apps e public de todas as regiões.
  • Route 53 Resolver DNS Firewall em todas as VPCs, bloqueando os domínios da lista de ameaças gerenciada pela AWS.

Como é feito o deploy

Como o resto do ARGLabs, tudo roda pelo Bitbucket Pipelines. O pipeline assume a role bitbucket-openid via OIDC, que então assume a role deployer para alterar a AWS. Nenhuma credencial de longa duração em lugar nenhum.

Na branch main, o pipeline faz o plan e o apply da criação da conta (com uma aprovação manual), remove as VPCs default da nova conta, executa uma estimativa de custo com o Infracost e depois aplica a configuração em dev, stg e prd, nessa ordem.

Repositório: bitbucket.org/arglabs/arglabs-account-sharednetwork
Módulo de rede: bitbucket.org/arglabs/arglabs-tfmod-bigbang-network

Última atualização em