Skip to main content
O Midaz Terraform Foundation é um repositório de exemplos prontos de Terraform. Use-os para criar a infraestrutura base que o Midaz precisa na AWS, GCP ou Azure. Os exemplos seguem as melhores práticas de cada provedor de nuvem. Essa infraestrutura base inclui:
  • Rede (VPC, subnets)
  • DNS
  • Banco de dados
  • Redis/Valkey
  • Cluster Kubernetes (EKS, GKE ou AKS)
Os templates provisionam um banco de dados compatível com MongoDB e um broker de mensagens apenas em alguns provedores. A AWS usa o Amazon DocumentDB e o Amazon MQ (RabbitMQ). O Azure usa o Cosmos DB com a API do MongoDB. O GCP não tem um equivalente gerenciado, então você precisa provisionar o MongoDB e o RabbitMQ por conta própria no GCP.

Por que usar


O provisionamento de infraestrutura não deveria ser lento, inconsistente ou propenso a erros. O midaz-terraform-foundation segue as melhores práticas da Lerian para segurança, observabilidade e escalabilidade. As tabelas abaixo o comparam com uma configuração manual ou ad-hoc.

Velocidade e padronização

Segurança e observabilidade

Manutenção e suporte

Use este repositório para uma configuração mais rápida e testada.O midaz-terraform-foundation segue os padrões de engenharia da Lerian. Ele ajuda você a implantar mais rápido e evitar erros comuns de configuração.

O que você vai precisar


Antes de começar, certifique-se de ter:
  • Terraform v1.5.0 ou superior — os exemplos de AWS RDS e Route 53 exigem >= 1.5.0; os outros módulos exigem >= 1.0.0
  • Uma conta em um provedor de nuvem (AWS, GCP ou Azure).
  • Um bucket de armazenamento para os arquivos de estado do Terraform.
  • A ferramenta CLI do seu provedor de nuvem:
    • aws para AWS
    • gcloud para GCP
    • az para Azure

Integração CI/CD

Este repositório fornece exemplos de Terraform para implantar infraestrutura base. Ele não inclui um pipeline de CI/CD. Crie um que atenda às necessidades do seu projeto. Você já executa um pipeline de CI/CD com Terraform? Siga estes passos:
1
Pule o script de deploy. Ele é apenas para uso local.
2
Copie as configurações de exemplo relevantes para o seu repositório privado de Infrastructure as Code.
3
Integre as configurações do Terraform ao seu pipeline conforme necessário.
4
Use o gerenciamento de secrets integrado da sua plataforma de CI/CD para lidar com credenciais de forma segura.

Estrutura do projeto


Cada provedor de nuvem tem sua própria estrutura no repositório. Cada componente da infraestrutura segue um layout modular e controlado. Você pode implantar apenas os componentes que precisa, ou toda a fundação.

A ordem de implantação importa

Para evitar erros e conectar tudo corretamente, implante os componentes nesta ordem:
  1. VPC / Network
  2. DNS
  3. Banco de dados
  4. Redis/Valkey
  5. Cluster Kubernetes

Criando o armazenamento de estado


O Terraform requer um backend remoto para gerenciar seu estado. Antes de usar esses templates, crie um bucket de armazenamento para os arquivos de estado do Terraform.

AWS

Substitua REGION e UNIQUE_BUCKET_NAME pelos seus próprios valores.
1

Crie um bucket S3

2

Habilite o versionamento

3

Habilite a criptografia

4

Bloqueie o acesso público

Google Cloud Platform

1

Crie um bucket GCS

2

Habilite o versionamento

Azure

1

Crie um resource group

2

Crie uma storage account

3

Crie um container

Requisitos de configuração


Antes de implantar a infraestrutura, crie e configure o arquivo de variáveis para cada componente de nuvem:
1

Copie o arquivo de exemplo

2
Substitua todos os placeholders no arquivo midaz.tfvars pelos seus valores reais. \i. Este arquivo contém a configuração principal para o setup da sua infraestrutura.

Credenciais de produção e implantação


Em ambientes de produção, você precisa gerenciar as credenciais com cuidado. Este guia mostra como lidar com as credenciais de forma segura.

Autenticação no provedor de nuvem

Quando você executa o script de deploy localmente, use as ferramentas de autenticação CLI do provedor de nuvem em vez de credenciais brutas. Este método é mais seguro. Ele gerencia a rotação de credenciais, MFA e refresh de tokens automaticamente. Por que adotar essa abordagem?
  • Tokens são atualizados automaticamente.
  • Integração com MFA e SSO pronta para uso.
  • Rotaciona e armazena as credenciais de forma segura.
  • Trilha de auditoria completa para eventos de autenticação.

AWS

Use a AWS CLI para assumir uma role.
ou

GCP

Use a autenticação do gcloud.
Para service accounts, use o seguinte comando:

Azure

Use a Azure CLI.
Para service principals, use o seguinte comando:

Boas práticas de gerenciamento de credenciais

Mantenha-se seguro e em conformidade seguindo as orientações oficiais do seu provedor de nuvem:

Práticas recomendadas

  • Rotacione credenciais em um cronograma regular.
  • Use controle de acesso baseado em roles (RBAC) sempre que possível.
  • Exija MFA para contas de usuário.
  • Prefira credenciais temporárias e de curta duração.
  • Monitore e audite o uso das credenciais.
  • Nunca faça commit de credenciais no controle de versão.

Usando o script de deploy


O script deploy.sh cuida da sequência de setup, destaca problemas e implanta cada componente na ordem correta.

O que ele faz

  • Permite que você escolha seu provedor de nuvem (AWS, Azure ou GCP).
  • Oferece opções para implantar ou destruir a stack.
  • Verifica se todos os placeholders de configuração do backend têm valores.
  • Executa comandos do Terraform na ordem correta para cada componente.
  • Exibe logs claros e coloridos para que você saiba o que está acontecendo em cada etapa.

Como usar

1
Certifique-se de que todos os pré-requisitos estejam completos e de que você criou seu bucket de estado remoto.
2
Preencha todos os placeholders nos arquivos backend.tf.
3

Torne o script executável

4

Execute o script

5
Quando solicitado, selecione seu provedor de nuvem.
6

O script irá automaticamente

i. Verificar os placeholders restantes. \ii. Executar terraform init, plan e apply para cada componente. \iii. Implantar na ordem correta e parar se algo falhar.

Tratamento de erros

Construímos o script para falhar rapidamente e fornecer uma explicação. Se algo der errado, ele irá:
  • Parar imediatamente se encontrar placeholders que você esqueceu de preencher.
  • Sair se qualquer comando do Terraform falhar.
  • Mostrar exatamente qual componente falhou e em qual etapa.

Instalando o Midaz


Após implantar a infraestrutura base, você pode instalar o Midaz usando Helm. Para mais informações, consulte a página Implantando com Helm.

Pré-requisitos

  • Um cluster Kubernetes em execução (EKS, GKE ou AKS).
  • kubectl configurado para acessar o cluster.
  • Helm v3.x instalado.
  • Acesso ao repositório Helm do Midaz.

Passos de instalação

1
Adicione o repositório Helm do Midaz:
2
Crie um arquivo de valores (values.yaml) com sua configuração:
3
Instale o Midaz:
Para opções detalhadas de configuração e setup avançado, consulte o Repositório Helm do Midaz.

Dicas de segurança


A nuvem traz oportunidades e responsabilidades. Para manter sua infraestrutura Midaz segura, siga estas recomendações:
  • Sempre use clusters Kubernetes privados para limitar a exposição pública.
  • Acesse a API do Kubernetes via VPN em vez de permitir acesso público.
  • Configure e aplique RBAC (Controle de Acesso Baseado em Roles) para gerenciar permissões de usuários de forma eficaz.
  • Armazene todos os secrets no serviço de gerenciamento de secrets do provedor de nuvem.
  • Dê às service accounts apenas as permissões que realmente precisam.

Contribuindo


Antes de fazer qualquer alteração, configure os Git hooks. Os Git hooks garantem que cada commit siga nossos padrões e passe nas verificações necessárias.
1

Instale os Git hooks

2

Crie uma nova branch de feature

3
Faça suas alterações e commite usando Conventional Commits.
4
Abra um pull request direcionado à branch develop.
5
Depois que os testes passarem e um mantenedor aprovar, suas alterações são mescladas na main.
Confira nosso Guia de Contribuição para saber mais sobre como trabalhamos juntos e o que esperamos dos contribuidores.

Licença


O Midaz Terraform Foundation usa a Apache License 2.0.

Precisa de ajuda?


  • Confira o README dentro de cada pasta de componente.
  • Procure nas issues existentes.
  • Abra uma nova issue se necessário.