Mengelola resource GKE menggunakan Tag


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

Ringkasan

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

Kasus penggunaan untuk Tag di GKE

Anda dapat menggunakan Tag di GKE untuk situasi seperti berikut:

  • Menerapkan kebijakan firewall jaringan secara bersyarat ke node tertentu. Misalnya, tolak traffic masuk dari internet publik ke semua node cluster di lingkungan staging atau pengujian. Untuk mengetahui petunjuknya, lihat Menerapkan kebijakan firewall jaringan secara selektif di GKE.
  • Memberikan peran IAM secara bersyarat berdasarkan Tag. Misalnya, secara otomatis memberikan akses kepada kontraktor 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

Khusus untuk penerapan kebijakan firewall jaringan, Anda membuat tag dan menetapkan tag secara eksplisit untuk penggunaan firewall. Untuk tujuan lainnya, Anda membuat tag tanpa menetapkan penetapan firewall.

Setelah membuat tag, Anda akan melampirkan tag tersebut ke resource GKE sebagai pasangan nilai kunci. Untuk kebijakan firewall jaringan, Anda menggunakan GKE API, sedangkan untuk semua tujuan lainnya, Anda menggunakan Tags API.

Untuk setiap kunci, Anda dapat melampirkan satu nilai ke resource. Misalnya, jika Anda melampirkan env:dev ke cluster GKE, Anda tidak dapat menambahkan env:prod atau env:test juga. Anda dapat melampirkan hingga 50 Tag non-firewall dan hingga lima Tag firewall ke setiap resource.

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)
  • Menerapkan ke resource cluster menggunakan Tags API
  • 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)
  • Menerapkan ke cluster atau node pool menggunakan GKE API
  • Menerapkan kebijakan firewall jaringan Cloud Next Generation Firewall secara kondisional.
  • 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 secara selektif di GKE.

Otomatis menolak 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
  • Gunakan untuk menerapkan aturan firewall VPC secara kondisional
  • GKE melampirkan pasangan nilai kunci ke VM Compute Engine yang mendasarinya

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

Otomatis menolak 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
  • Berlaku untuk 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 menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin 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 gcloud components update.

Melampirkan Tag ke cluster

Anda dapat melampirkan Tag ke cluster yang sudah ada jika memiliki izin yang tepat menggunakan Google Cloud CLI, konsol Google Cloud, 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 artikel Membuat tag dan Menambahkan nilai tag.

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

gcloud alpha 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: Google Cloud Project ID Anda.
    • CLUSTER_NAME: Nama cluster Anda.

Konsol

Sebelum dapat melampirkan tag ke resource GKE menggunakan konsol Google Cloud, Anda harus membuat tag dan mengonfigurasi nilainya. Untuk membuat kunci dan nilai tag, lihat artikel Membuat tag dan Menambahkan nilai tag.

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

    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: Google Cloud Project ID 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

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

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 Google Cloud, atau Tags API.

gcloud

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

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

Ganti kode berikut:

  • 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: Google Cloud Project ID Anda.

    • CLUSTER_NAME: Nama cluster Anda.

Konsol

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    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 saat ini 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: Google Cloud Project ID 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, konsol Google Cloud, 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 alpha 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: Google Cloud Project ID Anda.

    • CLUSTER_NAME: Nama cluster Anda.

Konsol

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    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

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. 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.

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.

Untuk mengetahui informasi selengkapnya tentang pemberian akses bersyarat di IAM, lihat Kondisi dan Tag Identity and Access Management.

Langkah berikutnya