Autentikasi Cluster Workload Identity memungkinkan Anda membuat dan mengamankan cluster untuk software Distributed Cloud khusus untuk bare metal menggunakan token berumur singkat dan Workload Identity Federation. Pendekatan ini menggantikan kunci akun layanan persisten dengan token akses OAuth 2.0, sehingga mengurangi overhead pemeliharaan dan menghilangkan risiko keamanan kredensial yang berumur panjang.
Anda hanya dapat mengaktifkan fitur ini saat membuat cluster baru. Fitur ini tersedia di versi 1.33 dan yang lebih baru serta dalam Pratinjau di versi 1.30, 1.31, dan 1.32. Anda tidak dapat mengupdate cluster yang ada untuk menggunakannya. Untuk batasan tambahan, lihat Batasan.
Cara kerja Autentikasi Cluster Workload Identity
Kredensial berumur pendek untuk akun layanan berupa token akses OAuth 2.0. Secara default, masa berlaku token akses akan berakhir setelah 1 jam. Demikian pula, masa berlaku token pull image juga akan berakhir setelah 1 jam secara default.
Sebaliknya, mode berkunci, 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. Kunci tersebut kemudian disimpan sebagai Secret di cluster dan cluster pengguna terkelola. Secara default, kunci akun layanan tidak memiliki masa berlaku dan akan berisiko keamanan jika tidak dikelola dengan benar. Untuk mengetahui informasi tentang cara menetapkan 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 penggunaan kunci akun layanan:
Keamanan yang ditingkatkan: Kunci akun layanan merupakan risiko keamanan jika tidak dikelola dengan benar. Token OAuth 2.0 dan Workload Identity Federation dianggap sebagai alternatif praktik terbaik untuk kunci akun layanan. Untuk mengetahui informasi selengkapnya tentang token akun layanan, lihat Kredensial akun layanan berumur singkat. Untuk mengetahui informasi selengkapnya tentang Workload Identity Federation, lihat Workload Identity Federation.
Pemeliharaan yang lebih sedikit: Kunci akun layanan memerlukan lebih banyak pemeliharaan. Merotasi dan mengamankan kunci ini secara rutin dapat menjadi beban administratif yang signifikan.
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 resource Google Cloud, tetapi diperlukan selain prasyarat penginstalan software Distributed Cloud khusus software standar. Akun layanan yang diperlukan untuk Autentikasi Cluster Workload Identity mirip dengan akun layanan yang dijelaskan dalam Menyiapkan resourceGoogle Cloud , tetapi diberi nama secara 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.adminroles/iam.serviceAccountAdminroles/iam.serviceAccountTokenCreatorroles/iam.workloadIdentityPoolAdmin*roles/logging.adminroles/monitoring.adminroles/resourcemanager.projectIamAdmin
|
baremetal-gcr |
Google Distributed Cloud menggunakan akun layanan ini untuk mendownload image container dari Artifact Registry. | Tidak ada |
*Peran IAM roles/iam.workloadIdentityPoolAdmin
hanya diperlukan untuk versi 1.34 dan yang lebih baru.
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.adminroles/iam.serviceAccountAdminroles/iam.serviceAccountTokenCreatorroles/logging.adminroles/monitoring.admin
|
baremetal-controller |
Connect Agent
menggunakan akun layanan ini untuk mempertahankan koneksi antara cluster Anda dan
Google Cloud serta untuk mendaftarkan cluster Anda dengan
fleet.
Akun layanan ini juga memperbarui token untuk akun layanan baremetal-gcr.
|
roles/gkehub.adminroles/monitoring.dashboardEditorroles/serviceusage.serviceUsageViewer
|
baremetal-cloud-ops |
Stackdriver Agent menggunakan akun layanan ini untuk mengekspor log dan metrik dari cluster ke Cloud Logging dan Cloud Monitoring. |
roles/kubernetesmetadata.publisherroles/logging.logWriterroles/monitoring.dashboardEditorroles/monitoring.metricWriterroles/monitoring.viewerroles/opsconfigmonitoring.resourceMetadata.writerroles/serviceusage.serviceUsageViewerroles/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 memberinya peran yang diperlukan untuk Autentikasi Cluster Workload Identity. Untuk mengetahui daftar akun layanan dan peran yang diperlukan, lihat tabel di bagian sebelumnya.
Membuat akun layanan
Untuk membuat akun layanan untuk Autentikasi Cluster Workload Identity, gunakan langkah-langkah berikut:
Di workstation admin, login ke Google Cloud CLI:
gcloud auth loginBuat akun layanan yang diperlukan untuk Autentikasi Cluster Workload Identity:
Nama akun layanan
admin-sabersifat arbitrer. Anda dapat mengubah nama jika menyebabkan konflik dalam project Anda. Akun layanan lainnya untuk Autentikasi Cluster Workload Identity memiliki nama yang telah ditentukan dan 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_IDGanti
PROJECT_IDdengan ID project Google Cloud Anda.1.30-1.32
```sh gcloud iam service-accounts create admin-sa
--project=PROJECT_IDgcloud iam service-accounts create baremetal-controller
--project=PROJECT_IDgcloud iam service-accounts create baremetal-cloud-ops
--project=PROJECT_IDgcloud iam service-accounts create baremetal-gcr
--project=PROJECT_ID ```Ganti
PROJECT_IDdengan ID project Google Cloud 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 untuk akun layanan
admin-sa:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/iam.serviceAccountTokenCreator gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/logging.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/monitoring.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/resourcemanager.projectIamAdmin
1.30-1.32
Tambahkan binding kebijakan IAM untuk peran yang diperlukan untuk akun layanan
admin-sa:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/iam.serviceAccountTokenCreator gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/logging.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID. \ --role=roles/monitoring.adminTambahkan binding kebijakan IAM untuk peran yang diperlukan untuk akun layanan
baremetal-controller:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID. \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID. \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID. \ --role=roles/serviceusage.serviceUsageViewerTambahkan binding kebijakan IAM untuk peran yang diperlukan untuk akun layanan
baremetal-cloud-ops:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/kubernetesmetadata.publisher gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/monitoring.metricWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/monitoring.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/opsconfigmonitoring.resourceMetadata.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/serviceusage.serviceUsageViewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID. \ --role=roles/stackdriver.resourceMetadata.writerBeri akun layanan
baremetal-controllerkemampuan untuk membuat token akses atas nama akun layananbaremetal-gcr:gcloud iam service-accounts add-iam-policy-binding \ baremetal-gcr@PROJECT_ID. \ --member=serviceAccount:baremetal-controller@PROJECT_ID. \ --role=roles/iam.serviceAccountTokenCreator
Menyiapkan autentikasi
Langkah-langkah berikut menyiapkan alur autentikasi yang menggunakan token berumur singkat untuk mengautentikasi operasi cluster:
Di workstation admin, login ke Google Cloud CLI:
gcloud auth loginDi workstation admin, 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.Ganti
TMP_KEY_FILE_PATHdengan jalur, termasuk nama file, dari file kunci yang didownload.Di workstation admin, buat variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALSdengan nilai kunci akun layanan yang didownload:export GOOGLE_APPLICATION_CREDENTIALS=TMP_KEY_FILE_PATHDi workstation admin, buat variabel lingkungan
GCP_ACCESS_TOKENdengan nilai token akses yang dibuat oleh akun layananadmin-sa:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)Secara default, token akses memiliki masa aktif 1 jam.
Pastikan token dibuat oleh akun layanan
admin-sadengan masa berlaku yang benar:curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"Responsnya akan menyertakan baris yang terlihat seperti berikut:
... "exp": "1759512810", "expires_in": "3589", ...Nilai masa berlaku dalam detik dan harus kurang dari
3600, yang menunjukkan bahwa masa berlaku token akan berakhir dalam waktu kurang dari satu jam.
Mengonfigurasi Workload Identity Federation untuk cluster Anda
Untuk memberikan akses Google Cloud dengan Workload Identity Federation untuk GKE, Anda membuat kebijakan izin IAM yang memberikan akses pada resourceGoogle Cloud tertentu ke akun utama 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 dalam dokumentasi IAM.
1.33 dan yang lebih baru
Untuk versi cluster yang menyediakan Autentikasi Cluster Workload Identity dalam status GA, Anda dapat menggunakan perintah bmctl configure
projects untuk mengonfigurasi Workload Identity Federation untuk cluster Anda. Perintah ini digabungkan ke dalam langkah-langkah untuk membuat cluster admin dan membuat cluster pengguna.
Untuk mencegah ketidakstabilan containerd saat Anda menggunakan mirror registry untuk mengambil
image container untuk cluster, Anda harus menambahkan
anotasi cluster
baremetal.cluster.gke.io/enable-gcr-image-credential-refresh: "false". Anotasi ini tersedia untuk versi 1.33.200-gke.70
dan yang lebih baru:
---
...
registryMirrors:
- endpoint: https://198.51.20.1:5000
caCertPath: /root/ca.crt
pullCredentialConfigPath: /root/.docker/config.json
hosts:
- somehost.io
- otherhost.io
---
apiVersion: v1
kind: Namespace
metadata:
name: cluster-admin1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: admin1
namespace: cluster-admin1
annotations:
baremetal.cluster.gke.io/enable-gcr-image-credential-refresh: "false"
spec:
type: admin
anthosBareMetalVersion: 1.33.200-gke.70
...
1.30-1.32
Untuk versi cluster yang Autentikasi Cluster Workload Identity-nya dalam status Pratinjau, Anda harus mengonfigurasi Workload Identity Federation untuk cluster secara manual seperti yang dijelaskan di bagian berikut.
Menambahkan binding kebijakan IAM untuk operator cluster
Perintah berikut memberi akun layanan Kubernetes anthos-cluster-operator
kemampuan 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, beri
anthos-cluster-operatordi cluster kemampuan untuk meniru akun layananbaremetal-controller:Dalam perintah berikut,
principalSetterdiri dari workload identity pool dan akun layanan Kubernetes,anthos-cluster-operator, di namespacekube-system.gcloud iam service-accounts add-iam-policy-binding \ baremetal-controller@PROJECT_ID. \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID./attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/anthos-cluster-operator \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_IDGanti kode berikut:
PROJECT_NUM: ID unik untuk project Anda yang dibuat secara otomatis.REGION: lokasi keanggotaan fleet untuk cluster Anda, yaituglobal, secara default. Untuk mengetahui informasi selengkapnya, lihat Lokasi keanggotaan fleet.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.Responsnya akan terlihat seperti berikut:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/admin-cluster/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/user-cluster/kube-system/anthos-cluster-operator role: roles/iam.workloadIdentityUser etag: BwYoN3QLig0= version: 1
Menambahkan binding kebijakan IAM untuk operator Google Cloud Observability
Perintah berikut memberi akun layanan Kubernetes Google Cloud Observability berikut
kemampuan untuk meniru akun layanan baremetal-cloud-ops
dan berinteraksi dengan resource Google Cloud atas nama cluster:
cloud-audit-logginggke-metrics-agentkubestore-collectormetadata-agentstackdriver-log-forwarder
Untuk setiap cluster yang dikonfigurasi untuk Autentikasi Cluster Workload Identity (atau direncanakan untuk menggunakan Autentikasi Cluster Workload Identity), termasuk cluster bootstrap, beri operator Google Cloud Observability di cluster kemampuan untuk meniru identitas akun layanan
baremetal-cloud-ops:Dalam setiap perintah berikut,
principalSetterdiri dari workload identity pool dan akun layanan Kubernetes, seperticloud-audit-logging, di namespacekube-system.gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID. \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID./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. \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID./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. \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID./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. \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID./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. \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID./attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/stackdriver-log-forwarder \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_IDVerifikasi binding kebijakan untuk akun layanan
baremetal-cloud-ops:gcloud iam service-accounts get-iam-policy \ baremetal-cloud-ops@PROJECT_ID.Responsnya akan terlihat seperti berikut:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/admin-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/admin-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/admin-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/admin-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/admin-cluster/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/user-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/user-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/user-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./attribute.fleetclusteridentity/user-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project./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 tinggi). 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_TOKENdengan 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 Workload Identity,
bmctlakan memeriksa waktu habis masa berlaku token. Jika masa berlaku token dalam waktu 1.800 detik (30 menit),bmctlakan melaporkan error dan keluar.Konfigurasi Workload Identity Federation untuk cluster yang Anda buat:
bmctl configure projects --project-id=PROJECT_ID \ --admin-cluster=ADMIN_CLUSTER_NAMEJalankan perintah
bmctl create clusteruntuk membuat cluster admin Anda.
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, buat dan download kunci untuk akun layanan
admin-sa:Kunci ini diperlukan untuk mengizinkan akses bagi akun layanan
admin-sadan Anda harus segera menghapusnya setelah akun layanan diizinkan.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.Ganti
TMP_KEY_FILE_PATHdengan jalur, termasuk nama file, dari file kunci yang didownload.Izinkan akses ke Google Cloud dengan akun layanan
admin-sa:gcloud auth activate-service-account admin-sa@PROJECT_ID. \ --key-file=TMP_KEY_FILE_PATHHapus file kunci JSON yang didownload:
rm TMP_KEY_FILE_PATHToken akses berumur pendek, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctluntuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster.Di workstation admin, buat variabel lingkungan
GCP_ACCESS_TOKENdengan 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.)Secara default, token akses memiliki masa aktif 3.600 detik (1 jam).
Jalankan perintah
bmctl create clusteruntuk membuat cluster admin Anda.
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 tinggi). 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 berumur pendek, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctluntuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster.Di workstation admin, perbarui variabel lingkungan
GCP_ACCESS_TOKENdengan 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_NAMEGunakan
kubectluntuk 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, buat dan download kunci untuk akun layanan
admin-sa:Kunci ini diperlukan untuk mengizinkan akses bagi akun layanan
admin-sadan Anda harus segera menghapusnya setelah akun layanan diizinkan.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.Ganti
TMP_KEY_FILE_PATHdengan jalur, termasuk nama file, dari file kunci yang didownload.Izinkan akses ke Google Cloud dengan akun layanan
admin-sa:gcloud auth activate-service-account admin-sa@PROJECT_ID. \ --key-file=TMP_KEY_FILE_PATHHapus file kunci JSON yang didownload:
rm TMP_KEY_FILE_PATHToken akses berumur pendek, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctluntuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster.Di workstation admin, buat variabel lingkungan
GCP_ACCESS_TOKENdengan 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.)Secara default, token akses memiliki masa aktif 3.600 detik (1 jam).
Jalankan perintah
bmctl create clusteruntuk membuat cluster pengguna Anda.
Operasi cluster lainnya
Untuk cluster yang menggunakan Autentikasi Cluster Workload Identity, perintah bmctl berikut mengharuskan Anda
menetapkan variabel lingkungan GCP_ACCESS_TOKEN ke token akses yang valid dan aktif:
bmctl configure projectsbmctl create clusterbmctl register bootstrapbmctl reset clusterbmctl upgrade cluster
bmctl register bootstrap mendukung penggunaan variabel lingkungan GCP_ACCESS_TOKEN untuk Autentikasi Cluster Workload Identity hanya untuk Google Distributed Cloud versi 1.34.0 dan yang lebih baru. Untuk versi sebelum 1.34.0, Anda harus menggunakan file kunci akun layanan untuk
mengautentikasi bmctl register bootstrap.
Jika bmctl mendeteksi bahwa variabel lingkungan GCP_ACCESS_TOKEN telah
ditetapkan, variabel tersebut akan melakukan validasi token:
Jika token valid,
bmctlakan menggunakannya untuk operasi cluster.Jika token tidak valid, ambil token baru:
Token akses berumur pendek, jadi Anda biasanya perlu membuatnya ulang sebelum menjalankan perintah
bmctluntuk operasi cluster, seperti membuat, mengupgrade, atau mereset cluster. Di workstation admin, perbarui variabel lingkunganGCP_ACCESS_TOKENdengan 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
sh export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=admin-sa@PROJECT_ID.)Secara default, token akses memiliki masa aktif 3.600 detik (1 jam). Saat Anda menggunakan Autentikasi Cluster Workload Identity,
bmctlakan memeriksa waktu habis masa berlaku token. Jika masa berlaku token dalam waktu 1.800 detik (30 menit),bmctlakan 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, ini adalah satu-satunya akun layanan yang dapat disesuaikan.
Pastikan akun layanan yang ingin Anda gunakan memiliki peran yang diidentifikasi dalam tabel di bagian Sebelum memulai.
Beri anotasi pada file konfigurasi cluster untuk menentukan nama kustom untuk 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 bagian Sebelum memulai.
Beri anotasi pada file konfigurasi cluster untuk menentukan nama kustom untuk 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 beberapa 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 software Distributed Cloud khusus untuk bare metal:
- Menggunakan server proxy
- Kontrol Layanan VPC
- Mengupdate cluster mode berkunci yang ada untuk menggunakan Autentikasi Cluster Workload Identity
- Pengelolaan siklus proses cluster menggunakan klien GKE On-Prem API, seperti Google Cloud CLI, Terraform, atau konsol Google Cloud