Analizzare l'applicazione utilizzando le metriche

Questa guida rapida mostra come utilizzare Cloud Deploy per analizzare il servizio Cloud Run di cui è stato eseguito il deployment, in base alle metriche di Google Cloud Observability, per assicurarsi che l'applicazione funzioni come previsto.

In questa guida rapida imparerai a:

  1. Crea ed esegui il deployment di un servizio Cloud Run.

    In questo caso, non utilizzerai Cloud Deploy per eseguirne il deployment.

  2. Crea un controllo di uptime in Google Cloud Observability.

    Questo controllo monitora il servizio Cloud Run per assicurarsi che sia in esecuzione.

  3. Crea un criterio di avviso in Cloud Monitoring.

    Per impostazione predefinita, l'analisi di Cloud Deploy può utilizzare molti tipi di metriche di Google Cloud Observability. Questo criterio crea un avviso se un controllo di uptime indica un problema.

  4. Crea una configurazione Skaffold per identificare il servizio Cloud Run.

  5. Definisci la pipeline di distribuzione e il target di Cloud Deploy.

    Questa pipeline include una sola fase e utilizza un solo target, oltre alla definizione di un job di analisi.

  6. Crea una release, di cui viene eseguito automaticamente il deployment nel target.

    Dopo il deployment dell'applicazione, l'analisi viene eseguita come job nell'implementazione.

    Il servizio deve essere implementato correttamente nella destinazione, ma il rollout deve non riuscire perché la policy di avviso genererà un avviso.

  7. Modifica la definizione del servizio Cloud Run per aumentare il numero di istanze per il servizio e crea una nuova release.

    Questa volta, il deployment del servizio verrà eseguito correttamente e l'implementazione verrà completata correttamente.

Prima di iniziare

  • Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  • 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.

  • Abilita le API Cloud Deploy, Cloud Build, Cloud Run e Cloud Storage.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

  • Installa Google Cloud CLI.

  • Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  • Per inizializzare gcloud CLI, esegui questo comando:

    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.

  • Abilita le API Cloud Deploy, Cloud Build, Cloud Run e Cloud Storage.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

  • Installa Google Cloud CLI.

  • Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  • Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  • Ruoli obbligatori

    Per assicurarti che il account di servizio Cloud Deploy disponga delle autorizzazioni necessarie per eseguire le operazioni Cloud Deploy ed eseguire il deployment su Cloud Run, chiedi all'amministratore di concedere i seguenti ruoli IAMaccount di servizioount Cloud Deploy nel tuo progetto:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    L'amministratore potrebbe anche assegnare al account di servizio Cloud Deploy le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

    Scopri di più sul account di servizio Cloud Deploy.

    Esegui il deployment di un servizio Cloud Run

    Questa guida rapida utilizza una criterio di avviso che richiede che Cloud Run esista già. Quindi ne eseguiremo il deployment qui e in una sezione successiva definiremo un service.yaml utilizzando lo stesso nome del servizio.

    Esegui questo comando per creare il servizio iniziale:

    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
    

    Sostituisci PROJECT_ID con l'ID progetto.

    Crea un controllo di uptime di Google Cloud Observability

    Questo controllo di uptime monitora il servizio in esecuzione per confermare che sia in esecuzione. In una sezione successiva, creerai un criterio di avviso di Google Cloud Observability che genera un avviso se il tuo servizio non ha almeno un'istanza disponibile in esecuzione.

    1. Per creare il controllo dell'uptime, esegui questo comando:

      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. Copia l'ID del controllo di uptime.

      L'output del comando che hai appena eseguito contiene l'ID.

    Prepara la configurazione di Skaffold e la definizione del servizio

    In questa guida rapida, crei un file skaffold.yaml, che identifica il manifest da utilizzare per eseguire il deployment del servizio Cloud Run di esempio, e definisci anche il file service.yaml che definisce Cloud Run stesso.

    1. Apri una finestra del terminale.

    2. Crea una nuova directory e accedi.

    mkdir deploy-analysis-run-quickstart
    cd deploy-analysis-run-quickstart
    
    1. Crea un file denominato skaffold.yaml con il seguente contenuto:
    apiVersion: skaffold/v4beta7
    kind: Config
    manifests:
      rawYaml:
      - service.yaml
    deploy:
      cloudrun: {}
    

    Per ulteriori informazioni su questo file di configurazione, consulta il riferimento skaffold.yaml.

    1. Crea un file denominato service.yaml con il seguente contenuto:
    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
    

    Questo file è una definizione del servizio Cloud Run, che viene utilizzata per eseguire il deployment dell'applicazione. L'immagine container di cui eseguire il deployment è impostata qui come segnaposto, my-app-image, che viene sostituito con l'immagine specifica quando crei la release.

    Tieni presente che abbiamo impostato la modalità di scalabilità su manuale e il conteggio delle istanze su 0. Ciò significa che il servizio di cui è stato eseguito il deployment non sarà in grado di ricevere traffico e non ci saranno istanze in esecuzione, il che attiverà un avviso. Configurerai questo avviso in un secondo momento.

    Crea una policy di avviso

    Questa guida rapida utilizza un criterio di avviso di Google Cloud Observability. Questo criterio di avviso genera un avviso quando il servizio Cloud Run non supera il controllo dell'uptime creato in precedenza.

    1. Nella directory deploy-analysis-run-quickstart, crea un file denominato policy.yaml con il seguente contenuto:

      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
      

      Sostituisci UPTIME_ID con l'ID del controllo di uptime che hai creato in precedenza.

    2. Esegui questo comando per creare la policy:

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

      Sostituisci PROJECT_ID con l'ID progetto.

    3. Copia l'ID criterio dall'output del comando appena eseguito.

      Questa volta, copia l'intero ID risorsa, incluso il percorso. Utilizzerai questo ID nella sezione successiva, nella configurazione dell'analisi nella pipeline di distribuzione.

    Crea la pipeline di distribuzione e il target

    Questa pipeline di distribuzione ha una fase, per una destinazione: analysis-staging.

    1. Nella directory deploy-analysis-run-quickstart, crea un nuovo file, clouddeploy.yaml, con il seguente contenuto:

      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
      

      In questo file YAML, sostituisci ALERT_POLICY_ID con l'output del comando gcloud monitoring policies list che hai eseguito in precedenza e sostituisci PROJECT_ID con l'ID del progetto che stai utilizzando.

    2. Registra la pipeline e il target con il servizio Cloud Deploy:

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

      Ora hai una pipeline di distribuzione, con una destinazione, pronta per il deployment della tua applicazione.

    3. Conferma la pipeline e il target:

      Nella console Google Cloud , vai alla pagina Pipeline di distribuzione di Cloud Deploy per visualizzare un elenco delle pipeline di distribuzione disponibili.

      Apri la pagina Pipeline di distribuzione

      Viene visualizzata la pipeline di distribuzione appena creata, con un target elencato nella colonna Target.

      Pagina della pipeline di distribuzione nella console Google Cloud , che mostra la pipeline

    Crea una release

    Una release è la risorsa Cloud Deploy centrale che rappresenta le modifiche di cui viene eseguito il deployment. La pipeline di distribuzione definisce il ciclo di vita di questa release. Per informazioni dettagliate su questo ciclo di vita, consulta Architettura del servizio Cloud Deploy.

    Esegui il comando seguente dalla directory deploy-analysis-run-quickstart per creare una risorsa release che rappresenti l'immagine container da eseguire il deployment:

    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
    

    Nota il flag --images=, che utilizzi per sostituire il segnaposto (my-app-image) nella definizione del servizio con l'immagine specifica qualificata con SHA. Google consiglia di creare modelli per le definizioni dei servizi in questo modo e di utilizzare nomi di immagini qualificati SHA durante la creazione della release.

    Come per tutte le release (a meno che non includano --disable-initial-rollout), Cloud Deploy crea automaticamente anche una risorsa rollout. L'applicazione viene automaticamente sottoposta a deployment nell'unico target configurato per questa pipeline di distribuzione.

    Visualizza i risultati nella console Google Cloud

    Dopo alcuni minuti, la release viene implementata nel runtime di destinazione. Puoi visualizzarlo.

    1. Nella console Google Cloud , vai alla pagina Pipeline di distribuzione di Cloud Deploy per visualizzare la pipeline di distribuzione ("deploy-analysis-demo-app-run").

      Apri la pagina Pipeline di distribuzione

    2. Fai clic sul nome della pipeline di distribuzione ("deploy-analysis-demo-app-run").

      La visualizzazione della pipeline mostra lo stato del deployment dell'app. Poiché la pipeline contiene una sola fase, la visualizzazione mostra un solo nodo.

      Visualizzazione della pipeline di distribuzione che mostra l'operazione riuscita

      La tua uscita è elencata nella scheda Uscite in Dettagli della pipeline di distribuzione.

    3. Fai clic sulla scheda Implementazioni in Dettagli pipeline di distribuzione.

    4. Fai clic sul nome del lancio per visualizzarne i dettagli.

      Analisi è elencato come job.

      implementazioni nella console Google Cloud

    Un'analisi non riuscita

    Il job di analisi specificato nella configurazione della pipeline di distribuzione viene eseguito nell'ambito di questa implementazione, dopo il deployment dell'applicazione. Questa analisi deve non riuscire, perché la policy di avviso deve attivare un avviso. L'implementazione non riuscirà a causa di questo errore di analisi.

    Apporteremo una modifica, quindi creeremo un'altra release, che dovrebbe avere esito positivo.

    Modifica la definizione del servizio e crea una nuova release

    Ora modifichiamo il conteggio delle istanze nella definizione del servizio, in modo che ci sia un'istanza in esecuzione del servizio e l'avviso non venga attivato.

    1. Modifica il file di definizione di Cloud Run, service.yaml, per cambiare il valore di run.googleapis.com/manualInstanceCount da 0 a 1.

    2. Esegui il comando seguente dalla stessa directory deploy-analysis-run-quickstart per creare un altro 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
      

    Questa volta, l'implementazione dovrebbe riuscire. Questo perché il tuo servizio Cloud Run ora ha un'istanza in esecuzione, quindi il controllo di uptime non genererà un avviso dal criterio di avviso.

    Esegui la pulizia

    Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

    1. Elimina il servizio Cloud Run:

      gcloud run services delete my-analysis-run-service \
      --region=us-central1 \
      --project=PROJECT_ID
      
    2. Per eliminare la pipeline di distribuzione, la destinazione, la release e l'implementazione, esegui questo comando dalla directory contenente la definizione della pipeline di distribuzione:

      gcloud deploy delete --file=clouddeploy.yaml \
      --force \
      --region=us-central1 \
      --project=PROJECT_ID
      
    3. Elimina il criterio di avviso di Google Cloud Observability:

      gcloud monitoring policies delete  ALERT_POLICY_ID
      
    4. Elimina i bucket Cloud Storage creati da Cloud Deploy.

      Uno termina con _clouddeploy e l'altro è [region].deploy-artifacts.[project].appspot.com.

      Apri la pagina del browser Cloud Storage

    Ecco fatto, hai completato questa guida rapida.

    Passaggi successivi