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:
Crea ed esegui il deployment di un servizio Cloud Run.
In questo caso, non utilizzerai Cloud Deploy per eseguirne il deployment.
Crea un controllo di uptime in Google Cloud Observability.
Questo controllo monitora il servizio Cloud Run per assicurarsi che sia in esecuzione.
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.
Crea una configurazione Skaffold per identificare il servizio Cloud Run.
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.
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.
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
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
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.
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 initIn 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 theresourcemanager.projects.createpermission. Learn how to grant roles.
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.
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 initRuoli 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:
-
Cloud Run Developer (
roles/run.developer) -
Cloud Deploy Runner (
roles/clouddeploy.jobRunner) -
Utente service account IAM (
roles/iam.serviceAccountUser) -
Monitoring Alert Viewer (
roles/monitoring.alertViewer) -
Consumer Service Usage (
roles/serviceusage.serviceUsageConsumer)
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.
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"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.
Apri una finestra del terminale.
Crea una nuova directory e accedi.
mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
- Crea un file denominato
skaffold.yamlcon 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.
- Crea un file denominato
service.yamlcon 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.
Nella directory
deploy-analysis-run-quickstart, crea un file denominatopolicy.yamlcon 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.0Sostituisci
UPTIME_IDcon l'ID del controllo di uptime che hai creato in precedenza.Esegui questo comando per creare la policy:
gcloud monitoring policies create \ --policy-from-file=policy.yaml\ --project=PROJECT_IDSostituisci
PROJECT_IDcon l'ID progetto.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.
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-central1In questo file YAML, sostituisci
ALERT_POLICY_IDcon l'output del comandogcloud monitoring policies listche hai eseguito in precedenza e sostituisciPROJECT_IDcon l'ID del progetto che stai utilizzando.Registra la pipeline e il target con il servizio Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDOra hai una pipeline di distribuzione, con una destinazione, pronta per il deployment della tua applicazione.
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.

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.
Nella console Google Cloud , vai alla pagina Pipeline di distribuzione di Cloud Deploy per visualizzare la pipeline di distribuzione ("deploy-analysis-demo-app-run").
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.

La tua uscita è elencata nella scheda Uscite in Dettagli della pipeline di distribuzione.
Fai clic sulla scheda Implementazioni in Dettagli pipeline di distribuzione.
Fai clic sul nome del lancio per visualizzarne i dettagli.
Analisi è elencato come job.

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.
Modifica il file di definizione di Cloud Run,
service.yaml, per cambiare il valore dirun.googleapis.com/manualInstanceCountda0a1.Esegui il comando seguente dalla stessa directory
deploy-analysis-run-quickstartper creare un altrorelease: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.
Elimina il servizio Cloud Run:
gcloud run services delete my-analysis-run-service \ --region=us-central1 \ --project=PROJECT_IDPer 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_IDElimina il criterio di avviso di Google Cloud Observability:
gcloud monitoring policies delete ALERT_POLICY_IDElimina i bucket Cloud Storage creati da Cloud Deploy.
Uno termina con
_clouddeploye l'altro è[region].deploy-artifacts.[project].appspot.com.
Ecco fatto, hai completato questa guida rapida.