Asignar dominios personalizados

Puedes configurar un dominio personalizado en lugar de la dirección predeterminada que proporciona Cloud Run para los servicios desplegados.

Hay varias formas de configurar un dominio personalizado para un servicio de Cloud Run:

Puedes asignar varios dominios personalizados al mismo servicio de Cloud Run.

Antes de empezar

Compra un dominio nuevo, a menos que ya tengas uno que quieras usar. Puedes usar cualquier registrador de nombres de dominio.

Asignar un dominio personalizado mediante un balanceador de carga de aplicación externo global

Con esta opción, añade un balanceador de carga de aplicación externo global delante de tu servicio de Cloud Run y configura un dominio personalizado a nivel del balanceador de carga.

Una de las ventajas de usar un balanceador de carga de aplicación externo global es que te ofrece mucho control sobre la configuración de tu dominio personalizado. Por ejemplo, te permite usar tu propio certificado TLS o enrutar rutas de URL específicas al servicio de Cloud Run. También te permite configurar Cloud CDN para el almacenamiento en caché y Google Cloud Armor para aumentar la seguridad.

También puedes asignar varios servicios a un nombre de host dinámico o a una ruta en el patrón de URL de tu dominio personalizado para un único balanceador de carga. Por ejemplo, <service>.example.com, usando máscaras de URL.

Consulta la documentación sobre cómo configurar un balanceador de carga de aplicación externo global con Cloud Run.

Asociar un dominio personalizado con Firebase Hosting

Con esta opción, puedes configurar Firebase Hosting delante de tu servicio de Cloud Run y conectar un dominio a Firebase Hosting.

Firebase Hosting tiene un precio bajo y, opcionalmente, te permite alojar y servir contenido estático junto con el contenido dinámico que sirve tu servicio de Cloud Run.

Para asociar un dominio personalizado mediante Firebase Hosting, sigue estos pasos:

  1. Añade Firebase a tu Google Cloud proyecto.
  2. Instala la CLI de Firebase.
  3. En una carpeta diferente a la del código fuente de tu servicio, crea un archivo firebase.json con el siguiente contenido:

      {
        "hosting": {
          "rewrites": [{
            "source": "**",
            "run": {
              "serviceId": "SERVICE_NAME",
              "region": "REGION"
            }
          }]
        }
      }
    

    Sustituye SERVICE_NAME y REGION por el nombre y la región de tu servicio de Cloud Run.

  4. Despliega la configuración de Firebase Hosting:

    firebase deploy --only hosting --project PROJECT_ID
  5. Conecta un dominio personalizado a Firebase Hosting.

Consulta más información sobre Firebase Hosting y Cloud Run.

Asociar un dominio personalizado mediante la asignación de dominios de Cloud Run (disponibilidad limitada y vista previa)

Limitaciones de la asignación de dominios de Cloud Run

Las siguientes consideraciones se aplican a las asignaciones de dominios de Cloud Run:

  • Las asignaciones de dominios de Cloud Run están en la fase de lanzamiento de la versión preliminar. Debido a problemas de latencia, no están listos para producción y no se admiten en la disponibilidad general. Por el momento, no se recomienda usar esta opción en servicios de producción.
  • Cuando asignas un servicio a un dominio personalizado, se emite y se renueva automáticamente un certificado gestionado por Google para las conexiones HTTPS.
  • El aprovisionamiento del certificado SSL suele tardar unos 15 minutos, pero puede prolongarse hasta 24 horas.
  • No puedes inhabilitar TLS 1.0 y 1.1. Si esto supone un problema, puedes usar Firebase Hosting o Cloud Load Balancing para habilitar el tráfico solo de TLS 1.2.
  • No puedes subir ni usar tus propios certificados (autogestionados).
  • Las asignaciones de dominios de Cloud Run tienen un límite de 64 caracteres.
  • La asignación de dominio está disponible en las siguientes regiones:
    • asia-east1
    • asia-northeast1
    • asia-southeast1
    • europe-north1
    • europe-west1
    • europe-west4
    • us-central1
    • us-east1
    • us-east4
    • us-west1
  • Para asignar dominios personalizados en otras regiones, debe usar una de las otras opciones de asignación.
  • Cuando usas las asignaciones de dominio de Cloud Run, asignas un dominio personalizado a tu servicio y, a continuación, actualizas tus registros DNS.
  • Puedes asignar un dominio, como example.com, o un subdominio, como subdomain.example.com.
  • Solo puede asignar un dominio a /, no a una ruta de URL específica, como /users.
  • No puedes usar certificados comodín con esta función.

Asignar un dominio personalizado a un servicio

Puedes usar la Google Cloud consola, la CLI de gcloud o Terraform para asignar un dominio personalizado a un servicio.

Consola

  1. Abre la página de asignaciones de dominio en la Google Cloud consola:
    Página de asignaciones de dominio

  2. Haz clic en Añadir asignación.

    Si la ventana de visualización es demasiado pequeña, el botón Añadir asignación no se muestra y debes hacer clic en el icono de elipse vertical de tres puntos situado en la esquina de la página.

  3. En la lista desplegable, selecciona el servicio al que quieres asignar el dominio personalizado.

  4. Selecciona Asignaciones de dominios de Cloud Run.

  5. En el formulario Añadir asignación, selecciona Verificar un nuevo dominio.

  6. En el campo Dominio base que verificar, debes verificar la propiedad de un dominio antes de poder usarlo, a menos que lo hayas comprado a Google.

    Si quieres mapear subdomain.example.com o subdomain1.subdomain2.example.com, debes verificar la propiedad de example.com. Para obtener más información sobre cómo verificar la propiedad de un dominio, consulta la ayuda de Search Console.

  7. Haz clic en Continuar.

  8. Una vez que haya terminado la verificación del dominio, haz clic en Continuar verificación y cerrar.

  9. Actualiza tus 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.

  10. Haz clic en Listo.

gcloud

  1. Debes verificar la propiedad del dominio la primera vez que lo uses en el proyecto Google Cloud , a menos que hayas comprado tu dominio personalizado a Google. Para saber si el dominio personalizado que quieres usar se ha verificado, ejecuta el siguiente comando:

    gcloud domains list-user-verified

    Si tienes que verificar la propiedad del dominio, abre la página de verificación de Search Console:

    gcloud domains verify BASE-DOMAIN

    donde BASE-DOMAIN es el dominio base que quieres verificar. Por ejemplo, si quieres asignar subdomain.example.com, debes verificar la propiedad de example.com.

    En Search Console, completa la verificación de la propiedad del dominio. Para obtener más información, consulta la ayuda de Search Console.

  2. Asigna tu servicio al dominio personalizado:

    gcloud beta run domain-mappings create --service SERVICE --domain DOMAIN
    • Sustituye SERVICE por el nombre de tu servicio.
    • Sustituye DOMAIN por tu dominio personalizado (por ejemplo, example.com o subdomain.example.com).

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Para crear un servicio de Cloud Run, añade lo siguiente al archivo main.tf:

resource "google_cloud_run_v2_service" "default" {
  name     = "custom-domain" # Replace with your service name
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" # Replace with your container image
    }
  }
}

Sustituye:

  • custom-domain con el nombre de tu servicio de Cloud Run.
  • us-docker.pkg.dev/cloudrun/container/hello con una referencia a tu imagen de contenedor. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Asigna tu servicio de Cloud Run al dominio personalizado:

data "google_project" "project" {}

resource "google_cloud_run_domain_mapping" "default" {
  name     = "verified-domain.com"
  location = google_cloud_run_v2_service.default.location
  metadata {
    namespace = data.google_project.project.project_id
  }
  spec {
    route_name = google_cloud_run_v2_service.default.name
  }
}

Sustituye verified-domain.com por tu dominio verificado personalizado (por ejemplo, example.com o subdomain.example.com).

Añadir registros DNS en el registrador de dominios

Una vez que hayas asignado tu servicio a un dominio personalizado en Cloud Run, debes actualizar los registros DNS en tu registrador de dominios. Para ponértelo fácil, Cloud Run genera y te muestra los registros DNS que debes introducir. Para que la asignación entre en vigor, debes añadir estos registros que apuntan al servicio de Cloud Run en tu registrador de dominios.

Si usas Cloud DNS como proveedor de DNS, consulta el artículo sobre cómo añadir un registro.

  1. Para obtener la información de los registros DNS de las asignaciones de dominios, haz lo siguiente:

    Consola

    1. Ve a la página de asignaciones de dominios de Cloud Run:
      Página de asignaciones de dominios

    2. Haz clic en el icono de elipse vertical de tres puntos situado a la derecha de tu servicio y, a continuación, en REGISTROS DNS para ver todos los registros DNS:

    Selecciona registros DNS

    gcloud

    gcloud beta run domain-mappings describe --domain [DOMAIN]

    Sustituye [DOMAIN] por tu dominio personalizado (por ejemplo, example.com o subdomain.example.com).

    Necesitas todos los registros devueltos en el encabezado resourceRecords.

  2. Inicia sesión en tu cuenta del registrador de dominios y abre la página de configuración de DNS.

  3. 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 Cloud Run.

  4. Cuando añadas cada uno de los registros DNS anteriores a la cuenta del proveedor de DNS:

    • Selecciona el tipo devuelto en el registro DNS del paso anterior: A, AAAA o CNAME.
    • Usa el nombre www para asignarlo a www.example.com.
    • Usa el nombre @ para asignar example.com.
  5. 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 la versión onlinedig, para confirmar que los registros DNS se han actualizado correctamente.

  6. Para comprobar que todo funciona correctamente, vaya a su servicio en la nueva URL, por ejemplo, https://www.example.com. El certificado SSL 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 que otros usuarios puedan añadir 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:

  1. Ve a la siguiente dirección en tu navegador web:

    https://search.google.com/search-console/welcome

  2. En Propiedades, haga clic en el dominio al que quiera añadir un usuario o una cuenta de servicio.

  3. Ve a la lista Propietarios verificados, haz clic en Añadir un propietario y, a continuación, introduce una dirección de correo de una 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:

    Ir a la página Cuentas de servicio

Eliminar una asignación de dominio de Cloud Run

Puedes usar la Google Cloud consola o gcloud CLI para eliminar una asignación de dominio.

Consola

  1. Abre la página Asignaciones de dominio en la Google Cloud consola:
    Página Asignaciones de dominio

  2. En la página Mapeos de dominio, selecciona el mapeo de dominio que quieras eliminar y haz clic en Eliminar.

gcloud

  1. Elimina la asignación de dominio:

    gcloud beta run domain-mappings delete --domain DOMAIN
    • Sustituye DOMAIN por tu dominio personalizado (por ejemplo, example.com o subdomain.example.com).

Usar dominios personalizados con servicios autenticados

Los servicios autenticados están protegidos por IAM. Estos servicios de Cloud Run requieren una autenticación de cliente que declare el destinatario previsto de una solicitud en el momento de generar las credenciales (el público objetivo).

La audiencia suele ser la URL completa del servicio de destino, que, de forma predeterminada, en el caso de los servicios de Cloud Run, es una URL generada que termina en run.app. Sin embargo, si usas un dominio personalizado, puedes configurar una audiencia personalizada para que tu servicio acepte tu dominio personalizado como una audiencia válida.

Siguientes pasos

  • Para configurar un dominio personalizado para Cloud Run mediante un balanceador de carga de aplicación externo global con Terraform, consulta el código de ejemplo.