Menggunakan Workload Identity

Pelajari cara mengautentikasi layanan penyaluran Knative Anda dengan Workload Identity untuk mengakses Google Cloud API seperti Compute API, Storage and Database API, atau Machine Learning API.

Untuk mengautentikasi layanan penayangan Knative, Anda harus:

  1. Mengaktifkan Workload Identity di cluster Anda
  2. Konfigurasikan izin
  3. Ikat Akun Layanan Kubernetes (KSA) Anda ke Akun Layanan Google (GSA)

Setelah mengikuti langkah-langkah ini, Anda dapat men-deploy layanan inferensi Knative baru yang menggunakan identitas yang Anda buat.

Mengaktifkan Workload Identity di cluster Anda

Untuk menyiapkan Workload Identity dengan inferensi Knative, Anda dapat menyiapkan fleet Workload Identity Federation, bukan menggunakan file JSON Google Cloud Service Account.

Konfigurasi 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 Google Service Account yang terkait dengan inferensi Knative karena menyertakan izin yang diperlukan untuk menulis data pemantauan. Lihat Menggunakan akun layanan untuk informasi selengkapnya tentang cara membuat Akun Layanan Google.

Mengikat akun layanan

Anda perlu menyiapkan hubungan untuk Akun Layanan Kubernetes (KSA) untuk bertindak sebagai akun layanan Google (GSA). Beban kerja apa pun yang berjalan sebagai KSA yang Anda ikat, secara otomatis melakukan autentikasi sebagai GSA saat mengakses Google Cloud API. KSA yang Anda ikat harus ada di dalam cluster dan namespace layanan penayangan Knative tempat Anda ingin menggunakan Workload Identity. GSA dapat berasal dari project Google Cloud yang berbeda dari project Google Cloud tempat cluster berada.

  1. Jika GSA tidak ada, buat sendiri; jika tidak, lewati ke langkah berikutnya. Anda dapat membuat GSA untuk digunakan dengan penayangan Knative dalam project Google Cloud apa pun di organisasi, lalu menggunakannya dari dalam project Google Cloud tempat layanan penayangan Knative 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 lebih lanjut tentang cara menggunakan akun layanan Google dengan layanan penayangan Knative Anda, lihat Menggunakan akun layanan.

  2. Pastikan GSA Anda memiliki peran IAM yang Anda perlukan. 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 untuk ditetapkan ke GSA Anda, seperti roles/monitoring.metricWriter.
  3. Jika Akun Layanan Kubernetes tidak ada, buat akun di namespace Kubernetes yang sama dengan layanan penayangan Knative Anda; jika tidak, lanjutkan ke langkah berikutnya:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  4. Ikat akun layanan Kubernetes dan Google untuk membuat identitas, lalu deploy ke cluster Anda:

    1. 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 bagian Mencantumkan akun layanan.
    2. 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 tempat Anda membuat binding.
      • GSA_NAME@GSA_PROJECT_ID dengan nama Akun Layanan Google dan ID project Google Cloud tempat Anda membuat binding.

Men-deploy layanan baru untuk menggunakan Workload Identity

Deploy layanan penayangan Knative baru yang menggunakan Workload Identity yang Anda buat.

Konsol

  1. Buka penyaluran Knative di Konsol Google Cloud:

    Buka penayangan Knative

  2. Klik Buat Layanan jika Anda mengonfigurasi layanan baru yang akan di-deploy. Jika Anda mengonfigurasi layanan yang ada, klik layanan tersebut, lalu klik Edit & Deploy New Revision.

  3. Di bagian Setelan lanjutan, klik Penampung.

  4. Klik menu dropdown akun Layanan dan pilih akun layanan yang diinginkan.

  5. Klik Berikutnya untuk melanjutkan ke bagian berikutnya.

  6. Di bagian Konfigurasikan cara layanan ini dipicu, pilih konektivitas yang ingin Anda gunakan untuk memanggil layanan.

  7. Klik Create untuk men-deploy image ke inferensi Knative dan tunggu hingga deployment selesai.

Command line

  • Untuk layanan yang ada, tetapkan Akun Layanan Kubernetes dengan menjalankan perintah gcloud run services update menggunakan 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.

YAML

Anda dapat mendownload konfigurasi layanan yang ada ke dalam file YAML dengan perintah gcloud run services describe menggunakan flag --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.

  1. Download konfigurasi layanan Anda menjadi 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.

  2. 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.
  3. Deploy konfigurasi ke layanan penyaluran 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 tersebut yang ingin Anda gunakan Workload Identity harus dimigrasikan. Pelajari cara memigrasikan layanan yang ada.

Langkah berikutnya

Pelajari cara mengelola akses ke layanan Anda.