Utiliser des mappages d'URL

Ce guide vous explique comment configurer des mappages d'URL Google Cloud. Un mappage d'URL est un ensemble de règles permettant de diriger les requêtes HTTP(S) entrantes vers des services de backend ou des buckets backend spécifiques. Un mappage d'URL minimal fait correspondre tous les chemins de requêtes entrantes (/*).

Avant de suivre ce guide, familiarisez-vous avec les concepts de mappage d'URL.

Les mappages d'URL sont utilisés avec les produits Google Cloud suivants :

Les mappages d'URL utilisés avec les équilibreurs de charge d'application externes globaux, les équilibreurs de charge d'application externes régionaux, les équilibreurs de charge d'application internes et Traffic Director sont également compatibles avec plusieurs fonctionnalités avancées de gestion du trafic. Pour en savoir plus, consultez la page Concepts de mappage d'URL : Gestion avancée du trafic.

Valeurs par défaut du mappage d'URL

Les mappages d'URL possèdent deux valeurs par défaut, comme décrit dans le tableau suivant.

Type par défaut Paramètre Signification
Mappage d'URL par défaut gcloud compute url-maps create

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

Le service de backend ou le bucket backend spécifié par défaut est utilisé si aucune des mises en correspondance de chemins d'accès ou des règles d'hôte ne correspond à l'URL entrante.
Valeur par défaut de l'outil de mise en correspondance des chemins d'accès gcloud compute url-maps add-path-matcher

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

Le service de backend ou le bucket backend spécifié par défaut est utilisé si le chemin de l'URL correspond à un outil de mise en correspondance des chemins d'accès, mais qu'aucune des règles --path-rules ne correspond.

Règles d'hôte

Une règle d'hôte définit un ensemble d'hôtes pour mettre en correspondance les requêtes.

Dans une règle d'hôte, le nom d'hôte doit être un nom de domaine complet. Le nom d'hôte ne peut pas être une adresse IPv4 ou IPv6. Exemple :

  • Fonctionne : example.com
  • Fonctionne : web.example.com
  • Fonctionne : *.example.com
  • Ne fonctionne pas : 35.244.221.250

Configurer des mappages d'URL

Un mappage d'URL peut envoyer du trafic vers des services de backend ou des buckets backend. Les buckets backend ne sont pas compatibles avec les équilibreurs de charge d'application externes régionaux et les équilibreurs de charge d'application internes.

Console

Pour ajouter un mappage d'URL avec la console Google Cloud, procédez comme suit :

  1. Accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur le Nom d'un équilibreur de charge.
  3. Sur l'écran Détails de l'équilibreur de charge, cliquez sur  Modifier pour l'équilibreur de charge sélectionné.
  4. Sélectionnez Règles d'hôte et de chemin d'accès.
  5. Cliquez sur Ajouter une règle d'hôte et de chemin d'accès.
  6. Renseignez le champ Hôte, le champ Chemins d'accès ou les deux, puis sélectionnez un service de backend ou un bucket backend.

    1. Saisissez un nom d'hôte complet, par exemple web.example.com.
    2. Saisissez le chemin d'accès, par exemple, /video.
    3. Sur la page Règles d'hôte et de chemin d'accès, dans le menu Backends, sélectionnez un service de backend ou un bucket backend disponible.
  7. Cherchez la coche bleue à gauche des règles d'hôte et de chemin d'accès, puis cliquez sur le bouton Mettre à jour.

gcloud

Pour ajouter un mappage d'URL à l'aide de Google Cloud CLI, exécutez la commande 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]

Pour les équilibreurs de charge d'application externes régionaux et les équilibreurs de charge d'application internes, veillez à inclure l'option --region lorsque vous créez le mappage d'URL.

Pour supprimer une mise en correspondance de chemins d'accès, exécutez la commande 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"]

Cette commande nécessite un service de backend ou un bucket backend par défaut auquel elle peut envoyer des requêtes sans correspondance. L'option --path-rules définit les mappages entre les chemins d'accès des requêtes et les services ou buckets backend. L'exemple de chemin d'accès suivant dirige les requêtes /video/ et /video/* vers le service de backend video-service :

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

Pour créer une règle d'hôte, utilisez la commande gcloud compute url-maps add-host-rule :

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

Par exemple, la valeur --hosts suivante met en correspondance les requêtes pour www.example.com et n'importe quel sous-domaine de google.com :

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

Pour modifier le service ou le bucket par défaut d'un mappage d'URL, exécutez la commande 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

Pour créer un mappage d'URL global, utilisez la ressource google_compute_url_map.

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

Pour créer un mappage d'URL régional, utilisez la ressource 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
}

Valider la configuration du mappage d'URL

Avant de déployer un mappage d'URL, assurez-vous de valider sa configuration pour vous assurer que le mappage redirige les requêtes vers les backends appropriés. Pour ce faire, vous pouvez ajouter des tests à la configuration du mappage d'URL. Vous pouvez tester différentes règles de mappage d'URL et exécuter autant de tests que nécessaire pour être sûr que le mappage acheminera le trafic de manière appropriée lors de son déploiement. En outre, si des modifications de règles sont nécessaires à l'avenir, vous pouvez les tester avant de les lancer en production avec la nouvelle configuration.

Exécutez la commande gcloud compute url-maps validate pour valider la configuration du mappage d'URL. Cette commande ne teste que la configuration fournie. Que les tests réussissent ou échouent, aucune modification n'est enregistrée dans le mappage d'URL déployé. Ce comportement est différent des autres commandes de mappage d'URL (edit, import), qui exécutent également les mêmes tests, mais qui enregistrent la nouvelle configuration si les tests réussissent. Lorsque vous souhaitez tester une nouvelle configuration de routage sans modifier le mappage d'URL déployé, utilisez la commande validate.

La commande validate vous permet de tester des configurations de route avancées, telles que le routage basé sur des en-têtes et des paramètres de requête, les redirections HTTP vers HTTPS et les réécritures d'URL.

Console

Vous ne pouvez pas utiliser la console Google Cloud pour valider une configuration de mappage d'URL. Utilisez plutôt gcloud ou l'API REST.

gcloud

Pour valider la configuration de votre mappage d'URL, utilisez la commande gcloud compute url-maps validate.

Pour l'équilibreur de charge d'application externe global :

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

Pour l'équilibreur de charge d'application classique :

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL \
    --global
  • Remplacez PATH_TO_URL_MAP_CONFIG_FILE par le chemin d'accès du fichier contenant la configuration du mappage d'URL à valider.

Valider les modifications apportées au mappage d'URL d'un équilibreur de charge existant

Si vous disposez d'un équilibreur de charge existant qui nécessite des modifications du mappage d'URL, vous pouvez tester ces changer de configuration avant de les appliquer.

  1. Exportez le mappage d'URL existant de l'équilibreur de charge vers un fichier YAML.

    gcloud compute url-maps export URL_MAP_NAME \
       --destination PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    
  2. Modifiez le fichier YAML avec la nouvelle configuration. Par exemple, si vous souhaitez modifier un équilibreur de charge d'application externe et envoyer toutes les requêtes ayant comme chemin /video vers un nouveau service de backend appelé video-backend-service, vous pouvez ajouter des tests à la configuration de mappage d'URL comme suit :

    Configuration d'un mappage d'URL existant avec un seul web-backend-service par défaut :

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

    Modification de la configuration du mappage d'URL à l'aide de tests et d'un outil de mise en correspondance des chemins d'accès pour le service par défaut web-backend-service et le nouveau service de backend 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. Validez la nouvelle configuration.

    gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
    

    Si tous les tests réussissent, un message de réussite semblable celui-ci doit s'afficher :

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

    Si les tests échouent, un message d'erreur s'affiche. Apportez les corrections nécessaires au fichier de configuration du mappage d'URL et tentez à nouveau de valider la configuration.

    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. Une fois que vous avez confirmation que la nouvelle configuration fonctionne et qu'elle n'a aucune incidence sur votre configuration existante, vous pouvez l'importer dans le mappage d'URL. Notez que cette étape déploie également le mappage d'URL avec la nouvelle configuration.

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

Ajouter des tests à un mappage d'URL

Vous pouvez ajouter des tests de configuration à un mappage d'URL pour vous assurer que votre mappage d'URL dirige les requêtes vers les services de backend ou les buckets backend comme prévu.

Cette section décrit comment ajouter des tests à un mappage d'URL qui a déjà été déployé. Si vous souhaitez tester de nouvelles modifications dans un mappage d'URL sans le déployer effectivement, consultez la section Valider la configuration du mappage d'URL.

Lorsque vous modifiez votre mappage d'URL, les tests sont exécutés et un message d'erreur s'affiche en cas d'échec d'un test.

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

L'ajout de tests à des mappages d'URL est facultatif.

Console

Pour exécuter des tests à partir de la console Google Cloud, procédez comme suit :

  1. Accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur le Nom d'un équilibreur de charge.
  3. Sur l'écran Détails de l'équilibreur de charge, cliquez sur  Modifier pour l'équilibreur de charge sélectionné.
  4. Cliquez sur Règles de routage. Pour un équilibreur de charge d'application classique, il s'agit de règles d'hôte et de chemin d'accès.
  5. Cliquez sur Afficher les tests de configuration.
  6. Cliquez sur Ajouter un test de configuration. Ajoutez les URL de test et les backends suivants :
    • Testez l'hôte et le chemin d'accès 1 example.com et le backend www-service.
    • Testez l'hôte et le chemin d'accès 2 example.net et le backend www-service.
    • Testez l'hôte et le chemin d'accès 3 example.net/web et le backend www-service.
    • Testez l'hôte et le chemin d'accès 4 example.com/videos et le backend video-service.
    • Testez l'hôte et le chemin d'accès 5 example.com/videos/browse et le backend video-service.
    • Testez l'hôte et le chemin d'accès 6 example.net/static et le backend static-service.
    • Testez l'hôte et le chemin d'accès 7 example.net/static/images et le backend static-service.
  7. Cherchez la coche bleue à gauche de Règles de routage, puis cliquez sur le bouton Mettre à jour. Pour un équilibreur de charge d'application classique, recherchez la coche bleue à côté de Règles d'hôte et de chemin d'accès.

gcloud

Pour ajouter des tests à votre mappage d'URL à l'aide de Google Cloud CLI, exécutez la commande gcloud compute url-maps edit :

gcloud compute url-maps edit URL_MAP_NAME

Un éditeur de texte apparaît. Pour les équilibreurs de charge d'application externes, vos tests doivent utiliser le format suivant :

  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

Notez que si vous ne spécifiez pas d'hôte dans une règle d'hôte, les URL de tous les hôtes (example.com et example.net) peuvent correspondre. Si vous disposez déjà de règles d'hôte, vous devez créer des règles qui correspondent à la fois à example.com et à example.net.

Obtenir la liste des mappages d'URL

Console

Vous ne pouvez pas répertorier tous vos mappages d'URL dans la console Google Cloud.

gcloud

Pour afficher une liste de mappages d'URL à l'aide de Google Cloud CLI, exécutez la commande url-maps list.

gcloud compute url-maps list

Obtenir des informations sur un mappage d'URL

Console

Pour obtenir des informations sur un mappage d'URL, procédez comme suit :

  1. Accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur le Nom d'un équilibreur de charge.
  3. Sur l'écran Détails de l'équilibreur de charge, cliquez sur  Modifier pour l'équilibreur de charge sélectionné.
  4. Affichez les règles d'hôte et de chemin d'accès.

gcloud

Pour obtenir des informations sur un seul mappage d'URL à l'aide de Google Cloud CLI, exécutez la commande url-maps describe.

gcloud compute url-maps describe URL_MAP_NAME

Supprimer un mappage d'URL

Vous ne pouvez supprimer un mappage d'URL qu'après avoir supprimé tous les proxys cibles qui y font référence. Pour en savoir plus, consultez la section Supprimer un proxy cible.

Console

Pour supprimer un mappage d'URL, procédez comme suit :

  1. Accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur le Nom d'un équilibreur de charge.
  3. Sur l'écran Détails de l'équilibreur de charge, cliquez sur  Modifier pour l'équilibreur de charge sélectionné.
  4. Sur l'écran Détails de l'équilibreur de charge, affichez les règles d'hôte et de chemin d'accès.
  5. Cliquez sur le "X" à droite d'un mappage d'URL pour le supprimer. Le mappage d'URL disparaît.
  6. Cherchez la coche bleue à gauche des règles d'hôte et de chemin d'accès, puis cliquez sur le bouton Mettre à jour.

gcloud

Pour supprimer un mappage d'URL à l'aide de Google Cloud CLI, exécutez la commande url-maps delete. Avant de pouvoir supprimer un mappage d'URL, tout proxy HTTP cible faisant référence au mappage d'URL doit d'abord être supprimé.

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

Supprimer une mise en correspondance de chemin d'accès

Console

Pour supprimer une mise en correspondance de chemin d'accès, procédez comme suit :

  1. Accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur le Nom d'un équilibreur de charge.
  3. Sur l'écran Détails de l'équilibreur de charge, cliquez sur  Modifier pour l'équilibreur de charge sélectionné.
  4. Sélectionnez Règles d'hôte et de chemin d'accès.
  5. Dans le champ Chemins d'accès d'un mappage d'URL existant, cliquez sur le "x" dans le nom de la mise en correspondance de chemin d'accès.
  6. Cherchez la coche bleue à gauche des règles d'hôte et de chemin d'accès, puis cliquez sur le bouton Mettre à jour.

gcloud

Pour supprimer une mise en correspondance de chemins d'accès, exécutez la commande gcloud compute url-maps remove-path-matcher :

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

Supprimer une règle d'hôte

Console

Pour supprimer une règle d'hôte, procédez comme suit :

  1. Si vous n'êtes pas déjà sur l'écran Règles d'hôte et de chemin d'accès, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur le Nom d'un équilibreur de charge.
  3. Sur l'écran Détails de l'équilibreur de charge, cliquez sur  Modifier pour l'équilibreur de charge sélectionné.
  4. Sélectionnez Règles d'hôte et de chemin d'accès.
  5. Dans le champ Hôtes d'un mappage d'URL existant, cliquez sur le "x" "dans le nom de l'hôte.
  6. Cherchez la coche bleue à gauche des règles d'hôte et de chemin d'accès, puis cliquez sur le bouton Mettre à jour.

gcloud

Pour supprimer une règle d'hôte de votre mappage d'URL, exécutez la commande gcloud compute url-maps remove-host-rule :

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

Par exemple, pour supprimer une règle d'hôte qui contient l'hôte google.com à partir d'un mappage d'URL nommé my-map, exécutez la commande suivante :

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

Guides de gestion du trafic

Les fonctionnalités de mappage d'URL ne sont pas toutes disponibles pour l'ensemble des produits. Les mappages d'URL sont utilisés avec les équilibreurs de charge pour prendre en charge plusieurs fonctionnalités de gestion avancée du trafic, qui ne sont pas toutes compatibles avec l'équilibreur de charge d'application classique.

Utilisez le tableau suivant pour en savoir plus sur les fonctionnalités de mappage d'URL dans le cadre de la gestion.

Produit Fonctionnalités de mappage d'URL et guides de gestion du trafic
Équilibreur de charge d'application externe global Fonctionnalités de l'équilibreur de charge : routage et gestion du trafic

Présentation de la gestion du trafic

Configurer la gestion du trafic

Configurer une redirection d'URL

Configurer la redirection HTTP vers HTTPS

Nom d'hôte et chemin d'accès

Router des requêtes

Cookies

Équilibreur de charge d'application classique Fonctionnalités de l'équilibreur de charge : routage et gestion du trafic

Présentation de la gestion du trafic

Configurer une redirection d'URL

Configurer la redirection HTTP vers HTTPS

Nom d'hôte et chemin d'accès

Routage basé sur les en-têtes et les paramètres de requête

Équilibreur de charge d'application externe régional Fonctionnalités de l'équilibreur de charge : routage et gestion du trafic

Présentation de la gestion du trafic

Configurer la gestion du trafic

Configurer une redirection d'URL

Configurer la redirection HTTP vers HTTPS

Nom d'hôte et chemin d'accès

Router des requêtes

Cookies

Équilibreur de charge d'application interne Fonctionnalités de l'équilibreur de charge : routage et gestion du trafic

Présentation de la gestion du trafic

Configurer la gestion du trafic

Configurer des redirections d'URL

Configurer des redirections HTTP vers HTTPS

Cookies

Nom d'hôte et chemin d'accès

Traffic Director Caractéristiques de Traffic Director : Routage et gestion du trafic

Présentation de la gestion avancée du trafic

Configurer la gestion avancée du trafic

Documentation de référence sur l'API et la CLI gcloud

En plus de la console Google Cloud, vous pouvez utiliser l'API et gCloud CLI pour créer des mappages d'URL.

API

Pour une description des propriétés et des méthodes disponibles lorsque vous utilisez des mappages d'URL via l'API REST, consultez les pages suivantes :

Produit Documentation sur l'API
Équilibreur de charge d'application externe urlMaps
Équilibreur de charge d'application interne regionUrlMaps
Traffic Director urlMaps

CLI gcloud

Pour Google Cloud CLI, consultez les ressources suivantes :

Pour une gestion avancée du trafic, utilisez des fichiers YAML et importez-les à l'aide de la commande gcloud compute url-maps import.

Étape suivante