Dokumen ini menjelaskan cara menyiapkan dan menggunakan Autentikasi Cluster Workload Identity untuk Google Distributed Cloud (khusus software) di bare metal. Alih-alih kunci akun layanan, Autentikasi Cluster Workload Identity menggunakan token berumur pendek dan Workload Identity Federation untuk membuat dan mengamankan cluster Anda. Kredensial berjangka pendek untuk akun layanan berbentuk token akses OAuth 2.0. Token akses tidak berlaku lagi setelah 1 jam secara default. Demikian pula, masa berlaku token penarikan gambar juga berakhir setelah 1 jam secara default.
Sebaliknya, mode kunci, metode standar untuk membuat dan mengamankan cluster, menggunakan kunci akun layanan yang didownload. Saat membuat cluster yang dikelola sendiri (admin, hybrid, atau mandiri), Anda menentukan jalur ke kunci yang didownload. Kemudian, kunci disimpan sebagai Secret di cluster dan cluster pengguna terkelola mana pun. Secara default, masa berlaku kunci akun layanan tidak pernah berakhir dan berisiko keamanan jika tidak dikelola dengan benar. Untuk mengetahui informasi tentang cara menyetel waktu habis masa berlaku untuk kunci akun layanan Anda, lihat Waktu habis masa berlaku untuk kunci yang dikelola pengguna.
Autentikasi Cluster Workload Identity memberikan dua manfaat utama dibandingkan dengan penggunaan kunci akun layanan:
Keamanan yang ditingkatkan: Kunci akun layanan memiliki risiko keamanan jika tidak dikelola dengan benar. Token OAuth 2.0 dan Federasi Workload Identity dianggap sebagai alternatif terbaik untuk kunci akun layanan. Untuk mengetahui informasi selengkapnya tentang token akun layanan, lihat Kredensial akun layanan jangka pendek. Untuk mengetahui informasi selengkapnya tentang Workload Identity Federation, lihat Workload Identity Federation.
Pengurangan pemeliharaan: Kunci akun layanan memerlukan lebih banyak pemeliharaan. Merotasi dan mengamankan kunci ini secara rutin dapat menjadi beban administratif yang signifikan.
Autentikasi Cluster Workload Identity diperkenalkan untuk Pratinjau dengan rilis 1.30 dan tersedia secara umum untuk rilis 1.33 dan yang lebih baru. Autentikasi Cluster Workload Identity hanya dapat diaktifkan saat membuat cluster baru. Anda tidak dapat mengonfigurasi cluster yang ada untuk menggunakan Autentikasi Cluster Workload Identity selama update atau upgrade. Untuk mengetahui batasan tambahan, lihat Batasan.
Halaman ini ditujukan bagi Admin, arsitek, dan Operator yang menyiapkan, memantau, dan mengelola siklus proses infrastruktur teknologi yang mendasarinya. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam kontenGoogle Cloud , lihat Peran dan tugas pengguna GKE umum.
Sebelum memulai
Di bagian berikut, Anda akan membuat akun layanan dan memberikan peran yang diperlukan untuk Autentikasi Cluster Workload Identity. Petunjuk penyiapan dalam dokumen ini bukan pengganti petunjuk dalam Menyiapkan Google Cloud resource, tetapi diperlukan sebagai tambahan untuk prasyarat penginstalan hanya software Google Distributed Cloud standar. Akun layanan yang diperlukan untuk Autentikasi Cluster Workload Identity mirip dengan akun layanan yang dijelaskan dalam Menyiapkan Google Cloud resource, tetapi akun layanan ini diberi nama unik, sehingga tidak mengganggu cluster yang menggunakan kunci akun layanan default.
Akun layanan yang diperlukan untuk Autentikasi Cluster Workload Identity berbeda untuk penawaran Pratinjau dan GA seperti yang dijelaskan dalam tabel berikut:
1.33 dan yang lebih baru
Akun layanan | Tujuan | Peran |
---|---|---|
admin-sa |
Anda menggunakan akun layanan ini untuk membuat token. Setiap token memiliki hak istimewa yang terkait dengan peran akun layanan. |
roles/gkehub.admin roles/iam.serviceAccountAdmin roles/iam.serviceAccountTokenCreator roles/logging.admin roles/monitoring.admin roles/resourcemanager.projectIamAdmin
|
baremetal-gcr |
Google Distributed Cloud menggunakan akun layanan ini untuk mendownload image container dari Artifact Registry. | Tidak ada |
1.30-1.32
Akun layanan | Tujuan | Peran |
---|---|---|
admin-sa |
Anda menggunakan akun layanan ini untuk membuat token. Setiap token memiliki hak istimewa yang terkait dengan peran akun layanan. |
roles/gkehub.admin roles/iam.serviceAccountAdmin roles/iam.serviceAccountTokenCreator roles/logging.admin roles/monitoring.admin
|
baremetal-controller |
Connect Agent
menggunakan akun layanan ini untuk mempertahankan koneksi antara cluster Anda dan
Google Cloud serta untuk mendaftarkan cluster Anda ke
fleet.
Akun layanan ini juga memperbarui token untuk akun layanan baremetal-gcr .
|
roles/gkehub.admin roles/monitoring.dashboardEditor roles/serviceusage.serviceUsageViewer
|
baremetal-cloud-ops |
Agen Stackdriver menggunakan akun layanan ini untuk mengekspor log dan metrik dari cluster ke Cloud Logging dan Cloud Monitoring. |
roles/kubernetesmetadata.publisher roles/logging.logWriter roles/monitoring.dashboardEditor roles/monitoring.metricWriter roles/monitoring.viewer roles/opsconfigmonitoring.resourceMetadata.writer roles/serviceusage.serviceUsageViewer roles/stackdriver.resourceMetadata.writer
|
baremetal-gcr |
Google Distributed Cloud menggunakan akun layanan ini untuk mendownload image container dari Artifact Registry. | Tidak ada |
Menyiapkan akun layanan
Bagian berikut berisi petunjuk untuk membuat akun layanan yang diperlukan dan memberikan peran yang diperlukan untuk Autentikasi Cluster Workload Identity. Untuk mengetahui daftar akun layanan dan perannya yang diperlukan, lihat tabel di bagian sebelumnya.
Membuat akun layanan
Untuk membuat akun layanan bagi Autentikasi Cluster Workload Identity, gunakan langkah-langkah berikut:
Di workstation admin, login ke Google Cloud CLI:
gcloud auth login
Buat akun layanan yang diperlukan untuk Autentikasi Cluster Workload Identity:
Nama akun layanan
admin-sa
bersifat arbitrer. Anda dapat mengubah nama jika menyebabkan konflik dalam project Anda. Akun layanan lainnya untuk Autentikasi Cluster Workload Identity memiliki nama yang telah ditentukan sebelumnya yang dapat disesuaikan, jika Anda mau.1.33 dan yang lebih baru
gcloud iam service-accounts create admin-sa \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-gcr \ --project=PROJECT_ID
Ganti
PROJECT_ID
dengan ID Google Cloud project Anda.1.30-1.32
gcloud iam service-accounts create admin-sa \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-controller \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-cloud-ops \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-gcr \ --project=PROJECT_ID
Ganti
PROJECT_ID
dengan ID Google Cloud project Anda.
Menambahkan binding kebijakan Identity and Access Management untuk akun layanan
Gunakan langkah-langkah berikut untuk menerapkan binding kebijakan Identity and Access Management yang diperlukan ke akun layanan baru:
1.33 dan yang lebih baru
Tambahkan binding kebijakan IAM untuk peran yang diperlukan bagi akun layanan
admin-sa
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/resourcemanager.projectIamAdmin
1.30-1.32
Tambahkan binding kebijakan IAM untuk peran yang diperlukan bagi akun layanan
admin-sa
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.admin
Tambahkan binding kebijakan IAM untuk peran yang diperlukan bagi akun layanan
baremetal-controller
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageViewer
Tambahkan binding kebijakan IAM untuk peran yang diperlukan bagi akun layanan
baremetal-cloud-ops
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/kubernetesmetadata.publisher gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/opsconfigmonitoring.resourceMetadata.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageViewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/stackdriver.resourceMetadata.writer
Beri akun layanan
baremetal-controller
kemampuan untuk membuat token akses atas nama akun layananbaremetal-gcr
:gcloud iam service-accounts add-iam-policy-binding \ baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Menyiapkan autentikasi
Langkah-langkah berikut menyiapkan alur autentikasi yang menggunakan token berjangka pendek untuk mengautentikasi operasi cluster:
Di workstation admin, login ke Google Cloud CLI:
gcloud auth login
Di workstation admin Anda, buat dan download kunci untuk akun layanan
admin-sa
:Kunci ini diperlukan untuk mengizinkan akses bagi akun layanan
admin-sa
.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com
Ganti
TMP_KEY_FILE_PATH
dengan jalur, termasuk nama file, dari file kunci yang didownload.Di workstation admin Anda, buat variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
dengan nilai kunci akun layanan yang didownload:export GOOGLE_APPLICATION_CREDENTIALS=TMP_KEY_FILE_PATH
Di workstation admin, buat variabel lingkungan
GCP_ACCESS_TOKEN
dengan nilai token akses yang dibuat oleh akun layananadmin-sa
:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
Secara default, masa berlaku token akses adalah 1 jam.
Pastikan token dibuat oleh akun layanan
admin-sa
dengan masa berlaku yang benar:curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"
Respons harus menyertakan baris yang terlihat mirip dengan berikut:
... "exp": "1759512810", "expires_in": "3589", ...
Nilai masa berlaku dalam detik dan harus kurang dari
3600
, yang menunjukkan bahwa token akan berakhir dalam waktu kurang dari satu jam.
Mengonfigurasi Workload Identity Federation untuk cluster Anda
Untuk memberikan Google Cloud akses dengan Workload Identity Federation untuk GKE, Anda membuat kebijakan izin IAM yang memberikan akses pada Google Cloud resource tertentu kepada prinsipal yang sesuai dengan identitas aplikasi Anda. Dalam hal ini, Workload Identity Federation memberikan akses ke operator tertentu di cluster. Untuk mengetahui informasi selengkapnya tentang Workload Identity Federation untuk GKE, lihat Workload Identity Federation di dokumentasi IAM.
1.33 dan yang lebih baru
Untuk versi cluster yang Workload Identity Cluster Authentication-nya sudah tersedia secara umum, Anda menggunakan perintah bmctl configure
projects
untuk mengonfigurasi Workload Identity Federation bagi cluster Anda. Perintah ini disertakan dalam langkah-langkah untuk membuat cluster admin dan membuat cluster pengguna.
1.30-1.32
Untuk versi cluster yang menggunakan Autentikasi Cluster Workload Identity dalam Pratinjau, Anda harus mengonfigurasi Workload Identity Federation untuk cluster secara manual seperti yang dijelaskan di bagian berikut.
Tambahkan binding kebijakan IAM untuk operator cluster
Perintah berikut memberikan kemampuan kepada akun layanan Kubernetes anthos-cluster-operator
untuk meniru identitas akun layanan baremetal-controller
dan berinteraksi dengan resource Google Cloud atas nama cluster:
Untuk setiap cluster yang dikonfigurasi untuk Autentikasi Cluster Workload Identity (atau direncanakan untuk menggunakan Autentikasi Cluster Workload Identity), termasuk cluster bootstrap, berikan
anthos-cluster-operator
di cluster kemampuan untuk meniru akun layananbaremetal-controller
:Pada perintah berikut,
principalSet
terdiri dari kumpulan identitas beban kerja dan akun layanan Kubernetes,anthos-cluster-operator
, di namespacekube-system
.gcloud iam service-accounts add-iam-policy-binding \ baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/anthos-cluster-operator \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID
Ganti kode berikut:
PROJECT_NUM
: ID unik yang dibuat secara otomatis untuk project Anda.REGION
: lokasi keanggotaan fleet untuk cluster Anda, yang secara default adalahglobal
. Untuk mengetahui informasi selengkapnya, lihat Lokasi keanggotaan armada.CLUSTER_NAME
: nama cluster. Secara default, nama cluster bootstrap adalahbmctl-MACHINE_NAME
.
Verifikasi binding kebijakan untuk akun layanan
baremetal-controller
:gcloud iam service-accounts get-iam-policy \ baremetal-controller@PROJECT_ID.iam.gserviceaccount.com
Responsnya akan terlihat seperti berikut:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/anthos-cluster-operator role: roles/iam.workloadIdentityUser etag: BwYoN3QLig0= version: 1
Tambahkan binding kebijakan IAM untuk operator Google Cloud Observability
Perintah berikut memberikan kemampuan kepada akun layanan Google Cloud Observability Kubernetes berikut untuk meniru identitas akun layanan baremetal-cloud-ops
dan berinteraksi dengan resource Google Cloud atas nama cluster:
cloud-audit-logging
gke-metrics-agent
kubestore-collector
metadata-agent
stackdriver-log-forwarder
Untuk setiap cluster yang dikonfigurasi untuk Autentikasi Cluster Workload Identity (atau direncanakan untuk menggunakan Autentikasi Cluster Workload Identity), termasuk cluster bootstrap, berikan kemampuan kepada operator Google Cloud Observability di cluster untuk meniru akun layanan
baremetal-cloud-ops
:Di setiap perintah berikut,
principalSet
terdiri dari kumpulan identitas beban kerja dan akun layanan Kubernetes, seperticloud-audit-logging
, di namespacekube-system
.gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/cloud-audit-logging \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/gke-metrics-agent \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/kubestore-collector \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/metadata-agent \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/stackdriver-log-forwarder \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID
Verifikasi binding kebijakan untuk akun layanan
baremetal-cloud-ops
:gcloud iam service-accounts get-iam-policy \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
Responsnya akan terlihat seperti berikut:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/stackdriver-log-forwarder role: roles/iam.workloadIdentityUser etag: BwYhT4gL-dY= version: 1
Membuat cluster admin
Langkah-langkah untuk membuat cluster admin sedikit berbeda untuk penawaran Pratinjau (versi 1.30-1.32) dan GA (versi 1.33 dan yang lebih baru). Langkah-langkah GA menggunakan perintah bmctl configure
projects
untuk mengonfigurasi Workload Identity Federation untuk cluster Anda.
1.33 dan yang lebih baru
Perbedaan konfigurasi cluster yang paling jelas untuk cluster yang menggunakan Autentikasi Cluster Workload Identity adalah Anda tidak menentukan jalur ke kunci akun layanan yang didownload.
Saat Anda mengisi setelan cluster di file konfigurasi, biarkan jalur kunci akun layanan di bagian kredensial kosong seperti yang ditunjukkan dalam contoh berikut:
gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Tambahkan anotasi
baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true"
ke file konfigurasi cluster:gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME annotations: baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Di workstation admin, perbarui variabel lingkungan
GCP_ACCESS_TOKEN
dengan token akses yang baru diambil:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
Secara default, token akses memiliki masa aktif 3.600 detik (1 jam). Saat Anda menggunakan Autentikasi Cluster Identitas Beban Kerja,
bmctl
akan memeriksa waktu habis masa berlaku token. Jika masa berlaku token berada dalam 1.800 detik (30 menit),bmctl
akan melaporkan error dan keluar.Konfigurasi Workload Identity Federation untuk cluster yang Anda buat:
bmctl configure projects --project-id=PROJECT_ID \ --admin-cluster=ADMIN_CLUSTER_NAME
Jalankan perintah
bmctl create cluster
untuk membuat cluster admin.
1.30-1.32
Perbedaan konfigurasi cluster yang paling jelas untuk cluster yang menggunakan Autentikasi Cluster Workload Identity adalah Anda tidak menentukan jalur ke kunci akun layanan yang didownload.
Saat Anda mengisi setelan cluster di file konfigurasi, biarkan jalur kunci akun layanan di bagian kredensial kosong seperti yang ditunjukkan dalam contoh berikut:
gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Di workstation admin Anda, buat dan download kunci untuk akun layanan
admin-sa
:Kunci ini diperlukan untuk mengizinkan akses bagi akun layanan
admin-sa
dan Anda dapat menghapusnya segera setelah akun layanan diizinkan.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com
Ganti
TMP_KEY_FILE_PATH
dengan jalur, termasuk nama file, dari file kunci yang didownload.Beri otorisasi akses ke Google Cloud dengan akun layanan
admin-sa
:gcloud auth activate-service-account admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --key-file=TMP_KEY_FILE_PATH
Hapus file kunci JSON yang didownload:
rm TMP_KEY_FILE_PATH
Token akses berumur pendek, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctl
untuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster.Di workstation admin, buat variabel lingkungan
GCP_ACCESS_TOKEN
dengan nilai token akses yang dibuat oleh akun layananadmin-sa
:export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com)
Secara default, token akses memiliki masa aktif 3.600 detik (1 jam).
Jalankan perintah
bmctl create cluster
untuk membuat cluster admin.
Membuat cluster pengguna
Langkah-langkah untuk membuat cluster admin sedikit berbeda untuk penawaran Pratinjau (versi 1.30-1.32) dan GA (versi 1.33 dan yang lebih baru). Langkah-langkah GA menggunakan perintah bmctl configure
projects
untuk mengonfigurasi Workload Identity Federation untuk cluster Anda.
1.33 dan yang lebih baru
Tambahkan anotasi
baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true"
ke file konfigurasi cluster:apiVersion: v1 kind: Namespace metadata: name: cluster-USER_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: USER_CLUSTER_NAME namespace: cluster-USER_CLUSTER_NAME annotations: baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Token akses hanya berlaku dalam waktu singkat, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctl
untuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster.Di workstation admin, perbarui variabel lingkungan
GCP_ACCESS_TOKEN
dengan token akses yang baru diambil:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
Secara default, token akses memiliki masa aktif 3.600 detik (1 jam).
Konfigurasi Workload Identity Federation untuk cluster yang Anda buat:
bmctl configure projects --project-id=PROJECT_ID \ --user-clusters=USER_CLUSTER_NAME
Gunakan
kubectl
untuk men-deploy manifes cluster pengguna:kubectl apply -f USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_KUBECONFIG
Ganti kode berikut:
USER_CLUSTER_CONFIG
: jalur file konfigurasi cluster pengguna.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
1.30-1.32
Di workstation admin Anda, buat dan download kunci untuk akun layanan
admin-sa
:Kunci ini diperlukan untuk mengizinkan akses bagi akun layanan
admin-sa
dan Anda dapat menghapusnya segera setelah akun layanan diizinkan.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com
Ganti
TMP_KEY_FILE_PATH
dengan jalur, termasuk nama file, dari file kunci yang didownload.Beri otorisasi akses ke Google Cloud dengan akun layanan
admin-sa
:gcloud auth activate-service-account admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --key-file=TMP_KEY_FILE_PATH
Hapus file kunci JSON yang didownload:
rm TMP_KEY_FILE_PATH
Token akses berumur pendek, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctl
untuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster.Di workstation admin, buat variabel lingkungan
GCP_ACCESS_TOKEN
dengan nilai token akses yang dibuat oleh akun layananadmin-sa
:export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com)
Secara default, token akses memiliki masa aktif 3.600 detik (1 jam).
Jalankan perintah
bmctl create cluster
untuk membuat cluster pengguna.
Operasi cluster lainnya
Untuk cluster yang menggunakan Autentikasi Cluster Workload Identity, perintah bmctl
berikut mengharuskan variabel lingkungan GCP_ACCESS_TOKEN
disetel ke token akses yang valid dan aktif:
bmctl configure projects
bmctl create cluster
bmctl reset cluster
bmctl upgrade cluster
Jika bmctl
mendeteksi bahwa variabel lingkungan GCP_ACCESS_TOKEN
telah
ditetapkan, variabel tersebut akan melakukan validasi token:
Jika token valid,
bmctl
akan menggunakannya untuk operasi cluster.Jika token tidak valid, ambil token baru:
Token akses hanya berlaku dalam waktu singkat, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctl
untuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster. Di workstation admin Anda, perbarui variabel lingkunganGCP_ACCESS_TOKEN
dengan token akses yang baru diambil:1.33 dan yang lebih baru
export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
1.30-1.32
export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com)
Secara default, token akses memiliki masa aktif 3.600 detik (1 jam). Saat Anda menggunakan Autentikasi Cluster Identitas Beban Kerja,
bmctl
akan memeriksa waktu habis masa berlaku token. Jika masa berlaku token berada dalam 1.800 detik (30 menit),bmctl
akan melaporkan error dan keluar.
Penyesuaian
Anda dapat menggunakan akun layanan dengan nama unik untuk Autentikasi Cluster Workload Identity selama akun tersebut memiliki binding untuk peran yang diperlukan.
1.33 dan yang lebih baru
Secara default, Autentikasi Cluster Workload Identity untuk cluster versi 1.33 dan yang lebih baru hanya menggunakan akun layanan baremetal-gcr
. Oleh karena itu, hanya akun layanan ini yang dapat disesuaikan.
Pastikan akun layanan yang ingin Anda gunakan memiliki peran yang diidentifikasi dalam tabel di Sebelum memulai.
Anotasikan file konfigurasi cluster untuk menentukan nama kustom bagi akun layanan Workload Identity Cluster Authentication:
apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: my-cluster namespace: cluster-my-cluster annotations: ... baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_AR_GSA" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Ganti CUSTOM_AR_GSA
dengan nama email akun layanan yang digunakan oleh Google Distributed Cloud untuk mendownload image container dari Artifact Registry.
1.30-1.32
Pastikan akun layanan yang ingin Anda gunakan memiliki peran yang diidentifikasi dalam tabel di Sebelum memulai.
Anotasikan file konfigurasi cluster untuk menentukan nama kustom bagi akun layanan Workload Identity Cluster Authentication:
Dengan menentukan nama kustom, Anda dapat menggunakan akun layanan yang ada. Pastikan nama akun layanan kustom yang Anda tentukan berbeda satu sama lain. Kami tidak mendukung penggunaan satu akun layanan untuk menggantikan dua atau lebih akun layanan default.
apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: my-cluster namespace: cluster-my-cluster annotations: ... baremetal.cluster.gke.io/controller-service-account: "CUSTOM_CONTROLLER_GSA" baremetal.cluster.gke.io/cloud-ops-service-account: "CUSTOM_CLOUD_OPS_GSA" baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_AR_GSA" spec: type: admin profile: default anthosBareMetalVersion: 1.30.0-gke.1930 ...
Ganti kode berikut:
CUSTOM_CONTROLLER_GSA
: nama email akun layanan yang digunakan oleh Connect Agent untuk mempertahankan koneksi antara cluster Anda dan Google Cloud, serta untuk mendaftarkan cluster Anda.CUSTOM_CLOUD_OPS_GSA
: nama email akun layanan yang digunakan oleh Agen Stackdriver untuk mengekspor log dan metrik dari cluster ke Cloud Logging dan Cloud Monitoring.CUSTOM_AR_GSA
: nama email akun layanan yang digunakan oleh Google Distributed Cloud untuk mendownload image container dari Artifact Registry.
Batasan
Fitur dan kemampuan berikut tidak didukung saat Anda menggunakan Autentikasi Cluster Workload Identity untuk Google Distributed Cloud (khusus software) di bare metal:
- Menggunakan server proxy
- Kontrol Layanan VPC
- Mengupdate cluster mode kunci yang ada untuk menggunakan Autentikasi Cluster Workload Identity
- Pengelolaan siklus proses cluster menggunakan klien GKE On-Prem API, seperti Google Cloud CLI, Terraform, atau Google Cloud konsol