Usar mapas de URL

En esta guía, se explica cómo configurar los mapas de URL de Google Cloud. Un mapa de URL es un conjunto de reglas para enrutar solicitudes HTTPS entrantes a servicios de backend o buckets específicos. Un mapa de URL mínimo coincide con todas las rutas de solicitud entrantes (/*).

Antes de seguir las instrucciones de esta guía, familiarízate con los conceptos de los mapas de URL.

Los mapas de URL se usan con los siguientes productos de Google Cloud:

Los mapas de URL que se usan con balanceadores de cargas de aplicaciones externos, los balanceadores de cargas de aplicaciones externos regionales, los balanceadores de cargas de aplicaciones internos y Traffic Director también admiten varias funciones avanzadas de administración de tráfico. Para obtener más información, consulta Conceptos de mapas de URL: Administración avanzada de tráfico.

Valores predeterminados del mapa de URL

Los mapas de URL tienen dos valores predeterminados, como se describe en la siguiente tabla.

Predeterminado Configuración Significado
Configuración predeterminada del mapa de URL gcloud compute url-maps create

--default-service | --default-backend-bucket

El servicio de backend o bucket de backend predeterminado especificado se usa si ninguno de los comparadores de rutas de acceso o reglas de host coinciden con la URL entrante.
Configuración predeterminada del comparador de rutas de acceso gcloud compute url-maps add-path-matcher

--default-service | --default-backend-bucket

El servicio de backend o bucket de backend predeterminado especificado se usa si la ruta de acceso de la URL coincide con un comparador de rutas, pero ninguna de las --path-rules especificadas coincide.

Reglas de host

Una regla de host define un conjunto de hosts con los que se deben hacer coincidir las solicitudes.

En una regla de host, el nombre de host debe ser un nombre de dominio completamente calificado (FQDN). El nombre de host no puede ser una dirección IPv4 o IPv6. Por ejemplo:

  • Works: example.com
  • Works: web.example.com
  • Works: *.example.com
  • No funciona: 35.244.221.250

Configura mapas de URL

Un mapa de URL puede enviar tráfico a los servicios de backend o a los depósitos de backend. Los depósitos de backend no son compatibles con balanceadores de cargas de aplicaciones regionales externos ni balanceadores de cargas de aplicación internos.

.

Consola

Para agregar un mapa de URL mediante la consola de Google Cloud, sigue estos pasos:

  1. Ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la página Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. Selecciona Reglas de host y ruta.
  5. Haz clic en Agregar regla de host y ruta de acceso.
  6. Completa el campo Host, el campo Rutas de acceso o ambos, y selecciona un servicio de backend o bucket de backend.

    1. Ingresa un Nombre de host completamente calificado, como web.example.com.
    2. Ingresa la ruta de acceso, por ejemplo, /video.
    3. En la página Reglas de host y ruta de acceso, en el menú Backends, selecciona un servicio de backend o un bucket de backend que esté disponible.
  7. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para agregar un mapa de URL mediante Google Cloud CLI, usa el comando url-maps create:

gcloud compute url-maps create URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   [--description DESCRIPTION] \
   [--global | --region=REGION]

En el caso de los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos, asegúrate de incluir la marca --region cuando crees el mapa de URL.

Para borrar un comparador de rutas, usa el comando gcloud compute url-maps add-path-matcher:

gcloud compute url-maps add-path-matcher URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   --path-matcher-name PATH_MATCHER \
   [--path-rules="PATH=SERVICE or BUCKET"]

Este comando requiere un servicio de backend o un bucket de backend predeterminado al que pueda enviar las solicitudes sin coincidencia. La marca --path-rules define las asignaciones entre las rutas de solicitud y los servicios o buckets de backend. En el siguiente ejemplo, se envían las rutas de solicitud /video/ y /video/* al servicio de backend video-service:

--path-rules="/video=video-service,/video/*=video-service"

Para crear una regla de host, usa el comando gcloud compute url-maps add-host-rule:

gcloud compute url-maps add-host-rule URL_MAP_NAME \
    --hosts=[HOSTS] --path-matcher-name=PATH_MATCHER

Por ejemplo, el siguiente valor --hosts hace coincidir las solicitudes con www.example.com y cualquier subdominio de google.com:

--hosts=[*.google.com,www.example.com]

Para cambiar el servicio predeterminado o el bucket predeterminado de un mapa de URL, usa el comando url-maps set-default-service:

gcloud compute url-maps set-default-service URL_MAP_NAME
  (--default-backend-bucket=DEFAULT_BACKEND_BUCKET
  | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]

Terraform

Para crear un mapa de URL global, usa el recurso google_compute_url_map.

# url map
resource "google_compute_url_map" "default" {
  name            = "http-lb"
  default_service = google_compute_backend_bucket.default.id
}

Para crear un mapa de URL regional, usa el recurso google_compute_region_url_map.

resource "google_compute_region_url_map" "default" {
  name            = "regional-l7-xlb-map"
  region          = "us-west1"
  default_service = google_compute_region_backend_service.default.id
}

Valida la configuración del mapa de URL

Antes de implementar un mapa de URL, asegúrate de validar la configuración del mapa de URL para garantizar que el mapa enrute las solicitudes a los backends correspondientes, según lo previsto. Puedes hacer esto mediante la adición de pruebas a la configuración del mapa de URL. Puedes experimentar con diferentes reglas del mapa de URL y ejecutar todas las pruebas necesarias para asegurarte de que el mapa enrutará el tráfico de forma adecuada cuando se implemente. Además, si se necesitan cambios en las reglas en el futuro, puedes probar esos cambios antes de que se publique la configuración nueva.

Usa el comando gcloud compute url-maps validate para validar la configuración del mapa de URL. Este comando solo prueba la configuración proporcionada. Independientemente de si las pruebas pasan o fallan, no se guardan cambios en el mapa de URL implementado. Este comportamiento es diferente al de otros comandos de mapas de URL (edit, import), que también ejecutan las mismas pruebas, pero guardarán la configuración nueva si se aprueban. Cuando desees probar una configuración de enrutamiento nueva sin realizar cambios en el mapa de URL implementado, usa el comando validate.

El comando validate te permite probar configuraciones de rutas avanzadas, como el enrutamiento basado en encabezados y parámetros de búsqueda, redireccionamientos HTTP a HTTPS y reescrituras de URL.

Consola

No puedes usar la consola de Google Cloud para validar la configuración del mapa de URL. Usa gcloud o la API de REST en su lugar.

gcloud

Para validar la configuración del mapa de URL, usa el comando gcloud compute url-maps validate.

Para el balanceador de cargas de aplicaciones externo global:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --global

Para el balanceador de cargas de aplicaciones clásico:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL \
    --global
  • PATH_TO_URL_MAP_CONFIG_FILE: reemplaza con una ruta de acceso al archivo que contiene la configuración del mapa de URL para la validación.

Valida los cambios en el mapa de URL del balanceador de cargas existente

Si tienes un balanceador de cargas que necesita cambios en el mapa de URL, puedes probar esos cambios de configuración antes de publicarlos.

  1. Exporta el mapa de URL existente del balanceador de cargas a un archivo YAML.

    gcloud compute url-maps export URL_MAP_NAME \
       --destination PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    
  2. Edita el archivo YAML con una configuración nueva. Por ejemplo, si deseas editar un balanceador de cargas de aplicaciones externo y enviar todas las solicitudes con la ruta de acceso /video a un nuevo servicio de backend llamado video-backend-service, puedes agregar pruebas a la configuración del mapa de URL de la siguiente manera:

    Configuración de asignación de URL existente con un único web-backend-service predeterminado:

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     

    Se editó la configuración del mapa de URL con el comparador de rutas de acceso agregado y las pruebas para el web-backend-service predeterminado y el servicio de backend video-backend-service nuevo:

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     hostRules:
     - hosts:
       - '*'
       pathMatcher: pathmap
     pathMatchers:
     - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
       name: pathmap
       pathRules:
       - paths:
         - /video
         - /video/*
         service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
     tests:
     - description: Test routing to existing web service
       host: foobar
       path: /
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     - description: Test routing to new video service
       host: foobar
       path: /video
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
    
  3. Valida la configuración nueva.

    gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
    

    Si todas las pruebas se pasan correctamente, debería ver un mensaje de confirmación como el siguiente:

    Successfully validated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_CONFIG_FILE_NAME]
    

    Si las pruebas fallan, aparecerá un mensaje de error. Realiza las correcciones necesarias en el archivo de configuración del mapa de URL y, luego, intenta realizar la validación de nuevo.

    Error: Invalid value for field 'urlMap.tests': ''.
    Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
    
  4. Una vez que sepas que la configuración nueva funciona y no afecta la configuración existente, puedes importarla al mapa de URL. Ten en cuenta que con este paso también se implementa el mapa de URL con la configuración nueva.

    gcloud compute url-maps import URL_MAP_NAME \
       --source PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    

Agrega pruebas a un mapa de URL

Puedes agregar pruebas de configuración a un mapa de URL para asegurarte de que enrute las solicitudes a los servicios de backend o a los depósitos de backend de manera adecuada.

En esta sección, se describe cómo agregar pruebas a un mapa de URL que ya se implementó. Si quieres probar nuevos cambios en un mapa de URL sin implementar el mapa, consulta Valida la configuración del mapa de URL.

Cuando editas el mapa de URL, las pruebas se ejecutan y, si una prueba falla, aparecerá un mensaje de error.

Error: Invalid value for field 'urlMap.tests': ''.
Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.

Agregar pruebas a los mapas de URL es opcional.

Consola

Para ejecutar pruebas desde la consola de Google Cloud, sigue estos pasos:

  1. Ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la página Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. Haz clic en Reglas de enrutamiento. Para un balanceador de cargas de aplicaciones clásico, estas son las Reglas de host y ruta de acceso.
  5. Haz clic en Mostrar pruebas de configuración.
  6. Haz clic en Add configuration test y, luego, ingresa los siguientes backends y URL de prueba:
    • Host y ruta de prueba 1 example.com y Backend www-service.
    • Host y ruta de prueba 2 example.net y Backend www-service.
    • Host y ruta de prueba 3 example.net/web y Backend www-service.
    • Host y ruta de prueba 4 example.com/videos y Backend video-service.
    • Host y ruta de prueba 5 example.com/videos/browse y Backend video-service.
    • Host y ruta de prueba 6 example.net/static y Backend static-service.
    • Host y ruta de prueba 7 example.net/static/images y Backend static-service.
  7. Busca la marca de verificación azul que se encuentra a la izquierda de Reglas de enrutamiento y haz clic en el botón Actualizar. Para un balanceador de cargas de aplicaciones clásico, busca la marca de verificación azul junto a Reglas de host y ruta.

gcloud

Para agregar pruebas al mapa de URL mediante Google Cloud CLI, usa el comando gcloud compute url-maps edit:

gcloud compute url-maps edit URL_MAP_NAME

Con esto se abrirá un editor de texto. Para los balanceadores de cargas de aplicaciones externos, tus pruebas deben usar el siguiente formato:

  tests:
    - host: example.com
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.com
      path: /videos
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.com
      path: /videos/browse
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.net
      path: /web
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
      path: /static
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
    - host: example.net
      path: /static/images
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service

Si no especificas un host en una regla, las URL de todos los hosts (tanto example.com como example.net) pueden coincidir. En cambio, si tienes reglas de host, debes crear reglas que coincidan tanto con example.com como con example.net.

Mostrar lista de mapas de URL

Consola

No puedes enumerar todos tus mapas de URL en la consola de Google Cloud.

gcloud

Para mostrar una lista de los mapas de URL mediante Google Cloud CLI, usa el comando url-maps list.

gcloud compute url-maps list

Obtén información sobre un mapa de URL

Consola

Para obtener información sobre un mapa de URL, sigue estos pasos:

  1. Ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la página Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. Mira las Reglas de host y ruta.

gcloud

Para obtener información sobre un solo mapa de URL mediante Google Cloud CLI, usa el comando url-maps describe.

gcloud compute url-maps describe URL_MAP_NAME

Borrar un mapa de URL

Solo puedes borrar un mapa de URL una vez que hayas borrado todos los proxies de destino que hacen referencia a él. Para obtener más información, consulta Borra un proxy de destino.

Console

Para borrar un mapa de URL, sigue estos pasos:

  1. Ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la página Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. En la página Detalles del balanceador de cargas, ve a las Reglas de host y ruta.
  5. Haz clic en la "X" que aparece a la derecha de un mapa de URL para borrarlo. El mapa de URL desaparecerá.
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para borrar un mapa de URL mediante Google Cloud CLI, usa el comando url-maps delete. Para que puedas borrar un mapa de URL, primero debes borrar cualquier proxy HTTP de destino que haga referencia a ese mapa.

gcloud compute url-maps delete URL_MAP_NAME [--quiet]

Borra un comparador de rutas

Consola

Para borrar un comparador de rutas de acceso, sigue estos pasos:

  1. Ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la página Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. Selecciona Reglas de host y ruta.
  5. En el campo Rutas de acceso de un mapa de URL existente, haz clic en la “x” que aparece en el nombre del comparador de rutas.
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para borrar un comparador de rutas, usa el comando gcloud compute url-maps remove-path-matcher:

gcloud compute url-maps remove-path-matcher URL_MAP_NAME \
   [--path-matcher-name PATH_MATCHER]

Borra una regla de host

Consola

Para borrar una regla de host, sigue estos pasos:

  1. Si no estás en la página Reglas de host y ruta, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la página Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. Selecciona Reglas de host y ruta.
  5. En el campo Hosts de un mapa de URL existente, haz clic en la “x” que aparece en el nombre del host.
  6. Revisa que aparezca una marca de verificación azul a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para borrar una regla de host del mapa de URL, usa el comando gcloud compute url-maps remove-host-rule:

gcloud compute url-maps remove-host-rule URL_MAP_NAME --host=HOST

Por ejemplo, si deseas quitar una regla de host que contiene el host google.com de un mapa de URL llamado my-map, debes ejecutar el siguiente comando:

gcloud compute url-maps remove-host-rule my-map --host google.com

Guías de administración de tráfico

No todas las funciones de mapas de URL están disponibles para todos los productos. Los mapas de URL se usan con balanceadores de cargas para admitir varias funciones avanzadas de administración del tráfico, pero no todas son compatibles con el balanceador de cargas de aplicaciones clásico.

Usa la siguiente tabla a fin de obtener información sobre las características de asignación de URL para la administración.

Producto Funciones del mapa de URL y guías de administración del tráfico
Balanceador de cargas de aplicaciones externo global Funciones del balanceador de cargas: Administración de tráfico y enrutamiento

Descripción general de la administración del tráfico

Configurar la administración del tráfico

Configurar un redireccionamiento de URL

Configurar un redireccionamiento de HTTP a HTTPS

nombre de host y ruta de acceso

Enrutamiento de solicitudes

Cookies

Balanceador de cargas de aplicaciones clásico Funciones del balanceador de cargas: Administración de tráfico y enrutamiento

Descripción general de la administración del tráfico

Configurar un redireccionamiento de URL

Configurar un redireccionamiento de HTTP a HTTPS

nombre de host y ruta de acceso

Enrutamiento basado en encabezados y parámetros de consulta

Balanceador de cargas de aplicaciones externo regional Funciones del balanceador de cargas: Administración de tráfico y enrutamiento

Descripción general de la administración del tráfico

Configurar la administración del tráfico

Configurar un redireccionamiento de URL

Configurar un redireccionamiento de HTTP a HTTPS

nombre de host y ruta de acceso

Enrutamiento de solicitudes

Cookies

Balanceador de cargas de aplicaciones interno Funciones del balanceador de cargas: Administración de tráfico y enrutamiento

Descripción general de la administración del tráfico

Configura la administración del tráfico

Configura redireccionamientos de URL

Configurar redireccionamientos de HTTP a HTTPS

Cookies

nombre de host y ruta de acceso

Traffic Director Características de Traffic Director: Administración de tráfico y enrutamiento

Descripción general de la administración avanzada del tráfico

Configura la administración avanzada de tráfico

Referencia de gcloud CLI y API

Además de la consola de Google Cloud, puedes usar la API y gcloud CLI para crear mapas de URL.

API

Para obtener descripciones de las propiedades y los métodos disponibles cuando trabajas con mapas de URL a través de la API de REST, consulta lo siguiente:

Producto Documentación de la API
Balanceador de cargas de aplicaciones externo urlMaps
Balanceador de cargas de aplicaciones interno regionUrlMaps
Traffic Director urlMaps

gcloud CLI

Para Google Cloud CLI en la CLI de Google Cloud, consulta lo siguiente:

Para la administración avanzada del tráfico, usa los archivos YAML y, luego, impórtalos con el comando gcloud compute url-maps import.

¿Qué sigue?