Asigna dominios personalizados

Puedes configurar un dominio personalizado en lugar de la dirección predeterminada que proporciona Cloud Run para un servicio implementado.

Existen algunas formas de configurar un dominio personalizado para un servicio de Cloud Run:

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

Antes de comenzar

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

Asigna un dominio personalizado con un balanceador de cargas de aplicaciones externo global

Con esta opción, agregas un balanceador de cargas de aplicaciones externo global delante del servicio de Cloud Run y configuras un dominio personalizado a nivel del balanceador de cargas.

Una ventaja de usar un balanceador de cargas de aplicaciones externo global es que te brinda mucho control sobre la configuración del 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 a fin de obtener seguridad adicional.

Observa que también puedes asignar varios servicios a un nombre de host dinámico o una ruta de acceso en el patrón de URL de dominio personalizado para un solo balanceador de cargas, por ejemplo, <service>.example.com, mediante máscaras de URL.

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

Asigna un dominio personalizado con Firebase Hosting

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

Firebase Hosting tiene un precio bajo y, de forma opcional, te permite alojar y entregar contenido estático junto con el contenido dinámico que entrega tu servicio de Cloud Run.

Para asignar un dominio personalizado con Firebase Hosting, haz lo siguiente:

  1. Agrega Firebase a tu proyecto de Google Cloud
  2. Instala Firebase CLI
  3. En una carpeta diferente de 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"
            }
          }]
        }
      }
    

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

  4. Implementa la configuración de Firebase Hosting:

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

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

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

Limitaciones del mapeo 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 se encuentran en la etapa de lanzamiento de vista previa. Debido a problemas de latencia, no están listas para la producción y no son compatibles con la disponibilidad general. Por el momento, no se recomienda esta opción para los servicios de producción.
  • Se emite y renueva automáticamente un certificado administrado por Google para conexiones HTTPS cuando se mapea un servicio a un dominio personalizado.
  • El aprovisionamiento del certificado SSL suele demorar unos 15 minutos, pero puede tardar hasta 24 horas.
  • No puedes inhabilitar TLS 1.0 y 1.1. Si esto genera algún problema, puedes usar Firebase Hosting o Cloud Load Balancing para habilitar el tráfico solo TLS 1.2.
  • No puedes subir y usar tus propios certificados (autoadministrados).
  • Las asignaciones de dominios de Cloud Run tienen un límite de 64 caracteres.
  • La asignación de dominios 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, debes usar una de las otras opciones de asignación.
  • Cuando usas las asignaciones de dominio de Cloud Run, asigna un dominio personalizado a tu servicio y, luego, actualiza tus registros DNS.
  • Puedes mapear un dominio, como example.com, o un subdominio, como subdomain.example.com.
  • Solo puedes asignar un dominio a /, no a una ruta de URL específica como /users.
  • No puedes usar certificados comodín con esta función.

Asigna un dominio personalizado a un servicio

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

Console

  1. Abre la página Mapeos de dominios en la consola de Google Cloud:
    página Mapeos de dominios

  2. Haz clic en Agregar mapeo.

    Ten en cuenta que si tu ventana de visualización es demasiado pequeña, no se muestra el botón Agregar 3 mapeo y debes hacer clic en el ícono de puntos suspensivos verticales en la esquina derecha de la página.

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

  4. Según la región que se configure para el servicio seleccionado, el formulario muestra las opciones disponibles a fin de agregar un dominio personalizado:

    • Firebase Hosting con integraciones de Cloud Run
    • Dominios personalizados: Google Cloud Load Balancing mediante integraciones de Cloud Run
    • Asignaciones de dominios de Cloud Run

    Selecciona Asignaciones de dominio de Cloud Run.

  5. En el formulario Agregar asignación, selecciona Verificar un dominio nuevo.

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

    Si deseas asignar subdomain.example.com o subdomain1.subdomain2.example.com, debes verificar la propiedad de example.com. Para obtener más información sobre la verificación de la propiedad del dominio, consulta la ayuda de Search Console.

  7. Haz clic en Continuar.

  8. Cuando finalice la verificación del dominio, haz clic en Continuar la verificación y cerrar.

  9. Actualiza los registros DNS en el sitio web del registrador de dominios mediante los registros DNS que se muestran en el último paso. Puedes ver los registros en cualquier momento si haces 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 usas en el proyecto de Google Cloud, a menos que le hayas comprado tu dominio personalizado a Google. Puedes determinar si el dominio personalizado que deseas usar se verificó mediante el siguiente comando:

    gcloud domains list-user-verified

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

    gcloud domains verify BASE-DOMAIN

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

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

  2. Asigna el servicio al dominio personalizado:

    gcloud beta run domain-mappings create --service SERVICE --domain DOMAIN
    • Reemplaza SERVICE por el nombre del servicio.
    • Reemplaza DOMAIN por el dominio personalizado, por ejemplo, example.com o subdomain.example.com.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Para crear un servicio de Cloud Run, agrega lo siguiente al archivo main.tf existente:

resource "google_cloud_run_v2_service" "default" {
  name     = "custom-domain"
  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"
    }
  }
}

Reemplaza el valor de name por el nombre de tu propio servicio.

Asigna el 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
  }
}

Reemplaza verified-domain.com por el dominio verificado personalizado, por ejemplo, example.com o subdomain.example.com.

Agrega los registros DNS al registrador de dominios

Después de asignar el servicio a un dominio personalizado en Cloud Run, debes actualizar los registros DNS en el registrador de dominios. Para tu comodidad, Cloud Run genera y muestra los registros DNS que debes ingresar. Debes agregar estos registros que apuntan al servicio de Cloud Run en el registrador de dominios para que el mapeo entre en vigor.

Si usas Cloud DNS como proveedor de DNS, consulta Agrega un registro.

  1. A fin de recuperar la información del registro DNS para los mapeos de dominios, sigue estos pasos:

    Console

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

    2. Haz clic en el ícono del menú de 3 puntos verticales que se encuentra a la derecha del servicio y, luego, haz clic en DNS RECORDS (REGISTROS DNS) para ver todos los registros DNS:

    selecciona los registros DNS

    gcloud

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

    Reemplaza [DOMAIN] por el dominio personalizado, por ejemplo, example.com o subdomain.example.com.

    Necesitas todos los registros que se muestran en el encabezado resourceRecords.

  2. Accede a tu cuenta en el registrador de dominios y, luego, abre la página de la configuración de DNS.

  3. Ubica la sección de registros de host de la página de configuración del dominio y, luego, agrega cada uno de los registros de recursos que recibiste cuando asignaste el dominio al servicio de Cloud Run.

  4. Cuando agregues los registros DNS anteriores a la cuenta en el proveedor de DNS, haz lo siguiente:

    • Selecciona el tipo que se muestra en el registro DNS en el paso anterior: A, AAAA o CNAME.
    • Usa el nombre www para asignar a www.example.com.
    • Usa el nombre @ para mapear example.com.
  5. Guarda los cambios en la página de configuración de DNS de la cuenta del dominio. En la mayoría de los casos, la aplicación de estos cambios toma solo unos minutos, pero en algunos casos puede tomar varias horas, en función del registrador y el tiempo de actividad (TTL) de cualquier registro DNS anterior del dominio. Puedes usar una herramienta de dig, como esta versión de dig en línea, para confirmar que los registros DNS se hayan actualizado de forma correcta.

  6. Navega al servicio con la URL nueva para probar si funciona, por ejemplo, https://www.example.com. Ten en cuenta que el certificado SSL administrado puede tardar varios minutos en emitirse.

Agrega propietarios de dominios verificados a otros usuarios o cuentas de servicio

Cuando un usuario verifica un dominio, ese dominio solo se verifica en la cuenta de ese usuario. Esto significa que solo ese usuario puede agregar más asignaciones de dominio que usen ese dominio. Por lo tanto, para habilitar que otros usuarios agreguen asignaciones que usen ese dominio, debes agregarlos como propietarios verificados.

Si necesitas agregar propietarios verificados del dominio a otros usuarios o cuentas de servicio, puedes agregar permisos a través de la página Search Console:

  1. Dirígete a esta dirección en el navegador web:

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

  2. En Propiedades, haz clic en el dominio al que deseas agregarle un usuario o una cuenta de servicio.

  3. Desplázate hacia abajo a la lista de Propietarios verificados, haz clic en Agregar un propietario y, a continuación, ingresa la dirección de correo electrónico de una Cuenta de Google o el ID de una cuenta de servicio.

    Para ver una lista de las cuentas de servicio, abre la página Cuentas de servicio en la consola de Google Cloud:

    Ir a la página Cuentas de servicio

Borra una asignación de dominio de Cloud Run

Puedes usar la consola de Google Cloud o la herramienta de línea de comandos de gcloud para borrar una asignación de dominio.

Console

  1. Abre la página Mapeos de dominios en la consola de Google Cloud:
    página Mapeos de dominios

  2. En la página Mapeos de dominio, selecciona la asignación de dominio que deseas borrar y haz clic en Borrar.

gcloud

  1. Borra la asignación del dominio:

    gcloud beta run domain-mappings delete --domain DOMAIN
    • Reemplaza DOMAIN por el dominio personalizado, por ejemplo, example.com o subdomain.example.com.

Usa 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 durante la generación de la credencial (el público).

El público suele ser la URL completa del servicio de destino, que de forma predeterminada es una URL generada que termina en run.app para los servicios de Cloud Run. Sin embargo, si usas un dominio personalizado, debes evitar usar esa URL run.app generada automáticamente como público. En su lugar, configura el servicio para un público personalizado para que acepte tu dominio personalizado como un público de autenticación válido.

¿Qué sigue?

  • A fin de configurar un dominio personalizado para Cloud Run mediante un balanceador de cargas de aplicaciones externo global con Terraform, explora este código de muestra.