es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ingreso de Istio con cert-manager

Tengo Kubernetes con Kafka, donde también se está ejecutando Istio con Strimzi. Los certificados se almacenan en cert-manager. Quiero utilizar TLS passthrough en mi ingreso pero estoy un poco confundido con eso.

Cuando se utiliza “SIMPLE”, está “credentialName”, que debe ser el mismo que el secreto.

tls:
mode: SIMPLE
credentialName: httpbin-credential

Es una forma agradable y simple. Pero, ¿qué pasa con el “modo: PASSTHROUGH” cuando tengo muchos hosts? Estudié la demo en el sitio web de Istio (https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-sni-passthrough/#deploy-an-nginx-server) y sus detalles de certificado se almacenan en el archivo de configuración del servidor y crean “configmap”. En la documentación oficial de Istio se señala que este parámetro es solo para MUTUAL y SIMPLE.

¿Cuál es la forma correcta y simple de exponer mis hosts utilizando el ingreso de Istio al tráfico externo utilizando cert-manager?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para utilizar TLS passthrough con Istio ingress, cuando tienes múltiples hosts, puedes seguir estos pasos:

    1. Crea un secreto Kubernetes con tu certificado y clave para cada host utilizando cert-manager. Puedes utilizar el CRD de Kubernetes cert-manager (Certificate o ClusterIssuer) para obtener un certificado TLS firmado por LetsEncrypt o cualquier otro CA. Deberías utilizar un nombre de secreto diferente para cada host, de lo contrario los secretos podrían sobrescribirse entre sí.
    2. Crea un ConfigMap Kubernetes que contenga el archivo de configuración del servidor para cada host. Este archivo debería contener tu configuración SSL y la ruta a tu certificado y clave para ese host. Puedes utilizar un nombre de ConfigMap diferente para cada host, de lo contrario los ConfigMaps podrían sobrescribirse entre sí.

    3. Añade las siguientes anotaciones a tus recursos Istio Gateway y VirtualService para habilitar el modo passthrough:

      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: my-gateway
        annotations:
          ingress.kubernetes.io/ssl-passthrough: "true"
      spec:
        selector:
          istio: ingressgateway
        servers:
        - port:
            number: 443
            name: https
            protocol: HTTPS
          tls:
            mode: PASSTHROUGH
          hosts:
          - myhost1.example.com
          - myhost2.example.com
      
      ---
      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: my-virtualservice
      spec:
        hosts:
        - myhost1.example.com
        - myhost2.example.com
        gateways:
        - my-gateway
        http:
        - match:
          - uri:
              prefix: /
          route:
          - destination:
              host: my-destination
              port:
                number: 80
      

    4. En la configuración del Gateway, establece el tls.mode en PASSTHROUGH y especifica los hosts que deseas exponer utilizando el campo hosts.
    5. En la configuración del VirtualService, especifica los campos gateways y hosts en los metadatos y define tus rutas como de costumbre.

    Siguiendo estos pasos, deberías poder exponer tus servicios alojados en Kubernetes al tráfico externo utilizando Istio ingress con modo passthrough y tus certificados almacenados utilizando cert-manager.

Comments are closed.