Menggunakan Workload Identity Federation untuk GKE

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

Untuk mengautentikasi layanan penayangan Knative, Anda harus:

  1. Mengaktifkan Workload Identity Federation untuk GKE di cluster Anda
  2. Konfigurasikan izin
  3. Ikatkan Akun Layanan Kubernetes (KSA) menjadi 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 Federation untuk GKE pada cluster Anda

Untuk menyiapkan Workload Identity Federation untuk GKE dengan inferensi Knative, Anda dapat menyiapkan Fleet Workload Identity Federation daripada menggunakan file JSON Akun Layanan Google Cloud.

Konfigurasi izin untuk mengaktifkan semua metrik

Untuk mengaktifkan metrik, seperti melaporkan jumlah permintaan atau meminta latensi ke Kemampuan Observasi Google Cloud, Anda harus memberikan izin tulis untuk Cloud Monitoring. Sebagai Anda dapat memberikan Peran Penulis Metrik Monitoring (roles/monitoring.metricWriter) ke Akun Layanan Google yang yang terkait dengan penyaluran Knative karena mencakup semua izin untuk menulis data pemantauan. Lihat Menggunakan akun layanan untuk mengetahui informasi selengkapnya informasi 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). Beban kerja apa pun yang berjalan sebagai KSA yang Anda mengikat, 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 Federation untuk GKE. GSA dapat berasal dari project Google Cloud yang berbeda dari Project Google Cloud tempat cluster berada.

  1. Jika GSA tidak ada, buat GSA; sebaliknya, dan langsung ke langkah berikutnya. Anda dapat membuat GSA untuk digunakan dengan penayangan Knative dalam project Google Cloud di organisasi Anda, lalu menggunakannya dari dalam Project Google Cloud tempat layanan penyaluran 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 penyaluran Knative, lihat Menggunakan akun layanan.

  2. Pastikan GSA Anda memiliki Peran IAM yang yang dibutuhkan. 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 ID project Google Cloud tempat akun Google Service Account tinggal.
    • GSA_NAME dengan nama Akun Layanan Google Anda.
    • ROLE_NAME dengan peran IAM yang akan ditetapkan ke GSA, seperti roles/monitoring.metricWriter.
  3. Jika Akun Layanan Kubernetes tidak ada, buat akun di layanan yang sama Namespace Kubernetes sebagai layanan penayangan Knative Anda; sebaliknya, lewati ke langkah berikutnya:

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

    1. Izinkan KSA meniru identitas GSA dengan membuat Kebijakan IAM pengikatan 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 penayangan Knative Anda tetap ada.
      • 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 dapat menggunakan Akun Layanan Google di organisasi. Untuk melihat Akun Layanan Google Anda, lihat Mencantumkan akun layanan.
    2. Tambahkan 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 yang Anda membuat binding.

Men-deploy layanan baru untuk menggunakan Workload Identity Federation untuk GKE

Men-deploy layanan penayangan Knative baru yang menggunakan Workload Identity Federation for GKE dibuat.

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, lalu klik Edit & Deploy Revisi Baru.

  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 Konfigurasi cara layanan ini dipicu, memilih konektivitas yang ingin Anda gunakan untuk memanggil layanan.

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

Command line

  • Untuk layanan yang ada, tetapkan Akun Layanan Kubernetes dengan menjalankan 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 menciptakan workload identity.
  • Untuk layanan baru, tetapkan Akun Layanan Kubernetes dengan menjalankan perintah gcloud run deploy dengan --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 menciptakan workload identity.

YAML

Anda dapat mendownload konfigurasi layanan yang ada ke YAML dengan perintah gcloud run services describe menggunakan Tanda --format=export. Anda kemudian dapat memodifikasi file YAML itu 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 pada ruang kerja lokal:

    gcloud run services describe SERVICE --format export > service.yaml

    Ganti SERVICE dengan nama Anda Layanan penyaluran Knative.

  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 yang digunakan 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 agar menggunakan Workload Identity Federation untuk GKE

Jika Anda mengaktifkan Workload Identity Federation untuk GKE pada cluster yang ada, setiap layanan di cluster yang ingin Anda gunakan Workload Identity Federation untuk GKE harus dimigrasikan. Pelajari cara memigrasikan data yang ada Google.

Langkah berikutnya

Pelajari cara mengelola akses ke layanan IT perusahaan mereka.