Ce document présente deux exemples de configuration pour la configuration d'unregional internal Application Load Balancer dans un environnement VPC partagé avec des buckets Cloud Storage :
- Le premier exemple crée tous les composants et les backends de l'équilibreur de charge dans un projet de service.
- Le deuxième exemple crée les composants d'interface et le mappage d'URL de l'équilibreur de charge dans un projet de service, tandis que le bucket backend et les buckets Cloud Storage de l'équilibreur de charge sont créés dans un projet de service différent.
Les deux exemples nécessitent la même configuration initiale pour accorder les rôles requis et configurer un VPC partagé avant de pouvoir commencer à créer des équilibreurs de charge.
Pour en savoir plus sur les autres architectures de VPC partagé valides, consultez Architectures de VPC partagé.
Si vous ne souhaitez pas utiliser de réseau VPC partagé, consultez Configurer un regional internal Application Load Balancer avec des buckets Cloud Storage.
Avant de commencer
Assurez-vous que votre configuration remplit les conditions préalables suivantes.
Créer des projets Google Cloud
Créez des Google Cloud projets pour un projet hôte et deux projets de service.
Rôles requis
Pour obtenir les autorisations nécessaires pour configurer un regional internal Application Load Balancer dans un environnement VPC partagé avec des buckets Cloud Storage, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Configurer le VPC partagé, activer le projet hôte et accorder l'accès aux administrateurs de projet de service :
Administrateur Compute du VPC partagé (
roles/compute.xpnAdmin) sur le projet hôte -
Ajouter et supprimer des règles de pare-feu :
Administrateur de sécurité Compute (
roles/compute.securityAdmin) sur le projet hôte -
Accès à un administrateur de projet de service pour utiliser le réseau VPC partagé :
Utilisateur de réseau Compute (
roles/compute.networkUser) sur le projet hôte -
Créez les ressources d'équilibrage de charge :
Administrateur de réseaux Compute (
roles/compute.networkAdmin) sur le projet de service -
Créer des instances Compute Engine :
Administrateur d'instances Compute (
roles/compute.instanceAdmin.v1) sur le projet de service -
Créez et modifiez des certificats SSL Compute Engine :
Administrateur de sécurité Compute (
roles/compute.securityAdmin) sur le projet de service -
Créez et modifiez des certificats SSL du gestionnaire de certificats :
Propriétaire du gestionnaire de certificats (
roles/certificatemanager.owner) sur le projet de service -
Activez les buckets de backend de référence de l'équilibreur de charge à partir d'autres projets de service :
Utilisateur des services de l'équilibreur de charge Compute (
roles/compute.loadBalancerServiceUser) sur le projet de service
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer un environnement VPC partagé
Pour configurer un environnement de VPC partagé, procédez comme suit dans le projet hôte :
- Configurer le réseau VPC dans le projet hôte.
- Configurer le sous-réseau proxy réservé dans le projet hôte.
- Configurez une règle de pare-feu dans le projet hôte.
- Configurer un VPC partagé dans le projet hôte.
Il n'est pas nécessaire de suivre les étapes de cette section chaque fois que vous souhaitez créer un équilibreur de charge. Toutefois, vous devez vous assurer que vous avez accès aux ressources décrites ici avant de créer l'équilibreur de charge.
Cet exemple utilise le réseau VPC, la région et le sous-réseau proxy réservé suivants :
Réseau : le réseau est un réseau VPC en mode personnalisé nommé
lb-network.Sous-réseau pour l'équilibreur de charge. Un sous-réseau nommé
subnet-usdans la régionus-east1utilise10.1.2.0/24pour sa plage d'adresses IP principale.Sous-réseau pour les proxys Envoy. Un sous-réseau nommé
proxy-only-subnet-usdans la régionus-east1utilise10.129.0.0/23pour sa plage d'adresses IP principale.
Configurer un VPC pour le projet hôte
Configurez un VPC en mode personnalisé pour le projet hôte et créez un sous-réseau dans la même région où vous devez configurer la règle de transfert de vos équilibreurs de charge.
Il n'est pas nécessaire de suivre cette étape chaque fois que vous souhaitez créer un équilibreur de charge. Vous devez simplement vous assurer que le projet de service a accès à un sous-réseau du réseau VPC partagé (en plus du sous-réseau proxy réservé).
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, fournissez les informations suivantes :
- Dans le champ Nom, saisissez
subnet-us. - Dans la liste Région, sélectionnez
us-east1. - Dans le champ Plage IPv4, saisissez
10.1.2.0/24. - Cliquez sur OK.
- Dans le champ Nom, saisissez
Cliquez sur Créer.
gcloud
Créez un réseau VPC personnalisé nommé
lb-networkà l'aide de la commandegcloud compute networks create.gcloud compute networks create lb-network \ --subnet-mode=custom \ --project=HOST_PROJECT_IDRemplacez
HOST_PROJECT_IDpar l'Google Cloud ID de projet attribué au projet activé en tant que projet hôte dans un environnement VPC partagé.Créez un sous-réseau dans le réseau VPC
lb-networkde la régionus-east1à l'aide de la commandegcloud compute networks subnets create.gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1 \ --project=HOST_PROJECT_ID
Configurer le sous-réseau proxy réservé dans le projet hôte
Un sous-réseau proxy réservé fournit un ensemble d'adresses IP utilisées par Google Cloud pour exécuter des proxys Envoy en votre nom. Les proxys interrompent les connexions du client et créent de nouvelles connexions vers les backends.
Ce sous-réseau proxy réservé est utilisé par tous les équilibreurs de charge régionaux basés sur Envoy dans la même région que le réseau VPC. Il ne peut y avoir qu'un seul sous-réseau proxy réservé actif pour une utilisation donnée, par région et par réseau.
Dans cet exemple, nous créons un sous-réseau proxy réservé dans la région us-east1.
Console
Dans la console Google Cloud , accédez à la page Réseaux VPC.
Cliquez sur le nom du réseau VPC que vous avez créé.
Dans l'onglet Sous-réseaux, cliquez sur Ajouter un sous-réseau et fournissez les informations suivantes :
- Dans le champ Nom, saisissez
proxy-only-subnet-us. - Dans la liste Région, sélectionnez
us-east1. - Dans le champ Objectif, sélectionnez Regional Managed Proxy.
- Dans le champ Plage IPv4, saisissez
10.129.0.0/23.
- Dans le champ Nom, saisissez
Cliquez sur Ajouter.
gcloud
Créez un sous-réseau proxy réservé dans la région
us-east1à l'aide de la commandegcloud compute networks subnets create.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23 \ --project=HOST_PROJECT_ID
Configurer une règle de pare-feu dans le projet hôte
Cet exemple utilise la règle de pare-feu d'entrée fw-allow-ssh qui autorise la connectivité SSH entrante sur le port TCP 22 à partir de n'importe quelle adresse. Vous pouvez choisir une plage d'adresses IP sources plus restrictive pour cette règle. Par exemple, vous pouvez spécifier uniquement les plages d'adresses IP du système à partir duquel vous souhaitez lancer des sessions SSH. Cet exemple utilise le tag cible allow-ssh pour identifier les machines virtuelles (VM) auxquelles la règle de pare-feu s'applique. Sans ces règles de pare-feu, la règle d'entrée interdite par défaut bloque le trafic entrant vers les instances de backend.
Console
Dans la console Google Cloud , accédez à la page Règles de pare-feu.
Cliquez sur Créer une règle de pare-feu pour créer la règle autorisant les vérifications de l'étatGoogle Cloud .
Fournissez les informations suivantes :
- Dans le champ Nom, saisissez
fw-allow-ssh. - Dans la liste Réseau, sélectionnez lb-network.
- Pour le Sens du trafic, sélectionnez Entrée.
- Pour l'option Action en cas de correspondance, sélectionnez Autoriser.
- Dans la liste Cibles, sélectionnez Tags cibles spécifiés.
- Dans le champ Tags cibles, saisissez
allow-ssh. - Dans la liste Filtre source, sélectionnez Plages IPv4.
- Dans le champ Plages IPv4 sources, saisissez
0.0.0.0/0. - Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
- Cochez la case TCP, puis saisissez
22pour le numéro de port.
- Dans le champ Nom, saisissez
Cliquez sur Créer.
gcloud
Créez la règle de pare-feu
fw-allow-sshpour autoriser la connectivité SSH aux VM avec le tag réseauallow-ssh. Lorsque vous omettezsource-ranges,Google Cloud interprète la règle comme désignant n'importe quelle source.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22 \ --project=HOST_PROJECT_ID
Configurer un VPC partagé dans le projet hôte
Activez un projet hôte de VPC partagé et associez-y des projets de service afin que ces derniers puissent utiliser le réseau VPC partagé. Pour configurer un VPC partagé dans le projet hôte, consultez les pages suivantes :
Après avoir suivi les étapes précédentes, effectuez l'une des configurations suivantes :
- Configurer un équilibreur de charge dans le projet de service
- Configurer un équilibreur de charge avec une configuration multiprojet
Configurer un équilibreur de charge dans le projet de service
Cet exemple crée un regional internal Application Load Balancer dans lequel tous les composants d'équilibrage de charge (règle de transfert, proxy cible, mappage d'URL et bucket de backend) et les buckets Cloud Storage sont créés dans le projet de service.
Les ressources réseau de regional internal Application Load Balancer, telles que le sous-réseau proxy réservé, sont créées dans le projet hôte.
Cette section vous explique comment configurer l'équilibreur de charge et les backends.
Les exemples de cette page définissent explicitement une adresse IP réservée pour la règle de transfert de regional internal Application Load Balancer, au lieu d'autoriser l'allocation d'une adresse IP éphémère. Nous vous recommandons de réserver les adresses IP pour les règles de transfert.
Configurer vos buckets Cloud Storage
Le processus de configuration des buckets Cloud Storage est le suivant :
- Créez les buckets Cloud Storage.
- Copiez le contenu dans les buckets.
- Rendez les buckets lisibles publiquement.
Créer des buckets Cloud Storage
Dans cet exemple, vous allez créer deux buckets Cloud Storage dans la région us-east1.
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Cliquez sur Créer.
Dans la section Premiers pas, saisissez un nom unique qui respecte les consignes de dénomination.
Cliquez sur Choisissez où stocker vos données.
Définissez le Type d'emplacement sur Région.
Dans la liste des régions, sélectionnez us-east1.
Cliquez sur Créer.
Cliquez sur Buckets pour revenir à la page Buckets Cloud Storage. Suivez les instructions précédentes pour créer un deuxième bucket dans la région us-east1.
gcloud
Créez les buckets dans la région
us-east1à l'aide de la commandegcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_ID
gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=SERVICE_PROJECT_IDRemplacez les éléments suivants :
BUCKET1_NAME: nom de votre premier bucket Cloud StorageBUCKET2_NAME: nom de votre deuxième bucket Cloud StorageSERVICE_PROJECT_ID: ID du projet Google Cloud attribué au projet de service.
Copier du contenu dans vos buckets Cloud Storage
Pour remplir les buckets Cloud Storage, copiez un fichier graphique depuis un bucket Cloud Storage public vers vos propres buckets Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Rendre vos buckets Cloud Storage lisibles publiquement
Pour rendre tous les objets d'un bucket lisibles par tous sur l'Internet public, attribuez au compte principal allUsers le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer).
Console
Pour autoriser tous les utilisateurs à afficher des objets dans vos buckets, répétez la procédure suivante pour chaque bucket :
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Dans la liste des buckets, cochez la case correspondant à chacun de ceux que vous souhaitez rendre publics.
Cliquez sur le bouton Autorisations. La boîte de dialogue Autorisations s'affiche.
Dans la boîte de dialogue Autorisations, cliquez sur le bouton Ajouter un compte principal. La boîte de dialogue Accorder l'accès s'affiche.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers.Dans le champ Sélectionner un rôle, saisissez
Storage Object Viewerdans le champ de filtre, puis sélectionnez Lecteur des objets de l'espace de stockage dans les résultats filtrés.Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
gcloud
Pour autoriser tous les utilisateurs à afficher les objets de vos buckets, exécutez la commande buckets add-iam-policy-binding.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
Réserver une adresse IP statique interne
Réservez une adresse IP interne statique pour la règle de transfert de l'équilibreur de charge. Pour en savoir plus, consultez Réserver une adresse IP interne statique.
Console
Dans la console Google Cloud , accédez à la page Réserver une adresse IP statique interne.
Accédez à la page "Réserver une adresse IP statique interne"
Dans le champ Nom, saisissez un nom pour la nouvelle adresse.
Dans la liste Version IP, sélectionnez IPv4.
Dans la liste Réseau, sélectionnez lb-network.
Dans la liste Sous-réseau, sélectionnez subnet-us.
Dans le champ Région, sélectionnez us-east1.
Dans la liste Adresse IP statique, sélectionnez Attribuer automatiquement. Une fois l'équilibreur de charge créé, cette adresse IP sera associée à la règle de transfert de l'équilibreur de charge.
Cliquez sur Réserver pour réserver l'adresse IP.
gcloud
Pour réserver une adresse IP interne statique à l'aide de
gcloud compute, utilisez la commandecompute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=subnet-us \ --project=SERVICE_PROJECT_IDRemplacez les éléments suivants :
ADDRESS_NAME: nom que vous souhaitez donner à cette adresse.REGION: région dans laquelle vous souhaitez réserver cette adresse. Cette région doit être la même que celle de l'équilibreur de charge. Exemple :us-east1SERVICE_PROJECT_ID: ID du projet Google Cloudattribué au projet de service.
Utilisez la commande
compute addresses describepour afficher le résultat :gcloud compute addresses describe ADDRESS_NAME
Copiez l'adresse IP renvoyée pour l'utiliser comme
RESERVED_IP_ADDRESSdans les sections suivantes.
Configurer une ressource de certificat SSL
Pour un regional internal Application Load Balancer qui utilise HTTPS comme protocole de requête et de réponse, vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL Compute Engine ou d'un certificat Certificate Manager.
Pour cet exemple, créez une ressource de certificat SSL à l'aide du gestionnaire de certificats, comme décrit dans l'un des documents suivants :
- Déployer un certificat régional géré par Google avec le service d'autorité de certification
- Déployer un certificat régional géré par Google avec une autorisation DNS
- Déployer un certificat autogéré au niveau régional
Après avoir créé le certificat, vous pouvez l'associer au proxy cible HTTPS.
Nous vous recommandons d'utiliser un certificat géré par Google pour réduire les coûts opérationnels, tels que les risques de sécurité associés à la gestion manuelle des certificats.
Configurer l'équilibreur de charge avec des buckets backend
Cette section vous explique comment créer les ressources suivantes pour unregional internal Application Load Balancer :
- Deux buckets backend. Les buckets backend servent de wrapper aux buckets Cloud Storage que vous avez créés précédemment.
- Mappage d'URL
- Proxy cible
- Une règle de transfert avec des adresses IP régionales. Une adresse IP est attribuée à la règle de transfert à partir du sous-réseau créé pour les règles de transfert de l'équilibreur de charge. Si vous essayez d'attribuer une adresse IP à la règle de transfert à partir du sous-réseau proxy réservé, la création de la règle de transfert échoue.
Dans cet exemple, vous pouvez utiliser HTTP ou HTTPS comme protocole de requête et de réponse entre le client et l'équilibreur de charge. Pour créer un équilibreur de charge HTTPS, vous devez ajouter une ressource de certificat SSL au frontal de l'équilibreur de charge.
Pour créer les composants d'équilibrage de charge mentionnés précédemment à l'aide de la gcloud CLI, procédez comme suit :
Créez deux buckets de backend dans la région
us-east1à l'aide de la commandegcloud beta compute backend-buckets create. Les buckets de backend ont un schéma d'équilibrage de chargeINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 --project=SERVICE_PROJECT_IDCréez un mappage d'URL pour acheminer les requêtes entrantes vers le bucket backend à l'aide de la commande
gcloud beta compute url-maps create.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDRemplacez
URL_MAP_NAMEpar le nom du mappage d'URL.Configurez les règles d'hôte et de chemin d'accès du mappage d'URL à l'aide de la commande
gcloud beta compute url-maps add-path-matcher.Dans cet exemple, le bucket backend par défaut est
backend-bucket-cats, qui gère tous les chemins d'accès qu'il contient. Toutefois, toute requête ciblanthttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgutilise le backendbackend-bucket-dogs. Par exemple, si le dossier/love-to-fetch/existe également dans votre backend par défaut (backend-bucket-cats), l'équilibreur de charge donne la priorité au backendbackend-bucket-dogs, car il existe une règle de chemin d'accès spécifique pour/love-to-fetch/*.gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDCréez un proxy cible à l'aide de la commande
gcloud compute target-http-proxies create.HTTP
Pour le trafic HTTP, créez un proxy HTTP cible qui va acheminer les requêtes vers le mappage d'URL :
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDRemplacez
TARGET_HTTP_PROXY_NAMEpar le nom du proxy HTTP cible.HTTPS
Pour le trafic HTTPS, créez un proxy HTTPS cible pour acheminer les requêtes vers le mappage d'URL. Le proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour un équilibreur de charge HTTPS. Après avoir créé le certificat, vous pouvez l'associer au proxy cible HTTPS.
Pour associer un certificat Certificate Manager, exécutez la commande suivante :
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDRemplacez les éléments suivants :
TARGET_HTTPS_PROXY_NAME: nom du proxy HTTPS cible.CERTIFICATE_NAME: nom du certificat SSL que vous avez créé à l'aide du gestionnaire de certificats
Créez une règle de transfert avec une adresse IP dans la région
us-east1à l'aide de la commandegcloud compute forwarding-rules create.La réservation d'une adresse IP est facultative pour une règle de transfert HTTP. Toutefois, vous devez réserver une adresse IP pour une règle de transfert HTTPS.
Dans cet exemple, une adresse IP éphémère est associée à la règle de transfert HTTP de votre équilibreur de charge. Une adresse IP éphémère reste constante tant que la règle de transfert existe. Si vous devez supprimer la règle de transfert et la recréer, celle-ci peut alors recevoir une nouvelle adresse IP.
HTTP
Pour le trafic HTTP, créez une règle de transfert régionale pour acheminer les requêtes entrantes vers le proxy HTTP cible :
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDRemplacez les éléments suivants :
FORWARDING_RULE_NAME: nom de la règle de transfert.RESERVED_IP_ADDRESS: adresse IP réservée que vous avez copiée dans la section Réserver une adresse IP statique interne
HTTPS
Pour le trafic HTTPS, créez une règle de transfert régionale pour acheminer les requêtes entrantes vers le proxy HTTPS cible :
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_IDRemplacez les éléments suivants :
FORWARDING_RULE_NAME: nom de la règle de transfert.RESERVED_IP_ADDRESS: adresse IP réservée que vous avez copiée dans la section Réserver une adresse IP statique interne
Envoyer une requête HTTP à l'équilibreur de charge
Maintenant que le service d'équilibrage de charge est en cours d'exécution, envoyez une requête depuis une VM cliente interne à la règle de transfert de l'équilibreur de charge.
Obtenez l'adresse IP de la règle de transfert de l'équilibreur de charge, qui se trouve dans la région
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_IDCopiez l'adresse IP renvoyée pour l'utiliser comme
FORWARDING_RULE_IP_ADDRESS.Créez une VM cliente dans la région
us-east1.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-sshÉtablissez une connexion SSH avec la VM cliente.
gcloud compute ssh client-a --zone=us-east1-c
Dans cet exemple, regional internal Application Load Balancer possède une adresse IP virtuelle (VIP) d'interface dans la région
us-east1du réseau VPC. Envoyez une requête HTTP au VIP de cette région à l'aide de curl.curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Remplacez
FORWARDING_RULE_IP_ADDRESSpar l'adresse IP que vous avez copiée à la première étape.
Configurer un équilibreur de charge avec une configuration multiprojet
L'exemple précédent de cette page vous explique comment configurer un déploiement de VPC partagé dans lequel tous les composants de l'équilibreur de charge et ses backends sont créés dans le projet de service.
Les équilibreurs de charge d'application internes régionaux vous permettent également de configurer des déploiements de VPC partagé dans lesquels un mappage d'URL d'un projet hôte ou de service peut faire référence à des buckets de backend situés sur plusieurs projets de service dans des environnements VPC partagés.
Vous pouvez utiliser les étapes de cette section comme référence pour configurer l'une des combinaisons compatibles répertoriées ici :
- Règle de transfert, proxy cible et mappage d'URL dans le projet hôte, et buckets de backend dans un projet de service
- Règle de transfert, proxy cible et mappage d'URL dans un projet de service, et buckets de backend dans un autre projet de service
Dans cette section, la dernière configuration est présentée à titre d'exemple.
Vue d'ensemble de la configuration
Cet exemple configure un équilibreur de charge avec son interface et son backend dans deux projets de service différents.
Si vous ne l'avez pas déjà fait, vous devez suivre toutes les étapes préalables pour configurer le VPC partagé ainsi que les réseaux, les sous-réseaux et les règles de pare-feu requis pour cet exemple. Pour obtenir des instructions, consultez les sections suivantes de cette page :
Configurer les buckets Cloud Storage et les buckets backend dans le projet de service B
Toutes les étapes de cette section doivent être effectuées dans le projet de service B.
Pour créer un bucket backend, procédez comme suit :
- Créez les buckets Cloud Storage.
- Copiez le contenu dans le bucket.
- Rendez les buckets lisibles publiquement.
- Créez un bucket backend et pointez-le vers le bucket Cloud Storage.
Créer des buckets Cloud Storage
Dans cet exemple, créez le bucket Cloud Storage dans la région us-east1.
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Cliquez sur Créer.
Dans la section Premiers pas, saisissez un nom unique qui respecte les consignes de dénomination.
Cliquez sur Choisissez où stocker vos données.
Définissez le Type d'emplacement sur Région.
Dans la liste des régions, sélectionnez us-east1.
Cliquez sur Créer.
Cliquez sur Buckets pour revenir à la page Buckets Cloud Storage. Suivez les instructions précédentes pour créer un deuxième bucket dans la région us-east1.
gcloud
Créez les buckets dans la région us-east1 à l'aide de la commande gcloud storage buckets create.
gcloud storage buckets create gs://BUCKET1_NAME \
--default-storage-class=standard \
--location=us-east1 \
--uniform-bucket-level-access \
--project=SERVICE_PROJECT_B_ID
gcloud storage buckets create gs://BUCKET2_NAME \
--default-storage-class=standard \
--location=us-east1 \
--uniform-bucket-level-access \
--project=SERVICE_PROJECT_B_ID
Remplacez les éléments suivants :
BUCKET1_NAME: nom de votre premier bucket Cloud StorageBUCKET2_NAME: nom de votre deuxième bucket Cloud StorageSERVICE_PROJECT_B_ID: ID du projet Google Cloud attribué au projet de service B
Copier des fichiers graphiques vers vos buckets Cloud Storage
Pour pouvoir tester la configuration, vous allez copier un fichier graphique depuis un bucket Cloud Storage public vers vos propres buckets Cloud Storage.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Rendre vos buckets Cloud Storage lisibles publiquement
Pour rendre tous les objets d'un bucket lisibles par tous sur l'Internet public, attribuez au compte principal allUsers le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer).
Console
Pour autoriser tous les utilisateurs à afficher des objets dans vos buckets, répétez la procédure suivante pour chaque bucket :
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Dans la liste des buckets, cochez la case correspondant à chacun de ceux que vous souhaitez rendre publics.
Cliquez sur le bouton Autorisations. La boîte de dialogue Autorisations s'affiche.
Dans la boîte de dialogue Autorisations, cliquez sur le bouton Ajouter un compte principal. La boîte de dialogue Accorder l'accès s'affiche.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers.Dans le champ Sélectionner un rôle, saisissez
Storage Object Viewerdans le champ de filtre, puis sélectionnez Lecteur des objets de l'espace de stockage dans les résultats filtrés.Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
gcloud
Pour autoriser tous les utilisateurs à afficher les objets de vos buckets, exécutez la commande buckets add-iam-policy-binding.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewer
Configurer l'équilibreur de charge avec des buckets backend
Pour créer les buckets de backend, procédez comme suit :
Créez deux buckets de backend dans la région
us-east1à l'aide de la commandegcloud beta compute backend-buckets create. Les buckets de backend ont un schéma d'équilibrage de chargeINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 \ --project=SERVICE_PROJECT_B_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 --project=SERVICE_PROJECT_B_ID
Configurer les composants d'interface de l'équilibreur de charge dans le projet de service A
Toutes les étapes de cette section doivent être effectuées dans le projet de service A.
Dans le projet de service A, créez les composants d'équilibrage de charge d'interface suivants :
- Configurez une ressource de certificat SSL associée au proxy cible. Pour en savoir plus, consultez la section Configurer une ressource de certificat SSL de ce document.
- Créez et réservez une adresse IP interne statique pour la règle de transfert de l'équilibreur de charge. Pour en savoir plus, consultez la section Réserver une adresse IP interne statique de ce document.
Créez un mappage d'URL pour acheminer les requêtes entrantes vers le bucket backend dans le projet de service B à l'aide de la commande
gcloud beta compute url-maps create.gcloud beta compute url-maps create URL_MAP_NAME \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDRemplacez les éléments suivants :
URL_MAP_NAME: nom du mappage d'URLSERVICE_PROJECT_A_ID: ID du projet Google Cloudattribué au projet de service A
Configurez les règles d'hôte et de chemin d'accès du mappage d'URL à l'aide de la commande
gcloud beta compute url-maps add-path-matcher.Dans cet exemple, le bucket backend par défaut est
backend-bucket-cats, qui gère tous les chemins d'accès qu'il contient. Toutefois, toute requête ciblanthttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgutilise le backendbackend-bucket-dogs. Par exemple, si le dossier/love-to-fetch/existe également dans votre backend par défaut (backend-bucket-cats), l'équilibreur de charge donne la priorité au backendbackend-bucket-dogs, car il existe une règle de chemin d'accès spécifique pour/love-to-fetch/*.gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \ --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \ --region=us-east1 --project=SERVICE_PROJECT_A_IDCréez un proxy cible à l'aide de la commande
gcloud compute target-http-proxies create.HTTP
Pour le trafic HTTP, créez un proxy HTTP cible qui va acheminer les requêtes vers le mappage d'URL :
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDRemplacez
TARGET_HTTP_PROXY_NAMEpar le nom du proxy HTTP cible.HTTPS
Pour le trafic HTTPS, créez un proxy HTTPS cible pour acheminer les requêtes vers le mappage d'URL. Le proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour un équilibreur de charge HTTPS. Après avoir créé le certificat, vous pouvez l'associer au proxy cible HTTPS.
Pour associer un certificat Certificate Manager, exécutez la commande suivante :
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDRemplacez les éléments suivants :
TARGET_HTTPS_PROXY_NAME: nom du proxy HTTPS cibleCERTIFICATE_NAME: nom du certificat SSL que vous avez créé à l'aide du gestionnaire de certificats.
Créez une règle de transfert avec une adresse IP dans la région
us-east1à l'aide de la commandegcloud compute forwarding-rules create.La réservation d'une adresse IP est facultative pour une règle de transfert HTTP. Toutefois, vous devez réserver une adresse IP pour une règle de transfert HTTPS.
Dans cet exemple, une adresse IP éphémère est associée à la règle de transfert HTTP de votre équilibreur de charge. Une adresse IP éphémère reste constante tant que la règle de transfert existe. Si vous devez supprimer la règle de transfert et la recréer, celle-ci peut alors recevoir une nouvelle adresse IP.
HTTP
Pour le trafic HTTP, créez une règle de transfert régionale pour acheminer les requêtes entrantes vers le proxy HTTP cible :
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --address=RESERVED_IP_ADDRESS --ports=80 \ --region=us-east1 \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDRemplacez les éléments suivants :
FORWARDING_RULE_NAME: nom de la règle de transfert.RESERVED_IP_ADDRESS: adresse IP réservée
HTTPS
Pour le trafic HTTPS, créez une règle de transfert régionale pour acheminer les requêtes entrantes vers le proxy HTTPS cible :
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/HOST_PROJECT_ID/global/networks/lb-network \ --subnet=subnet-us \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=us-east1 \ --project=SERVICE_PROJECT_A_IDRemplacez les éléments suivants :
FORWARDING_RULE_NAME: nom de la règle de transfert.RESERVED_IP_ADDRESS: adresse IP réservée
Accorder l'autorisation à l'administrateur de l'équilibreur de charge Compute d'utiliser le bucket backend
Si vous souhaitez que les équilibreurs de charge référencent des buckets de backend dans d'autres projets de service, l'administrateur de l'équilibreur de charge doit disposer de l'autorisation compute.backendBuckets.use. Pour accorder cette autorisation, vous pouvez utiliser le rôle IAM prédéfini appelé Utilisateur des services de l'équilibreur de charge Compute (roles/compute.loadBalancerServiceUser). Ce rôle doit être attribué par l'administrateur de projet de service et peut être appliqué au niveau du projet de service ou au niveau du bucket backend.
Dans cet exemple, un administrateur de projet de service du projet B doit exécuter l'une des commandes suivantes pour accorder l'autorisation compute.backendBuckets.use à un administrateur de l'équilibreur de charge du projet de service A. Cette opération peut être effectuée au niveau du projet (pour tous les buckets de backend du projet) ou par bucket backend.
Console
Autorisations au niveau du projet
Procédez comme suit pour accorder des autorisations à tous les buckets de backend de votre projet.
Vous avez besoin des autorisations compute.regionBackendBuckets.setIamPolicy et resourcemanager.projects.setIamPolicy pour effectuer cette étape.
Dans la console Google Cloud , accédez à la page IAM.
Sélectionnez votre projet.
Cliquez sur Accorder l'accès.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte principal ou un autre identifiant.
Dans la section Attribuer des rôles, cliquez sur Ajouter des rôles.
Dans la boîte de dialogue Sélectionner des rôles, dans le champ Rechercher des rôles, saisissez
Compute Load Balancer Services User.Cochez la case Utilisateur des services de l'équilibreur de charge Compute.
Cliquez sur Appliquer.
Facultatif : ajoutez une condition au rôle.
Cliquez sur Enregistrer.
Autorisations au niveau des ressources pour des buckets de backend individuels
Procédez comme suit pour accorder des autorisations à chaque bucket de backend de votre projet.
Vous devez disposer de l'autorisation compute.regionBackendBuckets.setIamPolicy pour effectuer cette étape.
Dans la console Google Cloud , accédez à la page Backends.
Dans la liste des backends, sélectionnez le bucket backend auquel vous souhaitez accorder l'accès, puis cliquez sur Autorisations.
Cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte principal ou un autre identifiant.
Dans la liste Sélectionner un rôle, sélectionnez Utilisateur des services d'équilibrage de charge Compute.
Cliquez sur Enregistrer.
gcloud
Autorisations au niveau du projet
Procédez comme suit pour accorder des autorisations à tous les buckets de backend de votre projet.
Vous avez besoin des autorisations compute.regionBackendBuckets.setIamPolicy et resourcemanager.projects.setIamPolicy pour effectuer cette étape.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser"
Remplacez les éléments suivants :
SERVICE_PROJECT_B_ID: ID du projet Google Cloudattribué au projet de service BLOAD_BALANCER_ADMIN: compte principal pour lequel vous souhaitez ajouter la liaison.
Autorisations au niveau des ressources pour des buckets de backend individuels
Au niveau du bucket backend, les administrateurs de projet de service peuvent utiliser l'une des commandes suivantes pour attribuer le rôle d'utilisateur des services de l'équilibreur de charge Compute (roles/compute.loadBalancerServiceUser) :
- Commande
gcloud projects add-iam-policy-binding - Commande
gcloud compute backend-buckets add-iam-policy-binding
Utilisez la commande gcloud projects add-iam-policy-binding pour attribuer le rôle "Utilisateur des services d'équilibreur de charge Compute".
Vous devez disposer de l'autorisation compute.regionBackendBuckets.setIamPolicy pour effectuer cette étape.
gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
SERVICE_PROJECT_B_ID: ID du projet Google Cloudattribué au projet de service BLOAD_BALANCER_ADMIN: compte principal pour lequel vous souhaitez ajouter la liaison.REGION: région Google Cloud où se trouve le bucket backendBACKEND_BUCKET_NAME: nom du bucket backend
gcloud compute backend-buckets add-iam-policy-binding pour attribuer le rôle Utilisateur des services de l'équilibreur de charge Compute.
gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
--member="user:LOAD_BALANCER_ADMIN" \
--role="roles/compute.loadBalancerServiceUser" \
--project=SERVICE_PROJECT_B_ID \
--region=REGION
Envoyer une requête HTTP à l'équilibreur de charge
Maintenant que le service d'équilibrage de charge est en cours d'exécution, envoyez une requête depuis une VM cliente interne à la règle de transfert de l'équilibreur de charge.
Obtenez l'adresse IP de la règle de transfert de l'équilibreur de charge, qui se trouve dans la région
us-east1.gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \ --region=us-east1 \ --project=SERVICE_PROJECT_A_IDCopiez l'adresse IP renvoyée pour l'utiliser comme
FORWARDING_RULE_IP_ADDRESS.Créez une VM cliente dans la région
us-east1.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-sshÉtablissez une connexion SSH avec la VM cliente.
gcloud compute ssh client-a --zone=us-east1-c
Dans cet exemple, regional internal Application Load Balancer dispose d'une adresse IP virtuelle de frontend dans la région
us-east1du réseau VPC. Envoyez une requête HTTP au VIP de cette région à l'aide de curl.curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
Remplacez
FORWARDING_RULE_IP_ADDRESSpar l'adresse IP que vous avez copiée à la première étape.
Étapes suivantes
- Présentation du VPC partagé
- Présentation de l'équilibreur de charge d'application interne
- Sous-réseaux proxy réservés aux équilibreurs de charge basés sur Envoy
- Gérer les certificats
- Nettoyer une configuration d'équilibrage de charge