Pelajari cara mengautentikasi layanan penayangan Knative dengan Workload Identity Federation untuk GKE guna mengakses Google Cloud API seperti Compute API, Storage, dan Database API, atau Machine Learning API.
Untuk mengautentikasi layanan penayangan Knative, Anda harus:
- Mengaktifkan Workload Identity Federation for GKE di cluster Anda
- Konfigurasikan izin
- Ikat Akun Layanan Kubernetes (KSA) ke Akun Layanan Google (GSA)
Setelah mengikuti langkah-langkah ini, Anda dapat men-deploy layanan penayangan Knative baru yang menggunakan identitas yang Anda buat.
Mengaktifkan Workload Identity Federation for GKE di cluster Anda
Untuk menyiapkan Workload Identity Federation untuk GKE dengan penayangan Knative, Anda dapat menyiapkan Workload Identity Federation armada, bukan 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 harus memberikan izin tulis untuk Cloud Monitoring. Misalnya, Anda dapat memberikan
peran Monitoring Metric Writer
(roles/monitoring.metricWriter
) ke Akun Layanan Google yang
dikaitkan dengan penayangan Knative karena menyertakan izin
yang diperlukan untuk menulis data pemantauan. Lihat
Menggunakan akun layanan untuk mengetahui informasi
selengkapnya tentang cara membuat Akun Layanan Google.
Mengikat akun layanan
Anda perlu menyiapkan hubungan untuk Akun Layanan Kubernetes (KSA) agar dapat bertindak sebagai akun layanan Google (GSA). Setiap beban kerja yang berjalan sebagai KSA yang Anda ikat, akan otomatis melakukan autentikasi sebagai GSA saat mengakses Google Cloud API. KSA yang Anda ikat harus ada dalam cluster dan namespace layanan penayangan Knative yang ingin Anda gunakan Workload Identity Federation untuk GKE. GSA dapat berasal dari project Google Cloud yang berbeda dengan project Google Cloud tempat cluster berada.
Jika GSA tidak ada, buat GSA; jika tidak, lanjutkan ke langkah berikutnya. Anda dapat membuat GSA untuk digunakan dengan penayangan Knative dalam project Google Cloud mana pun di organisasi, lalu menggunakannya dari dalam project Google Cloud tempat layanan penayangan Knative Anda berjalan.
Untuk membuat GSA baru, jalankan perintah berikut:
gcloud iam service-accounts create GSA_NAME
Ganti GSA_NAME dengan nama akun layanan Google yang baru.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan akun layanan Google dengan layanan penayangan Knative, lihat Menggunakan akun layanan.
Pastikan GSA Anda memiliki peran IAM yang Anda butuhkan. Anda dapat memberikan peran tambahan menggunakan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role "ROLE_NAME"
Ganti:
- PROJECT_ID: dengan project ID Google Cloud tempat Akun Layanan Google Anda berada.
- GSA_NAME dengan nama Akun Layanan Google Anda.
- ROLE_NAME dengan peran IAM yang akan ditetapkan ke GSA Anda, seperti
roles/monitoring.metricWriter
.
Jika Akun Layanan Kubernetes tidak ada, buat akun layanan di namespace Kubernetes yang sama dengan layanan penayangan Knative Anda; jika tidak, lewati ke langkah berikutnya:
kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
Ikat akun layanan Kubernetes dan Google untuk membuat identitas, lalu deploy ke cluster Anda:
Izinkan KSA meniru identitas GSA dengan membuat binding kebijakan IAM di antara keduanya.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \ GSA_NAME@GSA_PROJECT_ID.iam.gserviceaccount.com
Ganti:
- PROJECT_ID dengan ID project Google Cloud untuk cluster tempat Akun Layanan Kubernetes dan layanan penayangan Knative Anda berada.
- K8S_NAMESPACE/KSA_NAME dengan namespace dan nama Akun Layanan Kubernetes Anda.
- GSA_NAME@GSA_PROJECT_ID dengan nama Akun Layanan Google dan ID project Google Cloud Anda. Anda dapat menggunakan Akun Layanan Google apa pun di organisasi Anda. Untuk melihat Akun Layanan Google Anda, lihat Mencantumkan akun layanan.
Tambahkan anotasi
iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT_ID
ke KSA, menggunakan alamat email GSA.kubectl annotate serviceaccount \ --namespace K8S_NAMESPACE KSA_NAME \ iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT_ID.iam.gserviceaccount.com
Ganti:
- K8S_NAMESPACE/KSA_NAME dengan namespace dan nama Akun Layanan Kubernetes yang Anda buat binding-nya.
- GSA_NAME@GSA_PROJECT_ID dengan nama Akun Layanan Google dan ID project Google Cloud yang Anda buat binding-nya.
Men-deploy layanan baru untuk menggunakan Workload Identity Federation for GKE
Deploy layanan penayangan Knative baru yang menggunakan Workload Identity Federation for GKE yang Anda buat.
Konsol
Buka penayangan Knative 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 New Revision.
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 deployment selesai.
Command line
Untuk layanan yang ada, tetapkan Akun Layanan Kubernetes dengan menjalankan perintah
gcloud run services update
dengan parameter berikut:gcloud run services update SERVICE --service-account KSA_NAME
Ganti:
- SERVICE dengan nama layanan penayangan Knative Anda.
- KSA_NAME dengan Akun Layanan Kubernetes yang Anda gunakan untuk membuat identitas beban kerja.
Untuk layanan baru, tetapkan Akun Layanan Kubernetes dengan menjalankan perintah
gcloud run deploy
dengan parameter--service-account
:gcloud run deploy --image IMAGE_URL --service-account KSA_NAME
Ganti:
- IMAGE_URL dengan referensi ke image container,
misalnya,
gcr.io/cloudrun/hello
. - KSA_NAME 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.yaml
di ruang kerja lokal:gcloud run services describe SERVICE --format export > service.yaml
Ganti SERVICE dengan nama layanan penayangan Knative Anda.
Di file lokal, perbarui atribut
serviceAccountName:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: KSA_NAME
Ganti
- SERVICE dengan nama layanan penayangan Knative Anda.
- KSA_NAME dengan Akun Layanan Kubernetes yang Anda gunakan untuk membuat identitas beban kerja.
Deploy konfigurasi ke layanan penayangan Knative Anda 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 ada, setiap layanan di cluster yang ingin Anda gunakan Workload Identity Federation for GKE harus dimigrasikan. Pelajari cara memigrasikan layanan yang ada.
Langkah berikutnya
Pelajari cara mengelola akses ke layanan Anda.