Cette page vous explique comment déployer un équilibreur de charge d'application externe régional avec un backend Cloud Run. Pour ce faire, vous devez utiliser un backend de NEG sans serveur pour l'équilibreur de charge.
Avant de suivre cette procédure, assurez-vous de connaître les sujets suivants :
Ce guide vous explique comment configurer un équilibreur de charge d'application qui envoie les requêtes par proxy à un backend de NEG sans serveur.
Les NEG sans serveur vous permettent d'utiliser les services Cloud Run avec votre équilibreur de charge. 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 Cloud Run.
Avant de commencer
Installez le SDK Google Cloud
Installez l'outil Google Cloud CLI. Pour obtenir plus d'informations conceptuelles sur l'outil ainsi que des instructions d'installation, consultez la présentation de gcloud.
Si vous n'avez pas encore utilisé gcloud CLI, commencez par exécuter la commande gcloud init
pour initialiser votre répertoire gcloud
.
Déployer un service Cloud Run
Dans les instructions de cette page, nous partons du principe que vous disposez déjà d'un service Cloud Run.
Pour l'exemple de cette page, vous pouvez utiliser l'un des guides de démarrage rapide de Cloud Run pour déployer un service Cloud Run.
Le NEG sans serveur et l'équilibreur de charge doivent se trouver dans la même région que le service Cloud Run. Vous pouvez bloquer les requêtes externes envoyées directement aux URL par défaut du service Cloud Run en limitant l'entrée àinternal and cloud load
balancing
. Exemple :
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --platform=managed \ --allow-unauthenticated \ --ingress=internal-and-cloud-load-balancing \ --region=REGION \ --image=IMAGE_URL
Notez le nom du service que vous créez. Enfin, le reste de la page vous explique comment configurer un équilibreur de charge qui dirige les requêtes vers ce service.
Configurer les autorisations
Pour suivre ce guide, vous devez créer un NEG sans serveur et créer un équilibreur de charge dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer des rôles et autorisations 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é |
Configurer le réseau et les sous-réseaux
Pour configurer le réseau et ses sous-réseaux, vous devez effectuer les tâches suivantes :
- Créez un réseau et un sous-réseau VPC :
- Créer un sous-réseau proxy réservé
Créer le réseau VPC
Créez un réseau VPC en mode personnalisé, puis les sous-réseaux que vous souhaitez dans une région.
Console
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Dans le champ Nom, saisissez
lb-network
.Dans le champ Mode de création de sous-réseau, sélectionnez Personnalisé.
Dans la section Nouveau sous-réseau, spécifiez les paramètres de configuration de sous-réseau suivants :
- Dans le champ Nom, saisissez
lb-subnet
. - Sélectionnez une Région.
- Dans Plage d'adresses IP, saisissez
10.1.2.0/24
. - Cliquez sur OK.
- Dans le champ Nom, saisissez
Cliquez sur Créer.
gcloud
Créez le réseau VPC personnalisé à l'aide de la commande
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Créez un sous-réseau dans le réseau
lb-network
. Cet exemple utilise une plage d'adresses IP10.1.2.0/24
pour le sous-réseau. Vous pouvez configurer n'importe quelle plage de sous-réseau valide.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION
Créer un sous-réseau proxy réservé
Créez un sous-réseau proxy réservé pour tous les équilibreurs de charge régionaux basés sur Envoy dans une région spécifique du réseau lb-network
.
Console
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Cliquez sur le nom du réseau VPC partagé auquel vous souhaitez ajouter un sous-réseau proxy réservé.
Cliquez sur Ajouter un sous-réseau.
Dans le champ Nom, saisissez
proxy-only-subnet
.Sélectionnez une Région.
Définissez le champ Objectif sur Proxy géré régional.
Saisissez une plage d'adresses IP comme
10.129.0.0/23
.Cliquez sur Ajouter.
gcloud
Créez le sous-réseau proxy réservé à l'aide de la commande
gcloud compute networks subnets create
.Cet exemple utilise une plage d'adresses IP de
10.129.0.0/23
pour le sous-réseau proxy réservé. Vous pouvez configurer n'importe quelle plage de sous-réseau valide.gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=lb-network \ --range=10.129.0.0/23
Créer l'équilibreur de charge
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 sans serveur.
Le trafic provenant de l'équilibreur de charge vers les backends NEG sans serveur utilise des routes spéciales définies en dehors de votre VPC, qui ne sont pas soumises à des règles de pare-feu. Par conséquent, si votre équilibreur de charge ne dispose que de backends de NEG sans serveur, vous n'avez pas besoin de créer de règles de pare-feu pour autoriser le trafic provenant du sous-réseau proxy réservé vers le backend sans serveur.
Console
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
- Pour Déploiement mondial ou dans une seule région, sélectionnez Recommandé pour les charges de travail régionales, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Pour le nom de l'équilibreur de charge, saisissez
serverless-lb
. - Sélectionnez le réseau comme
lb_network
. - Laissez la fenêtre ouverte pour continuer.
Configurer l'interface
- Avant de continuer, assurez-vous de disposer d'un certificat SSL.
- Cliquez sur Configuration du frontend.
- Saisissez un nom.
- Pour configurer un équilibreur de charge d'application externe régional, renseignez les champs comme suit.
- Dans la section Protocole, sélectionnez HTTPS.
- Dans Niveau de service réseau, sélectionnez Standard.
- Sous Version IP, sélectionnez IPv4.
- Sous Adresse IP, sélectionnez Éphémère.
- Sous Port, sélectionnez
443
. Sous Certificat, sélectionnez un certificat SSL existant ou créez-en un.
L'exemple suivant montre comment créer des certificats SSL Compute Engine :
- Cliquez sur Créer un certificat.
- Dans le champ Nom, saisissez un nom.
- Dans les champs appropriés, importez vos fichiers au format PEM :
- Certificat
- Clé privée
- Cliquez sur Créer.
- Facultatif : pour créer un équilibreur de charge HTTP, procédez comme suit :
- Sous Protocole, sélectionnez HTTP.
- Dans Niveau de service réseau, sélectionnez Standard.
- Sous Version IP, sélectionnez IPv4.
- Sous Adresse IP, sélectionnez Éphémère.
- Sous Port, sélectionnez
80
. - Cliquez sur OK.
Si vous souhaitez tester ce processus sans configurer une ressource de certificat SSL, vous pouvez configurer un équilibreur de charge HTTP.
Configurer les services de backend
- Cliquez sur Configuration du backend.
- Dans le menu déroulant Créer ou sélectionner des services de backend, maintenez le pointeur de la souris sur Services de backend, puis sélectionnez Créer un service de backend.
- Dans la fenêtre Créer un service de backend, saisissez un Nom.
- Sous Type de backend, sélectionnez Groupe de points de terminaison du réseau sans serveur.
- Laissez le paramètre Protocole inchangé. Ce paramètre est ignoré.
- Sous Backends > Nouveau backend, sélectionnez Créer un groupe de points de terminaison du réseau sans serveur.
- Dans la fenêtre Créer un groupe de points de terminaison du réseau sans serveur, saisissez un Nom.
- Sous Région, la région de l'équilibreur de charge s'affiche.
- Dans le champ Type de groupe de points de terminaison du réseau sans serveur, sélectionnez Cloud Run. Cloud Run est le seul type compatible.
- Cliquez sur Sélectionner un nom de service.
- Dans la liste déroulante Service, sélectionnez le service Cloud Run pour lequel vous souhaitez créer un équilibreur de charge.
- Cliquez sur OK.
- Cliquez sur Créer.
- Dans la fenêtre Créer un service de backend, cliquez sur Créer.
Configurer des règles de routage
Les règles de routage déterminent la manière dont le trafic est dirigé. Vous pouvez diriger le trafic vers un service de backend ou un service Kubernetes. Tout trafic ne correspondant pas explicitement à un outil de mise en correspondance des hôtes et des chemins d'accès est envoyé au service par défaut.
- Cliquez sur Règle d'hôte et de chemin d'accès simple.
- Sélectionnez un service de backend dans la liste déroulante Backend.
Vérifier la configuration
- Cliquez sur Vérifier et finaliser.
- Examinez les valeurs définies pour Backend, Règles d'hôte et de chemin d'accès et Interface.
- Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui sera utilisée pour créer l'équilibreur de charge.
- Cliquez sur Créer. Attendez jusqu'à ce que l'équilibreur de charge soit créé.
- Cliquez sur le nom de l'équilibreur de charge (serverless-lb).
- Notez l'adresse IP de l'équilibreur de charge pour la prochaine tâche.
gcloud
- Réservez une adresse IP externe statique pour l'équilibreur de charge.
gcloud compute addresses create IP_ADDRESS_NAME \ --region=REGION \ --network-tier=STANDARD
- Créez un NEG sans serveur pour votre service Cloud Run :
gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \ --region=REGION \ --network-endpoint-type=serverless \ --cloud-run-service=CLOUD_RUN_SERVICE_NAME
- Créez un service de backend régional. Définissez
--protocol
sur HTTP. Ce paramètre est ignoré, mais il est obligatoire. Sinon,--protocol
est défini sur TCP par défaut.gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --region=REGION
- Ajoutez le NEG sans serveur en tant que backend au service de backend :
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --region=REGION \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=REGION
- Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend :
Cet exemple de mappage d'URL ne cible qu'un service de backend représentant une seule application sans serveur. Vous n'avez donc pas besoin de configurer de règles d'hôte ni de mises en correspondance des chemins d'accès.gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --region=REGION
- Facultatif : effectuez cette étape si vous utilisez HTTPS entre le client et l'équilibreur de charge. Cette opération n'est pas requise pour les équilibreurs de charge HTTP.
Vous pouvez créer des certificats Compute Engine ou via le gestionnaire de certificats. Utilisez l'une des méthodes suivantes pour créer des certificats à l'aide du gestionnaire de certificats :
- Certificats régionaux autogérés. Pour en savoir plus sur la création et l'utilisation de certificats autogérés régionaux, consultez la page Déployer un certificat régional autogéré. Les mappages de certificats ne sont pas acceptés.
Certificats régionaux gérés par Google. Les mappages de certificats ne sont pas acceptés.
Les types de certificats régionaux gérés par Google suivants sont compatibles avec le gestionnaire de certificats :
- Certificats régionaux gérés par Google avec une autorisation DNS par projet. Pour en savoir plus, consultez la page Déployer un certificat régional géré par Google.
- Certificats régionaux gérés par Google (privés) avec Certificate Authority Service. Pour en savoir plus, consultez la page Déployer un certificat régional géré par Google avec le service d'autorité de certification.
- Créez un proxy cible régional pour acheminer les requêtes vers le mappage d'URL.
Pour un équilibreur de charge HTTP, créez un proxy cible HTTP : 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-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=REGION
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --region=REGION
- Créez une règle de transfert pour acheminer les requêtes entrantes vers le proxy.
Pour un équilibreur de charge HTTP, utilisez ce qui suit :
Pour un équilibreur de charge HTTPS, utilisez ce qui suit :gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=REGION \ --region=REGION \ --ports=80
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=lb-network \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=REGION \ --region=REGION \ --ports=443
Après avoir créé des certificats, associez-les directement au proxy cible.
Pour créer une ressource de certificat SSL autogéré, procédez comme suit :gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH \ --region=REGION
Tester l'équilibreur de charge
Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP.
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Cliquez sur l'équilibreur de charge que vous venez de créer.
Notez l'adresse IP de l'équilibreur de charge.
S'il s'agit d'un équilibreur de charge HTTP, vous pouvez le tester à l'aide d'un navigateur Web en accédant à
http://IP_ADDRESS
. RemplacezIP_ADDRESS
par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers la page d'accueil du service Cloud Run.S'il s'agit d'un équilibreur de charge HTTPS, vous pouvez le tester à l'aide d'un navigateur Web en accédant à
https://IP_ADDRESS
. RemplacezIP_ADDRESS
par l'adresse IP de l'équilibreur de charge. Vous êtes redirigé vers la page d'accueil du service Cloud Run.
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.
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.
Utiliser un masque d'URL
Lorsque vous créez un NEG sans serveur, au lieu de sélectionner un service Cloud Run 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 utilise 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. Cet exemple utilise 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 est diffusé.
- Supprimez
http
ouhttps
de l'URL pour ne garder queexample.com/login
. - Remplacez le nom du service par un espace réservé pour le masque d'URL.
- Cloud Run : remplacez le nom du service Cloud Run par l'espace réservé
<service>
. Si le service Cloud Run est associé à un tag, remplacez celui-ci par l'espace réservé<tag>
. Dans cet exemple, le masque d'URL final estexample.com/<service>
.
- Cloud Run : remplacez le nom du service Cloud Run par l'espace réservé
Facultatif : Si le nom du service 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 de barre oblique (
/
). Si le caractère de barre oblique (/
) 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>
.De même, si
<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 :
Ce tableau part du principe que vous disposez d'un domaine personnalisé appelé example.com
et que tous vos services Cloud Run sont mappés sur ce domaine.
Service, nom du tag | URL du domaine personnalisé Cloud Run | 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> |
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 ce document. 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 :
- Dans la console Google Cloud, accédez à la page Équilibrage de charge.
Accéder à la page "Équilibrage de charge" - Cliquez sur le nom de l'équilibreur de charge contenant le service de backend que vous souhaitez modifier.
- Sur la page Détails de l'équilibreur de charge, cliquez sur Modifier .
- Sur la page Modifier l'équilibreur de charge d'application externe global, cliquez sur Configuration du backend.
- Sur la page Configuration du backend, cliquez sur le bouton Modifier correspondant au service de backend que vous souhaitez modifier.
- Cliquez sur Ajouter un backend.
- Sélectionnez Créer un groupe de points de terminaison du réseau sans serveur.
- Dans le champ Nom, saisissez
helloworld-serverless-neg
. - Sous Région, la région de l'équilibreur de charge s'affiche.
- Sous Type de groupe de points de terminaison du réseau sans serveur, Cloud Run est le seul type de groupe de points de terminaison du réseau compatible.
- Sélectionnez Utiliser un masque d'URL.
- Saisissez un masque d'URL. Pour en savoir plus sur la création d'un masque d'URL, consultez la section sur la création de masque d'URL.
- Cliquez sur Créer.
- Dans la section Nouveau backend, cliquez sur Terminé.
- Cliquez sur Mettre à jour.
gcloud
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 SERVERLESS_NEG_MASK_NAME \ --region=REGION \ --network-endpoint-type=serverless \ --cloud-run-url-mask="example.com/<service>"
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.
Console
- Pour vous assurer que le NEG sans serveur que vous souhaitez supprimer n'est actuellement utilisé par aucun service de backend, accédez à l'onglet Services de backend de la page Composants de l'équilibrage de charge.
Accéder à la page "Services de backend" - Si le NEG sans serveur est actuellement utilisé, procédez comme suit :
- Cliquez sur le nom du service de backend qui utilise le NEG sans serveur.
- Cliquez sur Modifier ( ).
- Dans la liste des Backends, cliquez sur pour supprimer le backend NEG sans serveur du service de backend.
- Cliquez sur Enregistrer.
- Accédez à la page Groupe de points de terminaison du réseau dans Google Cloud Console.
Accéder au groupe de points de terminaison du réseau - Cochez la case correspondant au NEG sans serveur que vous souhaitez supprimer.
- Cliquez sur Supprimer.
- Cliquez à nouveau sur Supprimer pour confirmer votre choix.
gcloud
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éé.
gcloud compute backend-services remove-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=REGION \ --region=REGION
Pour supprimer le NEG sans serveur, exécutez la commande suivante :
gcloud compute network-endpoint-groups delete SERVERLESS_NEG_NAME \ --region=REGION
Étape suivante
- Utiliser la journalisation et la surveillance
- Résoudre les problèmes liés aux NEG sans serveur
- Nettoyez la configuration de l'équilibreur de charge.
- Utiliser un module Terraform pour un équilibreur de charge HTTPS externe avec un backend Cloud Run