Pelajari cara mengautentikasi layanan penayangan Knative dengan Workload Identity untuk mengakses API Google Cloud seperti Compute API, Storage and Database API, atau Machine Learning API.
Untuk mengautentikasi layanan inferensi Knative, Anda harus:
- Mengaktifkan Workload Identity 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 penyaluran Knative baru yang menggunakan identitas yang Anda buat.
Mengaktifkan Workload Identity di cluster Anda
Untuk menyiapkan Workload Identity dengan penayangan Knative, Anda dapat menyiapkan fleet Workload Identity Federation, bukan menggunakan file JSON Akun Layanan Google Cloud.
Konfigurasi izin untuk mengaktifkan semua metrik
Untuk mengaktifkan metrik, seperti melaporkan jumlah permintaan atau latensi permintaan ke Kemampuan Observasi Google Cloud, Anda harus memberikan izin tulis untuk Cloud Monitoring. Misalnya, Anda dapat memberikan peran Monitoring Metric Writer (roles/monitoring.metricWriter
) ke Akun Layanan Google yang terkait dengan penayangan Knative karena peran tersebut mencakup izin yang diperlukan untuk menulis data pemantauan. Lihat Menggunakan akun layanan untuk mengetahui informasi selengkapnya tentang cara membuat Akun Layanan Google.
Akun layanan binding
Anda perlu menyiapkan hubungan untuk Akun Layanan Kubernetes (KSA) agar dapat bertindak sebagai akun layanan Google (GSA). Beban kerja apa pun yang berjalan sebagai KSA yang Anda ikat, otomatis melakukan autentikasi sebagai GSA saat mengakses Google Cloud API. KSA yang Anda ikat harus ada di dalam cluster dan namespace layanan inferensi Knative tempat Anda ingin menggunakan Workload Identity. GSA dapat menjadi bagian dari project Google Cloud yang berbeda dengan project Google Cloud tempat cluster berada.
Jika GSA tidak ada, buat GSA; jika tidak, langsung ke langkah berikutnya. Anda dapat membuat GSA untuk digunakan dengan inferensi Knative dalam project Google Cloud apa pun di organisasi, lalu menggunakannya 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 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 belum ada, buat akun di namespace Kubernetes yang sama dengan layanan inferensi Knative Anda. Jika tidak ada, lanjutkan ke langkah berikutnya:
kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
Ikat Kubernetes dan akun layanan Google untuk membuat identitas, lalu deploy ke cluster Anda:
Izinkan KSA untuk meniru 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 bindingnya Anda buat.
- GSA_NAME@GSA_PROJECT_ID dengan nama Akun Layanan Google dan ID project Google Cloud yang Anda buat bindingnya.
Men-deploy layanan baru untuk menggunakan Workload Identity
Deploy layanan penayangan Knative baru yang menggunakan Workload Identity 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 ada, klik layanan, 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 bagaimana layanan ini dipicu, pilih konektivitas yang ingin Anda gunakan untuk memanggil layanan.
Klik Create untuk men-deploy image ke penayangan Knative dan tunggu hingga 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 workload identity.
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 mereferensikan ke image container, misalnya,
gcr.io/cloudrun/hello
. - KSA_NAME dengan Akun Layanan Kubernetes yang Anda gunakan untuk membuat workload identity.
- IMAGE_URL dengan mereferensikan ke image container, misalnya,
YAML
Anda dapat mendownload konfigurasi layanan yang ada ke dalam
file YAML menggunakan perintah gcloud run services describe
menggunakan flag
--format=export
.
Anda kemudian dapat memodifikasi file YAML 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 Anda, 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 workload identity.
Deploy konfigurasi ke layanan inferensi Knative Anda dengan menjalankan perintah berikut:
gcloud run services replace service.yaml
Memigrasikan layanan yang ada untuk menggunakan Workload Identity
Jika Anda mengaktifkan Workload Identity pada cluster yang ada, setiap layanan di cluster yang ingin Anda gunakan untuk menggunakan Workload Identity harus dimigrasikan. Pelajari cara memigrasikan layanan yang sudah ada.
Langkah berikutnya
Pelajari cara mengelola akses ke layanan Anda.