Consulta cómo configurar Knative Serving para usar tus propios certificados SSL/TLS.
También puedes usar la función de certificados TLS gestionados, que crea y renueva automáticamente los certificados TLS a través de Let's Encrypt.
Para usar tus propios certificados, almacena tus certificados TLS en un secreto de Kubernetes y, a continuación, configura la pasarela de entrada de Cloud Service Mesh para que use ese secreto.
Antes de empezar
- En estas instrucciones se da por hecho que ya has obtenido tus certificados TLS.
- Debes configurar un dominio personalizado. Para obtener más información, consulta el artículo Asignar dominios personalizados.
- Debes configurar cada uno de tus servicios de Knative Serving que usen la puerta de enlace de entrada para servir tráfico externo. Si estos servicios orientados al exterior no están configurados para usar tus certificados TLS, no podrán verificar una conexión HTTPS y, por lo tanto, nunca alcanzarán el estado
ready
.
Almacenar certificados TLS en un secreto de Kubernetes
Para almacenar los certificados en un secreto, sigue estos pasos:
Abre un terminal y ve al directorio donde se encuentran tus certificados TLS.
Usa el siguiente comando para crear un secreto que almacene tus certificados:
kubectl create --namespace INGRESS_NAMESPACE secret tls SECRET_NAME \ --key PRIVATE_KEY.pem \ --cert FULL_CHAIN.pem
Sustituye:
- INGRESS_NAMESPACE con el espacio de nombres de tu servicio de entrada,
istio-ingressgateway
. Especifica el espacio de nombresistio-system
si has instalado Cloud Service Mesh con la configuración predeterminada. - SECRET_NAME con el nombre que quieras usar para tu secreto de Kubernetes.
- PRIVATE_KEY.pem con el nombre del archivo que contiene la clave privada de tu certificado.
- FULL_CHAIN.pem con el nombre del archivo que contiene tu certificado público.
- INGRESS_NAMESPACE con el espacio de nombres de tu servicio de entrada,
Ahora puedes configurar la puerta de enlace de entrada para que use el secreto que acabas de crear para tu certificado TLS.
Configurar la pasarela de entrada para usar tus certificados
Modifica la pasarela de entrada de Cloud Service Mesh para que use el secreto que has creado para tus certificados TLS:
Abre el archivo YAML de la pasarela de entrada en modo de edición ejecutando el siguiente comando:
kubectl edit gateway knative-ingress-gateway --namespace knative-serving
Ejemplo de configuración de la pasarela de entrada predeterminada:
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
Configura la puerta de enlace de entrada para que use tu secreto añadiendo los atributos
hosts
,port
ytls
al archivo YAML.Para configurar todos los servicios de forma que usen el mismo secreto, añade lo siguiente a tu configuración YAML y especifica
"*"
como valor del atributohosts
:... # other skipped configuration ... - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Sustituye SECRET_NAME por el nombre del secreto que has creado.
Para configurar cada uno de tus servicios individualmente, añade lo siguiente a tu configuración YAML y especifica los valores de los atributos
hosts
con el nombre y el espacio de nombres del servicio:Para cada servicio, especifique los valores de los atributos
hosts
,port
ytls
:... # other skipped configuration ... - hosts: - SERVICE_NAME.SERVICE_NAMESPACE.CUSTOM_DOMAIN port: number: 443 name: https-SERVICE_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Sustituye:
- SERVICE_NAME con el nombre del servicio de Knative. Cada servicio que use la pasarela de entrada para servir tráfico externo debe configurarse individualmente.
- SERVICE_NAMESPACE con el nombre del espacio de nombres en el que se ejecuta el servicio.
- CUSTOM_DOMAIN con el dominio personalizado para el que has configurado el servicio.
- SECRET_NAME con el nombre del secreto que quieras que use el servicio. Si has creado varios secretos para diferentes conjuntos de certificados TLS, puedes especificar qué secreto usa cada servicio.
Guarda los cambios.
Ahora puedes usar el protocolo HTTPS para acceder a los servicios de Knative Serving que hayas desplegado.
Ejemplos
- Configurar todos los servicios:
En este ejemplo se muestra cómo configurar todos los servicios para que usen el secreto
TLSsecret
:apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret
- Configura servicios concretos:
En este ejemplo se muestra cómo configurar individualmente los tres servicios que sirven tráfico de Internet:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - prodservice.prodnamespace.my-custom-domain.com port: number: 443 name: https-prodservice protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - experiment.namespace.my-custom-domain.com port: number: 443 name: https-experiment protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - fallbackservice.anothernamespace.my-custom-domain.com port: number: 443 name: https-fallbackservice protocol: HTTPS tls: mode: SIMPLE credentialName: anotherTLSsecret