Definire un'analisi personalizzata

Cloud Deploy supporta i job di analisi che utilizzano gli avvisi generati da Google Cloud Observability in base a metriche e altri dati provenienti anche da Google Cloud Observability. Tuttavia, puoi anche estendere Cloud Deploy per utilizzare altri provider di metriche. Questo documento descrive come configurare e utilizzare un job di analisi e i requisiti per un container personalizzato che include la logica per analizzare le metriche del provider di tua scelta.

Prima di iniziare

  1. Accedi al tuo Account Google.

    Se non ne hai già uno, registrati per un nuovo account.

  2. Installa Google Cloud CLI.

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

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Verifica di disporre delle autorizzazioni necessarie per completare questa guida.

  6. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  7. Abilita le API Compute Engine e Cloud Deploy:

    Ruoli richiesti per abilitare le API

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

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com
  8. Installa Google Cloud CLI.

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

  10. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  11. Verifica di disporre delle autorizzazioni necessarie per completare questa guida.

  12. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  13. Abilita le API Compute Engine e Cloud Deploy:

    Ruoli richiesti per abilitare le API

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

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare e utilizzare i job di analisi, chiedi all'amministratore di concederti i seguenti ruoli IAM sull'account del tuo progetto:

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

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Per assicurarti che il account di servizio Cloud Deploy disponga delle autorizzazioni necessarie per creare e utilizzare i job di analisi, chiedi all'amministratore di concedere i seguenti ruoli IAM al account di servizio 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.

Configurare un job di analisi personalizzato

Un job di analisi personalizzato è uguale a un job di analisi che utilizza gli avvisi di Google Cloud Observability, ma il job personalizzato utilizza una o più attività che fanno riferimento a container personalizzati e ai comandi da eseguire su questi container per elaborare i dati del provider di metriche.

Questa sezione descrive come configurare un job di analisi Cloud Deploy che utilizza un provider non-Google Cloud di monitoraggio.

La sezione analysis può essere utilizzata direttamente all'interno di una configurazione della strategia di deployment (strategy.standard.analysis, per una strategia standard). Se vuoi configurare l'analisi per fase, utilizza un canary personalizzato (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis).

strategy:
  standard:
    analysis:
      duration: DURATION
      customChecks:
      - id: CHECK_ID
        frequency: FREQUENCY
        task:
          type: container
          image: IMAGE_NAME
          command: COMMAND
          args: [ARGS]
          env:
            [VAR_NAME: VALUE]

Dove:

  • DURATION

    Indica la durata, in secondi, di esecuzione del job di analisi. Al termine della durata, il job viene completato. Se l'analisi non riesce (il container restituisce un codice di uscita diverso da zero), il job viene completato (FAILED) prima della scadenza della durata.

  • CHECK_ID

    È un ID per il singolo controllo. Questo ID deve essere univoco all'interno di questo job di analisi.

  • FREQUENCY

    Indica la frequenza, in secondi, di esecuzione del singolo controllo.

  • IMAGE_NAME

    È il percorso e il nome che identificano l'immagine container.

  • COMMAND

    È il comando da eseguire sul container, ad esempio uno script shell (/bin/bash).

  • ARGS

    È un elenco di argomenti per il comando. Si tratta di un elenco separato da virgole. Se COMMAND_TO_RUN è "/bin/sh", uno degli argomenti qui sarà -c e un altro argomento sarà l'intero comando che vuoi eseguire nella shell che stai richiamando.

  • VAR_NAME

    È il nome di una variabile di ambiente da passare al container. Utilizza le variabili di ambiente per configurare il comportamento del container. Ovvero, le variabili e i relativi valori indicano al container cosa monitorare in modo specifico nel provider di metriche.

    Qui puoi utilizzare i parametri di sistema come variabili di ambiente.

  • VALUE

    È il valore di ogni variabile di ambiente. Cloud Deploy non esegue alcuna operazione con queste variabili di ambiente, tranne passarle, con i relativi valori, al container. Spetta al container utilizzare i valori nella logica di analisi.

Ogni controllo in una definizione di analisi personalizzata include un'attività che fa riferimento a un container, al comando o ai comandi da eseguire sul container e a eventuali variabili di ambiente applicabili da passare al container.

Il container personalizzato

Per l'analisi personalizzata, il container che fornisci è responsabile dell'analisi della telemetria, dei log o di altri dati del provider di metriche che utilizzi. Il job di analisi Cloud Deploy attende il codice restituito dal container.

Cosa deve fare il container personalizzato

Il container personalizzato è responsabile dell'inserimento dei dati dal provider di metriche, della determinazione se le metriche, i log o altri dati indicano un'applicazione funzionante correttamente e della restituzione dei risultati a Cloud Deploy.

Cosa deve restituire il container personalizzato

Cloud Deploy non richiede nulla dal container personalizzato, tranne che restituisca un codice di uscita zero o diverso da zero. Se il container restituisce un codice di uscita diverso da zero, l'analisi non riesce.

Il container può scrivere i risultati in un file denominato results.json (in formato JSON), che si trova nel bucket Cloud Storage fornito da Cloud Deploy. Il file conterrà i metadati, sotto forma di coppie chiave-valore. Questo non è obbligatorio.

Variabili di ambiente disponibili

Cloud Deploy fornisce e popola anche le seguenti variabili di ambiente nell'ambiente di esecuzione. Puoi utilizzare queste variabili di ambiente come parte del tuo hook di deployment, job di verifica, o del target personalizzato rendering o deployment.

  • ANTHOS_MEMBERSHIP

    Per i target di tipo ANTHOS, il nome della risorsa completamente specificato dell'appartenenza ad Anthos.

  • CLOUD_RUN_LOCATION

    Per i target di tipo RUN, la regione in cui è stato eseguito il deployment del servizio Cloud Run.

  • CLOUD_RUN_PROJECT

    Per i target di tipo RUN, il progetto in cui è stato creato il servizio Cloud Run.

  • CLOUD_RUN_SERVICE

    Per i target di tipo RUN, il nome del servizio Cloud Run di cui è stato eseguito il deployment.

  • CLOUD_RUN_SERVICE_URLS

    Per i target di tipo RUN, l'URL o gli URL (elenco separato da virgole) che gli utenti finali utilizzeranno per accedere al tuo servizio. Puoi trovarli nei dettagli del servizio Cloud Run per il tuo servizio, nella Google Cloud console. Gli URL vengono generati da Cloud Run dopo che il servizio o i servizi Cloud Run sono stati sottoposti a deployment. Pertanto, questa variabile di ambiente è disponibile solo nei hook post-deployment e nei job di verifica.

  • CLOUD_RUN_REVISION

    Per i target di tipo RUN, la revisione specifica del servizio Cloud Run.

  • GKE_CLUSTER

    Per i target di tipo GKE, il nome della risorsa completamente specificato del cluster Google Kubernetes Engine, ad esempio projects/p/locations/us-central1/clusters/dev.

  • TARGET_TYPE

    Il tipo di runtime specifico del target. Può essere GKE, ANTHOS o RUN. Per i target personalizzati, questa opzione non verrà impostata.

  • CLOUD_DEPLOY_LOCATION

    La regione contenente le risorse Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    L'ID della pipeline di distribuzione.

  • CLOUD_DEPLOY_TARGET

    L'ID del target.

  • CLOUD_DEPLOY_PROJECT

    Il Google Cloud numero di progetto del progetto contenente le risorse Cloud Deploy.

  • CLOUD_DEPLOY_PROJECT_ID

    L'ID progetto del progetto. Google Cloud

  • CLOUD_DEPLOY_RELEASE

    L'ID della release in cui verranno eseguiti gli hook.

  • CLOUD_DEPLOY_ROLLOUT

    L'ID del rollout che contiene i job per gli hook.

  • CLOUD_DEPLOY_JOB_RUN

    L'ID dell'esecuzione del job che rappresenta l'esecuzione corrente del job.

  • CLOUD_DEPLOY_PHASE

    La fase del rollout che contiene il job per l'hook di deployment, il job di verifica o il rendering o il deployment personalizzato.

Passaggi successivi