> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Configurar ingress

> Expón los servicios de Midaz vía ingress de Kubernetes — define hostnames, secrets TLS y anotaciones para NGINX, ALB o Traefik.

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](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) ejecutándose en tu clúster (por ejemplo, **NGINX**, **AWS ALB** o **Traefik**) y entradas DNS apuntando a él.

<Tip>
  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.
</Tip>

<Note>
  **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.
</Note>

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:

```yaml expandable theme={null}
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
```

<Tip>
  Consulta la documentación oficial de ingress-nginx para una referencia completa sobre las anotaciones de Nginx.
</Tip>

## AWS ALB (Application load balancer)

Para el **Controlador Ingress AWS ALB**, configura el `values.yaml` de la siguiente manera:

```yaml expandable theme={null}
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:

```yaml expandable theme={null}
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:

```yaml theme={null}
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
```
