- 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 message broker apenas em alguns provedores. A AWS usa Amazon DocumentDB e Amazon MQ (RabbitMQ). O Azure usa Cosmos DB com a API do MongoDB. A GCP não tem equivalente gerenciado, então você precisa provisionar o MongoDB e o RabbitMQ por conta própria na GCP.
Por que usar
O
midaz-terraform-foundation segue as boas práticas da Lerian para segurança, observabilidade e escalabilidade. As tabelas abaixo comparam essa abordagem com uma configuração manual ou ad-hoc.
Velocidade e padronização
Segurança e observabilidade
Manutenção e suporte
O que você vai precisar
Antes de começar, confirme que você tem:
- 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 storage bucket para os arquivos de estado do Terraform.
- A ferramenta de linha de comando do seu provedor de nuvem:
awspara AWSgcloudpara GCPazpara Azure
Integração com CI/CD
Este repositório fornece exemplos Terraform para fazer o deploy da infraestrutura de fundação. Ele não inclui um pipeline de CI/CD. Crie um que atenda às necessidades do seu projeto. Se você já roda um pipeline de CI/CD do Terraform, siga estes passos:1
Pule o script de deploy. Ele é só 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 segredos nativo da sua plataforma de CI/CD para lidar com credenciais com segurança.
Estrutura do projeto
Cada provedor de nuvem tem sua própria estrutura no repositório. Cada componente de infraestrutura segue um layout modular e controlado. Você pode fazer o deploy apenas dos componentes de que precisa, ou a fundação inteira.
A ordem de deploy importa
Para evitar erros e conectar tudo corretamente, faça o deploy dos componentes nesta ordem:- VPC / Rede
- DNS
- Banco de dados
- Redis/Valkey
- Cluster Kubernetes
Criando o armazenamento de estado
O Terraform exige um backend remoto para gerenciar seu estado. Antes de usar esses templates, crie um storage bucket para os arquivos de estado do Terraform.
AWS
SubstituaREGION e UNIQUE_BUCKET_NAME pelos seus próprios valores.
1
Criar um bucket S3
2
Habilitar versionamento
3
Habilitar criptografia
4
Bloquear acesso público
Google Cloud Platform
1
Criar um bucket GCS
2
Habilitar versionamento
Azure
1
Criar um resource group
2
Criar uma storage account
3
Criar um container
Requisitos de configuração
Antes de fazer o deploy da infraestrutura, crie e configure o arquivo de variáveis de cada componente de nuvem:
1
Copiar o arquivo de exemplo
2
Substitua todos os placeholders no arquivo
midaz.tfvars pelos seus valores reais. \i. Esse arquivo guarda a configuração-chave da sua infraestrutura.Credenciais de produção e deploy
Em ambientes de produção, você deve gerenciar credenciais com cuidado.
Autenticação do provedor de nuvem
Ao rodar o script de deploy localmente, use as ferramentas de autenticação da CLI do provedor de nuvem em vez de credenciais brutas. Esse método é mais seguro. Ele gerencia rotação de credenciais, MFA e renovação de token automaticamente. Por que adotar essa abordagem?- Os tokens são renovados automaticamente.
- Integração com MFA e SSO prontas de fábrica.
- Ele rotaciona e armazena credenciais com segurança.
- Trilha de auditoria completa para eventos de autenticação.
AWS
Use a AWS CLI para assumir um role.GCP
Use a autenticação do gcloud.Azure
Use a Azure CLI.Boas práticas de gerenciamento de credenciais
Mantenha-se seguro e em conformidade seguindo a orientação oficial do seu provedor de nuvem:- AWS: Gerenciando chaves de acesso da AWS.
- GCP: Gerenciando chaves de service account.
- Azure: Boas práticas de gerenciamento de identidade.
Práticas recomendadas
- Rotacione credenciais em um cronograma regular.
- Use controle de acesso baseado em papéis (RBAC) sempre que possível.
- Exija MFA para contas de usuário.
- Prefira credenciais temporárias de vida curta.
- Monitore e audite o uso de 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 configuração, aponta problemas e faz o deploy de cada componente na ordem correta.
O que ele faz
- Permite escolher seu provedor de nuvem (AWS, Azure ou GCP).
- Oferece opções para fazer o deploy ou destruir a stack.
- Confirma que todos os placeholders de configuração do backend têm valores.
- Roda os comandos do Terraform na ordem certa para cada componente.
- Mostra logs claros e coloridos para você acompanhar cada passo.
Como usar
1
Confirme que todos os pré-requisitos estão completos e que você criou seu bucket de estado remoto.
2
Preencha todos os placeholders nos arquivos
backend.tf.3
Tornar o script executável
4
Rodar o script
5
Quando solicitado, selecione seu provedor de nuvem.
6
O script vai automaticamente
i. Conferir os placeholders restantes. \ii. Rodar
terraform init, plan e apply para cada componente. \iii. Fazer o deploy na ordem correta e parar se algo falhar.Tratamento de erros
Construímos o script para falhar rápido e explicar o motivo. Se algo der errado, ele vai:- Parar imediatamente se encontrar placeholders que você esqueceu de preencher.
- Encerrar se algum comando do Terraform falhar.
- Mostrar exatamente qual componente falhou e em qual etapa.
Instalando o Midaz
Depois de fazer o deploy da infraestrutura de fundação, você pode instalar o Midaz usando Helm. Para mais informações, consulte a página Deploy usando Helm.
Pré-requisitos
- Um cluster Kubernetes em execução (EKS, GKE ou AKS).
kubectlconfigurado 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:
Dicas de segurança
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 (Role-Based Access Control) para gerenciar permissões de usuário.
- Armazene todos os segredos no serviço de gerenciamento de segredos do provedor de nuvem.
- Dê às service accounts apenas as permissões de que precisam.
Contribuindo
Antes de fazer qualquer mudança, configure os Git hooks. Os Git hooks garantem que cada commit siga nossos padrões e passe pelas verificações exigidas.
1
Instalar os Git hooks
2
Criar uma nova branch de feature
3
Faça suas mudanças e o commit usando Conventional Commits.
4
Abra um pull request direcionado à branch
develop.5
Depois que os testes passarem e um mantenedor aprovar, suas mudanças fazem merge na
main.Licença
O Midaz Terraform Foundation usa a Apache License 2.0.
Precisa de ajuda?
- Confira o README dentro de cada pasta de componente.
- Pesquise as issues existentes.
- Abra uma nova issue se precisar.

