Menggunakan anotasi dan label dengan Cloud Deploy

Anda dapat melampirkan anotasi dan label ke resource Cloud Deploy. Fungsi tersebut tidak diperlukan.

Dokumen ini mencantumkan resource tempat Anda dapat melampirkan label dan anotasi, serta menjelaskan cara menggunakannya dan tempat Anda dapat melihatnya.

Tentang anotasi dan label

Anotasi adalah pasangan nilai kunci teks bentuk bebas. Anda dapat menggunakannya untuk melampirkan informasi arbitrer yang terkait dengan resource.

Anda dapat menggunakan label untuk mengatur resource. Misalnya, Anda dapat menerapkan logika berdasarkan pemilihan label.

Seperti anotasi, label adalah pasangan nilai kunci. Namun, fitur ini harus mematuhi batasan berikut:

  • Resource Cloud Deploy tidak boleh memiliki lebih dari 64 label.

  • Kunci dan nilai harus berukuran maksimal 128 byte.

  • Kunci dan nilai hanya boleh berisi huruf kecil, karakter numerik, garis bawah, dan tanda pisah.

  • Kunci harus diawali dengan huruf kecil atau karakter internasional.

  • Semua karakter harus menggunakan encoding UTF-8. Karakter internasional diperbolehkan.

Flag --labels (misalnya, pada gcloud deploy releases create) dapat mengambil daftar key-value pair:

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

Lihat dokumentasi Cloud Deploy API untuk detail selengkapnya.

Menambahkan anotasi dan label ke resource Cloud Deploy

Anda dapat menambahkan anotasi dan label ke resource Cloud Deploy berikut:

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

    Tambahkan anotasi dan label ke target dalam YAML konfigurasi target.

    Misalnya, Anda dapat menyertakan link ke informasi selengkapnya tentang pemantauan pihak ketiga untuk aplikasi Anda. Namun, jika target dibagikan, ingat bahwa target dapat digunakan untuk lebih dari satu aplikasi, sehingga link tidak boleh khusus aplikasi.

  • Rilis

    Anda dapat menambahkan anotasi atau label, atau keduanya, ke rilis menggunakan flag --labels dan --annotations pada perintah gcloud deploy releases create. Label dan anotasi yang Anda tambahkan ke rilis tidak akan dipindahkan sebagai label atau anotasi pada peluncuran yang dihasilkan.

    Misalnya, Anda dapat menggunakan anotasi untuk menyertakan referensi ke PR Git, penulis, atau hash SHA dari commit Git yang berisi perubahan yang akan di-deploy. Lihat Menggunakan anotasi untuk melacak asal rilis untuk detail lebih lanjut.

  • Peluncuran

    Anda dapat menambahkan anotasi dan label ke peluncuran baru dengan menentukan --labels atau --annotations pada perintah gcloud deploy releases promote.

    Satu-satunya cara untuk menambahkan anotasi dan label ke peluncuran pertama adalah dengan membuat peluncuran menggunakan Cloud Deploy API, dan menyertakan anotasi atau label di resource rollout.

    Beberapa hal yang dapat Anda lakukan menggunakan anotasi pada peluncuran:

    • Membuat anotasi yang berisi URL yang mengarah ke hasil pengujian.
    • Buat anotasi dengan nomor tiket yang relevan dari sistem pengelolaan alur kerja.

Di mana saya dapat menemukan anotasi aset?

Anda dapat melihat anotasi dan label untuk setiap resource yang didukung menggunakan perintah describe resource atau dengan melihat metadata resource di Konsol Google Cloud.

Dari gcloud CLI

Untuk melihat anotasi dan label resource dari command line, gunakan perintah describe pada resource tersebut. Contoh berikut menunjukkan detail untuk target:

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

Perintah di atas menampilkan output berikut:

 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'

Perhatikan bahwa output ini menyertakan anotasi target_name.

Di Konsol Google Cloud

Untuk melihat anotasi dan label resource Cloud Deploy yang memiliki metadata tersebut, lihat detail resource tersebut di Konsol Google Cloud.

Misalnya, berikut ini detail pipeline pengiriman untuk pipeline yang menyertakan anotasi:

Detail pipeline pengiriman di Konsol Google Cloud

Dan berikut ini detail untuk sebuah rilis:

Detail rilis di Konsol Google Cloud

Label otomatis dari Cloud Deploy

Secara default, Cloud Deploy menambahkan label berikut ke manifes yang dirender:

  • app.kubernetes.io/managed-by:

    Label standar untuk menunjukkan alat deployment. Nilai ini selalu ditetapkan ke google-cloud-deploy untuk mengidentifikasi asal beban kerja.

  • deploy.cloud.google.com/location:

    Lokasi pipeline pengiriman yang di-deploy, misalnya us-central1.

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

    ID project dari pipeline pengiriman yang di-deploy.

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

    ID resource dari pipeline pengiriman yang digunakan. Ini diambil dari snapshot rilis.

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

    ID resource dari rilis yang di-deploy.

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

    ID resource target deployment. Ini diambil dari snapshot rilis.

Contoh penggunaan

Salah satu contoh penggunaan label yang diterapkan secara otomatis ini adalah membuat grafik dalam Kemampuan Observasi Google Cloud yang menggabungkan metrik container berdasarkan properti 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

Anda juga dapat menggunakannya dengan metrik kustom. Misalnya, jika PodMonitor dikonfigurasi dengan label agar cocok dengan app.kubernetes.io/managed-by: google-cloud-deploy. Anda kemudian dapat menggunakan kueri untuk menentukan grafik untuk metrik kustom:

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

Menonaktifkan label otomatis

Organisasi Anda mungkin melarang label otomatis ini karena alasan peraturan, kepatuhan, atau alasan lainnya. Untuk mendukung hal ini, Layanan Kebijakan Organisasi menawarkan batasan yang mengontrol apakah label ini diterapkan atau tidak.

Untuk mencegah Cloud Deploy menambahkan label secara otomatis ke manifes yang dirender, tetapkan batasan Layanan Kebijakan Organisasi clouddeploy.disableServiceLabelGeneration agar diterapkan. Menerapkan batasan ini tidak mencegah Anda menetapkan label secara manual, dan juga tidak menghapus label dari rilis yang ada.

Lihat Menggunakan batasan boolean dalam kebijakan organisasi untuk mengetahui informasi selengkapnya tentang cara mengaktifkan batasan.