Analyser votre application à l'aide de métriques
Ce guide de démarrage rapide explique comment utiliser Cloud Deploy pour analyser votre service Cloud Run déployé, en fonction des métriques de Google Cloud Observability, afin de vous assurer que l'application fonctionne comme prévu.
Dans ce guide de démarrage rapide, vous allez :
Créer et déployer un service Cloud Run.
Dans ce cas, vous n'utiliserez pas Cloud Deploy pour le déployer.
Créer un test de disponibilité dans Google Cloud Observability.
Ce test surveille votre service Cloud Run pour s'assurer qu'il est en cours d'exécution.
Créer une règle d'alerte dans Cloud Monitoring.
Par défaut, l'analyse Cloud Deploy peut utiliser de nombreux types de métriques de Google Cloud Observability. Cette règle crée une alerte si un test de disponibilité indique un problème.
Créer une configuration Skaffold pour identifier le service Cloud Run.
Définir votre pipeline de diffusion et votre cible Cloud Deploy.
Ce pipeline ne comporte qu'une seule étape et n'utilise qu'une seule cible. Il inclut également la définition d'une tâche d'analyse.
Créer une version qui est automatiquement déployée sur la cible.
Une fois l'application déployée, l' analyse s'exécute en tant que tâche dans le déploiement progressif.
Le service doit être déployé correctement sur la cible, mais le déploiement progressif doit échouer, car la règle d'alerte génère une alerte.
Modifier la définition du service Cloud Run pour augmenter le nombre d'instances du service et créer une version.
Cette fois, le service sera déployé correctement et le déploiement progressif sera effectué.
Avant de commencer
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.
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Installez la Google Cloud CLI.
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud initIn 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.
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Installez la Google Cloud CLI.
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud initRôles requis
Pour vous assurer que le compte de service Cloud Deploy dispose des autorisations nécessaires pour exécuter des opérations Cloud Deploy et effectuer un déploiement sur Cloud Run, demandez à votre administrateur d'attribuer les rôles IAM suivants au compte de service Cloud Deploy sur votre projet :
-
Développeur Cloud Run (
roles/run.developer) -
Exécuteur Cloud Deploy (
roles/clouddeploy.jobRunner) -
Utilisateur du compte de service IAM (
roles/iam.serviceAccountUser) -
Lecteur d'alertes Monitoring (
roles/monitoring.alertViewer) -
Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Votre administrateur peut également attribuer au compte de service Cloud Deploy les autorisations requises à l'aide de rôles personnalisés ou d'autres rôles prédéfinis.
En savoir plus sur le compte de service Cloud Deploy
Déployer un service Cloud Run
Ce guide de démarrage rapide utilise une règle d'alerte qui nécessite que Cloud Run existe déjà. Nous allons donc en déployer un ici, puis nous définirons un fichier service.yaml avec le même nom de service dans une section ultérieure.
Exécutez la commande suivante pour créer le service initial :
gcloud run deploy my-analysis-run-service \
--image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
--project=PROJECT_ID \
--region=us-central1 \
--allow-unauthenticated
Remplacez PROJECT_ID par l'ID du projet.
Créer un test de disponibilité Google Cloud Observability
Ce test de disponibilité surveille votre service en cours d'exécution pour confirmer qu'il fonctionne. Dans une section ultérieure, vous créerez une règle d'alerte Google Cloud Observability qui générera une alerte si votre service ne comporte pas au moins une instance disponible en cours d'exécution.
Pour créer le test de disponibilité, exécutez la commande suivante :
gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \ --resource-type=cloud-run-revision \ --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \ --project=PROJECT_ID \ --protocol=https \ --path="/" \ --port=443 \ --period=1 \ --timeout=10 \ --service-agent-auth="oidc-token" \ --status-classes="2xx"Copiez l'ID du test de disponibilité.
L'ID se trouve dans le résultat de la commande que vous venez d'exécuter.
Préparer votre configuration Skaffold et votre définition de service
Dans ce guide de démarrage rapide, vous allez créer un fichier skaffold.yaml qui identifie le fichier manifeste à utiliser pour déployer l'exemple de service Cloud Run. Vous allez également définir le fichier service.yaml qui définit Cloud Run lui-même.
Ouvrez une fenêtre de terminal.
Créez un répertoire et accédez-y.
mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
- Créez un fichier nommé
skaffold.yamlavec le contenu suivant :
apiVersion: skaffold/v4beta7
kind: Config
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
Pour en savoir plus sur ce fichier de configuration, consultez la documentation de référence skaffold.yaml.
- Créez un fichier nommé
service.yamlavec le contenu suivant :
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-analysis-run-service
annotations:
run.googleapis.com/scalingMode: manual
run.googleapis.com/manualInstanceCount: 0
spec:
template:
spec:
containers:
- image: my-app-image
Ce fichier est une définition de service Cloud Run, qui est utilisée pour déployer l'application. L'image de conteneur à déployer est définie ici comme un
espace réservé, my-app-image, qui est remplacé par l'image spécifique lorsque vous
créez la version.
Notez que nous avons défini le mode de scaling sur manuel et le nombre d'instances sur 0.
Cela signifie que le service déployé ne pourra pas recevoir de trafic et qu'aucune instance ne sera en cours d'exécution, ce qui déclenchera une alerte. Vous allez configurer cette alerte ensuite.
Créer une règle d'alerte
Ce guide de démarrage rapide utilise une règle d'alerte Google Cloud Observability. Cette règle d'alerte génère une alerte lorsque le service Cloud Run échoue au test de disponibilité que vous avez créé précédemment.
Dans le répertoire
deploy-analysis-run-quickstart, créez un fichier nommépolicy.yamlavec le contenu suivant :displayName: Cloud Run service uptime check userLabels: policy-for: analysis-run-pipeline combiner: OR conditions: - displayName: Failure of uptime check UPTIME_ID conditionThreshold: filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision" aggregations: - alignmentPeriod: 60s crossSeriesReducer: REDUCE_COUNT_FALSE groupByFields: - resource.label.* perSeriesAligner: ALIGN_NEXT_OLDER comparison: COMPARISON_GT duration: 60s thresholdValue: 1.0Remplacez
UPTIME_IDpar l'ID du test de disponibilité que vous avez créé précédemment.Exécutez la commande suivante pour créer la règle :
gcloud monitoring policies create \ --policy-from-file=policy.yaml\ --project=PROJECT_IDRemplacez
PROJECT_IDpar l'ID du projet.Copiez l'ID de la règle à partir du résultat de la commande que vous venez d'exécuter.
Cette fois, copiez l'ID de ressource complet, y compris le chemin d'accès. Vous utiliserez cet ID dans la section suivante, dans la configuration d'analyse de votre pipeline de diffusion.
Créer votre pipeline de diffusion et votre cible
Ce pipeline de diffusion comporte une étape pour une cible : analysis-staging.
Dans le répertoire
deploy-analysis-run-quickstart, créez un fichierclouddeploy.yamlavec le contenu suivant :apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-analysis-demo-app-run description: main application pipeline serialPipeline: stages: - targetId: analysis-staging profiles: [] strategy: standard: analysis: duration: 300s googleCloud: alertPolicyChecks: - id: check-1 alertPolicies: - ALERT_POLICY_ID --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: analysis-staging description: staging Run service run: location: projects/PROJECT_ID/locations/us-central1Dans ce fichier YAML, remplacez
ALERT_POLICY_IDpar le résultat de la commandegcloud monitoring policies listque vous avez exécutée précédemment, et remplacezPROJECT_IDpar l'ID du projet que vous utilisez.Enregistrez votre pipeline et votre cible auprès du service Cloud Deploy :
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDVous disposez maintenant d'un pipeline de diffusion avec une cible, prêt à déployer votre application.
Confirmez votre pipeline et votre cible :
Dans la Google Cloud console, accédez à la page Pipelines de diffusion de Cloud Deploy pour afficher la liste de vos pipelines de diffusion disponibles.
Ouvrir la page Pipelines de diffusion
Le pipeline de diffusion que vous venez de créer s'affiche, avec une cible listée dans la colonne Cibles.

Créer une version
Une version est la ressource Cloud Deploy centrale qui représente les modifications en cours de déploiement. Le pipeline de diffusion définit le cycle de vie de cette version. Pour en savoir plus sur ce cycle de vie, consultez l'architecture du service Cloud Deploy.
Exécutez la commande suivante à partir du répertoire deploy-analysis-run-quickstart pour créer une ressource release qui représente l'image de conteneur à déployer :
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-analysis-demo-app-run \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
Notez l'option
--images= flag, que
vous utilisez pour remplacer l'espace réservé (my-app-image) dans la
définition du service par l'image spécifique qualifiée par SHA. Google vous recommande de créer des modèles pour vos définitions de service de cette manière et d'utiliser des noms d'images qualifiés par SHA lors de la création de la version.
Comme pour toutes les versions (sauf si elles incluent --disable-initial-rollout),
Cloud Deploy crée également automatiquement une ressource de
déploiement progressif. L'application est automatiquement déployée dans la seule cible configurée pour ce pipeline de diffusion.
Afficher les résultats dans la Google Cloud console
Au bout de quelques minutes, votre version est déployée dans votre environnement d'exécution cible. Vous pouvez l'afficher.
Dans la Google Cloud console, accédez à la page Pipelines de diffusion de Cloud Deploy pour afficher votre pipeline de diffusion ("deploy-analysis-demo-app-run").
Cliquez sur le nom de votre pipeline de diffusion ("deploy-analysis-demo-app-run").
La visualisation du pipeline affiche l'état de déploiement de l'application. Comme le pipeline ne comporte qu'une seule étape, la visualisation n'affiche qu'un seul nœud.

Votre version est répertoriée dans l'onglet Versions sous Détails du pipeline de diffusion.
Cliquez sur l'onglet Déploiements progressifs sous Détails du pipeline de diffusion.
Cliquez sur le nom du déploiement progressif pour afficher ses détails.
L'analyse est répertoriée en tant que tâche.

Échec de l'analyse
La tâche d'analyse que nous avons spécifiée dans la configuration de notre pipeline de diffusion s'exécute dans le cadre de ce déploiement progressif, une fois l'application déployée. Cette analyse est censée échouer, car la règle d'alerte doit déclencher une alerte. Le déploiement progressif échouera en raison de cet échec d'analyse.
Nous allons apporter une modification, puis créer une autre version qui devrait réussir.
Modifier la définition du service et créer une version
Nous allons maintenant modifier le nombre d'instances dans la définition du service afin qu'une instance du service soit en cours d'exécution et que l'alerte ne soit pas déclenchée.
Modifiez le fichier de définition Cloud Run,
service.yaml, pour remplacer la valeur derun.googleapis.com/manualInstanceCountpar1au lieu de0.Exécutez la commande suivante à partir du même répertoire
deploy-analysis-run-quickstartpour créer une autrerelease:gcloud deploy releases create test-release-002 \ --project=PROJECT_ID \ --region=us-central1 \ --delivery-pipeline=deploy-analysis-demo-app-run \ --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
Cette fois, le déploiement progressif devrait réussir. En effet, votre service Cloud Run comporte désormais une instance en cours d'exécution. Le test de disponibilité n'appellera donc pas d'alerte à partir de la règle d'alerte.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre Google Cloud compte pour les ressources utilisées sur cette page, procédez comme suit :
Supprimez le service Cloud Run :
gcloud run services delete my-analysis-run-service \ --region=us-central1 \ --project=PROJECT_IDPour supprimer le pipeline de diffusion, la cible, la version et le déploiement progressif, exécutez la commande suivante à partir du répertoire contenant la définition de votre pipeline de diffusion :
gcloud deploy delete --file=clouddeploy.yaml \ --force \ --region=us-central1 \ --project=PROJECT_IDSupprimez la règle d'alerte Google Cloud Observability :
gcloud monitoring policies delete ALERT_POLICY_IDSupprimez les buckets Cloud Storage créés par Cloud Deploy.
L'un se termine par
_clouddeploy, et l'autre est[region].deploy-artifacts.[project].appspot.com.
Voilà ! Vous avez terminé le guide de démarrage rapide.