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

  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 sera déployé avec succès et le déploiement sera terminé.

Avant de commencer

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

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

    Activer les API

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

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

    Activer les API

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

    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.

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

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

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

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

    1. Modifiez le fichier de définition Cloud Run, service.yaml, pour remplacer la valeur de run.googleapis.com/manualInstanceCount de 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 à 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 :

    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