Mengelola resource GKE menggunakan Tag

Dokumen ini menunjukkan cara menggunakan Tag untuk mengelola cluster Google Kubernetes Engine (GKE) dan menerapkan kebijakan Identity and Access Management secara bersyarat ke node.

Tentang Tag

Tag adalah pasangan nilai kunci yang memungkinkan Anda memberi anotasi dan mengelola resource Cloud de Confiance di tingkat organisasi atau project. Anda dapat menggunakan Tag untuk mengatur resource dan menerapkan kebijakan secara bersyarat, seperti kebijakan firewall atau IAM. Tag mendukung kontrol akses IAM, yang memungkinkan Anda menentukan siapa yang dapat melampirkan, membuat, memperbarui, atau menghapus Tag.

Kasus penggunaan Tag di GKE

Anda dapat menggunakan Tag di GKE untuk situasi seperti berikut:

  • Menerapkan kebijakan firewall jaringan secara kondisional ke node tertentu. Misalnya, menolak traffic masuk dari internet publik ke semua node cluster di lingkungan staging atau pengujian. Untuk mendapatkan petunjuk, lihat Menerapkan kebijakan firewall jaringan di GKE secara selektif.
  • Memberikan peran IAM secara bersyarat berdasarkan Tag. Misalnya, secara otomatis memberi kontraktor akses ke lingkungan tertentu yang biasanya hanya tersedia untuk karyawan purnawaktu. Untuk mengetahui petunjuknya, lihat bagian lain dalam dokumen ini.
  • Audit dan analisis informasi penagihan berdasarkan Tag yang diterapkan di tingkat project atau organisasi.

Cara kerjanya

Untuk penegakan kebijakan firewall jaringan secara khusus, Anda membuat tag dan menetapkan tag secara eksplisit untuk penggunaan firewall. Untuk semua tujuan lainnya, Anda membuat tag tanpa menetapkan penunjukan firewall.

Setelah membuat tag, Anda melampirkan tag tersebut ke resource GKE sebagai pasangan nilai kunci. Cara Anda melampirkan tag bergantung pada resource target:

  • Resource cluster: Untuk melampirkan tag non-firewall langsung ke resource cluster GKE, gunakan Tags API. Anda dapat melampirkan hingga 50 Tag non-firewall ke setiap resource cluster. Tag yang dilampirkan langsung ke resource cluster tidak dipropagasi ke VM Compute Engine yang mendasarinya.
  • Node pool dan node: Untuk melampirkan tag ke node pool GKE (dan menyebarkannya secara otomatis ke VM Compute Engine yang mendasarinya), gunakan GKE API. Anda dapat melampirkan Tag firewall dan non-firewall ke node pool menggunakan GKE API, hingga total maksimum lima tag (gabungan firewall dan non-firewall) per node pool.

Untuk setiap kunci, Anda dapat melampirkan satu nilai ke resource. Misalnya, jika Anda melampirkan env:dev ke cluster atau node pool GKE, Anda tidak dapat melampirkan env:prod atau env:test juga.

Metode anotasi resource di GKE

Di GKE, ada beberapa metode untuk menganotasi resource Anda, seperti yang diuraikan dalam tabel berikut:

Jenis anotasi Deskripsi Contoh
Tag (non-firewall)
  • Diterapkan langsung ke resource cluster menggunakan Tags API (hingga 50 tag non-firewall)
  • Diterapkan ke node pool dan VM Compute Engine yang mendasarinya menggunakan GKE API (hingga total lima tag per node pool, dikombinasikan dengan tag firewall)
  • Mengatur resource untuk melacak penggunaan dan penagihan
  • Menerapkan kebijakan IAM secara bersyarat
  • Mengontrol akses ke Tag tertentu dengan IAM

Untuk mempelajari lebih lanjut, lihat Ringkasan tag.

Memberikan peran IAM secara bersyarat untuk mengontrol akses ke resource yang memiliki Tag tertentu
Tag (firewall)
  • Diterapkan ke cluster atau node pool menggunakan GKE API (hingga total lima tag per node pool, digabungkan dengan tag non-firewall)
  • Menerapkan kebijakan firewall jaringan Cloud Next Generation Firewall secara bersyarat.
  • Mengontrol akses ke Tag tertentu dengan IAM
  • GKE melampirkan pasangan nilai kunci ke VM Compute Engine yang mendasarinya.

Untuk mempelajari lebih lanjut, lihat Menerapkan kebijakan firewall jaringan di GKE secara selektif.

Menolak secara otomatis traffic masuk dari internet publik ke semua lingkungan staging atau pengujian
Tag jaringan
  • Menerapkan ke cluster atau node pool menggunakan GKE API
  • String sederhana tanpa kontrol akses IAM
  • Digunakan untuk menerapkan aturan firewall VPC secara kondisional
  • GKE melampirkan pasangan nilai kunci ke VM Compute Engine pokok

Untuk mempelajari lebih lanjut, lihat Menggunakan tag jaringan untuk menerapkan aturan firewall ke node.

Menolak secara otomatis traffic masuk dari internet publik ke semua lingkungan staging atau pengujian
Label cluster GKE
  • Menerapkan ke cluster atau node pool menggunakan GKE API
  • Mengatur resource untuk melacak penggunaan dan penagihan

Untuk mempelajari lebih lanjut, lihat Label cluster.

Membedakan cluster yang dimiliki oleh pusat biaya atau tim tertentu di organisasi Anda.
Label Kubernetes
  • Menerapkan ke objek Kubernetes API
  • Mengaitkan komponen dan resource cluster satu sama lain dan mengelola siklus proses resource.

Untuk mempelajari lebih lanjut, lihat Label dan pemilih Kubernetes.

Mewajibkan workload dijadwalkan di node dengan label tertentu.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Untuk menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Melampirkan Tag ke cluster

Anda dapat melampirkan Tag ke cluster yang sudah ada jika memiliki izin yang tepat menggunakan Google Cloud CLI, konsol Cloud de Confiance , Tags API, atau Terraform.

gcloud

Sebelum dapat melampirkan tag ke resource GKE menggunakan gcloud CLI, Anda harus membuat tag dan mengonfigurasi nilainya. Untuk membuat kunci dan nilai tag, lihat Membuat tag dan Menambahkan nilai tag.

Untuk membuat binding tag guna melampirkan tag ke cluster, jalankan perintah berikut:

gcloud resource-manager tags bindings create \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Ganti kode berikut:

  • TAG_VALUE_ID: ID permanen atau nama dengan namespace dari nilai tag yang akan dilampirkan. Contoh, tagValues/4567890123. Untuk mengetahui detail tentang ID tag, lihat Definisi dan ID tag.
  • CLUSTER_LOCATION: lokasi Compute Engine. Untuk cluster zona, tentukan zona komputasi.
  • RESOURCE_ID: Nama resource lengkap cluster Anda, seperti //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Di ID resource:

    • PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.
    • CLUSTER_NAME: Nama cluster Anda.

Konsol

Sebelum dapat melampirkan tag ke resource GKE menggunakan konsolCloud de Confiance , Anda harus membuat tag dan mengonfigurasi nilainya. Untuk membuat kunci dan nilai tag, lihat Membuat tag dan Menambahkan nilai tag.

  1. Buka halaman Google Kubernetes Engine di konsol Cloud de Confiance .

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Metadata, di samping Tag, klik Edit tag.

  4. Jika organisasi Anda tidak muncul di panel Tag, klik Pilih cakupan. Pilih organisasi Anda dan klik Buka.

  5. Di panel Tag, pilih Tambahkan tag.

  6. Pilih kunci untuk tag yang ingin Anda lampirkan dari daftar. Anda dapat memfilter daftar dengan mengetik kata kunci.

  7. Pilih nilai untuk tag yang ingin dilampirkan dari daftar. Anda dapat memfilter daftar dengan mengetik kata kunci.

  8. Klik Simpan.

  9. Dalam dialog Konfirmasi, klik Konfirmasi untuk melampirkan tag.

    Notifikasi mengonfirmasi bahwa tag Anda telah diperbarui.

API

Untuk melampirkan tag ke resource, Anda harus terlebih dahulu membuat representasi JSON dari binding tag yang menyertakan ID permanen nilai tag dan resource. Untuk mengetahui informasi selengkapnya tentang format binding tag, lihat Referensi TagBinding.

Gunakan metode tagBindings.create dengan endpoint regional atau zona tempat cluster Anda berada.

POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

Ganti LOCATION dengan region atau zona tempat cluster Anda berada.

Isi permintaan JSON:

{
  "parent": "RESOURCE_ID",
  "tagValue": "TAG_VALUE_ID"
}

Ganti kode berikut:

  • RESOURCE_ID: Nama resource lengkap cluster Anda, seperti //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Di ID resource:

    • PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.
    • CLUSTER_NAME: Nama cluster Anda.
  • TAG_VALUE_ID: ID permanen atau nama dengan namespace dari nilai tag yang akan dilampirkan. Contoh, tagValues/4567890123. Untuk mengetahui detail tentang ID tag, lihat Definisi dan ID tag.

Outputnya mirip dengan hal berikut ini:

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
    "name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
}

Terraform

Untuk membuat tag, mengonfigurasi nilainya, dan melampirkan tag ke resource menggunakan Terraform, lihat contoh berikut:

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-tag"
  location = "us-central1"

  enable_autopilot = true
}

data "google_project" "default" {}

resource "google_tags_tag_key" "default" {
  parent      = "projects/${data.google_project.default.project_id}"
  short_name  = "env"
  description = "Environment tag key"
}

resource "google_tags_tag_value" "default" {
  parent      = "tagKeys/${google_tags_tag_key.default.name}"
  short_name  = "dev"
  description = "Development environment tag value."
}

resource "google_tags_location_tag_binding" "default" {
  parent    = "//container.googleapis.com/${google_container_cluster.default.id}"
  location  = google_container_cluster.default.location
  tag_value = "tagValues/${google_tags_tag_value.default.name}"
}

Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.

Mencantumkan Tag yang dilampirkan ke cluster

Anda dapat membuat daftar Tag yang dilampirkan ke cluster menggunakan gcloud CLI, konsol Cloud de Confiance , atau Tags API.

gcloud

Untuk mendapatkan daftar binding tag yang dilampirkan ke cluster, jalankan perintah berikut:

gcloud resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Ganti kode berikut:

  • CLUSTER_LOCATION: Untuk cluster regional, tentukan region komputasi. Untuk cluster zonal, tentukan zona komputasi.

  • RESOURCE_ID: Nama resource lengkap cluster Anda, seperti //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Di ID resource:

    • PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.

    • CLUSTER_NAME: Nama cluster Anda.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Cloud de Confiance .

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin Anda lihat.

  3. Di bagian Metadata, di samping Tag, cari nilai tag yang ditambahkan.

API

Untuk mendapatkan daftar binding tag cluster, gunakan metode tagBindings.list dengan endpoint regional atau zona tempat cluster Anda berada.

GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

Isi permintaan JSON:

{
  "parent": RESOURCE_ID,
}

Ganti kode berikut:

  • RESOURCE_ID: Nama resource lengkap cluster Anda, seperti //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Di ID resource:

    • PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.
    • CLUSTER_NAME: Nama cluster Anda.

Outputnya mirip dengan yang berikut ini:

"tagBindings": [
  {
    "name": "tagBindings/%2F%2Fcontainer.googleapis.com%2Fprojects%2Ftags-bugbash-project%2Flocations%2LOCATION%2Fclusters%2Ftestcluster/tagValues/758072120217",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
]

Melepaskan tag dari cluster

Anda dapat melepaskan tag dari cluster dengan menghapus resource binding tag yang dilampirkan ke cluster menggunakan gcloud CLI, konsolCloud de Confiance , atau Tags API. Jika perlu menghapus tag, Anda harus melepaskannya dari semua resource yang terlampir terlebih dahulu.

gcloud

Untuk melepaskan binding tag yang terlampir ke cluster, jalankan perintah berikut:

gcloud resource-manager tags bindings delete \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Ganti kode berikut:

  • TAG_VALUE_ID: ID permanen atau nama dengan namespace dari nilai tag yang akan dilepas. Contoh, tagValues/4567890123. Untuk mengetahui detail tentang ID tag, lihat Definisi dan ID tag.

  • CLUSTER_LOCATION: Untuk cluster regional, tentukan region komputasi. Untuk cluster zona, tentukan zona komputasi.

  • RESOURCE_ID: Nama resource lengkap cluster Anda, seperti //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Di ID resource:

    • PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.

    • CLUSTER_NAME: Nama cluster Anda.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Cloud de Confiance .

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Metadata, di samping Tag, klik Edit tag.

  4. Di panel Tag, di samping tag yang ingin dilepas, klik Hapus item.

  5. Klik Simpan.

  6. Dalam dialog Konfirmasi, klik Konfirmasi untuk melepas tag.

    Notifikasi mengonfirmasi bahwa tag Anda telah diperbarui.

API

Untuk menghapus binding tag cluster, gunakan metode tagBindings.delete dengan endpoint regional atau zona tempat cluster Anda berada.

DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAG_BINDING_NAME

Ganti TAG_BINDING_NAME dengan nama resource lengkap objek tagBinding yang ingin dilepaskan. Contoh, tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID.

Melampirkan Tag ke node pool

Anda dapat melampirkan Tag non-firewall dan firewall ke node pool GKE menggunakan GKE API. Saat Anda melampirkan tag ke node pool, GKE akan otomatis menyebarkan tag tersebut ke VM Compute Engine dasar di node pool tersebut.

  • Tag non-firewall di node pool didukung di GKE versi 1.34 dan yang lebih baru.
  • Tag non-firewall dengan ComputeClass kustom didukung di GKE versi 1.35.0-gke.2398000 dan yang lebih baru.

Melampirkan tag ke node pool Standard

Anda dapat melampirkan tag saat membuat node pool baru atau memperbarui node pool yang ada dengan menggunakan flag --resource-manager-tags:

  • Untuk melampirkan tag saat membuat node pool baru, jalankan perintah berikut:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --resource-manager-tags=TAG1,TAG2,...
    
  • Untuk melampirkan atau mengganti tag pada node pool yang ada, jalankan perintah berikut:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --resource-manager-tags=TAG1,TAG2,...
    

Ganti kode berikut:

  • NODE_POOL_NAME: Nama node pool.
  • CLUSTER_NAME: Nama cluster.
  • CLUSTER_LOCATION: Region atau zona Compute Engine cluster.
  • TAG1,TAG2,...: Daftar yang dipisahkan koma yang berisi hingga lima pasangan nilai kunci yang akan dilampirkan. Setiap pasangan nilai kunci dapat menggunakan ID permanen (misalnya, tagKeys/123456789012=tagValues/987654321098) atau nama dengan namespace (misalnya, example-project/env=dev,123456789012/team=sre).

Melampirkan tag ke cluster Autopilot atau node pool yang disediakan secara otomatis

Untuk melampirkan tag ke node di cluster Autopilot atau ke node pool baru yang disediakan otomatis di cluster Standar dengan penyediaan otomatis node yang diaktifkan, gunakan flag --autoprovisioning-resource-manager-tags:

gcloud container clusters update CLUSTER_NAME \
    --location=CLUSTER_LOCATION \
    --autoprovisioning-resource-manager-tags=TAG1,TAG2,...

Untuk menghapus semua tag yang terpasang ke node pool menggunakan GKE API, terus berikan nilai kosong ke tanda (misalnya, --resource-manager-tags="" atau --autoprovisioning-resource-manager-tags=""). Untuk mengetahui informasi selengkapnya tentang sintaksis dan pewarisan tag node pool, lihat artikel Menerapkan kebijakan firewall jaringan secara selektif di GKE.

Menghapus kunci tag dan nilai tag

Sebelum Anda menghapus kunci dan nilai tag, pastikan tag tersebut telah dilepas dari semua resource. Selanjutnya, lihat Menghapus tag untuk menghapus kunci dan nilai.

Kondisi dan Tag Identity and Access Management

Anda dapat menggunakan Tag dan kondisi IAM untuk memberikan binding peran bersyarat kepada pengguna dalam hierarki project Anda. Saat Anda mengubah atau menghapus tag yang terlampir ke sebuah cluster, GKE dapat menghapus akses pengguna ke cluster tersebut jika kebijakan izin IAM dengan binding peran bersyarat telah diterapkan. Anda dapat menggunakan kebijakan penolakan IAM dengan tag untuk mencapai tujuan seperti melindungi cluster penting dari penghapusan.

Izin untuk mencantumkan dan membuat cluster GKE diperiksa di level project, bukan di level cluster individual. Jika Anda menggunakan binding peran IAM bersyarat dengan Tag level cluster untuk membatasi akses ke cluster tertentu, pengguna tersebut mungkin mengalami error saat mencoba mencantumkan atau membuat cluster dalam project. Untuk menghindari error ini, lampirkan tag ke project induk dan gunakan binding peran bersyarat untuk memberikan daftar atau membuat akses. Untuk mengetahui informasi tentang peran dan izin, lihat referensi peran IAM.

Langkah berikutnya