Ce guide vous explique comment déployer un service Cloud Run multirégional à disponibilité élevée avec basculement et restauration automatiques pour le trafic externe. Vous pouvez configurer un service Cloud Run avec ces fonctionnalités en configurant des NEG sans serveur, un équilibreur de charge d'application externe global et une sonde de disponibilité. Pour en savoir plus, consultez la page Diffuser du trafic provenant de plusieurs régions.
Objectifs
Au cours de ce tutoriel, vous allez :
Avant de commencer
- Connectez-vous à votre Google Cloud compte. Si vous n'avez jamais utilisé Google Cloud, créez un compte pour évaluer les performances de nos produits dans des scénarios réels. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Activez les API Artifact Registry, Cloud Build, Cloud Run Admin, Network Services et Compute Engine.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.- Installez et initialisez gcloud CLI.
- Mettez à jour les composants :
gcloud components update
- Définissez les variables de configuration utilisées dans ce tutoriel :
Remplacez PROJECT_ID par l'ID de votre Google Cloud projet.PROJECT_ID= gcloud config set core/project PROJECT_ID PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") SERVICE=health-example REGION_A=us-west1 REGION_B=europe-west1
Définir les rôles requis
Pour effectuer un déploiement à partir d'une source avec une compilation, vous ou votre administrateur devez attribuer les rôles IAM suivants au compte de service Cloud Build.
Cliquez ici pour afficher les rôles requis pour le compte de service Cloud Build
Cloud Build utilise automatiquement le
compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous remplacez ce comportement. Pour
que Cloud Build puisse compiler vos sources, demandez à votre administrateur d'attribuer le rôle
Compilateur Cloud Run
(roles/run.builder) au compte de service Compute Engine par défaut
sur votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Remplacez PROJECT_NUMBER par votre Google Cloud
numéro de projet et PROJECT_ID par votre Google Cloud
ID de projet. Pour obtenir des instructions détaillées sur la façon de trouver l'ID du projet et le numéro de votre projet,
consultez Créer
et gérer des projets.
La propagation de l'attribution du rôle Compilateur Cloud Run au compte de service Compute Engine par défaut prend quelques minutes pour se propager.
Pour obtenir les autorisations nécessaires à votre identité de service pour accéder au fichier et au bucket Cloud Storage, demandez à votre
administrateur d'accorder à l'identité du service le rôle Administrateur Storage (roles/storage.admin).
Pour en savoir plus sur les rôles et les autorisations Cloud Storage, consultez la page
IAM pour Cloud Storage.
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec Google Cloud des API, telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Préparer l'exemple d'application
Pour récupérer l’exemple de code à utiliser, procédez comme suit :
Clonez le dépôt de l'exemple sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/golang-samplesAccédez au répertoire contenant l'exemple de code Cloud Run :
cd golang-samples/run/service-health
Déployer le service Cloud Run dans deux régions avec des sondes de disponibilité
Les basculements nécessitent au moins deux services provenant de régions différentes. Pour déployer vos services à partir d'une source dans deux régions différentes avec des sondes de disponibilité, exécutez les commandes suivantes :
Déployez votre service
health-exampledansus-west1eteurope-west1à partir du répertoire source. Vous avez besoin d'au moins une instance minimale pour configurer l'état du service avec des sondes de disponibilité :gcloud beta run deploy $SERVICE \ --source=. \ --regions=$REGION_A,$REGION_B \ --min=10 \ --readiness-probe httpGet.path="/are_you_ready"Répondez aux invites pour installer les API requises en répondant
ylorsque vous y êtes invité. Vous ne devez procéder à cette opération qu'une fois par projet. Répondez aux autres invites en fournissant la plate-forme et la région, si vous n'avez pas défini les paramètres par défaut pour celles-ci, comme décrit dans la section Avant de commencer.
Configurer un équilibreur de charge d'application externe global
Pour configurer un équilibreur de charge d'application externe global afin d'acheminer le trafic entre us-west1 et europe-west1, procédez comme suit :
Créez un service de backend :
gcloud compute backend-services create $SERVICE-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --globalConfigurez une adresse IP externe statique globale pour accéder à votre équilibreur de charge :
gcloud compute addresses create $SERVICE-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --globalCréez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend :
gcloud compute url-maps create $SERVICE-lb \ --default-service $SERVICE-bsCréez un proxy HTTP cible, qui va rediriger les requêtes vers votre mappage d'URL :
gcloud compute target-http-proxies create $SERVICE-hp \ --url-map=$SERVICE-lbCréez une règle de transfert pour acheminer les requêtes entrantes vers le proxy :
gcloud compute forwarding-rules create $SERVICE-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=$SERVICE-ip \ --target-http-proxy=$SERVICE-hp \ --global \ --ports=80
Ajouter vos services via un NEG sans serveur
Pour ajouter les services que vous avez déployés dans us-west1 et europe-west1 à l'aide du NEG sans serveur, procédez comme suit :
Créez un groupe de points de terminaison du réseau (NEG) sans serveur pour votre service Cloud Run dans
us-west1eteurope-west1:gcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_A \ --region $REGION_A \ --network-endpoint-type=serverless \ --cloud-run-service=$SERVICEgcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_B \ --region $REGION_B \ --network-endpoint-type=serverless \ --cloud-run-service=$SERVICEAjoutez le NEG sans serveur en tant que backend aux services de backend dans
us-west1eteurope-west1:gcloud compute backend-services add-backend $SERVICE-bs \ --global \ --network-endpoint-group=$SERVICE-neg-$REGION_A \ --network-endpoint-group-region=$REGION_Agcloud compute backend-services add-backend $SERVICE-bs \ --global \ --network-endpoint-group=$SERVICE-neg-$REGION_B \ --network-endpoint-group-region=$REGION_B
Pour obtenir d'autres options de configuration, consultez Configurer un équilibreur de charge d'application externe global avec Cloud Run.
Tester le basculement
Pour tester le basculement afin de garantir la fiabilité et la résilience de vos services Cloud Run, procédez comme suit :
Exécutez la commande suivante pour obtenir l'adresse IP de votre équilibreur de charge :
LBIP=$(gcloud compute addresses describe $SERVICE-ip --global --format='value(address)')Facultatif : Envoyez une requête à votre équilibreur de charge si vos services nécessitent une authentification :
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $LBIPObtenez la valeur de la variable LBIP en exécutant la commande
echo $LBIP. L'adresse IP de l'équilibreur de charge s'affiche. Par exemple,11.22.33.44.Pour tester un basculement, accédez à l'URL
http://LOAD_BALANCER_IP, où LOAD_BALANCER_IP correspond à la valeur que vous avez obtenue à l'étape précédente. Cliquez sur le bouton bascule de votre région dans la section Régions de diffusion. Cela désigne la région opérationnelle et l'instance qui diffuse le trafic :
Libérer de l'espace
Pour éviter que des frais supplémentaires ne soient facturés sur votre Google Cloud compte, supprimez toutes les ressources que vous avez déployées avec ce tutoriel.
Supprimer le projet
Si vous avez créé un projet pour ce tutoriel, supprimez-le. Si vous avez utilisé un projet existant et que vous devez le conserver sans les modifications que vous avez ajoutées dans ce tutoriel, supprimez les ressources que vous avez créées pour le tutoriel.
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- Dans la Google Cloud console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.
Supprimer les ressources du tutoriel
Supprimez le service Cloud Run que vous avez déployé dans ce tutoriel. Les services Cloud Run n'entraînent pas de coûts tant qu'ils ne reçoivent pas de requêtes.
Pour supprimer votre service Cloud Run, exécutez la commande suivante :
gcloud run services delete SERVICE-NAME
Remplacez SERVICE-NAME par le nom du service.
Vous pouvez également supprimer des services Cloud Run à partir de la Google Cloud console.
Supprimez la configuration régionale
gcloudpar défaut que vous avez ajoutée lors de la configuration du tutoriel :gcloud config unset run/regionSupprimez la configuration du projet :
gcloud config unset project
Étape suivante
En savoir plus sur les configurations multirégionales dans d'autres Google Cloud produits :
Découvrez comment configurer des vérifications d'état pour les services Cloud Run.
Configurer un équilibreur de charge d'application externe global avec Cloud Run