Si quieres usar HTTPS, debe suceder lo siguiente:
- Tu contenedor debería seguir escuchando en
$PORT
. Debes elegir la forma en la que proporcionas certificados TLS:
- Usa certificados TLS administrados, en los que los certificados TLS se crean y renuevan de forma automática según sea necesario. En esta página, se describe esta función que está disponible en las versiones compatibles de Google Kubernetes Engine.
- Usa tus propios certificados. Si eliges esta opción, serás responsable de obtener y renovar los certificados. En algunas situaciones, descritas en Limitaciones, debes usar tus propios certificados.
Para usar la función de certificados administrados, también debes asignar tu dominio personalizado si usas certificados administrados.
Usa HTTPS y HTTP
De forma predeterminada, si usas certificados administrados, los clústeres o servicios de Cloud Run con dichos certificados se exponen al tráfico HTTP y HTTPS. Si solo deseas tráfico HTTPS, puedes habilitar los redireccionamientos a HTTPS para forzar el uso de HTTPS en todo el tráfico.
Soluciona problemas
Si tienes problemas cuando usas certificados TLS administrados, consulta la página Soluciona problemas de TLS administrados.
Limitaciones
Las siguientes consideraciones se aplican al uso de la función de certificados TLS administrados:
- Los certificados TLS administrados están inhabilitados y no son compatibles con los clústeres privados de Cloud Run for Anthos en Google Cloud.
- Para usar la función de certificados administrados, tu servicio debe estar expuesto de manera externa; no puede ser un servicio local de clúster ni uno que expone la nube privada virtual.
- La función de certificados administrados solo funciona con Istio, como se instala de forma automática cuando configuras tu clúster para Cloud Run for Anthos; no funciona con el complemento de Istio ni con otras opciones de configuración de Istio. Si necesitas usar el complemento de Istio, es posible que debas usar tus propios certificados TLS.
- Esta función usa Let's Encrypt, que tiene un límite de cuota inicial de 50 certificados TLS por semana, por dominio registrado. Para solicitar un aumento de la cuota, sigue los pasos que se indican en la documentación de Let's Encrypt.
- Cuando se ejecuta un clúster de Cloud Run en otras plataformas, como una local o AWS, esta función se inhabilita. Para usar esta función, debes asegurarte de que el clúster pueda acceder a Let's Encrypt y que tu servicio de entrada de Istio (servicio
istio-ingress
engke-system
) esté expuesto en la Internet pública. - Cuando mapeas dominios, si usas certificados administrados, no puedes usar un nombre de asignación de dominio que sea el mismo que la URL del servicio al que mapeas. Por ejemplo, si la URL de tu servicio es
test.default.example.com
, no puedes establecer el nombre DomainMapping comotest.default.example.com
.
Antes de comenzar
En las instrucciones de esta página, se supone lo siguiente:
- El clúster de Cloud Run for Anthos usa una de las versiones de clústeres compatibles con TLS administrados.
- Implementaste el servicio de Cloud Run for Anthos en el clúster.
- Cuentas con un dominio. Si no tienes un dominio, puedes obtener uno de Google o de otro proveedor de dominios.
- Creaste una asignación de dominio para tu servicio y actualizaste el registro DNS según las instrucciones de la página de asignación de dominios.
- Si obtuviste el dominio de Google Domains, úsalo como tu servidor DNS. De lo contrario, usa Cloud DNS o el servidor DNS que prefieras. Usar un dominio de Google Domains es la opción más fácil.
Versiones del clúster compatibles
En las versiones 1.17.7-gke.15 y posteriores, los certificados administrados están habilitados de forma predeterminada para clústeres públicos en Google Cloud.
Para las siguientes versiones de clústeres, la función de certificados administrados está inhabilitada de forma predeterminada, pero puedes habilitarlos si deseas usarlos:
- 1.16.0
- 1.15.7-gke.23
- 1.14.10-gke.17
- 1.14.9-gke.23
- 1.14.8-gke.33
Para determinar cuál es la versión actual del clúster, haz lo siguiente:
Visita la página de Google Kubernetes Engine en la consola de Google Cloud:
Haz clic en el clúster para abrir la página de detalles.
Ubica la versión del clúster junto a la etiqueta Versión principal.
Inhabilita los certificados TLS administrados y HTTPS para todo un clúster
Inhabilita TLS administrados para un clúster mediante la actualización del ConfigMap config-domainmapping
:
kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'
Inhabilita TLS administrados y HTTPS para una asignación de dominio específica
Si es necesario, puedes desactivar TLS administrados para una asignación de dominio específica:
Agrega la anotación
domains.cloudrun.com/disableAutoTLS: "true"
:kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
Verifica que HTTPS no funcione:
curl https://DOMAIN
Verifica que se use HTTP para el servicio:
gcloud run domain-mappings describe --domain DOMAIN
Reemplaza DOMAIN por el nombre de tu dominio, por ejemplo:
example.com
.Verifica el campo
url:
en el resultado del comando anterior. La URL debe contenerhttp
, nohttps
.
Vuelve a habilitar los certificados TLS administrados y HTTPS
Para volver a habilitar TLS administrados, sigue estos pasos:
Si aún no lo hiciste, crea una asignación de dominio para el servicio y actualiza el registro DNS según las instrucciones de la página de asignación de dominios.
Actualiza el ConfigMap
config-domainmapping
para activar los certificados TLS administrados y HTTPS:kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
Espera unos minutos después de que el comando se ejecute de forma correcta. Luego, asegúrate de que la función de certificados funcione:
kubectl get kcert
Si el certificado está listo, deberías ver un mensaje similar al siguiente:
NAME READY REASON example.com True
Es posible que transcurran entre 20 segundos y 2 minutos hasta que el
Kcert
esté listo. Si tienes algún problema, consulta las instrucciones para solucionar problemas de esta función.
Verifica si se realizó de forma correcta
Ejecuta el siguiente comando para verificar que el registro DNS haya entrado en vigor:
gcloud run domain-mappings describe --domain DOMAIN
Reemplaza DOMAIN por el nombre de tu dominio, por ejemplo:
example.com
.Verifica el campo
url:
en el resultado del comando anterior. La URL debe contenerhttps
, nohttp
.Verifica la dirección IP del comando anterior, que aparece en
resourceRecords:rrdata
, y compárala con el valor que ves cuando ejecutas el comandohost DOMAIN
. Deberían ser iguales.
Habilita redireccionamientos HTTPS para Cloud Run for Anthos
Si usas la función de certificados TLS administrados, de forma predeterminada, el clúster se expone al tráfico HTTP y HTTPS por motivos de retrocompatibilidad. Si deseas forzar el uso de HTTPS en todo el tráfico, puedes habilitar los redireccionamientos a HTTPS para una asignación de dominio existente mediante la invocación del siguiente comando:
kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled
En el ejemplo anterior, DOMAIN es el nombre de la asignación de dominio.
Temas relacionados
- Consulta Solución de problemas de TLS administrados para obtener información sobre cómo verificar las asignaciones de dominios, las cuotas de certificados, el estado y los tiempos de espera de pedidos, y los errores de autorización.
- Consulta Usa tus propios certificados TLS si deseas obtener instrucciones para usar tus propios certificados TLS en lugar de los administrados.