Configurer des NEG sans serveur

Un groupe de points de terminaison du réseau (NEG) spécifie un groupe de points de terminaison backend pour un équilibreur de charge. Un NEG sans serveur est un backend qui pointe vers un service Cloud Run, App Engine ou Cloud Functions.

Un NEG sans serveur peut représenter :

  • un service Cloud Run ou un groupe de services partageant le même format d'URL ;
  • une fonction Cloud Functions ou un groupe de fonctions partageant le même format d'URL ;
  • une application App Engine (environnement standard ou flexible), un service spécifique au sein d'une application ou même une version spécifique d'une application.

Cette page explique comment créer un équilibreur de charge HTTP(S) externe afin d'acheminer les requêtes vers des backends sans serveur. Ici, le terme "sans serveur" fait référence aux produits d'informatique sans serveur suivants : App Engine, Cloud Functions et Cloud Run (entièrement géré).

Les NEG sans serveur vous permettent d'utiliser des applications sans serveur Google Cloud avec équilibrage de charge HTTP(S) externe. Une fois que vous avez configuré un équilibreur de charge avec le backend du NEG sans serveur, les requêtes envoyées à l'équilibreur de charge sont acheminées vers le backend d'application sans serveur.

Avant de commencer

Avant de commencer :

  1. Consultez la présentation des NEG sans serveur.
  2. Déployez un service App Engine, Cloud Functions ou Cloud Run (entièrement géré).
  3. Installez le SDK Google Cloud.
  4. Configurez les autorisations.
  5. Ajoutez une ressource de certificat SSL.

Déployer un service App Engine, Cloud Functions ou Cloud Run (entièrement géré)

Pour les instructions fournies sur cette page, nous partons du principe que vous disposez déjà d'un service Cloud Run (entièrement géré), Cloud Functions ou App Engine en cours d'exécution.

Dans l'exemple de cette page, nous utilisons le guide de démarrage rapide de Cloud Run (entièrement géré) pour Python afin de déployer le service helloworld dans la région us-central1. Enfin, le reste de la page vous explique comment configurer un équilibreur de charge HTTP(S) externe qui utilise un backend de NEG sans serveur pour acheminer les requêtes vers le service helloworld.

Si vous n'avez pas encore déployé d'application sans serveur ou si vous souhaitez essayer un NEG sans serveur avec un exemple d'application, reportez-vous à l'un des guides de démarrage rapide mentionnés ci-après. Vous pouvez créer une application sans serveur dans n'importe quelle région, mais vous devrez utiliser la même région ultérieurement pour créer le NEG et l'équilibreur de charge sans serveur.

Cloud Run (entièrement géré)

Pour générer une application simple de type "Hello World", empaquetez l'application dans une image de conteneur, puis déployez l'image sur Cloud Run (entièrement géré). Consultez la page Démarrage rapide : Construire et déployer.

Si vous avez déjà importé un exemple de conteneur dans Container Registry, consultez la page Démarrage rapide : Déployer un exemple de conteneur prédéfini.

Cloud Functions

Consultez la page Cloud Functions : Démarrage rapide pour Python.

App Engine

Consultez les guides de démarrage rapide d'App Engine pour Python 3 suivants :

Installer le SDK Google Cloud

Installez l'outil de ligne de commande gcloud. Pour obtenir plus d'informations conceptuelles sur l'outil gcloud ainsi que des instructions d'installation, consultez la Présentation de gcloud.

Si vous n'avez pas encore utilisé l'outil de ligne de commande gcloud, commencez par exécuter la commande gcloud init pour initialiser votre répertoire gcloud.

Configurer les autorisations

Pour suivre ce guide, vous devez créer un NEG sans serveur et créer un équilibreur de charge HTTP(S) externe dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer des rôles IAM Compute Engine suivants :

Tâche Rôle requis
Créer des composants d'équilibrage de charge et de mise en réseau Administrateur réseau
Créer et modifier des NEG Administrateur d'instances Compute
Créer et modifier des certificats SSL Administrateur de sécurité

Réserver une adresse IP externe

Maintenant que vos services sont opérationnels, configurez une adresse IP externe statique globale que vos clients utiliseront pour accéder à votre équilibreur de charge.

Console

  1. Accédez à la page Adresses IP externes de Google Cloud Console.
    Accéder à la page Adresses IP externes
  2. Cliquez sur Réserver une adresse statique pour réserver une adresse IPv4.
  3. Attribuez un Nom à example-ip.
  4. Définissez le niveau réseau à la valeur Premium.
  5. Définissez Version IP sur IPv4.
  6. Définissez le Type à la valeur Global.
  7. Cliquez sur Réserver.

gcloud

gcloud compute addresses create example-ip \
    --ip-version=IPV4 \
    --global

Notez l'adresse IPv4 réservée :

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Créer une ressource de certificat SSL

Si vous souhaitez créer un équilibreur de charge HTTPS, vous devez ajouter une ressource de certificat SSL au frontal de l'équilibreur de charge. Créez une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré.

  • Certificats gérés par Google L'utilisation de certificats gérés par Google est recommandée, car Google Cloud obtient, gère et renouvelle automatiquement ces certificats pour vous. Pour créer un certificat géré par Google, vous devez disposer d'un domaine et d'enregistrements DNS pour ce domaine afin que le certificat soit provisionné. Si vous ne possédez pas encore de domaine, vous pouvez en obtenir un auprès de Google Domains. De plus, vous devez mettre à jour l'enregistrement DNS A du domaine pour qu'il pointe vers l'adresse IP de l'équilibreur de charge créée à l'étape précédente (example-ip). Pour obtenir des instructions détaillées, consultez la page Utiliser des certificats gérés par Google.

  • Certificats autosignés Si vous ne souhaitez pas configurer un domaine à ce stade, vous pouvez utiliser un certificat SSL autosigné pour les tests.

Pour cet exemple, nous partons du principe que vous avez déjà créé une ressource de certificat SSL.

Si vous souhaitez tester ce processus sans créer de ressource de certificat SSL (ou de domaine comme requis par les certificats gérés par Google), vous pouvez toujours utiliser les instructions de cette page pour configurer un équilibreur de charge HTTP.

Créer l'équilibreur de charge HTTP(S) externe

Dans le schéma suivant, l'équilibreur de charge utilise un backend de NEG sans serveur pour envoyer les requêtes vers un service Cloud Run (entièrement géré) sans serveur. Dans cet exemple, nous utilisons le guide de démarrage rapide de Cloud Run (entièrement géré) pour Python afin de déployer le service helloworld-python.

Équilibrage de charge HTTPS simple (cliquez pour agrandir)
Équilibrage de charge HTTPS pour une application Cloud Run

Étant donné que les vérifications d'état ne sont pas disponibles pour les services de backend avec des backends de NEG sans serveur, vous n'avez pas besoin de créer de règle de pare-feu autorisant les vérifications d'état si l'équilibreur de charge ne dispose que de backends de NEG sans serveur.

Console

Nommer l'équilibreur de charge

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.
    Accéder à la page "Équilibrage de charge"
  2. Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
  3. Dans la section Web ou interne uniquement, sélectionnez D'Internet vers mes VM.
  4. Cliquez sur Continuer.
  5. Pour le nom de l'équilibreur de charge, saisissez helloworld-lb.
  6. Laissez la fenêtre ouverte pour continuer.

Configurer les services de backend

  1. Cliquez sur Backend configuration (Configuration du backend).
  2. Dans le menu déroulant Créer ou sélectionner un service de backend, maintenez le pointeur de la souris sur Services de backend, puis sélectionnez Créer un service de backend.
  3. Définissez le paramètre Nom du service de backend sur helloworld-backend-service.
  4. Sous Type de backend, sélectionnez Groupe de points de terminaison du réseau sans serveur.
  5. Dans le menu déroulant Protocole, sélectionnez HTTP.
  6. Sous Backends, dans la fenêtre Nouveau backend, sélectionnez Créer un groupe de points de terminaison du réseau sans serveur.
    1. Dans le champ Nom, saisissez helloworld-serverless-neg.
    2. Sous Région, sélectionnez us-central1.
    3. Sélectionnez un type de groupe de points de terminaison du réseau sans serveur. Cet exemple utilise un service Cloud Run (entièrement géré). Sélectionnez donc Cloud Run.
      1. Cliquez sur Sélectionner le nom du service.
      2. Dans le menu déroulant Service, sélectionnez le service HelloWorld.
    4. Cliquez sur Create (Créer).
  7. Dans la fenêtre Nouveau backend, cliquez sur Terminé.
  8. (Facultatif) Sélectionnez Activer Cloud CDN.
  9. Cliquez sur Create (Créer).

Configurer des règles d'hôte et des outils de mise en correspondance des chemins

Les règles d'hôte et les outils de mise en correspondance des chemins sont les composants de configuration d'un mappage d'URL de l'équilibreur de charge HTTP(S) externe.

  1. Cliquez sur Host and path rules (Règles d'hôte et de chemin d'accès).
  2. Conservez les hôtes et les chemins d'accès par défaut. Cela signifie que toutes les requêtes sont envoyées à helloworld-backend-service.

Configurer l'interface

  1. Cliquez sur Frontend configuration (Configuration du frontend).
  2. Saisissez un nom.
  3. Pour créer un équilibreur de charge HTTPS, vous devez disposer d'un certificat SSL (gcloud compute ssl-certificates list). Nous vous recommandons d'utiliser un certificat géré par Google, comme décrit précédemment. Pour configurer un équilibreur de charge HTTP(S) externe, renseignez les champs comme suit.

    Vérifiez que les options suivantes sont configurées avec les valeurs suivantes :

    Propriété Valeur (saisissez une valeur ou sélectionnez une option spécifiée)
    Protocole HTTPS
    Niveau de service réseau Premium
    Version IP IPv4
    Adresse IP example-ip
    Port 443
    Certificat Sélectionnez un certificat SSL existant ou créez-en un.

    Pour créer un équilibreur de charge HTTPS, vous devez disposer d'une ressource de certificat SSL à utiliser dans le proxy HTTPS. Vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré.
    Pour créer un certificat géré par Google, vous devez disposer d'un domaine. L'enregistrement A du domaine doit correspondre à l'adresse IP de l'équilibreur de charge (dans cet exemple, example-ip). Il est recommandé d'utiliser des certificats gérés par Google, car Google Cloud obtient, gère et renouvelle automatiquement ces certificats. Si ce n'est pas le cas, vous pouvez utiliser un certificat SSL auto-signé pour les tests.

    Si vous souhaitez tester ce processus sans configurer une ressource de certificat SSL (ou un domaine comme requis par les certificats gérés par Google), vous pouvez configurer un équilibreur de charge HTTP.

    Pour créer un équilibreur de charge HTTP, vérifiez que les options suivantes sont configurées avec ces valeurs :

    Valeur Valeur (saisissez une valeur ou sélectionnez une option spécifiée)
    Protocole HTTP
    Niveau de service réseau Premium
    Version IP IPv4
    Adresse IP example-ip
    Port 80

  4. Cliquez sur OK.

Vérifier la configuration

  1. Cliquez sur Review and finalize (Vérifier et finaliser).
  2. Examinez le backend, les règles d'hôte et de chemin d'accès, ainsi que l'interface.
  3. Cliquez sur Create (Créer).
  4. Attendez jusqu'à ce que l'équilibreur de charge soit créé.
  5. Cliquez sur le nom de l'équilibreur de charge (helloworld-lb).
  6. Notez l'adresse IP de l'équilibreur de charge pour la prochaine tâche. Elle est désignée par l'élément IP_ADDRESS.

gcloud

  1. Créez un NEG sans serveur pour votre service Cloud Run (entièrement géré). Dans cet exemple, nous partons du principe que vous avez déployé un service Cloud Run (entièrement géré) appelé helloworld.
    gcloud compute network-endpoint-groups create helloworld-serverless-neg \
        --region=us-central1 \
        --network-endpoint-type=serverless  \
        --cloud-run-service=helloworld
    
    Pour créer un NEG pour un service App Engine ou une fonction Cloud Functions, consultez le guide de référence gcloud pour gcloud compute network-endpoint-groups create.
  2. Créez un service de backend, puis ajoutez le NEG sans serveur en tant que backend pour le service de backend :
    gcloud compute backend-services create helloworld-backend-service \
        --global
    
    gcloud compute backend-services add-backend helloworld-backend-service \
        --global \
        --network-endpoint-group=helloworld-serverless-neg \
        --network-endpoint-group-region=us-central1
    
  3. Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend helloworld-backend-service :
    gcloud compute url-maps create helloworld-url-map \
        --default-service helloworld-backend-service
    
    Cet exemple de mappage d'URL ne cible qu'un seul service de backend représentant un seul service Cloud Run (entièrement géré). Il n'est donc pas nécessaire de configurer des règles d'hôte ou des correspondances de chemin d'accès. Si vous disposez de plusieurs services de backend, vous pouvez utiliser des règles d'hôte pour acheminer les requêtes vers différents services en fonction du nom d'hôte. Vous pouvez également configurer un outil de mise en correspondance des chemins d'accès pour diriger les requêtes vers différents services en fonction du chemin d'accès des requêtes.
  4. Pour créer un équilibreur de charge HTTPS, vous devez disposer d'une ressource de certificat SSL à utiliser dans le proxy HTTPS. Vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré. L'utilisation de certificats gérés par Google est recommandée, car Google Cloud obtient, gère et renouvelle automatiquement ces certificats.
    Pour créer un certificat géré par Google, vous devez disposer d'un domaine. Si ce n'est pas le cas, vous pouvez utiliser un certificat SSL auto-signé pour les tests.

    Pour créer une ressource de certificat SSL géré par Google qui est appelée www-ssl-cert, exécutez la commande suivante :
    gcloud compute ssl-certificates create www-ssl-cert \
        --domains [DOMAIN]
    
    Pour créer une ressource de certificat SSL autogéré appelée www-ssl-cert, exécutez la commande suivante :
    gcloud compute ssl-certificates create www-ssl-cert \
        --certificate [CRT_FILE_PATH] \
        --private-key [KEY_FILE_PATH]
    
  5. Créez un proxy HTTP(S) cible, qui va rediriger les requêtes vers votre mappage d'URL.

    Pour un équilibreur de charge HTTP, créez un proxy cible HTTP :
      gcloud compute target-http-proxies create helloworld-http-proxy \
        --url-map=helloworld-url-map
      
    Pour un équilibreur de charge HTTPS, créez un proxy cible HTTPS. Le serveur proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour l'équilibrage de charge HTTPS. Vous chargez donc également votre certificat à cette étape :
    gcloud compute target-https-proxies create helloworld-https-proxy \
        --ssl-certificates=www-ssl-cert \
        --url-map=helloworld-url-map
    
  6. Créez une règle de transfert globale pour acheminer les requêtes entrantes vers le proxy.

    Pour un équilibreur de charge HTTP, procédez comme suit :
    gcloud compute forwarding-rules create http-forwarding-rule \
        --address=example-ip \
        --target-http-proxy=helloworld-http-proxy \
        --global \
        --ports=80
    
    Pour un équilibreur de charge HTTPS, procédez comme suit :
    gcloud compute forwarding-rules create https-forwarding-rule \
        --address=example-ip \
        --target-https-proxy=helloworld-https-proxy \
        --global \
        --ports=443
    

Mettre à jour les enregistrements DNS de votre domaine pour utiliser l'adresse IP de l'équilibreur de charge

Si vous ne l'avez pas déjà fait, mettez à jour l'enregistrement DNS A de votre domaine afin qu'il pointe vers l'adresse IP de l'équilibreur de charge et que le trafic envoyé aux URL de domaines personnalisés Cloud Run (entièrement géré) ou App Engine soit acheminé via l'équilibreur de charge.

Par exemple, si vous disposez d'un domaine personnalisé appelé example.com et que tous vos services Cloud Run (entièrement gérés) sont mappés sur ce domaine, vous devez mettre à jour l'enregistrement DNS A pour que example.com pointe vers à l'adresse IP de l'équilibreur de charge.

Avant de mettre à jour les enregistrements DNS, vous pouvez tester votre configuration localement en forçant la résolution DNS locale du domaine personnalisé sur l'adresse IP de l'équilibreur de charge. Pour effectuer un test en local, modifiez le fichier /etc/hosts/ sur votre ordinateur local de sorte que example.com pointe vers l'adresse IP de l'équilibreur de charge, ou utilisez l'option curl --resolve afin de forcer curl à utiliser l'adresse IP de l'équilibreur de charge pour la requête.

Lorsque l'enregistrement DNS de example.com renvoie à l'adresse IP de l'équilibreur de charge HTTP(S), les requêtes envoyées à example.com commencent à être acheminées via l'équilibreur de charge. L'équilibreur de charge les distribue au service de backend approprié en fonction de son mappage d'URL. En outre, si le service de backend est configuré avec un masque d'URL, le NEG sans serveur utilise celui-ci pour acheminer la requête vers le service Cloud Run (entièrement géré), Cloud Functions ou App Engine approprié.

Si vous utilisez des certificats gérés par Google, la migration d'un service existant vers un équilibreur de charge HTTP(S) externe peut occasionner des temps d'arrêt. En général, ceux-ci durent moins d'une heure. Cela est dû au fait que le certificat SSL de votre équilibreur de charge HTTP(S) externe ne sera pas provisionné tant que vous n'aurez pas mis à jour vos enregistrements DNS pour qu'ils pointent vers l'adresse IP de l'équilibreur de charge.

Tester l'équilibreur de charge HTTP(S) externe

Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP. Si vous avez configuré un domaine, vous pouvez également envoyer du trafic vers le nom de domaine. Toutefois, la propagation DNS peut prendre un certain temps. Vous pouvez donc commencer à utiliser l'adresse IP à des fins de test.

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur l'équilibreur de charge que vous venez de créer.
  3. Notez l'adresse IP de l'équilibreur de charge.
  4. Si vous avez créé un équilibreur de charge HTTP, vous pouvez le tester à l'aide d'un navigateur Web en accédant à http://IP_ADDRESS. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers la page d'accueil du service helloworld.

    Si vous avez créé un équilibreur de charge HTTPS, vous pouvez le tester à l'aide d'un navigateur Web en accédant à https://IP_ADDRESS. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers la page d'accueil du service helloworld.

    Si cela ne fonctionne pas et que vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIF. Pour en savoir plus, consultez la section État des ressources de certificat SSL géré par Google.

    Si vous avez utilisé un certificat autosigné pour les tests, votre navigateur affiche un avertissement. Vous devez explicitement lui indiquer d'accepter un certificat autosigné. Cliquez sur l'avertissement pour afficher la page.

    Vous pouvez également utiliser curl depuis l'interface de ligne de commande de votre machine locale. Remplacez IP_ADDRESS par l'adresse IPv4 de l'équilibreur de charge. Vous devriez être redirigé vers la page d'accueil du service helloworld.

    Si vous utilisez un certificat géré par Google, testez le domaine pointant vers l'adresse IP de l'équilibreur de charge. Exemple :

    curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS:443
    

    Si vous utilisez un certificat autosigné, vous devez également spécifier l'option -k. L'option curl -k permet à curl de fonctionner si vous disposez d'un certificat autosigné. Vous ne devez utiliser le paramètre -k que pour tester votre propre site. Dans des circonstances normales, un certificat valide est une mesure de sécurité importante. Souvenez-vous que vous ne devez pas ignorer les avertissements relatifs aux certificats.

  5. (Facultatif) Si vous utilisez un domaine personnalisé, vous devrez peut-être attendre la propagation des paramètres DNS mis à jour. Testez ensuite votre domaine (par exemple, https://test.example.com) dans le navigateur Web. Vous devriez être redirigé vers la page d'accueil du service helloworld.

Options de configuration supplémentaires

Cette section développe l'exemple de configuration et propose d'autres options de configuration. Toutes les tâches décrites ici sont facultatives. Vous pouvez les exécuter dans n'importe quel ordre.

Configurer l'équilibrage de charge multirégional

Dans l'exemple décrit précédemment, un seul service Cloud Run (entièrement géré) sert de backend. Étant donné que le NEG sans serveur ne peut pointer que vers un point de terminaison à la fois, l'équilibrage de charge n'est pas réellement effectué. L'équilibreur de charge HTTP(S) externe sert uniquement d'interface pour transmettre le trafic au point de terminaison de l'application helloworld spécifié. Notez toutefois que vous pouvez diffuser votre application Cloud Run (entièrement géré) depuis plusieurs régions pour améliorer la disponibilité de votre service et diminuer la latence pour les utilisateurs.

Si un service de backend contient plusieurs NEG, l'équilibreur de charge équilibre le trafic en transférant les requêtes au NEG sans serveur situé dans la région disponible la plus proche. Toutefois, les services de backend ne peuvent contenir qu'un seul NEG sans serveur par région. Pour que votre service Cloud Run (entièrement géré) soit disponible dans plusieurs régions, vous devez configurer le routage interrégional. Vous devez pouvoir utiliser un schéma d'URL unique qui fonctionne partout dans le monde, tout en répondant aux requêtes des utilisateurs depuis la région la plus proche d'eux. Si la région la plus proche est indisponible ou manque de capacité, la requête est acheminée vers une autre région.

Pour configurer la diffusion multirégionale, vous devez utiliser le niveau réseau Premium pour vous assurer que tous les déploiements Cloud Run (entièrement géré) régionaux sont compatibles et prêts à diffuser le trafic en provenance de n'importe quelle région.

Pour configurer un équilibreur de charge multirégional, procédez comme suit :

  1. Configurez deux services Cloud Run (entièrement géré) dans deux régions différentes. Supposons que vous avez déployé deux services Cloud Run (entièrement géré) : un pour une région en Europe et un autre pour une région aux États-Unis.
  2. Créez un équilibreur de charge HTTP(S) externe avec la configuration suivante :
    1. Configurez un service de backend global avec deux NEG sans serveur.
      1. Créez le premier NEG dans la même région que le service Cloud Run déployé en Europe.
      2. Créez le second NEG dans la même région que le service Cloud Run déployé aux États-Unis.
    2. Définissez la configuration de votre interface avec le niveau réseau Premium.

Le reste de la configuration peut être identique à celle décrite précédemment. Votre configuration doit se présenter comme suit :

Répartition du trafic vers des applications sans serveur (cliquez pour agrandir)
Routage multirégional pour les applications sans serveur (avec basculement)

Configurer le routage régional

Les applications sont souvent diffusées à partir de plusieurs régions pour répondre aux exigences de localisation des données. Par exemple, vous pouvez vous assurer que les requêtes effectuées par des utilisateurs européens sont toujours traitées à partir d'une région située en Europe. Pour ce faire, vous devez disposer d'un schéma d'URL avec des URL distinctes pour les utilisateurs de l'UE et des autres pays, et diriger vos utilisateurs européens vers les URL de l'UE.

Dans un tel scénario, vous utilisez le mappage d'URL pour acheminer les requêtes provenant d'URL spécifiques vers les régions correspondantes. Avec une telle configuration, les requêtes destinées à une région ne sont jamais diffusées à une autre région. Cela permet d'isoler les régions. En revanche, lorsqu'une région est indisponible, les requêtes ne sont pas acheminées vers une autre région. Cette configuration n'augmente donc pas la disponibilité de votre service.

Pour configurer le routage régional, vous devez utiliser le niveau réseau Premium afin de pouvoir combiner différentes régions au sein d'une seule règle de transfert.

Pour configurer un équilibreur de charge avec un routage régional :

  1. Configurez deux services Cloud Run (entièrement géré) dans deux régions différentes. Supposons que vous avez déployé deux services Cloud Run (entièrement géré) : hello-world-eu dans une région d'Europe et hello-world-us dans une région aux États-Unis.
  2. Créez un équilibreur de charge HTTP(S) externe avec la configuration suivante :
    1. Configurez un service de backend avec un NEG sans serveur en Europe. Le NEG sans serveur doit être créé dans la même région que le service Cloud Run (entièrement géré) déployé en Europe.
    2. Configurez un second service de backend avec un autre NEG sans serveur aux États-Unis. Vous devez créer ce NEG sans serveur dans la même région que le service Cloud Run déployé aux États-Unis.
    3. Configurez votre mappage d'URL avec les règles d'hôte et de chemin d'accès appropriées afin que les requêtes provenant d'un ensemble d'URL spécifique soient acheminées vers le service de backend européen, tandis que toutes les autres requêtes sont acheminées vers le service de backend américain.
    4. Définissez la configuration de votre interface avec le niveau réseau Premium.

Le reste de la configuration peut être identique à celle décrite précédemment. Votre configuration doit se présenter comme suit :

Répartition du trafic vers des applications sans serveur (cliquez pour agrandir)
Routage régional pour les applications sans serveur (sans basculement)

Utiliser un masque d'URL

Lorsque vous créez un NEG sans serveur, au lieu de sélectionner un service Cloud Run (entièrement géré) spécifique, vous pouvez utiliser un masque d'URL qui pointe vers plusieurs services diffusés sur le même domaine. Un masque d'URL est un modèle de votre schéma d'URL. Le NEG sans serveur utilisera ce modèle pour extraire le nom du service de l'URL de la requête entrante et mapper la requête au service approprié.

Les masques d'URL sont utiles si votre service est mappé sur un domaine personnalisé plutôt que sur l'adresse par défaut que Google Cloud fournit au service déployé. Un masque d'URL vous permet de cibler plusieurs services et versions avec une seule règle, même lorsque votre application utilise un format d'URL personnalisé.

Si vous ne l'avez pas déjà fait, consultez la section Masques d'URL de la présentation des NEG sans serveur.

Créer un masque d'URL

Pour créer un masque d'URL pour votre équilibreur de charge, commencez par l'URL de votre service. Pour cet exemple, nous allons utiliser un exemple d'application sans serveur s'exécutant sur https://example.com/login. Il s'agit de l'URL où le service login de l'application sera diffusé.

  1. Supprimez http ou https de l'URL pour ne garder que example.com/login.
  2. Remplacez le nom du service par un espace réservé pour le masque d'URL.
    1. Cloud Run (entièrement géré) : remplacez le nom du service Cloud Run (entièrement géré) par l'espace réservé <service>. Si le service Cloud Run (entièrement géré) est associé à un tag, remplacez celui-ci par l'espace réservé <tag>. Dans cet exemple, le masque d'URL final est example.com/<service>.
    2. Cloud Functions : remplacez le nom de la fonction par l'espace réservé <function>. Dans cet exemple, le masque d'URL final est <function>.example.com.
    3. App Engine : remplacez le nom du service par l'espace réservé <service>. Si une version du service est associée, remplacez la version par l'espace réservé <version>. Dans cet exemple, le masque d'URL final est example.com/<service>.
  3. (Facultatif) Si le nom du service (ou la fonction, la version, ou le tag) peut être extrait de la partie du chemin d'accès de l'URL, le domaine peut être omis. La partie du chemin d'accès du masque d'URL se distingue par le premier caractère /. Si le caractère / est absent du masque d'URL, le masque est considéré comme représentant uniquement l'hôte. Par conséquent, dans cet exemple, le masque d'URL peut être réduit à /<service> ou /<function>.

    De même, si le nom du service peut être extrait de la partie hôte de l'URL, vous pouvez omettre complètement le chemin d'accès du masque d'URL.

    Vous pouvez également omettre les composants d'hôte ou de sous-domaine qui précèdent le premier espace réservé, ainsi que les composants de chemin d'accès qui suivent le dernier espace réservé. Dans ce cas, l'espace réservé capture les informations requises pour le composant.

Voici quelques exemples supplémentaires illustrant ces règles :

Cloud Run

Ce tableau part du principe que vous disposez d'un domaine personnalisé appelé example.com et que tous vos services Cloud Run (entièrement géré) sont mappés sur ce domaine.

Service, nom du tag URL de domaine personnalisé Cloud Run (entièrement géré) Masque d'URL
service : login https://login-home.example.com/web <service>-home.example.com
service : login https://example.com/login/web example.com/<service> ou /<service>
service : login, tag : test https://test.login.example.com/web <tag>.<service>.example.com
service : login, tag : test https://example.com/home/login/test example.com/home/<service>/<tag> ou /home/<service>/<tag>
service : login, tag : test https://test.example.com/home/login/web <tag>.example.com/home/<service>

Cloud Functions

Ce tableau part du principe que vous disposez d'un domaine personnalisé appelé example.com et que tous vos services Cloud Functions sont mappés sur ce domaine.

Nom de la fonction URL du domaine personnalisé Cloud Functions Masque d'URL
login https://example.com/login /<function>
login https://example.com/home/login /home/<function>
login https://login.example.com <function>.example.com
login https://login.home.example.com <function>.home.example.com

App Engine

Ce tableau part du principe que vous disposez d'un domaine personnalisé appelé example.com et que tous vos services App Engine sont mappés sur ce domaine.

Nom du service, version URL du domaine personnalisé App Engine Masque d'URL
service : login https://login.example.com/web <service>.example.com
service : login https://example.com/home/login/web example.com/home/<service> ou /home/<service>
service : login, version : test https://test.example.com/login/web <version>.example.com/<service>
service : login, version : test https://example.com/login/test example.com/<service>/<version>

Créer un NEG sans serveur avec un masque d'URL

Console

Pour un nouvel équilibreur de charge, vous pouvez utiliser le même processus de bout en bout que celui décrit précédemment dans cet article. Au lieu de sélectionner un service spécifique lors de la configuration du service de backend, saisissez un masque d'URL.

Si vous disposez déjà d'un équilibreur de charge, vous pouvez modifier la configuration du backend et faire en sorte que le NEG sans serveur pointe vers un masque d'URL au lieu d'un service spécifique.

Pour ajouter un NEG sans serveur basé sur un masque d'URL à un service de backend existant, procédez comme suit :

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur le nom de l'équilibreur de charge dont vous souhaitez modifier le service de backend.
  3. Sur la page Détails de l'équilibreur de charge, cliquez sur Modifier .
  4. Sur la page Modifier l'équilibreur de charge HTTP(S), cliquez sur Configuration du backend.
  5. Sur la page Configuration du backend, cliquez sur le bouton Modifier correspondant au service de backend que vous souhaitez modifier.
  6. Cliquez sur Add backend (Ajouter le backend).
  7. Sélectionnez Créer un groupe de points de terminaison du réseau sans serveur.
    1. Dans le champ Nom, saisissez helloworld-serverless-neg.
    2. Sous Région, sélectionnez us-central1.
    3. Sous Type de groupe de points de terminaison du réseau sans serveur, sélectionnez la plate-forme sur laquelle vos applications sans serveur (ou services ou fonctions) ont été créées.
      1. Sélectionnez Utiliser un masque d'URL.
      2. Saisissez un masque d'URL. Pour obtenir des instructions sur la création d'un masque d'URL, consultez la page Créer un masque d'URL.
      3. Cliquez sur Create (Créer).
  8. Dans la fenêtre Nouveau backend, cliquez sur Terminé.
  9. Cliquez sur Mettre à jour.

gcloud : Cloud Run

Pour créer un NEG sans serveur avec un exemple de masque d'URL example.com/<service>, exécutez la commande suivante :

gcloud compute network-endpoint-groups create helloworld-neg-mask \
    --region=us-central1 \
    --network-endpoint-type=serverless \
    --cloud-run-url-mask="example.com/<service>"

gcloud : Cloud Functions

Pour créer un NEG sans serveur avec un exemple de masque d'URL example.com/<function>, exécutez la commande suivante :

gcloud compute network-endpoint-groups create helloworld-neg-mask \
    --region=us-central1 \
    --network-endpoint-type=serverless \
    --cloud-function-url-mask="example.com/<function>"

gcloud : App Engine

Pour créer un NEG sans serveur avec un exemple de masque d'URL example.com/<service>, exécutez la commande suivante :

gcloud compute network-endpoint-groups create helloworld-neg-mask \
    --region=us-central1 \
    --network-endpoint-type=serverless \
    --app-engine-url-mask="example.com/<service>"

Pour savoir comment l'équilibreur de charge gère les problèmes d'incohérences des masques d'URL, consultez la section Résoudre les problèmes liés aux NEG sans serveur.

Activer Cloud CDN

L'activation de Cloud CDN pour votre service Cloud Run (entièrement géré) vous permet d'optimiser la diffusion de contenu via la mise en cache du contenu à proximité de vos utilisateurs.

Vous pouvez activer Cloud CDN sur le service de backend de l'équilibreur de charge HTTP(S) externe en exécutant la commande gcloud compute backend-services update.

  gcloud compute backend-services update helloworld-backend-service \
    --enable-cdn \
    --global

Cloud CDN est disponible pour les services de backend avec Cloud Run (entièrement géré), Cloud Functions et App Engine.

Activer Google Cloud Armor

Google Cloud Armor est un produit de sécurité qui fournit une protection contre les attaques par déni de service distribué (DDoS) sur tous les équilibreurs de charge proxy GCLB. Google Cloud Armor fournit également des stratégies de sécurité configurables aux services accessibles via un équilibreur de charge HTTP(S) externe. Pour en savoir plus sur les stratégies de sécurité de Google Cloud Armor pour l'équilibrage de charge HTTP(S), consultez la page Présentation des stratégies de sécurité Google Cloud Armor.

Bien que Google Cloud Armor puisse être configuré pour les services de backend avec Cloud Run (entièrement géré), Cloud Functions et App Engine, des limites sont associées à cette fonctionnalité, en particulier avec Cloud Run (entièrement géré) et App Engine. Les utilisateurs ayant accès aux URL par défaut attribuées à ces services par Google Cloud peuvent contourner l'équilibreur de charge et accéder directement aux URL de service, en contournant les stratégies de sécurité configurées pour Google Cloud Armor.

Si vous utilisez Cloud Functions, vous pouvez limiter ce problème en utilisant le paramètre d'entrée internal-and-gclb pour assurer le blocage des requêtes envoyées aux URL cloudfunctions.net par défaut ou à tout autre type de domaine personnalisé configuré via Cloud Functions.

Supprimer un NEG sans serveur

Il n'est pas possible de supprimer un groupe de points de terminaison du réseau s'il est associé à un service de backend. Avant de supprimer un NEG, assurez-vous qu'il est dissocié du service de backend.

Pour supprimer un NEG sans serveur d'un service de backend, vous devez spécifier la région dans laquelle le NEG a été créé. Vous devez également spécifier l'option --global, car helloworld-backend-service est une ressource globale.

gcloud compute backend-services remove-backend helloworld-backend-service \
    --network-endpoint-group=helloworld-serverless-neg \
    --network-endpoint-group-region=us-central1 \
    --global

Pour supprimer le NEG sans serveur, exécutez la commande suivante :

gcloud compute network-endpoint-groups delete helloworld-serverless-neg \
    --region=us-central1

Sachez que la suppression d'un équilibreur de charge avec un backend NEG sans serveur ne supprime que le service de backend associé à l'équilibreur de charge. Elle ne supprime pas automatiquement le NEG sans serveur. Vous devrez supprimer manuellement le NEG sans serveur, comme indiqué dans cette section.

Étape suivante