Obtén información sobre cómo configurar la entrega de Knative para usar tus propios certificados SSL/TLS.
Como alternativa, puedes usar la función de certificados TLS administrados, que crea y renueva de forma automática los certificados TLS a través de Let's Encrypt.
Para usar tus propios certificados, almacena tus certificados TLS en un Secret de Kubernetes y, luego, configura la puerta de enlace de entrada de Anthos Service Mesh para usar ese Secret.
Antes de comenzar
- En estas instrucciones se supone que ya obtuviste los certificados TLS.
- Debes configurar un dominio personalizado. Para obtener más información, consulta Asigna dominios personalizados.
- Debes configurar cada uno de los servicios de entrega de Knative que usan la puerta de enlace de entrada para entregar tráfico externo. Si estos servicios externos no están configurados para usar tus certificados TLS, los servicios no podrán verificar una conexión HTTPS y, por lo tanto, nunca alcanzarán el estado
ready
.
Almacena certificados TLS en un Secret de Kubernetes
Para almacenar los certificados en un Secret, haz lo siguiente:
Abre una terminal y navega hasta el directorio en el que se encuentran los certificados TLS.
Usa el siguiente comando para crear un Secret que almacene tus certificados:
kubectl create --namespace INGRESS_NAMESPACE secret tls SECRET_NAME \ --key PRIVATE_KEY.pem \ --cert FULL_CHAIN.pem
Reemplaza lo siguiente:
- INGRESS_NAMESPACE por el espacio de nombres de tu servicio de entrada,
istio-ingressgateway
. Especifica el espacio de nombresistio-system
si instalaste Anthos Service Mesh con la configuración predeterminada. - SECRET_NAME por el nombre que deseas usar para tu Secret de Kubernetes.
- PRIVATE_KEY.pem por el nombre del archivo que contiene la clave privada del certificado.
- FULL_CHAIN.pem por el nombre del archivo que contiene el certificado público.
- INGRESS_NAMESPACE por el espacio de nombres de tu servicio de entrada,
Ahora puedes configurar la puerta de enlace de entrada a fin de usar el Secret que acabas de crear para tu certificado TLS.
Configura la puerta de enlace de entrada para usar tus certificados
Modifica la puerta de enlace de entrada de Anthos Service Mesh a fin de usar el Secret que creaste para tus certificados TLS:
Ejecuta el siguiente comando para abrir el archivo YAML de la puerta de enlace de entrada en modo de edición:
kubectl edit gateway knative-ingress-gateway --namespace knative-serving
Ejemplo de la configuración predeterminada de la puerta de enlace de entrada:
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
Agrega los atributos
hosts
,port
ytls
al YAML existente para configurar la puerta de enlace de entrada a fin de usar tu Secret.Para configurar todos los servicios a fin de que usen el mismo Secret, agrega lo siguiente a la configuración de YAML y especifica
"*"
como el valor del atributohosts
:... # other skipped configuration ... - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Reemplaza SECRET_NAME por el nombre del Secret que creaste.
Para configurar cada uno de tus servicios de forma individual, agrega lo siguiente a la configuración de YAML y especifica los valores para los atributos
hosts
mediante el nombre y el espacio de nombres del servicio:Para cada servicio, debes especificar 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
Reemplaza lo siguiente:
- SERVICE_NAME por el nombre del servicio de entrega de Knative. Cada servicio que use la puerta de enlace de entrada para entregar tráfico externo debe configurarse de forma individual.
- SERVICE_NAMESPACE por el nombre del espacio de nombres en el que se ejecuta el servicio.
- CUSTOM_DOMAIN por el dominio personalizado para el que configuraste el servicio.
- SECRET_NAME por el nombre del Secret que deseas que use el servicio. Si creaste varios Secrets para diferentes conjuntos de certificados TLS, puedes especificar qué Secret usa cada servicio.
Guarda los cambios.
Ahora puedes usar el protocolo HTTPS para acceder a los servicios de entrega de Knative implementados.
Ejemplos
- Configura todos los servicios:
En este ejemplo, se muestra cómo configurar todos los servicios para usar el Secret
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 individuales:
En este ejemplo, se muestra cómo configurar de forma individual los tres Services que entregan 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