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 entrantes. 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 HTTP(S) externos, balanceadores de cargas de HTTP(S) externos regionales, balanceadores de cargas de HTTP(S) 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 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 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 HTTP(S) regionales externos ni balanceadores de cargas de HTTP(S) internos.

.

Console

Para agregar un mapa de URL mediante Cloud Console, sigue estos pasos:

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

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla 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 pantalla Reglas de host y ruta de acceso, en el menú Backends, selecciona un servicio 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 HTTP(S) externos regionales y balanceadores de cargas de HTTP(S) 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 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 ...]

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. Ten en cuenta que 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. A diferencia de otros comandos de mapas de URL (edit, import) que también ejecutan las mismas pruebas, se guardará la configuración nueva si se pasan las pruebas. Usa el comando validate cuando desees probar una configuración de enrutamiento nueva sin realizar cambios en el mapa de URL implementado actualmente.

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.

Console

No puedes usar Cloud Console 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:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
  • PATH_TO_URL_MAP_CONFIG_FILE: reemplaza con una ruta de acceso al archivo que contiene la configuración de asignación 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 HTTP(S) 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 implementará 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
    

Prueba 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.

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.

Console

Para ejecutar pruebas desde Cloud Console, sigue estos pasos:

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

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. Haz clic en Reglas de host y ruta.
  5. Debajo de Reglas de host y ruta de acceso, 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:
    • URL de prueba example.com y Backend www-service.
    • URL de prueba example.net y Backend www-service.
    • URL de prueba example.net/web y Backend www-service.
    • URL de prueba example.com/videos y Backend video-service.
    • URL de prueba example.com/videos/browse y Backend video-service.
    • URL de prueba example.net/static y Backend static-service.
    • URL de prueba example.net/static/images y Backend static-service.
  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 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 HTTP(S) externos, las pruebas deben tener 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

Para los balanceadores de cargas de HTTP(S) internos y externos, las URL de tu servicio deben apuntar a servicios de backend regionales. Por ejemplo:

https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices//www-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

Console

No puedes enumerar todos tus mapas de URL en Cloud Console.

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

Console

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

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

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla 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 la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla Detalles del balanceador de cargas, haz clic en Editar para el balanceador de cargas seleccionado.
  4. En la pantalla 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

Console

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

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

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla 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

Console

Para borrar una regla de host, sigue estos pasos:

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

    Ir a la página Balanceo de cargas

  2. Haz clic en el Nombre de un balanceador de cargas.
  3. En la pantalla 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 HTTP(S) externo global (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 HTTP(S) externo global 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 un redireccionamiento de URL

Configura un redireccionamiento de HTTP a HTTPS

Balanceador de cargas de HTTP(S) global externo (clásico) Funciones del balanceador de cargas: Administración de tráfico y enrutamiento

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

Configura un redireccionamiento de URL

Configura un redireccionamiento de HTTP a HTTPS

Balanceador de cargas HTTP(S) regional externo 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 un redireccionamiento de URL

Configura un redireccionamiento de HTTP a HTTPS

Balanceador de cargas HTTP(S) 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

Configura redireccionamientos de HTTP a HTTPS

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 la CLI de gcloud y la API

Además de Cloud Console, puedes usar la API y la CLI de gcloud 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
Balanceo de cargas HTTP(S) externo urlMaps
Balanceo de cargas HTTP(S) interno regionUrlMaps
Traffic Director urlMaps

CLI de gcloud

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?