Configura dominios personalizados para acceder a tus servicios de Knative Serving. Puedes asignar uno o varios dominios personalizados a un servicio concreto, o bien asignar un único dominio a tu clúster para que lo usen todos los servicios. Tu asignación de dominio personalizado puede ser el dominio base, como your-domain.com
, o un subdominio, como your-subdomain.your-domain.com
.
De forma predeterminada, los servicios que implementes en tus clústeres de Knative Serving se definen en el dominio base nip.io
. De esta forma, puedes probar tus servicios inmediatamente en una URL como la siguiente:
http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io
Más información sobre los dominios de prueba
Antes de empezar
Debes tener o comprar el dominio que quieras asignar a tus servicios. Puedes usar cualquier registrador de nombres de dominio, pero si usas Cloud Domains, el dominio se verifica automáticamente para Knative Serving, por lo que no tendrás que completar el proceso de verificación del dominio.
Si quieres registrar un dominio con Cloud Domains, consulta el artículo Registrar un dominio con Cloud Domains en la consola de Knative Serving.
Debes tener al menos el rol de gestión de identidades y accesos Desarrollador de Kubernetes Engine o permisos equivalentes.
Para habilitar HTTPS con tus asignaciones de dominio personalizado, debes configurar certificados TLS gestionados o configurar tus propios certificados.
Para asignar un dominio personalizado a tu clúster o servicios en una red interna privada, debes inhabilitar los certificados TLS gestionados.
Asignar un dominio personalizado
Puedes usar la Google Cloud consola o las herramientas de línea de comandos para asignar tu dominio personalizado.
Por lo general, para configurar un dominio personalizado, sigue estos pasos:
- Opcional: Reserva la dirección IP de tu balanceador de carga.
- Asigna tus servicios o el clúster al dominio personalizado en Knative Serving.
- Actualiza los registros DNS en tu registrador de dominios.
Reservar la dirección IP del balanceador de carga
Cuando se instala Knative Serving, el controlador de entrada de Istio crea un balanceador de carga con una dirección IP disponible.
En función de tu clúster de GKE, es posible que tengas que reservar la dirección IP del balanceador de carga para el controlador de entrada de Istio:
- Fuera de Google Cloud
- Consulta la documentación del entorno en el que ejecutas tu clúster de GKE para determinar cómo se gestionan las direcciones IP y si la dirección IP de tu balanceador de carga es estática. Consulta también las páginas de configuración de tu clúster de GKE. Por ejemplo, en función de cómo hayas configurado el balanceo de carga para Google Distributed Cloud, es posible que ya hayas reservado esas direcciones IP.
- En Google Cloud
Debes reservar la dirección IP externa del balanceador de carga para asegurarte de que siga siendo la misma si se elimina tu servicio de entrada. En función de la configuración del clúster, la dirección IP estará disponible externamente o solo internamente (por ejemplo, en los clústeres privados).
- Balanceadores de carga internos en Google Cloud
- Consulta la siguiente página para obtener información sobre cómo reservar la dirección IP de tu balanceador de carga interno: Reservar una dirección IP interna estática
- Balanceadores de carga externos en Google Cloud
- Para reservar la dirección IP de tu balanceador de carga externo, haz lo siguiente:
Obtén la dirección IP del balanceador de carga:
Consola
Para obtener la dirección IP externa del balanceador de carga desde la consola de Google Cloud :- Ve a la página de GKE en la Google Cloud consola:
Ir a GKE - Haz clic en Servicios y entrada.
- Identifica el servicio que es el ingreso de Istio de tu clúster. El Tipo del servicio será Balanceador de carga externo y el Nombre será
istio-ingressgateway
. - Una vez que hayas encontrado el servicio de entrada de Istio de tu clúster, copia su Endpoint. Esta será la dirección IP sin el número de puerto. Por ejemplo, puede que veas
00.000.000.000:11
en la lista de endpoints, pero solo tienes que copiar00.000.000.000
.
kubectl
Para obtener la IP externa del balanceador de carga, ejecuta el siguiente comando:
kubectl get svc istio-ingressgateway -n ASM-INGRESS-NAMESPACE
Sustituye ASM-INGRESS-NAMESPACE por el espacio de nombres en el que se encuentra tu entrada de Cloud Service Mesh. Especifica
istio-system
si has instalado Cloud Service Mesh con su configuración predeterminada.La salida resultante tiene un aspecto similar al siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) istio-ingressgateway LoadBalancer XX.XX.XXX.XX pending 80:32380/TCP,443:32390/TCP,32400:32400/TCP
donde el valor EXTERNAL-IP es la dirección IP externa del balanceador de carga.
- Ve a la página de GKE en la Google Cloud consola:
Reserva la dirección IP como IP estática:
gcloud compute addresses create ADDRESS-NAME --addresses EXTERNAL-IP --region REGION
Sustituye:
- ADDRESS-NAME con el nombre que quieras asignar a tu IP estática.
- EXTERNAL-IP por la dirección IP externa del balanceador de carga que has obtenido en el paso anterior.
- REGION con la región en la que se encuentra tu clúster.
Una vez que hayas obtenido la dirección IP de tu balanceador de carga, puedes usarla para asignar tu dominio personalizado:
Servicios de mapas
Elige uno de los siguientes métodos para asignar tu dominio personalizado a un servicio de Knative Serving. Cada servicio se puede asignar a varios dominios.
Consola
Abre la página de asignaciones de dominios en la Google Cloud consola:
Ten en cuenta que, si la ventana de visualización es demasiado pequeña, no se mostrará el botón Asignar dominios personalizados y tendrás que hacer clic en el icono de elipse vertical de 3 puntos situado en la esquina derecha de la página.
Haz clic en Añadir asignación y selecciona Añadir asignación de dominios del servicio para asignar un dominio a un servicio concreto. Puedes asignar varios dominios a cada servicio.
En la lista desplegable del formulario Añadir asignación, selecciona el servicio al que quieras asignar tu dominio personalizado:
Introduce el nombre de dominio. Por ejemplo,
your-domain.com
osubdomain.your-domain.com
. Requisitos del dominio:- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
users
es la ruta base deyour-domain.com/users
. El servicio de Knative solo te permite asignar un dominio a/
, no a una ruta base específica. Por lo tanto, cualquier ruta debe gestionarse mediante un router dentro del contenedor del servicio o mediante Firebase Hosting. -
No puedes asignar tu dominio a un subdominio que coincida con la URL de tus servicios. Las URLs de un servicio se definen como
http://{service}.{namespace}.{your-domain.com}
, por lo que, si tienes un servicio entest.default.your-domain.com
, no debes crear una asignación de dominio al mismo subdominiotest.default.
your-domain.com
.
- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
Haz clic en Continuar.
Actualiza los registros DNS en el sitio web de tu registrador de dominios con los registros DNS que se muestran en el último paso. Puedes mostrar los registros en cualquier momento haciendo clic en Registros DNS en el menú de acciones "..." de una asignación de dominio.
Haz clic en Listo.
gcloud
Asigna tu servicio al dominio personalizado:
gcloud run domain-mappings create --service SERVICE --domain DOMAIN
Sustituye:
- SERVICE por el nombre de tu servicio.
- DOMAIN por tu dominio personalizado. Por ejemplo,
your-domain.com
osubdomain.your-domain.com
. Requisitos de dominio:- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
users
es la ruta base deyour-domain.com/users
. El servicio de Knative solo te permite asignar un dominio a/
, no a una ruta base específica. Por lo tanto, cualquier ruta debe gestionarse mediante un router dentro del contenedor del servicio o mediante Firebase Hosting. -
No puedes asignar tu dominio a un subdominio que coincida con la URL de tus servicios. Las URLs de un servicio se definen como
http://{service}.{namespace}.{your-domain.com}
, por lo que, si tienes un servicio entest.default.your-domain.com
, no debes crear una asignación de dominio al mismo subdominiotest.default.
your-domain.com
.
- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
Ahora que tu dominio personalizado se ha asignado a Knative Serving, debes añadir registros DNS en tu registrador de dominios.
Asignar clústeres
Elige uno de los siguientes métodos para asignar tu dominio personalizado a tu clúster:
Consola
Abre la página de asignaciones de dominios en la Google Cloud consola:
Ten en cuenta que, si la ventana de visualización es demasiado pequeña, no se mostrará el botón Asignar dominios personalizados y tendrás que hacer clic en el icono de elipse vertical de 3 puntos situado en la esquina derecha de la página.
Haz clic en Añadir asignación y selecciona Añadir dominio predeterminado para asignar un dominio a todos los servicios de tu clúster. De forma predeterminada, los servicios nuevos que implementes usarán el dominio asignado.
Marca la casilla para aplicar la nueva asignación de dominio a todos los servicios de tu clúster.
En la lista desplegable del formulario Add Mapping (Añadir asignación), selecciona el clúster al que quieras asignar tu dominio personalizado:
Introduce el nombre de dominio. Por ejemplo,
your-domain.com
osubdomain.your-domain.com
. Requisitos del dominio:- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
users
es la ruta base deyour-domain.com/users
. El servicio de Knative solo te permite asignar un dominio a/
, no a una ruta base específica. Por lo tanto, cualquier ruta debe gestionarse mediante un router dentro del contenedor del servicio o mediante Firebase Hosting. -
No puedes asignar tu dominio a un subdominio que coincida con la URL de tus servicios. Las URLs de un servicio se definen como
http://{service}.{namespace}.{your-domain.com}
, por lo que, si tienes un servicio entest.default.your-domain.com
, no debes crear una asignación de dominio al mismo subdominiotest.default.
your-domain.com
.
- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
Haz clic en Continuar.
Actualiza los registros DNS en el sitio web de tu registrador de dominios con los registros DNS que se muestran en el último paso. Puedes mostrar los registros en cualquier momento haciendo clic en Registros DNS en el menú de acciones "..." de una asignación de dominio.
Haz clic en Listo.
kubectl
Ejecuta el siguiente comando para quitar el dominio base del ConfigMap
config-domain
y sustituirlo por tu dominio personalizado:kubectl patch configmap config-domain --namespace knative-serving --patch \ '{"data": {"nip.io": null, "DOMAIN": ""}}'
Sustituye DOMAIN por tu dominio personalizado. Por ejemplo,
your-domain.com
osubdomain.your-domain.com
. Requisitos del dominio:- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
users
es la ruta base deyour-domain.com/users
. El servicio de Knative solo te permite asignar un dominio a/
, no a una ruta base específica. Por lo tanto, cualquier ruta debe gestionarse mediante un router dentro del contenedor del servicio o mediante Firebase Hosting. -
No puedes asignar tu dominio a un subdominio que coincida con la URL de tus servicios. Las URLs de un servicio se definen como
http://{service}.{namespace}.{your-domain.com}
, por lo que, si tienes un servicio entest.default.your-domain.com
, no debes crear una asignación de dominio al mismo subdominiotest.default.
your-domain.com
.
- No se admite la asignación de rutas base. El término ruta base hace referencia al nombre de la ruta de la URL que va después del nombre de dominio. Por ejemplo,
Ahora que tu dominio personalizado se ha asignado a Knative Serving, debes añadir registros DNS en tu registrador de dominios.
Añadir registros DNS en el registrador de dominios
Una vez que hayas asignado tu servicio a un dominio personalizado en Knative Serving, debes actualizar los registros DNS en tu registrador de dominios. Para ponértelo fácil, Knative Serving genera y te muestra los registros DNS que debes introducir. Debes añadir estos registros que apuntan al servicio de Knative Serving en el registrador de tu dominio para que la asignación entre en vigor.
Si usas Cloud DNS como proveedor de DNS, consulta el artículo sobre cómo añadir un registro.
Para obtener la información de los registros DNS de las asignaciones de dominios, usa lo siguiente:
Consola
Ve a la página de asignaciones de dominios del servicio de Knative:
Haz clic en el icono de elipse vertical de 3 puntos situado a la derecha de tu servicio y, a continuación, en REGISTROS DNS para ver todos los registros DNS:
gcloud
gcloud run domain-mappings describe --domain DOMAIN
Sustituye DOMAIN por tu dominio personalizado. Por ejemplo,
your-domain.com
osubdomain.your-domain.com
.Necesitas todos los registros devueltos en el encabezado
resourceRecords
.Inicia sesión en tu cuenta del registrador de dominios y abre la página de configuración de DNS.
Busca la sección de registros de host de la página de configuración de tu dominio y añade todos los registros de recursos que hayas recibido al asignar tu dominio a tu servicio de Knative Serving.
Cuando añadas cada uno de los registros DNS anteriores a la cuenta del proveedor de DNS, haz lo siguiente:
- Selecciona el tipo devuelto en el registro DNS del paso anterior:
A
,AAAA
oCNAME
. - Usa el nombre
www
para asignarlo awww.your-domain.com
. - Usa el nombre
@
para asignaryour-domain.com
. - Usa el comodín
*
para asignar*.your-domain.com
.
- Selecciona el tipo devuelto en el registro DNS del paso anterior:
Guarda los cambios en la página de configuración de DNS de la cuenta de tu dominio. En la mayoría de los casos, estos cambios tardan unos minutos en aplicarse, pero a veces pueden tardar varias horas, en función del registrador y del tiempo de vida (TTL) de los registros DNS anteriores de tu dominio. Puedes usar una herramienta de
dig
, como esta versión onlinedig
, para confirmar que los registros DNS se han actualizado correctamente.Para comprobar que todo funciona correctamente, ve al servicio en su nueva URL, por ejemplo,
https://www.your-domain.com
. Ten en cuenta que el certificado SSL/TLS gestionado puede tardar varios minutos en emitirse.
Añadir propietarios de dominio verificados a otros usuarios o cuentas de servicio
Cuando un usuario verifica un dominio, este solo se verifica en la cuenta de ese usuario. Esto significa que solo ese usuario puede añadir más asignaciones de dominio que usen ese dominio. Por lo tanto, para permitir que otros usuarios añadan asignaciones que usen ese dominio, debes añadirlos como propietarios verificados.
Si necesitas añadir propietarios verificados de tu dominio a otros usuarios o cuentas de servicio, puedes añadir permisos a través de la página Search Console:
Ve a esta dirección en tu navegador web:
En Propiedades, haga clic en el dominio al que quiera añadir un usuario o una cuenta de servicio.
Desplázate hacia abajo hasta la lista Usuarios verificados, haz clic en Añadir un propietario y, a continuación, introduce una dirección de correo de cuenta de Google o un ID de cuenta de servicio.
Para ver una lista de tus cuentas de servicio, abre la página Cuentas de servicio en la Google Cloud consola:
Registrar un dominio con Cloud Domains en la consola de Knative Serving
Para registrar un dominio con Cloud Domains desde la consola de Knative Serving, sigue estos pasos:
Ve a la página de asignaciones de dominios del servicio de Knative:
Haz clic en Registrar dominio.
Completa el proceso de registro siguiendo las instrucciones para registrar un dominio.
Completa los pasos que se indican en la parte superior de esta página para asignar tu dominio a Knative Serving y, a continuación, añade registros DNS en tu registrador de dominios.
Solución de problemas
Consulta los problemas habituales en el artículo Solucionar problemas con dominios personalizados y TLS gestionado.