Analyser votre application à l'aide de métriques
Ce guide de démarrage rapide vous 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 effectuer les opérations suivantes :
Créez et déployez un service Cloud Run.
Dans ce cas, vous n'utiliserez pas Cloud Deploy pour le déployer.
Créez un test de disponibilité dans Google Cloud Observability.
Cette vérification surveille votre service Cloud Run pour s'assurer qu'il est en cours d'exécution.
Créez une règle d'alerte dans Cloud Monitoring.
Par défaut, l'analyse Cloud Deploy peut utiliser de nombreux types de métriques issues de Google Cloud Observability. Cette règle crée une alerte si un test de disponibilité indique un problème.
Créez une configuration Skaffold pour identifier le service Cloud Run.
Définissez 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 la définition d'un job d'analyse.
Créez 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 job dans le déploiement.
Le service doit se déployer correctement sur la cible, mais le déploiement doit échouer, car la règle d'alerte générera une alerte.
Modifiez 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é avec succès et le déploiement sera terminé.
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.
Activez les API Cloud Deploy, Cloud Build, Cloud Run et Cloud Storage.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.
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.
Activez les API Cloud Deploy, Cloud Build, Cloud Run et Cloud Storage.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.
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 déployer des applications sur Cloud Run, demandez à votre administrateur d'accorder 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 le service Cloud Run existe déjà. Nous allons donc en déployer un ici, et dans une section ultérieure, nous définirons un service.yaml en utilisant le même nom de service.
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 allez créer une règle d'alerte Google Cloud Observability qui génère une alerte si votre service n'a 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 figure dans le résultat de la commande que vous venez d'exécuter.
Préparer votre configuration Skaffold et la définition de votre 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 sur 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 en tant qu'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 configurerez 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.yamlet contenant ce qui suit :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 contrôle du temps d'activité 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-ci, copiez l'intégralité de l'ID de ressource, y compris le chemin d'accès. Vous utiliserez cet ID dans la section suivante, dans la configuration de l'analyse de votre pipeline de diffusion.
Créer votre pipeline de livraison et votre cible
Ce pipeline de livraison comporte une étape pour une cible : analysis-staging.
Dans le répertoire
deploy-analysis-run-quickstart, créez un fichier nomméclouddeploy.yamlcontenant les éléments suivants :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 désormais d'un pipeline de livraison avec une cible, prêt à déployer votre application.
Confirmez votre pipeline et votre cible :
Dans la console Google Cloud , accédez à la page Pipelines de livraison de Cloud Deploy pour afficher la liste de vos pipelines de livraison disponibles.
Ouvrir la page Pipelines de diffusion
Le pipeline de livraison 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 livraison définit le cycle de vie de cette version. Pour en savoir plus sur ce cycle de vie, consultez 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'indicateur --images=, que vous utilisez pour remplacer l'espace réservé (my-app-image) dans la définition de 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 versions.
Comme pour toutes les versions (sauf celles qui incluent --disable-initial-rollout), Cloud Deploy crée automatiquement une ressource déploiement progressif. L'application est automatiquement déployée dans la cible configurée pour ce pipeline de déploiement.
Afficher les résultats dans la console Google Cloud
Au bout de quelques minutes, votre version est déployée dans votre environnement d'exécution cible. Vous pouvez le consulter.
Dans la console Google Cloud , accédez à la page Pipelines de livraison de Cloud Deploy pour afficher votre pipeline de livraison ("deploy-analysis-demo-app-run").
Cliquez sur le nom de votre pipeline de livraison ("deploy-analysis-demo-app-run").
La visualisation du pipeline indique l'état de déploiement de l'application. Comme il n'y a qu'une seule étape dans le pipeline, 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 sous Détails du pipeline de diffusion.
Cliquez sur le nom du déploiement pour afficher ses détails.
Analyse est listé comme un emploi.

Échec de l'analyse
Le job d'analyse que nous avons spécifié dans la configuration de notre pipeline de déploiement s'exécute dans le cadre de ce déploiement, 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 échouera en raison de cet échec d'analyse.
Nous allons apporter une modification, puis créer une autre version, qui devrait alors aboutir.
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/manualInstanceCountde0par1.Exécutez la commande suivante à partir du même répertoire
deploy-analysis-run-quickstartpour créer un 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 devrait réussir. En effet, votre service Cloud Run dispose désormais d'une instance en cours d'exécution. La vérification du temps d'activité n'appelle 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 compte Google Cloud , 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 déploiement, la cible, la version et le déploiement, exécutez la commande suivante à partir du répertoire contenant la définition de votre pipeline de déploiement :
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
_clouddeployet l'autre est[region].deploy-artifacts.[project].appspot.com.
Voilà ! Vous avez terminé le guide de démarrage rapide.