Anmerkungen und Labels mit Cloud Deploy verwenden

Sie können Ihren Cloud Deploy-Ressourcen Annotationen und Labels hinzufügen. Diese sind nicht erforderlich.

In diesem Dokument werden Ressourcen aufgeführt, an die Sie Labels und Annotationen anhängen können. Außerdem wird beschrieben, wie Sie diese verwenden und wo Sie sie ansehen können.

Über Annotationen und Labels

Annotationen sind Schlüssel/Wert-Paare mit Freiformtext. Sie können damit beliebige Informationen anhängen, die mit der Ressource verknüpft sind.

Mit Labels können Sie Ressourcen organisieren. Sie können beispielsweise Logik basierend auf der Labelauswahl anwenden.

Wie Annotationen sind auch Labels Schlüssel/Wert-Paare. Sie müssen jedoch die folgenden Einschränkungen erfüllen:

  • Eine Cloud Deploy-Ressource kann maximal 64 Labels haben.

  • Schlüssel und Werte dürfen jeweils maximal 128 Byte lang sein.

  • Schlüssel und Werte dürfen nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.

  • Schlüssel müssen mit einem Kleinbuchstaben oder einem internationalen Zeichen beginnen.

  • Alle Zeichen müssen die UTF-8-Codierung verwenden. Internationale Zeichen sind erlaubt.

Das --labels Flag (z. B. in gcloud deploy releases create) kann eine Liste von Schlüssel/Wert-Paaren enthalten:

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

Weitere Informationen finden Sie in der Cloud Deploy API-Dokumentation.

Cloud Deploy-Ressourcen Annotationen und Labels hinzufügen

Sie können folgenden Cloud Deploy-Ressourcen Annotationen und Labels hinzufügen:

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

    Fügen Sie Ziele in der Zielkonfigurations-YAML Annotationen und Labels hinzu.

    Sie können beispielsweise einen Link zu weiteren Informationen zur Drittanbieterüberwachung für Ihre Anwendung einfügen. Wenn das Ziel jedoch freigegeben ist, kann es für mehrere Anwendungen verwendet werden. Der Link sollte daher nicht anwendungsspezifisch sein.

  • Releases

    Mit den Flags --labels und --annotations im gcloud deploy releases create-Befehl können Sie einem Release Annotationen oder Labels oder beides hinzufügen. Labels und Annotationen, die Sie einem Release hinzufügen, werden nicht als Labels oder Annotationen für resultierende Rollouts übernommen.

    Sie können beispielsweise Annotationen verwenden, um einen Verweis auf eine Git-Pull-Anfrage, einen Autor oder einen SHA-Hash des Git-Commits mit den zu bereitstellenden Änderungen einzufügen. Weitere Informationen finden Sie unter Herkunft mithilfe von Annotationen verfolgen.

  • Rollouts

    Um neuen Rollouts Annotationen und Labels hinzufügen, geben Sie --labels oder --annotations im gcloud deploy releases promote-Befehl an.

    Sie können dem ersten Rollout Annotationen und Labels hinzufügen, indem Sie --initial-rollout-labels oder --initial-rollout-annotations im gcloud deploy releases create-Befehl angeben.

    Annotationen bei Rollouts bieten folgende Möglichkeiten:

    • Erstellen Sie eine Annotation mit der URL, die auf die Testergebnisse verweist.
    • Erstellen Sie eine Annotation mit einer relevanten Ticketnummer aus einem Workflow-Verwaltungssystem.

Wo finde ich die Annotationen einer Ressource?

Sie können Annotationen und Labels für jede unterstützte Ressource mit dem Befehl der Ressource describe oder durch Aufrufen der Metadaten der Ressource in der Google Cloud Console anzeigen.

Über die gcloud CLI

Verwenden Sie einen describe-Befehl für die Ressource, um die Annotationen und Labels einer Ressource über die Befehlszeile aufzurufen. Das folgende Beispiel zeigt die Details für ein Ziel:

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

Der obige Befehl liefert die folgende Ausgabe:

 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'

Beachten Sie, dass diese Ausgabe die target_name-Annotation enthält.

In der Google Cloud Console

In der Console können Sie die Details einer Ressource aufrufen, um Annotationen und Labels von Cloud Deploy-Ressourcen mit solchen Metadaten anzuzeigen Google Cloud .

Im Folgenden finden Sie beispielsweise die Informationen der Lieferpipeline für eine Pipeline, die eine Annotation enthält:

Details zur Bereitstellungspipeline in der Google Cloud Console

Und hier sind die Details für ein Release:

Versionsdetails in der Google Cloud Console

Automatische Labels von Cloud Deploy

Cloud Deploy fügt gerenderten Manifesten standardmäßig folgende Labels hinzu:

  • app.kubernetes.io/managed-by:

    Ein Standardlabel zur Angabe des Bereitstellungstools. Dieses Label ist immer auf google-cloud-deploy festgelegt, um den Ursprung der Arbeitslast zu identifizieren.

  • deploy.cloud.google.com/location:

    Der Speicherort der bereitgestellten Lieferpipeline, z. B. us-central1.

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

    Die Projekt-ID der bereitgestellten Lieferpipeline.

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

    Die Ressourcen-ID der verwendeten Lieferpipeline. Diese wird aus dem Release-Snapshot übernommen.

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

    Die Ressourcen-ID des bereitgestellten Releases.

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

    Die Ressourcen-ID des Bereitstellungsziels. Diese wird aus dem Release-Snapshot übernommen.

Nutzungsbeispiel

Ein Beispiel für die Verwendung dieser automatisch angewendeten Labels wäre das Erstellen einer Grafik in Google Cloud Observability , in der ein Containermesswert von Cloud Deploy-Attributen aggregiert wird.

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

Sie können diese Funktion auch mit benutzerdefinierten Messwerten verwenden. Beispiel: PodMonitor ist mit einem Label konfiguriert, das mit app.kubernetes.io/managed-by: google-cloud-deploy übereinstimmt. Sie können dann eine Abfrage verwenden, um ein Diagramm für benutzerdefinierte Messwerte zu definieren:

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

Automatische Labels deaktivieren

Ihre Organisation lässt diese automatischen Labels möglicherweise aus regulatorischen, Compliance- oder anderen Gründen nicht zu. Zu diesem Zweck bietet der Organisationsrichtliniendienst eine Einschränkung, mit der gesteuert wird, ob diese Labels angewendet werden oder nicht.

Wenn Sie verhindern möchten, dass Cloud Deploy gerenderten Manifesten automatisch Labels hinzufügt, legen Sie die Einschränkung des Organisationsrichtliniendiensts clouddeploy.disableServiceLabelGeneration fest. Wenn Sie diese Einschränkung erzwingen, können Sie Labels nicht manuell angeben und auch nicht aus vorhandenen Releases entfernen.

Weitere Informationen zum Aktivieren von Einschränkungen finden Sie unter Boolesche Einschränkungen in Organisationsrichtlinien verwenden.