Saltar al contenido principal
Cada servicio de Midaz puede exponerse de forma independiente vía ingress. El bloque de ingress es idéntico entre servicios (Ledger, Onboarding, Transaction, CRM, Grafana) — configúralo bajo la sección .ingress de cada servicio en values.yaml. Para usar ingress, necesitas 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.
Integración con cert-manager: Si usas cert-manager para TLS automático, agrega la anotación cert-manager.io/cluster-issuer: <issuer-name> y configura tls.secretName — cert-manager provisionará el certificado automáticamente.
Las siguientes secciones proporcionan ejemplos de configuración para los controladores ingress más comunes.

Controlador ingress NGINX

Para usar el Controlador Ingress NGINX, configura el values.yaml de la siguiente manera:
ingress:
  enabled: true
  className: "nginx"
  # El campo `annotations` se usa para agregar metadatos personalizados al recurso Nginx.
  # Las anotaciones son pares clave-valor que se pueden usar para adjuntar metadatos arbitrarios no identificativos a objetos.
  # Estas anotaciones pueden ser utilizadas por varias herramientas y bibliotecas para aumentar el comportamiento del recurso Nginx.
  # Ver más https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
  annotations: {}
  hosts:
    - host: midaz.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: midaz-tls  # Asegúrate de que este secreto exista o sea gestionado por cert-manager
      hosts:
        - midaz.example.com
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 el values.yaml de la siguiente manera:
ingress:
  enabled: true
  className: "alb"
  annotations:
    alb.ingress.kubernetes.io/scheme: internal  # Usa "internet-facing" para ALB público
    alb.ingress.kubernetes.io/target-type: ip   # Usa "instance" si apuntas a instancias EC2
    alb.ingress.kubernetes.io/group.name: "midaz"  # Agrupa recursos ALB bajo este nombre
    alb.ingress.kubernetes.io/healthcheck-path: "/healthz"  # Ruta de verificación de salud
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'  # Escucha en HTTP y HTTPS
  hosts:
    - host: midaz.example.com
      paths:
        - path: /
          pathType: Prefix
  tls: []  # TLS es gestionado por el ALB usando certificados ACM

Controlador Ingress Traefik

Para Traefik, configura el values.yaml de la siguiente manera:
ingress:
  enabled: true
  className: "traefik"
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: "web, websecure"  # Puntos de entrada definidos en Traefik
    traefik.ingress.kubernetes.io/router.tls: "true"  # Habilita TLS para esta ruta
  hosts:
    - host: midaz.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: midaz-tls  # Asegúrate de que este secreto exista y contenga el certificado TLS
      hosts:
        - midaz.example.com

Ejemplo con múltiples servicios


Para exponer tanto la API de Ledger como Grafana con diferentes nombres de host:
ledger:
  ingress:
    enabled: true
    className: "nginx"
    hosts:
      - host: api.midaz.example.com
        paths:
          - path: /
            pathType: Prefix
    tls:
      - secretName: midaz-api-tls
        hosts:
          - api.midaz.example.com

grafana:
  ingress:
    enabled: true
    className: "nginx"
    hosts:
      - host: grafana.midaz.example.com
        paths:
          - path: /
            pathType: Prefix
    tls:
      - secretName: midaz-grafana-tls
        hosts:
          - grafana.midaz.example.com