Usa mapas de URL

En esta guía, se explica cómo configurar los mapas de URL de Google Cloud. 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:

El balanceo de cargas de HTTP(S) interno y Traffic Director admiten casos prácticos de administración avanzada del tráfico. Para obtener más información, consulte:

Configura mapas de URL

Puedes agregar servicios de backend y depósitos de backend a un mapa de URL.

Los depósitos de backend solo son compatibles con balanceadores de cargas de HTTP(S) externos.

.

Agrega un mapa de URL

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.
  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 la herramienta de línea de comandos de gcloud, 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) internos, asegúrate de incluir la marca --region cuando crees el mapa de URL.

Un mapa de URL que se acaba de crear solo coincide con una ruta de acceso, la predeterminada (/*). Este comparador de rutas predeterminado se crea de forma automática. Todo el tráfico que no coincida con una regla de host ni un comparador de rutas creado de forma manual se envía al servicio de backend predeterminado del mapa de URL.

Agrega un comparador de rutas

Un comparador de rutas mapea las rutas de las solicitudes HTTP(S) o los prefijos de ruta (por ejemplo, /video) a servicios de backend. Todo el tráfico que coincide con la ruta especificada se procesa según las reglas del comparador de rutas. Si una ruta coincide con una regla, la solicitud se reenvía a los backends asociados con ella. Si una solicitud coincide con las reglas no path del comparador de rutas, la solicitud se reenvía al backend predeterminado de ese comparador.

Console

Para crear un comparador de rutas mediante Cloud Console, 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. En la pantalla Reglas de host y ruta, haz clic en Agrega la regla de host y de ruta o haz clic en un campo Rutas existente.
  5. Ingresa la ruta de acceso que deseas configurar; por ejemplo, /video.
  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 crear un comparador de rutas mediante la herramienta de línea de comandos de gcloud, usa el comando gcloud compute url-maps add-path-matcher:

gcloud compute url-maps add-path-matcher URL_MAP_NAME \
   --default-service BACKEND_SERVICE \
   --path-matcher-name PATH_MATCHER \
   [--path-rules="PATH=SERVICE"]

Este comando requiere un servicio de backend predeterminado al que se envíen las solicitudes que no coinciden. Puedes usar la marca --path-rules para definir mapeos entre rutas de solicitud y servicios 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"

Los comandos url-maps create y url-maps add-path-matcher tienen un parámetro --default-service. En create, el servicio predeterminado es el que se usa si ninguno de los comparadores de rutas coincide con la URL entrante. En add-path-matcher, el servicio predeterminado es el que se usa si la ruta de acceso coincide con el comparador de rutas, pero ninguna de las --path-rules coinciden.

Agrega una regla de host

Console

Para crear una regla de host mediante Cloud Console, 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. En la pantalla Reglas de host y ruta, haz clic en Agrega la regla de host y de ruta o haz clic en un campo Hosts existente.
  5. Ingresa un Nombre de host completamente calificado, como web.example.com.
  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 crear una regla de host mediante la herramienta de línea de comandos de gcloud, 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

La marca --hosts define un conjunto de hosts con los que se deben hacer coincidir las solicitudes. Por ejemplo, el siguiente valor --hosts haría coincidir las solicitudes con www.example.com y cualquier subdominio de google.com:

--hosts *.google.com,www.example.com

Selecciona un servicio o un bucket de backend

Console

Si deseas seleccionar un servicio o un bucket de backend para un mapa de URL, 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. En la pantalla Reglas de host y ruta de acceso, en el menú desplegable del campo Backends, selecciona un servicio o un bucket de backend que esté disponible.
  5. 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 seleccionar un servicio o un bucket de backend con la herramienta de línea de comandos de gcloud, 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 de mapas 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 dirija las solicitudes a los backends correctos, según lo previsto. Puedes hacer esto agregando pruebas a la configuración de asignación 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. Ten en cuenta que no necesitas usar ningún servicio en ejecución ni ningún servicio existente para las pruebas. Puedes usar cualquier nombre de servicio de ejemplo para crear y ejecutar las pruebas. Esto es diferente a otros comandos de URL-maps (como edit, import) en los que el mapa de URL debe hacer referencia a un servicio existente (pero no necesariamente en ejecución).

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 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 de mapa de URL y, luego, intenta validarlo 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 la herramienta de línea de comandos de gcloud, 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, las URL del 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.

Muestra 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 la herramienta de línea de comandos de gcloud, 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 la herramienta de línea de comandos de gcloud, usa el comando url-maps describe.

gcloud compute url-maps describe URL_MAP_NAME

Borra 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 la herramienta de línea de comandos de gcloud, 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

¿Qué sigue?