Usar mapas de URL

En esta guía se explica cómo configurar mapas de URLs. Google CloudUn mapa de URLs es un conjunto de reglas para enrutar las solicitudes HTTP(S) entrantes a servicios de backend o segmentos de backendespecíficos. Un mapa de URLs mínimo coincide con todas las rutas de solicitudes entrantes (/*).

Antes de seguir esta guía, familiarízate con los conceptos de mapa de URLs.

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

Los mapas de URLs que se usan con balanceadores de carga de aplicación externos globales, balanceadores de carga de aplicación externos regionales, balanceadores de carga de aplicación internos y Cloud Service Mesh también admiten varias funciones avanzadas de gestión del tráfico. Para obtener más información, consulta Conceptos de mapa de URLs: gestión avanzada del tráfico.

Valores predeterminados de los mapas de URLs

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

Tipo predeterminado Ajuste Significado
Predeterminado del mapa de URLs gcloud compute url-maps create

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

El servicio de backend predeterminado o el segmento de backend especificados se utilizan si ninguno de los matchers de ruta o las reglas de host coincide con la URL entrante.
Valor predeterminado del comparador de rutas gcloud compute url-maps add-path-matcher

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

El servicio de backend predeterminado o el segmento de backend especificados se utilizan si la ruta de la URL coincide con un comparador de rutas, pero no coincide con ninguno de los --path-rules especificados.

Reglas de host

Una regla de host define un conjunto de hosts con los que se comparan las solicitudes.

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

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

Configurar mapas de URLs

Un mapa de URLs puede enviar tráfico a servicios de backend o segmentos de backend. Los segmentos de backend no se admiten en los balanceadores de carga de aplicaciones externos regionales ni en los balanceadores de carga de aplicaciones internos.

Consola

Para añadir un mapa de URLs mediante la consola Google Cloud , sigue estos pasos:

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

    Ir a Balanceo de carga

  2. Haz clic en el Nombre de un balanceador de carga.
  3. En la página Detalles del balanceador de carga, haga clic en Editar del balanceador de carga seleccionado.
  4. Selecciona Reglas de host y ruta.
  5. Haz clic en Añadir regla de host y ruta.
  6. Rellena el campo Host, el campo Paths o ambos, y selecciona un servicio de backend o un cubo de backend.

    1. Introduce un Nombre de host completo. Por ejemplo: web.example.com.
    2. Introduce la ruta. Por ejemplo, /video.
    3. En la página Reglas de host y ruta, en el menú Backends (Backends), selecciona un servicio de backend o un backend de almacenamientodisponibles.
  7. Busca la marca de verificación azul situada a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para añadir un mapa de URLs con la CLI de Google Cloud, 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 carga de aplicación externos regionales y los balanceadores de carga de aplicación internos, asegúrate de incluir la marca --region al crear el mapa de URLs.

Para crear un matcher de ruta, 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 predeterminado o un bucket de backend al que pueda enviar las solicitudes que no coincidan. La marca --path-rules define las asignaciones entre las rutas de solicitud y los servicios de backend o los segmentos. En el siguiente ejemplo, se dirigen las rutas de solicitud /video/ y /video/* al servicio 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 de --hosts coincide con las solicitudes de www.example.com y cualquier subdominio de altostrat.com:

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

Para cambiar el servicio predeterminado o el bucket predeterminado de un mapa de URLs, 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 URLs 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 URLs 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
}

Validar la configuración del mapa de URLs

Antes de implementar un mapa de URLs, valida su configuración para asegurarte de que las solicitudes se enrutan a los backends adecuados según lo previsto. Para ello, añade pruebas a la configuración del mapa de URLs. Puedes experimentar con diferentes reglas de asignación de URLs y realizar tantas pruebas como necesites para asegurarte de que la asignación dirigirá el tráfico correctamente cuando se implemente. Además, si necesitas cambiar alguna regla en el futuro, puedes probar esos cambios antes de aplicar la nueva configuración.

Usa el comando gcloud compute url-maps validate para validar la configuración del mapa de URLs. Este comando solo prueba la configuración proporcionada. Independientemente de si las pruebas se superan o no, no se guardan cambios en el mapa de URLs implementado. Este comportamiento es diferente al de otros comandos de mapa de URLs (edit y import), que también ejecutan las mismas pruebas, pero guardan la nueva configuración si las pruebas se superan. Si quieres probar una nueva configuración de enrutamiento sin modificar el mapa de URLs 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 consulta, las redirecciones de HTTP a HTTPS y la reescritura de URLs.

Consola

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

gcloud

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

En el caso del balanceador de carga de aplicación externo global:

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

En el caso del balanceador de carga de aplicación 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: sustitúyelo por la ruta al archivo que contiene la configuración del mapa de URLs para la validación.

Validar los cambios en el mapa de URLs de un balanceador de carga

Si tienes un balanceador de carga que necesita cambios en el mapa de URLs, puedes probar esos cambios de configuración antes de aplicarlos.

  1. Exporta el mapa de URLs del balanceador de carga 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 la nueva configuración. Por ejemplo, si quieres editar un balanceador de carga de aplicaciones externo y enviar todas las solicitudes con la ruta /video a un nuevo servicio de backend llamado video-backend-service, puedes añadir pruebas a la configuración del mapa de URLs de la siguiente manera:

    Configuración de mapa de URLs con un solo 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
     

    Configuración de mapa de URLs editada con un matcher de ruta añadido y pruebas para el servicio de backend predeterminado web-backend-service y el nuevo video-backend-service:

     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 nueva configuración.

    gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
    

    Si todas las pruebas se superan correctamente, debería aparecer un mensaje 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, aparece un mensaje de error. Haz las correcciones necesarias en el archivo de configuración del mapa de URLs y vuelve a validarlo.

    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 nueva configuración funciona y no afecta a la configuración actual, puedes importarla al mapa de URLs. Ten en cuenta que este paso también implementa el mapa de URLs con la nueva configuración.

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

Añadir pruebas a un mapa de URLs

Puedes añadir pruebas de configuración a un mapa de URLs para asegurarte de que este enruta las solicitudes a los servicios de backend o los backend buckets según lo previsto.

En esta sección se describe cómo añadir pruebas a un mapa de URLs que ya se ha implementado. Si quieres probar los nuevos cambios en un mapa de URLs sin desplegarlo, consulta Validar la configuración de un mapa de URLs.

Cuando editas tu mapa de URLs, se ejecutan las pruebas y aparece un mensaje de error si falla alguna:

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

Añadir pruebas a los mapas de URLs es opcional.

Consola

Para ejecutar pruebas desde la consola Google Cloud :

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

    Ir a Balanceo de carga

  2. Haz clic en el Nombre de un balanceador de carga.
  3. En la página Detalles del balanceador de carga, haz clic en Editar del balanceador de carga seleccionado.
  4. Haz clic en Reglas de enrutamiento. En el caso de un balanceador de carga de aplicación clásico, se trata de reglas de host y de ruta.
  5. Haz clic en Mostrar pruebas de configuración.
  6. Haz clic en Añadir prueba de configuración. Añade las siguientes URLs de prueba y back-ends:
    • 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 situada a la izquierda de Reglas de enrutamiento y haz clic en el botón Actualizar. En el caso de un balanceador de carga de aplicación clásico, busca la marca de verificación azul situada junto a Reglas de host y de ruta.

gcloud

Para añadir pruebas a tu mapa de URLs mediante la CLI de Google Cloud, usa el comando gcloud compute url-maps edit:

gcloud compute url-maps edit URL_MAP_NAME

Se abrirá un editor de texto. En el caso de los balanceadores de carga de aplicación externos, las 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

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

Mostrar lista de mapas de URLs

Consola

No puedes consultar todas tus asignaciones de URLs en la consola. Google Cloud

gcloud

Para mostrar una lista de mapas de URLs con la CLI de Google Cloud, usa el comando url-maps list.

gcloud compute url-maps list

Obtener información sobre un mapa de URLs

Consola

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

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

    Ir a Balanceo de carga

  2. Haz clic en el Nombre de un balanceador de carga.
  3. En la página Detalles del balanceador de carga, haz clic en Editar del balanceador de carga seleccionado.
  4. Consulta las reglas de host y ruta.

gcloud

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

gcloud compute url-maps describe URL_MAP_NAME

Eliminar un mapa de URL

Solo puedes eliminar un mapa de URLs después de haber eliminado todos los proxies de destino que lo referencian. Para obtener más información, consulta Eliminar un proxy de destino.

Consola

Para eliminar un mapa de URLs, sigue estos pasos:

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

    Ir a Balanceo de carga

  2. Haz clic en el Nombre de un balanceador de carga.
  3. En la página Detalles del balanceador de carga, haz clic en Editar del balanceador de carga seleccionado.
  4. En la página Detalles del balanceador de carga, consulta las reglas de host y ruta.
  5. Haz clic en la "X" situada a la derecha de un mapa de URLs para eliminarlo. El mapa de URLs desaparece.
  6. Busca la marca de verificación azul situada a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para eliminar un mapa de URLs con la CLI de Google Cloud, usa el comando url-maps delete. Para poder eliminar un mapa de URLs, primero debe eliminar todos los proxies HTTP de destino que hagan referencia a él.

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

Eliminar un comparador de rutas

Consola

Para eliminar un comparador de rutas, sigue estos pasos:

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

    Ir a Balanceo de carga

  2. Haz clic en el Nombre de un balanceador de carga.
  3. En la página Detalles del balanceador de carga, haz clic en Editar del balanceador de carga seleccionado.
  4. Selecciona Reglas de host y ruta.
  5. En el campo Rutas de un mapa de URLs, haga clic en la "x" del nombre del comparador de rutas.
  6. Busca la marca de verificación azul situada a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para eliminar un matcher de ruta, 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]

Eliminar una regla de host

Consola

Para eliminar una regla de host, sigue estos pasos:

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

    Ir a Balanceo de carga

  2. Haz clic en el Nombre de un balanceador de carga.
  3. En la página Detalles del balanceador de carga, haz clic en Editar del balanceador de carga seleccionado.
  4. Selecciona Reglas de host y ruta.
  5. En el campo Hosts (Hosts) de una asignación de URL, haga clic en la "x" del nombre del host.
  6. Busca la marca de verificación azul situada a la izquierda de Reglas de host y ruta y haz clic en el botón Actualizar.

gcloud

Para eliminar una regla de host de tu mapa de URLs, usa el comando gcloud compute url-maps remove-host-rule:

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

Por ejemplo, para eliminar una regla de host que contenga el host altostrat.com de un mapa de URLs llamado my-map, ejecutaría el siguiente comando:

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

Guías de gestión del tráfico

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

Consulta la siguiente tabla para obtener información sobre las funciones de los mapas de URLs para las tareas de gestión.

Producto Funciones de los mapas de URLs y guías de gestión del tráfico
Balanceador de carga de aplicación externo global Funciones del balanceador de carga: gestión del tráfico y del enrutamiento

Información general sobre la gestión del tráfico

Configurar la gestión del tráfico

Configurar una redirección de URL

Configurar el redireccionamiento de HTTP a HTTPS

Nombre de host y ruta

Solicitudes de enrutamiento

Cookies

Balanceador de carga de aplicación clásico Funciones del balanceador de carga: gestión del tráfico y del enrutamiento

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

Configurar una redirección de URL

Configurar el redireccionamiento de HTTP a HTTPS

Nombre de host y ruta

Enrutamiento basado en encabezados y parámetros de consulta

Balanceador de carga de aplicación externo regional Funciones del balanceador de carga: gestión del tráfico y del enrutamiento

Información general sobre la gestión del tráfico

Configurar la gestión del tráfico

Configurar una redirección de URL

Configurar el redireccionamiento de HTTP a HTTPS

Nombre de host y ruta

Solicitudes de enrutamiento

Cookies

Balanceador de carga de aplicación interno Funciones del balanceador de carga: gestión del tráfico y del enrutamiento

Información general sobre la gestión del tráfico

Configurar la gestión del tráfico

Configurar redirecciones de URL

Configurar redireccionamientos de HTTP a HTTPS

Cookies

Nombre de host y ruta

Cloud Service Mesh Funciones de Cloud Service Mesh: enrutamiento y gestión del tráfico

Información general sobre la gestión avanzada del tráfico

Configurar la gestión avanzada del tráfico

Referencia de la API y de la CLI de gcloud

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

API

Para ver las descripciones de las propiedades y los métodos que tienes a tu disposición cuando trabajas con mapas de URLs a través de la API REST, consulta lo siguiente:

Producto Documentación de la API
Balanceador de carga de aplicación externo urlMaps
Balanceador de carga de aplicación interno regionUrlMaps
Cloud Service Mesh urlMaps

CLI de gcloud

Para obtener información sobre Google Cloud CLI en Google Cloud CLI, consulta lo siguiente:

  • Global: --global
  • Regional: --region=[REGION]

Para gestionar el tráfico de forma avanzada, usa archivos YAML e impórtalos con el comando gcloud compute url-maps import.

Siguientes pasos