Pelajari cara melakukan autentikasi layanan Knative serving Anda dengan Workload Identity Federation for GKE guna mengakses Google Cloud API seperti Compute API, Storage API, dan Database API, atau Machine Learning API.
Untuk mengautentikasi layanan penayangan Knative, Anda harus:
- Mengaktifkan Workload Identity Federation for GKE di cluster Anda
- Buat Akun Layanan Kubernetes dan berikan peran IAM yang diperlukan
Setelah mengikuti langkah-langkah ini, Anda dapat men-deploy layanan Knative serving baru yang menggunakan identitas yang Anda buat.
Mengaktifkan Workload Identity Federation for GKE di cluster Anda
Untuk menyiapkan Workload Identity Federation for GKE dengan layanan Knative, Anda dapat menyiapkan Workload Identity Federation fleet daripada menggunakan file JSON Akun Layanan Google Cloud .
Mengonfigurasi izin untuk mengaktifkan semua metrik
Untuk mengaktifkan metrik, seperti melaporkan jumlah permintaan atau latensi permintaan ke Google Cloud Observability, Anda perlu memberikan izin tulis untuk Cloud Monitoring. Misalnya, Anda dapat memberikan
peran Monitoring Metric Writer
(roles/monitoring.metricWriter) ke Akun Layanan Kubernetes yang
terkait dengan layanan Knative karena peran tersebut mencakup
izin yang diperlukan untuk menulis data pemantauan.
Memberikan peran IAM ke Akun Layanan Kubernetes
Layanan Knative apa pun yang berjalan sebagai Akun Layanan Kubernetes yang Anda konfigurasi akan otomatis melakukan autentikasi dengan identitas gabungannya saat mengakses Google Cloud API. Akun Layanan Kubernetes harus ada dalam cluster dan namespace layanan penayangan Knative yang ingin Anda gunakan untuk Workload Identity Federation for GKE.
Jika Akun Layanan Kubernetes tidak ada, buat akun di namespace Kubernetes yang sama dengan layanan penyajian Knative Anda; jika tidak, lewati ke langkah berikutnya:
kubectl create serviceaccount --namespace K8S_NAMESPACE KUBERNETES_SERVICEACCOUNT
Berikan peran IAM yang diperlukan langsung ke Akun Layanan Kubernetes Anda:
gcloud projects add-iam-policy-binding RESOURCE_PROJECT_ID \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/K8S_NAMESPACE/sa/KUBERNETES_SERVICEACCOUNT" \ --role "ROLE_NAME" \ --condition=None
Ganti:
- RESOURCE_PROJECT_ID dengan Google Cloud project ID tempat target Google Cloud resource berada.
- PROJECT_NUMBER dengan nomor project Google Cloud project untuk cluster tempat Akun Layanan Kubernetes dan layanan Knative Anda berada.
- PROJECT_ID dengan ID project Google Cloud untuk cluster tempat layanan Knative dan Akun Layanan Kubernetes Anda berada.
- K8S_NAMESPACE dan KUBERNETES_SERVICEACCOUNT dengan namespace dan nama Akun Layanan Kubernetes Anda.
- ROLE_NAME dengan peran IAM yang akan ditetapkan ke Akun Layanan Kubernetes Anda, seperti
roles/monitoring.metricWriter.
Men-deploy layanan baru untuk menggunakan Workload Identity Federation for GKE
Deploy layanan Knative baru yang menggunakan Workload Identity Federation for GKE yang Anda buat.
Konsol
Buka Knative serving di konsol Google Cloud :
Klik Buat Layanan jika Anda mengonfigurasi layanan baru yang akan di-deploy. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan tersebut, lalu klik Edit & Deploy Revisi Baru.
Di bagian Setelan lanjutan, klik Penampung.
Klik menu dropdown akun Layanan dan pilih akun layanan yang diinginkan.
Klik Berikutnya untuk melanjutkan ke bagian berikutnya.
Di bagian Configure how this service is triggered, pilih konektivitas yang ingin Anda gunakan untuk memanggil layanan.
Klik Create untuk men-deploy image ke layanan Knative dan tunggu hingga deployment selesai.
Command line
Untuk layanan yang sudah ada, tetapkan Akun Layanan Kubernetes dengan menjalankan perintah
gcloud run services updatedengan parameter berikut:gcloud run services update SERVICE --service-account KUBERNETES_SERVICEACCOUNT
Ganti:
- SERVICE dengan nama layanan Knative serving Anda.
- KUBERNETES_SERVICEACCOUNT dengan Akun Layanan Kubernetes yang Anda gunakan untuk membuat identitas beban kerja.
Untuk layanan baru, tetapkan Akun Layanan Kubernetes dengan menjalankan perintah
gcloud run deploydengan parameter--service-account:gcloud run deploy --image IMAGE_URL --service-account KUBERNETES_SERVICEACCOUNT
Ganti:
- IMAGE_URL dengan referensi ke image container,
misalnya,
gcr.io/cloudrun/hello. - KUBERNETES_SERVICEACCOUNT dengan Akun Layanan Kubernetes yang Anda gunakan untuk membuat identitas beban kerja.
- IMAGE_URL dengan referensi ke image container,
misalnya,
YAML
Anda dapat mendownload konfigurasi layanan yang ada ke dalam
file YAML dengan perintah gcloud run services describe menggunakan tanda
--format=export.
Kemudian, Anda dapat mengubah file YAML tersebut dan men-deploy
perubahan tersebut dengan perintah gcloud run services replace.
Anda harus memastikan bahwa Anda hanya mengubah atribut yang ditentukan.
Download konfigurasi layanan Anda ke file bernama
service.yamldi ruang kerja lokal:gcloud run services describe SERVICE --format export > service.yaml
Ganti SERVICE dengan nama layanan Knative serving Anda.
Di file lokal Anda, perbarui atribut
serviceAccountName::apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: KUBERNETES_SERVICEACCOUNT
Ganti
- SERVICE dengan nama layanan Knative serving Anda.
- KUBERNETES_SERVICEACCOUNT dengan Akun Layanan Kubernetes yang Anda gunakan untuk membuat workload identity.
Deploy konfigurasi ke layanan penayangan Knative dengan menjalankan perintah berikut:
gcloud run services replace service.yaml
Memigrasikan layanan yang ada untuk menggunakan Workload Identity Federation for GKE
Jika Anda mengaktifkan Workload Identity Federation for GKE di cluster yang sudah ada, setiap layanan di cluster tersebut yang ingin Anda gunakan dengan Workload Identity Federation for GKE harus dimigrasikan. Pelajari cara memigrasikan layanan yang ada.
Langkah berikutnya
Pelajari cara mengelola akses ke layanan Anda.