Utilizzo di annotazioni ed etichette con Google Cloud Deploy

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Puoi collegare annotazioni ed etichette alle tue risorse di Google Cloud Deploy. Non sono richiesti.

Questo documento elenca le risorse a cui puoi allegare etichette e annotazioni e descrive come puoi utilizzarle e dove visualizzarle.

Informazioni su annotazioni ed etichette

Le annotazioni sono coppie chiave-valore di testo in formato libero. Puoi utilizzarle per allegare informazioni arbitrarie associate alla risorsa.

Puoi utilizzare le etichette per organizzare le risorse. Ad esempio, puoi applicare la logica in base alla selezione delle etichette.

Come nel caso delle annotazioni, le etichette sono coppie chiave-valore. Tuttavia, devono essere conformi alle seguenti limitazioni:

  • Una risorsa Google Cloud Deploy non può avere più di 64 etichette.

  • Le chiavi e i valori devono contenere al massimo 128 byte.

  • Le chiavi e i valori possono contenere solo lettere minuscole, caratteri numerici, trattini bassi e trattini.

  • Le chiavi devono iniziare con una lettera minuscola o un carattere internazionale.

  • Tutti i caratteri devono utilizzare la codifica UTF-8. Sono consentiti caratteri internazionali.

Il flag --labels (ad esempio, su gcloud deploy releases create) può assumere un elenco di coppie chiave-valore:

"name=wrench,mass=1.3kg,count=3"

Per ulteriori dettagli, consulta la documentazione dell'API Google Cloud Deploy.

Aggiunta di annotazioni ed etichette alle risorse di Google Cloud Deploy

Puoi aggiungere annotazioni ed etichette alle seguenti risorse di Google Cloud Deploy:

apiVersion: deploy.cloud.google.com/v1
  kind: DeliveryPipeline
  metadata:
   name:
   annotations:
     key: "value"
   labels:
     key: "value"
  description:
  serialPipeline:
   stages:
   - targetId:
     profiles: []
   - targetId:
     profiles: []
  • Destinazioni

    Aggiungi annotazioni ed etichette ai target nel file YAML di configurazione di destinazione.

    Ad esempio, puoi includere un link a ulteriori informazioni sul monitoraggio di terze parti per la tua applicazione. Tuttavia, se la destinazione è condivisa, ricorda che potrebbe essere utilizzata per più di un'applicazione, quindi il link non deve essere specifico per l'applicazione.

  • Release

    Puoi aggiungere annotazioni o etichette, oppure entrambe, a una release utilizzando i flag --labels e --annotations sul comando gcloud deploy releases create. Le etichette e le annotazioni aggiunte a una release non vengono trasferite come etichette o annotazioni sulle implementazioni risultanti.

    Ad esempio, puoi utilizzare le annotazioni per includere un riferimento a un PR Git, un autore o un hash SHA del commit Git contenente le modifiche di cui eseguire il deployment. Per ulteriori dettagli, consulta Utilizzare le annotazioni per monitorare la provenienza della release.

  • Implementazioni

    Puoi aggiungere annotazioni ed etichette ai nuovi lanci specificando --labels o --annotations nel comando gcloud deploy releases promote.

    L'unico modo per aggiungere annotazioni ed etichette alla prima implementazione è creare un'implementazione utilizzando l'API Cloud Deploy e includere le annotazioni o le etichette nella risorsa rollout.

    Ecco alcune operazioni che puoi eseguire utilizzando le annotazioni in un'implementazione:

    • Crea un'annotazione contenente l'URL che punta ai risultati del test.
    • Crea un'annotazione con un numero di ticket pertinente in un sistema di gestione dei flussi di lavoro.

Dove posso trovare le annotazioni di una risorsa?

Puoi visualizzare le annotazioni e le etichette di qualsiasi risorsa supportata utilizzando il comando describe della risorsa o visualizzando i metadati della risorsa in Google Cloud Console.

Dall'interfaccia a riga di comando gcloud

Per visualizzare le annotazioni e le etichette di una risorsa dalla riga di comando, utilizza un comando describe nella risorsa. L'esempio seguente mostra i dettagli di un target:

 $ gcloud deploy targets describe qsprod --delivery-pipeline=my-demo-app-1 \
                                              --region=us-central1 \
                                              --project=quickstart-basic8

Il comando riportato sopra restituisce il seguente output:

 Target:
   annotations:
     approver_ticket_queue_url: https://workflows.example.com/deploy_approvals/4985729
   createTime: '2021-10-28T19:33:56.907887878Z'
   description: development cluster
   etag: 5b3bbee48f693cd7
   gke:
     cluster: projects/quickstart-basic8/locations/us-central1/clusters/quickstart-cluster-qsdev
   name: projects/quickstart-basic8/locations/us-central1/targets/qsdev
   uid: 3f3a5f8e7e0648e3bb17898ee531455d
   updateTime: '2021-11-10T16:55:11.502660604Z'

Nota che questo output include l'annotazione target_name.

In Google Cloud Console

Per visualizzare le annotazioni e le etichette di qualsiasi risorsa Google Cloud Deploy che ha tali metadati, visualizza i dettagli della risorsa in Google Cloud Console.

Ad esempio, ecco i dettagli della pipeline di distribuzione di una pipeline che include un'annotazione:

Dettagli della pipeline di distribuzione in Google Cloud Console

Ecco i dettagli di una release:

Dettagli della release in Google Cloud Console

Etichette automatiche di Google Cloud Deploy

Per impostazione predefinita, Google Cloud Deploy aggiunge le seguenti etichette ai manifest visualizzati:

  • app.kubernetes.io/managed-by:

    Etichetta standard che indica gli strumenti di deployment. È sempre impostato su google-cloud-deploy per identificare l'origine del carico di lavoro.

  • deploy.cloud.google.com/location:

    La località della pipeline di distribuzione di cui è stato eseguito il deployment, ad esempio us-central1.

  • deploy.cloud.google.com/project-id:

    L'ID progetto della pipeline di distribuzione di cui è stato eseguito il deployment.

  • deploy.cloud.google.com/delivery-pipeline-id:

    L'ID risorsa della pipeline di distribuzione utilizzato. che viene tratta dall'istantanea della release.

  • deploy.cloud.google.com/release-id:

    L'ID risorsa della release di cui è stato eseguito il deployment.

  • deploy.cloud.google.com/target-id:

    L'ID risorsa della destinazione del deployment. che viene tratta dall'istantanea della release.

Esempio di utilizzo

Un esempio di utilizzo di queste etichette applicate automaticamente consiste nel creare un grafico all'interno della Suite operativa di Google Cloud, che aggrega una metrica di container dalle proprietà Google Cloud Deploy:

fetch k8s_container
| metric 'kubernetes.io/container/cpu/core_usage_time'
| filter metadata.user.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
      sum(val())
| rate 1m

Puoi anche utilizzarle con le metriche personalizzate. Ad esempio, se PodMonitor è configurato con un'etichetta che corrisponde a app.kubernetes.io/managed-by: google-cloud-deploy. Puoi quindi utilizzare una query per definire un grafico per le metriche personalizzate:

fetch k8s_container
| metric workload.googleapis.com/example_requests_total
| filter metadata.user_labels.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
    sum(val())
| rate 1m

Disattivazione delle etichette automatiche

La tua organizzazione potrebbe non consentire queste etichette automatiche per motivi normativi, di conformità o per altri motivi. A supporto di ciò, il servizio dei criteri dell'organizzazione offre un vincolo che controlla se queste etichette vengono applicate o meno.

Per impedire a Google Cloud Deploy di aggiungere automaticamente le etichette ai manifest visualizzati, imposta il vincolo Service Policy Service clouddeploy.disableServiceLabelGeneration. L'applicazione di questo vincolo non ti impedisce di specificare manualmente le etichette, né le rimuovi da release esistenti.

Per saperne di più sull'attivazione dei vincoli, consulta l'articolo su come utilizzare i vincoli booleani nei criteri dell'organizzazione.