Memberikan akses Config Sync ke image OCI atau repositori Helm Anda

Halaman ini menjelaskan cara mengautentikasi Config Sync ke image OCI atau repositori Helm Anda. Config Sync memerlukan akses hanya baca ke sumber tepercaya Anda agar dapat membaca konfigurasi, menerapkannya ke cluster, dan menyinkronkannya.

Memilih metode autentikasi

Metode autentikasi yang Anda gunakan bergantung pada apa yang didukung untuk jenis sumber Anda.

Tabel berikut merangkum metode autentikasi yang dapat Anda gunakan dengan Config Sync:

Metode Sumber yang didukung Deskripsi Batasan
Tidak ada autentikasi Git, OCI, Helm Tidak diperlukan penyiapan tambahan. Hanya berfungsi jika sumber tepercaya Anda bersifat publik.
Pasangan kunci SSH Git Didukung oleh sebagian besar penyedia Git. Memerlukan pengelolaan kunci. Tidak didukung untuk OCI atau Helm.
token Git, Helm Didukung oleh sebagian besar penyedia Git. Alternatif yang baik jika organisasi Anda tidak mengizinkan penggunaan kunci SSH. Mendukung nama pengguna dan sandi untuk Helm. Memerlukan pengelolaan token. Masa berlaku token dapat berakhir. Tidak didukung untuk OCI.
Akun layanan Kubernetes OCI, Helm Menggunakan IAM untuk memberikan akses Artifact Registry langsung ke akun layanan Kubernetes. Memerlukan Workload Identity Federation for GKE diaktifkan di cluster Anda. Tidak didukung untuk Git.
Akun layanan Google Git Menggunakan IAM, yang menghindari penyimpanan kredensial di Secret Kubernetes. Direkomendasikan untuk Secure Source Manager dan Cloud Source Repositories. Memerlukan Workload Identity Federation for GKE diaktifkan di cluster Anda. Memerlukan konfigurasi sebelum dan setelah menginstal Config Sync di cluster Anda. Tidak didukung untuk repositori yang dihosting di luar Secure Source Manager atau Cloud Source Repositories.
Aplikasi GitHub Git Integrasi langsung dengan GitHub. Memungkinkan izin terperinci. Hanya didukung untuk repositori yang dihosting di GitHub. Hanya didukung di Config Sync versi 1.19.1 dan yang lebih baru.

Config Sync juga mendukung metode autentikasi berikut; namun, metode ini hanya direkomendasikan jika Anda tidak dapat menggunakan salah satu opsi yang tercantum dalam tabel sebelumnya:

  • cookiefile: mungkin tidak didukung untuk semua penyedia Git. Tidak didukung untuk OCI atau Helm.
  • Akun layanan default Compute Engine (gcenode): tidak direkomendasikan karena metode ini hanya berfungsi jika Workload Identity Federation for GKE dinonaktifkan. Didukung untuk Git, OCI, dan Helm.
  • Akun layanan Google untuk Helm dan OCI: didukung, tetapi tidak direkomendasikan karena metode akun layanan Kubernetes memerlukan lebih sedikit konfigurasi.

Sebelum memulai

Sebelum Anda memberikan akses hanya baca Config Sync ke sumber tepercaya Anda, selesaikan tugas berikut:

Memberikan akses ke image OCI

Bagian ini menjelaskan cara memberikan akses hanya baca Config Sync ke image OCI dengan menggunakan metode autentikasi yang didukung.

Anda harus menyimpan image OCI di Artifact Registry untuk melakukan autentikasi ke Config Sync.

Menggunakan akun layanan Kubernetes

Untuk melakukan autentikasi dengan akun layanan Kubernetes, cluster Anda harus mengaktifkan Workload Identity Federation untuk GKE atau Workload Identity Federation fleet untuk GKE.

Untuk memberikan akses hanya baca Config Sync ke image OCI Anda menggunakan akun layanan Kubernetes, selesaikan langkah-langkah berikut:

  1. Untuk mendapatkan izin yang diperlukan untuk membuat binding kebijakan, minta administrator untuk memberi Anda peran IAM Admin Akun Layanan (roles/iam.serviceAccountAdmin) pada akun layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

  2. Berikan peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader) ke akun layanan Kubernetes yang mencakup kumpulan Workload Identity Federation untuk GKE:

    • Berikan izin di seluruh project jika izin yang sama berlaku untuk semua repositori dalam project.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Berikan izin khusus repositori jika Anda ingin akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori di project Anda.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation for GKE, nilai ini sama dengan project ID. Jika Anda menggunakan fleet Workload Identity Federation untuk GKE, nilai ini adalah project ID fleet tempat cluster Anda terdaftar.
    • REPOSITORY: ID gambar.
    • LOCATION: lokasi regional atau multi-regional repositori.

Saat Anda menginstal Config Sync, gunakan akun layanan Kubernetes (k8sserviceaccount) sebagai jenis autentikasi.

Menggunakan akun layanan default Compute Engine

Sebagai alternatif untuk akun layanan Google, jika Anda belum mengaktifkan Workload Identity Federation untuk GKE, Anda dapat menggunakan akun layanan Compute Engine untuk melakukan autentikasi.

Untuk menggunakan akun layanan default Compute Engine guna memberikan akses hanya baca Config Sync ke repositori Anda, berikan izin baca ke akun layanan Compute Engine di Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@ \
      --role=roles/artifactregistry.reader

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • PROJECT_NUMBER: nomor project Anda.

Saat Anda menginstal Config Sync, gunakan akun layanan Compute Engine (gcenode) sebagai jenis autentikasi.

Memberikan akses ke repositori Helm

Bagian ini menjelaskan cara memberikan akses hanya baca Config Sync ke diagram Helm yang disimpan di repositori.

Menggunakan token

Untuk menggunakan token guna memberikan akses hanya baca Config Sync ke repositori Helm Anda, buat Secret yang menggunakan nama pengguna dan sandi repositori Helm Anda:

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

Ganti kode berikut:

  • SECRET_NAME: nama untuk Secret Anda.
  • USERNAME: nama pengguna repositori Helm Anda.
  • PASSWORD: sandi repositori Helm Anda.

Saat Anda menginstal Config Sync, gunakan token (token) sebagai jenis autentikasi. Anda juga harus menentukan Nama rahasia di kolom spec.helm.secretRef.name.

Menggunakan akun layanan Kubernetes

Untuk mengautentikasi menggunakan akun layanan Kubernetes, Anda harus memenuhi persyaratan berikut:

Untuk menggunakan akun layanan Kubernetes guna memberikan akses hanya baca Config Sync ke repositori Helm Anda, selesaikan langkah-langkah berikut:

  1. Untuk mendapatkan izin yang diperlukan untuk membuat binding kebijakan, minta administrator untuk memberi Anda peran IAM Admin Akun Layanan (roles/iam.serviceAccountAdmin) pada akun layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

  2. Untuk menggunakan akun layanan Kubernetes guna memberikan akses hanya baca Config Sync ke repositori Helm Anda, berikan peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader) ke akun layanan Kubernetes yang mencakup kumpulan Workload Identity Federation untuk GKE:

    • Berikan izin di seluruh project jika izin yang sama berlaku untuk semua repositori dalam project.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Berikan izin khusus repositori jika Anda ingin akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori di project Anda.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation for GKE, nilai ini sama dengan project ID. Jika Anda menggunakan fleet Workload Identity Federation untuk GKE, nilai ini adalah project ID fleet tempat cluster Anda terdaftar.
    • REPOSITORY: ID gambar.
    • LOCATION: lokasi regional atau multi-regional repositori.

Saat Anda menginstal Config Sync, gunakan akun layanan Kubernetes (k8sserviceaccount) sebagai jenis autentikasi.

Menggunakan akun layanan default Compute Engine

Sebagai alternatif untuk akun layanan Google, jika Anda belum mengaktifkan Workload Identity Federation untuk GKE, Anda dapat menggunakan akun layanan Compute Engine untuk melakukan autentikasi.

Untuk menggunakan akun layanan default Compute Engine guna memberikan akses hanya baca Config Sync ke repositori Anda, berikan izin baca ke akun layanan Compute Engine di Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@ \
      --role=roles/artifactregistry.reader

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • PROJECT_NUMBER: nomor project Anda.

Saat Anda menginstal Config Sync, gunakan akun layanan Compute Engine (gcenode) sebagai jenis autentikasi.

Langkah berikutnya