Si quieres usar HTTPS,
- Tu contenedor debería seguir escuchando en
$PORT
Debes elegir cómo vas a proporcionar los certificados TLS:
- Usa certificados TLS gestionados, en los que los certificados TLS se crean automáticamente según sea necesario y se renuevan automáticamente. En esta página se describe esta función, que está disponible en las versiones compatibles de Google Kubernetes Engine.
- Usar tus propios certificados: tú eres el responsable de obtener y renovar los certificados. En algunos casos, que se describen en la sección Limitaciones, debe usar sus propios certificados.
Si utilizas certificados gestionados, también debes asignar tu dominio personalizado para poder usar la función de certificados gestionados.
Usar HTTPS y HTTP
De forma predeterminada, si usas certificados gestionados, los clústeres o los servicios de Knative Serving con certificados gestionados están expuestos al tráfico HTTP y HTTPS. Si solo quieres tráfico HTTPS, puedes habilitar las redirecciones HTTPS para obligar a todo el tráfico a usar solo HTTPS.
Solución de problemas
Si tienes problemas al usar certificados TLS gestionados, consulta la página Solución de problemas de TLS gestionado.
Limitaciones
Al usar la función de certificados TLS gestionados, tenga en cuenta lo siguiente:
- Los certificados TLS gestionados están inhabilitados y no se admiten en los clústeres privados de Knative Serving en Google Cloud.
- Para usar la función de certificados gestionados, tu servicio debe exponerse externamente: no puede ser un servicio local del clúster ni un servicio expuesto por nube privada virtual.
- La función de certificados gestionados solo funciona con Cloud Service Mesh. No se admite el complemento Istio ni otras configuraciones de Istio.
- Esta función usa Let's Encrypt, que tiene un límite inicial de 50 certificados TLS por semana y por dominio registrado. Puedes solicitar un aumento de cuota siguiendo la documentación de Let's Encrypt.
- Cuando se ejecuta un clúster de servicio de Knative en otras plataformas, como en un entorno local o en AWS, esta función está inhabilitada. Para usar esta función, debes asegurarte de que tu clúster pueda acceder a Let's Encrypt y de que tu servicio de entrada de Cloud Service Mesh esté expuesto a Internet público.
Antes de empezar
En las instrucciones de esta página se presupone lo siguiente:
- Has desplegado tu servicio de Knative serving en el clúster.
- Eres propietario de un dominio. Si no tienes un dominio, puedes obtenerlo de Google o de otro proveedor de dominios.
- Has creado una asignación de dominio para tu servicio y has actualizado el registro DNS siguiendo las instrucciones de la página de asignación de dominios.
- Usa Cloud DNS o el servidor DNS que quieras.
Inhabilitar HTTPS y certificados TLS gestionados en todo un clúster
Para inhabilitar TLS gestionado en un clúster, actualiza el ConfigMap config-domainmapping
:
kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'
Inhabilitar HTTPS y TLS gestionados en una asignación de dominio específica
Si es necesario, puedes desactivar TLS gestionado para una asignación de dominio específica:
Añade la anotación
domains.cloudrun.com/disableAutoTLS: "true"
`:kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
Verifica que HTTPS no funciona:
curl https://DOMAIN
Comprueba que se esté usando HTTP en el servicio:
gcloud run domain-mappings describe --domain DOMAIN
Sustituye DOMAIN por tu nombre de dominio. Por ejemplo:
your-domain.com
Comprueba el campo
url:
en el resultado del comando anterior: la URL debe tenerhttp
y nohttps
.
Volver a habilitar HTTPS y certificados TLS gestionados
Para volver a habilitar TLS gestionado, sigue estos pasos:
Si aún no lo has hecho, crea una asignación de dominio para tu servicio y actualiza el registro DNS siguiendo las instrucciones de la página de asignación de dominios.
Activa HTTPS y los certificados TLS gestionados actualizando el ConfigMap
config-domainmapping
:kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
Espera unos minutos después de que el comando se ejecute correctamente y, a continuación, comprueba que la función de certificados funciona:
kubectl get kcert
Si el certificado está listo, debería aparecer un mensaje similar a este:
NAME READY REASON your-domain.com True
El
Kcert
puede tardar entre 20 segundos y 2 minutos en estar listo. Si tienes algún problema, consulta las instrucciones para solucionarlo de esta función.
Verificar el éxito
Para comprobar que el registro DNS se ha aplicado, ejecuta el siguiente comando:
gcloud run domain-mappings describe --domain DOMAIN
Sustituye DOMAIN por tu nombre de dominio. Por ejemplo:
your-domain.com
Comprueba el campo
url:
en el resultado del comando anterior: la URL debe tenerhttps
y nohttp
.Comprueba la dirección IP del comando anterior, que aparece en
resourceRecords:rrdata
, y compárala con el valor que ves al ejecutar el comandohost DOMAIN
. Deberían ser iguales.
Habilitar las redirecciones HTTPS para el servicio de Knative
Si usas la función de certificados TLS gestionados, el clúster se expone de forma predeterminada al tráfico HTTP y HTTPS por motivos de compatibilidad con versiones anteriores. Si quieres que todo el tráfico use solo HTTPS, puedes habilitar las redirecciones HTTPS en una asignación de dominio que ya tengas invocando el comando
kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled
donde DOMAIN es el nombre de la asignación de dominio.
Tema relacionado
- Solucionar problemas de TLS gestionado para obtener más información sobre cómo comprobar las asignaciones de dominios, las cuotas de certificados, el estado de los pedidos, los tiempos de espera de los pedidos y los fallos de autorización.
- Consulta el artículo Usar tus propios certificados TLS para obtener instrucciones sobre cómo usar tus propios certificados TLS en lugar de los certificados TLS gestionados.