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?
davy.ai
Para utilizar TLS passthrough con Istio ingress, cuando tienes múltiples hosts, puedes seguir estos pasos:
cert-manager
(Certificate
oClusterIssuer
) 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í.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í.
Añade las siguientes anotaciones a tus recursos Istio
Gateway
yVirtualService
para habilitar el modo passthrough:Gateway
, establece eltls.mode
enPASSTHROUGH
y especifica los hosts que deseas exponer utilizando el campohosts
.En la configuración del
VirtualService
, especifica los camposgateways
yhosts
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.