- Red (VPC, subredes)
- DNS
- Base de datos
- Redis/Valkey
- Clúster de Kubernetes (EKS, GKE o AKS)
Las plantillas aprovisionan una base de datos compatible con MongoDB y un broker de mensajes solo en algunos proveedores. AWS usa Amazon DocumentDB y Amazon MQ (RabbitMQ). Azure usa Cosmos DB con la API de MongoDB. GCP no tiene un equivalente administrado, así que debes aprovisionar MongoDB y RabbitMQ por tu cuenta en GCP.
Por qué usarlo
El aprovisionamiento de infraestructura no debería ser lento, inconsistente ni propenso a errores.
midaz-terraform-foundation sigue las mejores prácticas de Lerian para seguridad, observabilidad y escalabilidad. Las tablas siguientes lo comparan con una configuración manual o ad-hoc.
Velocidad y estandarización
Seguridad y observabilidad
Mantenimiento y soporte
Qué necesitarás
Antes de comenzar, asegúrate de tener:
- Terraform v1.5.0 o superior — los ejemplos de AWS RDS y Route 53 requieren
>= 1.5.0; los demás módulos requieren>= 1.0.0 - Una cuenta de proveedor de nube (AWS, GCP o Azure).
- Un bucket de almacenamiento para archivos de estado de Terraform.
- La herramienta CLI para tu proveedor de nube:
awspara AWSgcloudpara GCPazpara Azure
Integración CI/CD
Este repositorio proporciona ejemplos de Terraform para desplegar infraestructura base. No incluye un pipeline CI/CD. Crea uno que se ajuste a las necesidades de tu proyecto. ¿Ya ejecutas un pipeline CI/CD de Terraform? Sigue estos pasos:1
Omite el script de despliegue. Es solo para uso local.
2
Copia las configuraciones de ejemplo relevantes en tu repositorio privado de Infraestructura como Código.
3
Integra las configuraciones de Terraform en tu pipeline según sea necesario.
4
Usa la gestión de secretos integrada de tu plataforma CI/CD para manejar credenciales de forma segura.
Estructura del proyecto
Cada proveedor de nube tiene su propia estructura en el repositorio. Cada componente de la infraestructura sigue un diseño modular y controlado. Puedes desplegar solo los componentes que necesitas, o toda la base.
El orden de despliegue importa
Para evitar errores y conectar todo correctamente, despliega los componentes en este orden:- VPC / Red
- DNS
- Base de datos
- Redis/Valkey
- Clúster de Kubernetes
Creando el almacenamiento de estado
Terraform requiere un backend remoto para gestionar su estado. Antes de usar estas plantillas, crea un bucket de almacenamiento para los archivos de estado de Terraform.
AWS
ReemplazaREGION y UNIQUE_BUCKET_NAME con tus propios valores.
1
Crear un bucket S3
2
Habilitar versionado
3
Habilitar cifrado
4
Bloquear acceso público
Google Cloud Platform
1
Crear un bucket GCS
2
Habilitar versionado
Azure
1
Crear un grupo de recursos
2
Crear una cuenta de almacenamiento
3
Crear un contenedor
Requisitos de configuración
Antes de desplegar la infraestructura, crea y configura el archivo de variables para cada componente de nube:
1
Copiar el archivo de ejemplo
2
Reemplaza todos los marcadores de posición en el archivo
midaz.tfvars con tus valores reales. \i. Este archivo contiene la configuración clave para tu configuración de infraestructura.Credenciales de producción y despliegue
En entornos de producción, debes gestionar las credenciales con cuidado. Esta guía muestra cómo manejar las credenciales de forma segura.
Autenticación del proveedor de nube
Cuando ejecutas el script de despliegue localmente, usa las herramientas de autenticación CLI del proveedor de nube en lugar de credenciales sin procesar. Este método es más seguro. Gestiona la rotación de credenciales, MFA y actualización de tokens automáticamente. ¿Por qué adoptar este enfoque?- Los tokens se actualizan automáticamente.
- Integración de MFA y SSO lista para usar.
- Rota y almacena las credenciales de forma segura.
- Registro de auditoría completo para eventos de autenticación.
AWS
Usa AWS CLI para asumir un rol.GCP
Usa autenticación de gcloud.Azure
Usa Azure CLI.Mejores prácticas de gestión de credenciales
Mantente seguro y conforme siguiendo la guía oficial de tu proveedor de nube:- AWS: Gestión de claves de acceso de AWS.
- GCP: Gestión de claves de cuenta de servicio.
- Azure: Mejores prácticas de gestión de identidad.
Prácticas recomendadas
- Rota las credenciales en un calendario regular.
- Usa control de acceso basado en roles (RBAC) siempre que sea posible.
- Requiere MFA para cuentas de usuario.
- Prefiere credenciales temporales de corta duración.
- Monitorea y audita el uso de las credenciales.
- Nunca confirmes credenciales en el control de versiones.
Usando el script de despliegue
El script
deploy.sh maneja la secuencia de configuración, resalta problemas y despliega cada componente en el orden correcto.
Qué hace
- Te permite elegir tu proveedor de nube (AWS, Azure o GCP).
- Ofrece opciones para desplegar o destruir el stack.
- Verifica que todos los marcadores de posición de configuración del backend tengan valores.
- Ejecuta comandos de Terraform en el orden correcto para cada componente.
- Genera logs claros y codificados por colores para que sepas qué está sucediendo en cada paso.
Cómo usarlo
1
Asegúrate de que todos los requisitos previos estén completos y de que creaste tu bucket de estado remoto.
2
Completa todos los marcadores de posición en los archivos
backend.tf.3
Hacer el script ejecutable
4
Ejecutar el script
5
Cuando se te solicite, selecciona tu proveedor de nube.
6
El script automáticamente
i. Verificará los marcadores de posición restantes. \ii. Ejecutará
terraform init, plan y apply para cada componente. \iii. Desplegará en el orden correcto y se detendrá si algo falla.Manejo de errores
Construimos el script para fallar rápidamente y proporcionar una explicación. Si algo sale mal, va a:- Detenerse inmediatamente si encuentra marcadores de posición que olvidaste completar.
- Salir si algún comando de Terraform falla.
- Mostrarte exactamente qué componente falló y en qué paso.
Instalando Midaz
Después de desplegar la infraestructura base, puedes instalar Midaz usando Helm. Para más información, consulta la página Desplegando usando Helm.
Requisitos previos
- Un clúster de Kubernetes en ejecución (EKS, GKE o AKS).
kubectlconfigurado para acceder al clúster.- Helm v3.x instalado.
- Acceso al repositorio Helm de Midaz.
Pasos de instalación
1
Agrega el repositorio Helm de Midaz:
2
Crea un archivo de valores (
values.yaml) con tu configuración:3
Instalar Midaz:
Consejos de seguridad
La nube trae oportunidades y responsabilidades. Para mantener segura tu infraestructura de Midaz, sigue estas recomendaciones:
- Siempre usa clústeres de Kubernetes privados para limitar la exposición pública.
- Accede a la API de Kubernetes vía VPN en lugar de permitir acceso público.
- Configura y aplica RBAC (Control de Acceso Basado en Roles) para gestionar los permisos de usuario de manera efectiva.
- Almacena todos los secretos en el servicio de gestión de secretos del proveedor de nube.
- Da a las cuentas de servicio solo los permisos que realmente necesitan.
Contribuyendo
Antes de hacer cualquier cambio, configura los Git hooks. Los Git hooks aseguran que cada commit siga nuestros estándares y pase las verificaciones requeridas.
1
Instalar los Git hooks
2
Crear una nueva rama de funcionalidad
3
Realiza tus cambios y haz commit usando Conventional Commits.
4
Abre un pull request dirigido a la rama
develop.5
Después de que las pruebas pasen y un maintainer apruebe, tus cambios se fusionan en
main.Licencia
Midaz Terraform Foundation usa la Apache License 2.0.
¿Necesitas ayuda?
- Consulta el README dentro de cada carpeta de componente.
- Busca issues existentes.
- Abre un nuevo issue si es necesario.

