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 :

  1. Créez et déployez un service Cloud Run.

    Dans ce cas, vous n'utiliserez pas Cloud Deploy pour le déployer.

  2. 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.

  3. 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.

  4. Créez une configuration Skaffold pour identifier le service Cloud Run.

  5. Définissez votre pipeline de livraison 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.

  6. 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.

  7. 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 se déploie correctement et le déploiement se termine sans problème.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. 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.

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. Install the Google Cloud CLI.

  7. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  10. 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.

  11. Verify that billing is enabled for your Google Cloud project.

  12. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  13. Install the Google Cloud CLI.

  14. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  15. To initialize the gcloud CLI, run the following command:

    gcloud init

Rô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 sur Cloud Run, demandez à votre administrateur d'accorder les rôles IAM suivants au compte de service Cloud Deploy sur votre projet :

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 ne dispose pas d'au moins une instance disponible en cours d'exécution.

  1. Pour créer le contrôle du temps d'activité, 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"
    
  2. 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.

  1. Ouvrez une fenêtre de terminal.

  2. Créez un répertoire et accédez-y.

mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
  1. Créez un fichier nommé skaffold.yaml avec 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.

  1. Créez un fichier nommé service.yaml avec 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 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.

  1. Dans le répertoire deploy-analysis-run-quickstart, créez un fichier nommé policy.yaml avec 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.0
    

    Remplacez UPTIME_ID par l'ID du contrôle du temps d'activité que vous avez créé précédemment.

  2. Exécutez la commande suivante pour créer la règle :

    gcloud monitoring policies create \
      --policy-from-file=policy.yaml\
      --project=PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet.

  3. Copiez l'ID de la règle à partir du résultat de la commande que vous venez d'exécuter.

    Cette fois, 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.

  1. Dans le répertoire deploy-analysis-run-quickstart, créez un fichier nommé clouddeploy.yaml contenant 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-central1
    

    Dans ce fichier YAML, remplacez ALERT_POLICY_ID par le résultat de la commande gcloud monitoring policies list que vous avez exécutée précédemment, et remplacez PROJECT_ID par l'ID du projet que vous utilisez.

  2. Enregistrez votre pipeline et votre cible auprès du service Cloud Deploy :

    gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

    Vous disposez désormais d'un pipeline de livraison avec une cible, prêt à déployer votre application.

  3. 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.

    Page du pipeline de livraison dans la console Google Cloud , affichant votre pipeline

Créer une version

Une version est la ressource Cloud Deploy centrale qui représente les modifications déployées. 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'option --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 de déploiement progressif. L'application est automatiquement déployée dans la cible configurée pour ce pipeline de livraison.

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.

  1. 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").

    Ouvrir la page Pipelines de diffusion

  2. 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.

    Visualisation du pipeline de livraison indiquant la réussite

    Votre version est répertoriée dans l'onglet Versions sous Détails du pipeline de diffusion.

  3. Cliquez sur l'onglet Déploiements sous Détails du pipeline de diffusion.

  4. Cliquez sur le nom du déploiement pour afficher ses détails.

    Analyse est listé comme un emploi.

    Déploiements dans la console Google Cloud

Échec de l'analyse

Le job d'analyse que nous avons spécifié dans la configuration de notre pipeline de livraison 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 être acceptée.

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. Ainsi, une instance du service sera en cours d'exécution et l'alerte ne sera pas déclenchée.

  1. Modifiez le fichier de définition Cloud Run, service.yaml, pour remplacer la valeur de run.googleapis.com/manualInstanceCount 0 par 1.

  2. Exécutez la commande suivante à partir du même répertoire deploy-analysis-run-quickstart pour créer un autre release :

    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 de la part 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 :

  1. Supprimez le service Cloud Run :

    gcloud run services delete my-analysis-run-service \
    --region=us-central1 \
    --project=PROJECT_ID
    
  2. Pour 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_ID
    
  3. Supprimez la règle d'alerte Google Cloud Observability :

    gcloud monitoring policies delete  ALERT_POLICY_ID
    
  4. Supprimez 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.

    uvrez la page du navigateur Cloud Storage

Voilà ! Vous avez terminé le guide de démarrage rapide.

Étapes suivantes