Pular para o conteúdo principal
O repositório Lerian Terraform Foundation guarda templates Terraform para a infraestrutura em que o Midaz roda: a rede, o cluster Kubernetes e os datastores. Ele oferece suporte a AWS, GCP e Azure. O repositório usa a Elastic License 2.0.

O que os templates criam


Na GCP, os templates não criam banco de dados compatível com MongoDB nem broker RabbitMQ. No Azure, eles não criam broker RabbitMQ. Provisione esses serviços por conta própria nessas nuvens.
Trate as classes de instância dos arquivos de exemplo como um ponto de partida, não como um plano de capacidade. Antes de um deploy em produção, revise as classes de instância, o armazenamento e os limites de conexão de acordo com o seu volume de transações. Depois leia a seção de informações importantes do README do repositório.

AWS


Na AWS, você roda os templates com o Terraform e a CLI aws. Cada stack em examples/aws/ é uma raiz Terraform separada, com o próprio estado, e você aplica as stacks uma de cada vez. A seção AWS do README do repositório traz cada comando. Você precisa do Terraform 1.9.0 ou posterior e da CLI aws. Os passos depois do cluster também precisam do kubectl e do helm. O deploy de um ambiente aplica estas stacks nesta ordem:
  1. bootstrap: o bucket de estado e a tabela de lock. Aplique uma vez por ambiente.
  2. infra-base: a VPC e depois o cluster EKS.
  3. As stacks do Midaz em examples/aws/products/midaz/: postgres, documentdb, valkey e rabbitmq.
Cada stack do Midaz exporta helm_values, as configurações do chart que a stack consegue preencher. Nenhuma saída carrega uma senha. Cada stack de datastore guarda a senha no AWS Secrets Manager e exporta o nome do segredo. O External Secrets Operator, que você instala, copia a senha para um Secret do Kubernetes. A role IAM dele vem da stack lerian-platform/eso.
O Amazon MQ aceita apenas conexões AMQPS. Se você escrever os values por conta própria, defina RABBITMQ_URI como amqps.

GCP e Azure


Na GCP e no Azure, um script interativo roda os templates. Cada diretório de componente tem seus próprios arquivos backend.tf e midaz.tfvars. Você precisa do Terraform e da CLI do seu provedor de nuvem: gcloud para GCP ou az para Azure.
1

Crie o bucket de estado

GCP:
Azure:
2

Configure cada componente

Substitua os placeholders do backend.tf pelos dados do seu bucket de estado. Depois substitua os placeholders do midaz.tfvars pelos seus valores.
3

Rode o script

Na raiz do repositório, rode:
Selecione o provedor de nuvem e a ação: deploy ou destroy.
O script para antes de rodar o Terraform se um arquivo backend.tf ainda contém um placeholder. Ele faz o deploy de cada componente em uma ordem fixa e para na primeira falha. Um destroy roda na ordem inversa.

Autentique-se no seu provedor de nuvem


Use as ferramentas de autenticação da CLI do seu provedor de nuvem em vez de credenciais brutas:
Siga as orientações do seu provedor de nuvem: Não faça commit de credenciais no controle de versão.

Instale o Midaz


Quando a infraestrutura estiver pronta, instale o Midaz no cluster com Helm. Na AWS, use o arquivo de values que a ferramenta grava. Na GCP e no Azure, leia os endpoints com terraform output e defina-os no seu arquivo de values. Para o chart e seus values, veja Deploy usando Helm.

Dicas de segurança


Para manter a infraestrutura do Midaz segura, siga estas recomendações:
  • Use clusters Kubernetes privados para limitar a exposição pública. Os templates não criam uma VPN.
  • Configure e aplique RBAC (Role-Based Access Control) para gerenciar as permissões dos usuários.
  • Guarde todos os segredos no serviço de gerenciamento de segredos do provedor de nuvem.
  • Dê às service accounts apenas as permissões de que elas precisam.

Precisa de ajuda?