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 :

  1. Créer et déployer un service Cloud Run.

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

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

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

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

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

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

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

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

    Go to project selector

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

    Enable the APIs

  • 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 init
  • 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

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

    Enable the APIs

  • 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 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 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 :

    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.

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

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

    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 test de disponibilité 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'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.

    1. Dans le répertoire deploy-analysis-run-quickstart, créez un fichier clouddeploy.yaml avec 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-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 maintenant d'un pipeline de diffusion avec une cible, prêt à déployer votre application.

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

      Page du pipeline de diffusion 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 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.

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

      Ouvrir la page Pipelines de diffusion

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

      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 progressifs sous Détails du pipeline de diffusion.

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

      L'analyse est répertoriée en tant que tâche.

      Déploiements dans la console Google Cloud

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

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

    2. Exécutez la commande suivante à partir du même répertoire deploy-analysis-run-quickstart pour créer une 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 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 :

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

    Étape suivante