Desplegar Midaz con Helm
Requisitos previos
Antes de desplegar Midaz con Helm, asegúrate de tener:- Kubernetes (v1.30+) – Clúster en ejecución.
- Helm 3+ – Instalado y disponible (
helm version
). - Acceso a un registro de contenedores con imágenes de Midaz.
- Certificados DNS y TLS para ingress (o cert-manager instalado).
El código fuente de este chart de Helm está disponible en:La instalación predeterminada coincide con la proporcionada en la guía de instalación rápida de Midaz.
Instalar Midaz a través del chart de Helm
Para instalar Midaz usando Helm, ejecuta el siguiente comando:- Reemplaza
<version>
con la versión deseada del chart de Helm. Puedes verificar las versiones disponibles ejecutando:
midaz
(si no existe ya) y despliega el chart. Para confirmar que el despliegue se realizó correctamente, ejecuta:
El chart de Helm está en nuestro repositorio de GitHub. Puedes hacer un fork, personalizar los valores o extenderlo según sea necesario.
Configurar ingress
Ingress te permite exponer servicios de Midaz fuera del clúster de Kubernetes, vinculándolos a dominios específicos y certificados TLS. En este chart, puedes habilitar Ingress individualmente para los servicios Transaction, Onboarding y Console. Para usar Ingress, necesitarás un controlador Ingress ejecutándose en tu clúster (por ejemplo, NGINX, AWS ALB o Traefik) y entradas DNS apuntando a él.
Puedes habilitar ingress por servicio en tu archivo values.yaml y configurar nombres de host, secretos TLS y cualquier anotación específica del controlador.
Controlador ingress NGINX
Para usar el Controlador Ingress NGINX, configura elvalues.yaml
de la siguiente manera:
Consulta la documentación oficial de Ingress-nginx para una referencia completa sobre las anotaciones de Nginx.
AWS ALB (Application Load Balancer)
Para el Controlador Ingress AWS ALB, configura elvalues.yaml
de la siguiente manera:
Controlador Ingress Traefik
Para Traefik, configura elvalues.yaml
de la siguiente manera:
Configurar observabilidad
Midaz usa Grafana, Docker y OpenTelemetry LGTM para recopilar y visualizar datos de telemetría como trazas y métricas. Puedes acceder al panel de Grafana usando una de dos opciones:
Opción 1: Acceso local
Para acceder al panel localmente, ejecuta:Opción 2: Acceso mediante Ingress
Para exponer Grafana dentro de tu clúster o red privada a través de DNS, habilita y configura Ingress de esta manera:Deshabilitar observabilidad
Puedes deshabilitar completamente el stack de observabilidad configurando:Configurar dependencias
El Chart de Helm de Midaz tiene las siguientes dependencias para la instalación predeterminada del proyecto. Todas las dependencias están habilitadas por defecto.
Valkey
- Versión: 2.4.7
- Repositorio: Bitnami
- Deshabilitar:
valkey.enabled = false
PostgreSQL
- Versión: 16.3.0
- Repositorio: Bitnami
- Deshabilitar:
postgresql.enabled = false
MongoDB
- Versión: 15.4.5
- Repositorio: Bitnami
- Deshabilitar:
mongodb.enabled = false
RabbitMQ
- Versión: 16.0.0
- Repositorio: Bitnami
- Deshabilitar:
rabbitmq.enabled = false
externalRabbitmqDefinitions
en tu archivo values.yaml
para aplicar las definiciones predeterminadas automáticamente:
Este Job solo se ejecuta durante la primera instalación del chart. Se activa mediante un hook post-install de Helm y no se ejecutará nuevamente durante actualizaciones o reinstalaciones.Si necesitas volver a ejecutarlo, elimina el release e instálalo nuevamente.
load_definitions.json
en: charts/midaz/files/rabbitmq/load_definitions.json
.
Usar tu propio RabbitMQ
Si ya tienes una instancia de RabbitMQ ejecutándose, puedes deshabilitar la dependencia integrada y apuntar los componentes de Midaz a tu configuración externa:Nginx Proxy Manager (UIs de Plugins)
El NGINX Proxy Manager en este chart enruta el tráfico a las UIs de plugins. Por defecto, está deshabilitado, y todas las UIs de plugins solo son accesibles a través de este proxy cuando se habilita. Para activarlo, establecenginx.enabled: true
en tu values.yaml
.
- También puedes configurar ingress para él estableciendo
nginx.ingress.enabled: true
.
pluginsUi.enabled: true
en la configuración del servicio Console y define los ajustes del plugin, por ejemplo:
Para permitir que NGINX sirva las UIs de plugins, los charts de Helm correspondientes deben estar instalados con la UI habilitada en el namespace
midaz-plugins
.Otell Collector
El Otell Collector recopila métricas de los componentes de Midaz. Está deshabilitado por defecto. Para habilitarlo, establece:Componentes de Midaz
El sistema Midaz se ejecuta en cuatro capas distintas que trabajan juntas, distribuidas en cargas de trabajo segregadas:
Onboarding
Parámetro | Descripción | Valor predeterminado |
---|---|---|
onboarding.name | Nombre del servicio. | "onboarding" |
onboarding.replicaCount | Número de réplicas para el servicio onboarding. | 2 |
onboarding.image.repository | Repositorio para la imagen del contenedor del servicio onboarding. | "lerianstudio/midaz-onboarding" |
onboarding.image.pullPolicy | Política de extracción de imagen. | "IfNotPresent" |
onboarding.image.tag | Etiqueta de imagen usada para el despliegue. | "2.2.2" |
onboarding.imagePullSecrets | Secretos para extraer imágenes de un registro privado. | [] |
onboarding.nameOverride | Anula el nombre predeterminado generado por Helm. | "" |
onboarding.fullnameOverride | Anula el nombre completo generado por Helm. | "" |
onboarding.podAnnotations | Anotaciones de pod para metadatos adicionales. | {} |
onboarding.podSecurityContext | Contexto de seguridad aplicado a nivel de pod. | {} |
onboarding.securityContext.* | Define ajustes de contexto de seguridad para el contenedor. | Ver values.yaml |
onboarding.pdb.enabled | Especifica si PodDisruptionBudget está habilitado. | true |
onboarding.pdb.minAvailable | Número mínimo de pods disponibles. | 1 |
onboarding.pdb.maxUnavailable | Número máximo de pods no disponibles. | 1 |
onboarding.pdb.annotations | Anotaciones para el PodDisruptionBudget. | {} |
onboarding.deploymentUpdate.* | Estrategia de actualización del despliegue. | Ver values.yaml |
onboarding.service.type | Tipo de servicio de Kubernetes. | "ClusterIP" |
onboarding.service.port | Puerto para la API HTTP. | 3000 |
onboarding.service.annotations | Anotaciones para el servicio. | {} |
onboarding.ingress.enabled | Especifica si Ingress está habilitado. | false |
onboarding.ingress.className | Nombre de clase de Ingress. | "" |
onboarding.ingress.annotations | Anotaciones adicionales de ingress. | {} |
onboarding.ingress.hosts | Hosts configurados para Ingress y rutas asociadas. | "" |
onboarding.ingress.tls | Configuraciones TLS para Ingress. | [] |
onboarding.resources.* | Solicitudes/límites de recursos de CPU/Memoria. | Ver values.yaml |
onboarding.autoscaling.enabled | Especifica si el autoescalado está habilitado. | true |
onboarding.autoscaling.minReplicas | Número mínimo de réplicas para autoescalado. | 2 |
onboarding.autoscaling.maxReplicas | Número máximo de réplicas para autoescalado. | 5 |
onboarding.autoscaling.targetCPUUtilizationPercentage | Porcentaje objetivo de utilización de CPU para autoescalado. | 80 |
onboarding.autoscaling.targetMemoryUtilizationPercentage | Porcentaje objetivo de utilización de memoria para autoescalado. | 80 |
onboarding.nodeSelector | Selectores de nodo para programación de pods. | {} |
onboarding.tolerations | Tolerancias para programación de pods. | {} |
onboarding.affinity | Reglas de afinidad para programación de pods. | {} |
onboarding.configmap.* | Variables de entorno para el servicio. | Ver values.yaml |
onboarding.secrets.* | Secretos para el servicio. | Ver values.yaml |
onboarding.useExistingSecret | Usar un secreto existente en lugar de crear uno nuevo. | false |
onboarding.existingSecretName | El nombre del secreto existente a usar. | "" |
onboarding.extraEnvVars | Una lista de variables de entorno adicionales. | [] |
onboarding.serviceAccount.create | Especifica si se debe crear la cuenta de servicio. | true |
onboarding.serviceAccount.annotations | Anotaciones para la cuenta de servicio. | {} |
onboarding.serviceAccount.name | Nombre de cuenta de servicio. Si no se define, se generará automáticamente. | "" |
Transaction
Parámetro | Descripción | Valor predeterminado |
---|---|---|
transaction.name | Nombre del servicio. | "transaction" |
transaction.replicaCount | Número de réplicas para el servicio transaction. | 1 |
transaction.image.repository | Repositorio para la imagen del contenedor del servicio transaction. | "lerianstudio/midaz-transaction" |
transaction.image.pullPolicy | Política de extracción de imagen. | "IfNotPresent" |
transaction.image.tag | Etiqueta de imagen usada para el despliegue. | "2.2.2" |
transaction.imagePullSecrets | Secretos para extraer imágenes de un registro privado. | [] |
transaction.nameOverride | Anula el nombre predeterminado generado por Helm. | "" |
transaction.fullnameOverride | Anula el nombre completo generado por Helm. | "" |
transaction.podAnnotations | Anotaciones de pod para metadatos adicionales. | {} |
transaction.podSecurityContext | Contexto de seguridad para el pod. | {} |
transaction.securityContext.* | Define ajustes de contexto de seguridad para el contenedor. | Ver values.yaml |
transaction.pdb.enabled | Habilitar o deshabilitar PodDisruptionBudget. | true |
transaction.pdb.minAvailable | Número mínimo de pods disponibles. | 2 |
transaction.pdb.maxUnavailable | Número máximo de pods no disponibles. | 1 |
transaction.pdb.annotations | Anotaciones para el PodDisruptionBudget. | {} |
transaction.deploymentUpdate.* | Estrategia de actualización del despliegue. | Ver values.yaml |
transaction.service.type | Tipo de servicio de Kubernetes. | "ClusterIP" |
transaction.service.port | Puerto para la API HTTP. | 3001 |
transaction.service.annotations | Anotaciones para el servicio. | {} |
transaction.ingress.enabled | Habilitar o deshabilitar ingress. | false |
transaction.ingress.className | Nombre de clase de Ingress. | "" |
transaction.ingress.annotations | Anotaciones adicionales de ingress. | {} |
transaction.ingress.hosts | Hosts configurados para ingress y rutas asociadas. | [] |
transaction.ingress.tls | Configuración TLS para ingress. | [] |
transaction.resources.* | Solicitudes/límites de recursos de CPU/Memoria. | Ver values.yaml |
transaction.autoscaling.enabled | Habilitar o deshabilitar autoescalado horizontal de pods. | true |
transaction.autoscaling.minReplicas | Número mínimo de réplicas para autoescalado. | 1 |
transaction.autoscaling.maxReplicas | Número máximo de réplicas para autoescalado. | 5 |
transaction.autoscaling.targetCPUUtilizationPercentage | Porcentaje objetivo de utilización de CPU para autoescalado. | 80 |
transaction.autoscaling.targetMemoryUtilizationPercentage | Porcentaje objetivo de utilización de memoria para autoescalado. | 80 |
transaction.nodeSelector | Selector de nodo para programar pods en nodos específicos. | {} |
transaction.tolerations | Tolerancias para programación en nodos con taints. | {} |
transaction.affinity | Reglas de afinidad para programación de pods. | {} |
transaction.configmap.* | Variables de entorno para el servicio. | Ver values.yaml |
transaction.secrets.* | Secretos para el servicio. | Ver values.yaml |
transaction.useExistingSecret | Usar un secreto existente en lugar de crear uno nuevo. | false |
transaction.existingSecretName | El nombre del secreto existente a usar. | "" |
transaction.extraEnvVars | Una lista de variables de entorno adicionales. | [] |
transaction.serviceAccount.create | Especifica si se debe crear una ServiceAccount. | true |
transaction.serviceAccount.annotations | Anotaciones para la ServiceAccount. | {} |
transaction.serviceAccount.name | Nombre de la cuenta de servicio. | "" |
Console
Parámetro | Descripción | Valor predeterminado |
---|---|---|
console.name | Nombre del servicio. | "console" |
console.enabled | Habilitar o deshabilitar el servicio console. | true |
console.replicaCount | Número de réplicas para el despliegue. | 1 |
console.image.repository | Repositorio de imagen Docker para Console. | "lerianstudio/midaz-console" |
console.image.pullPolicy | Política de extracción de imagen Docker. | "IfNotPresent" |
console.image.tag | Etiqueta de imagen Docker usada para el despliegue. | "2.2.1" |
console.imagePullSecrets | Secretos para extraer imágenes Docker de un registro privado. | [] |
console.nameOverride | Anula el nombre del recurso. | "" |
console.fullnameOverride | Anula el nombre completo del recurso. | "" |
console.podAnnotations | Anotaciones para los pods. | {} |
console.podSecurityContext | Contexto de seguridad aplicado a nivel de pod. | {} |
console.securityContext.* | Define ajustes de contexto de seguridad para el contenedor. | Ver values.yaml |
console.pdb.enabled | Especifica si PodDisruptionBudget está habilitado. | false |
console.pdb.minAvailable | Número mínimo de pods disponibles para PodDisruptionBudget. | 1 |
console.pdb.maxUnavailable | Número máximo de pods no disponibles para PodDisruptionBudget. | 1 |
console.pdb.annotations | Anotaciones para el PodDisruptionBudget. | {} |
console.deploymentUpdate.* | Estrategia de actualización del despliegue. | Ver values.yaml |
console.service.type | Tipo de servicio de Kubernetes. | "ClusterIP" |
console.service.port | Puerto del servicio. | 8081 |
console.service.annotations | Anotaciones para el servicio. | {} |
console.ingress.enabled | Especifica si Ingress está habilitado. | false |
console.ingress.className | Nombre de clase de Ingress. | "" |
console.ingress.annotations | Anotaciones adicionales para Ingress. | {} |
console.ingress.hosts | Hosts configurados para Ingress y rutas asociadas. | [] |
console.ingress.tls | Configuraciones TLS para Ingress. | [] |
console.resources.* | Solicitudes/límites de recursos de CPU/Memoria. | Ver values.yaml |
console.autoscaling.enabled | Especifica si el autoescalado horizontal de pods está habilitado. | true |
console.autoscaling.minReplicas | Número mínimo de réplicas para autoescalado. | 1 |
console.autoscaling.maxReplicas | Número máximo de réplicas para autoescalado. | 3 |
console.autoscaling.targetCPUUtilizationPercentage | Porcentaje objetivo de utilización de CPU para autoescalado. | 80 |
console.autoscaling.targetMemoryUtilizationPercentage | Porcentaje objetivo de utilización de memoria para autoescalado. | 80 |
console.nodeSelector | Selectores de nodo para programación de pods. | {} |
console.tolerations | Tolerancias para programación de pods. | {} |
console.affinity | Reglas de afinidad para programación de pods. | {} |
console.configmap.* | Variables de entorno para el servicio. | Ver values.yaml |
console.secrets.* | Secretos para el servicio. | Ver values.yaml |
console.useExistingSecret | Usar un secreto existente en lugar de crear uno nuevo. | false |
console.existingSecretName | El nombre del secreto existente a usar. | "" |
console.extraEnvVars | Una lista de variables de entorno adicionales. | [] |
console.pluginsUi.enabled | Habilitar o deshabilitar el proxy de UI de plugins. | false |
console.pluginsUi.plugins.* | Configuración para cada UI de plugin. | Ver values.yaml |
console.serviceAccount.create | Especifica si se debe crear la cuenta de servicio. | true |
console.serviceAccount.annotations | Anotaciones para la cuenta de servicio. | {} |
console.serviceAccount.name | Nombre de cuenta de servicio. Si no se define, se generará automáticamente. | "" |