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 metode 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, OCI, Helm | Didukung oleh sebagian besar penyedia Git. Alternatif yang baik jika organisasi Anda tidak mengizinkan penggunaan kunci SSH. Mendukung nama pengguna dan sandi untuk OCI dan Helm. | Memerlukan pengelolaan token. Token dapat kedaluwarsa. |
| 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. |
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:
Siapkan, atau miliki akses ke, image OCI atau repositori Helm tempat Anda menyimpan file konfigurasi yang ingin disinkronkan oleh Config Sync. Untuk informasi selengkapnya, lihat referensi berikut:
- Menambahkan konfigurasi ke sumber tepercaya: informasi konseptual tentang konfigurasi.
- Praktik terbaik GitOps: tips dan praktik terbaik umum untuk mengatur dan mengelola repositori Anda.
- Menggunakan repo tidak terstruktur: rekomendasi untuk menggunakan dan mengatur repositori tidak terstruktur.
Buat, atau miliki akses ke, cluster GKE. Sebelum membuat cluster, tinjau persyaratan dan rekomendasi konfigurasi cluster untuk Config Sync.
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 token
Untuk menggunakan token guna memberikan akses hanya baca Config Sync ke repositori OCI Anda, buat Secret yang menggunakan nama pengguna dan sandi repositori OCI 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 OCI Anda.PASSWORD: sandi repositori OCI Anda.
Saat menginstal Config Sync, gunakan token (token) sebagai jenis autentikasi.
Anda juga harus menentukan Nama rahasia di kolom spec.oci.secretRef.name.
Menggunakan Akun Layanan Kubernetes
Untuk melakukan autentikasi dengan ServiceAccount Kubernetes, cluster Anda harus mengaktifkan Workload Identity Federation untuk GKE atau Workload Identity Federation untuk GKE berbasis fleet.
Untuk memberikan akses hanya baca Config Sync ke image OCI Anda menggunakan ServiceAccount Kubernetes, selesaikan langkah-langkah berikut:
-
Untuk mendapatkan izin yang Anda perlukan untuk membuat binding kebijakan, minta administrator untuk memberi Anda peran IAM berikut:
-
Memberikan akses di seluruh project:
Admin IAM Project (
roles/resourcemanager.projectIamAdmin) pada project -
Memberikan akses khusus repositori:
Administrator Artifact Registry (
roles/artifactregistry.admin) di repositori
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Memberikan akses di seluruh project:
Admin IAM Project (
Berikan peran Artifact Registry Reader (
roles/artifactregistry.reader) di project atau repositori ke ServiceAccount Kubernetes: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="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \ --condition=NoneBerikan 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="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \ --project=PROJECT_ID \ --condition=None
Ganti kode berikut:
PROJECT_ID: project ID Anda.FLEET_HOST_PROJECT_NUMBER: jika Anda menggunakan Workload Identity Federation for GKE, nilai ini sama dengan nomor project Anda. Jika Anda menggunakan Workload Identity Federation untuk GKE, nilai ini adalah nomor project fleet tempat cluster Anda terdaftar.FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation for GKE, nilai ini sama dengan project ID. Jika Anda menggunakan Workload Identity Federation for GKE fleet, nilai ini adalah project ID fleet tempat cluster Anda terdaftar.KUBERNETES_SERVICEACCOUNT: Akun Layanan Kubernetes untuk rekonsiliator. Dalam sebagian besar kasus, nilainya adalahroot-reconcilerkarena Config Sync otomatis membuat objekRootSyncbernamaroot-syncsaat diinstal dengan konsol Google Cloud atau Google Cloud CLI. Jika tidak, gunakanroot-reconciler-ROOT_SYNC_NAMEsebagai nilai.REPOSITORY: ID repositori.LOCATION: lokasi repositori regional atau multi-regional.
Saat Anda menginstal Config Sync, gunakan ServiceAccount Kubernetes (k8sserviceaccount) sebagai jenis autentikasi.
Menggunakan akun layanan default Compute Engine
Sebagai alternatif untuk akun layanan Google, jika Anda belum mengaktifkan Workload Identity Federation for 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@developer.gserviceaccount.com \
--role=roles/artifactregistry.reader
Ganti kode berikut:
PROJECT_ID: project ID AndaPROJECT_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 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 melakukan autentikasi menggunakan ServiceAccount Kubernetes, Anda harus memenuhi persyaratan berikut:
- Repositori Anda ada di Artifact Registry.
- Cluster Anda telah mengaktifkan Workload Identity Federation for GKE atau fleet Workload Identity Federation for GKE.
Untuk menggunakan ServiceAccount Kubernetes guna memberikan akses hanya baca Config Sync ke repositori Helm Anda, selesaikan langkah-langkah berikut:
-
Untuk mendapatkan izin yang Anda perlukan untuk membuat binding kebijakan, minta administrator untuk memberi Anda peran IAM berikut:
-
Memberikan akses di seluruh project:
Admin IAM Project (
roles/resourcemanager.projectIamAdmin) pada project -
Memberikan akses khusus repositori:
Administrator Artifact Registry (
roles/artifactregistry.admin) di repositori
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Memberikan akses di seluruh project:
Admin IAM Project (
Berikan peran Artifact Registry Reader (
roles/artifactregistry.reader) di project atau repositori ke ServiceAccount Kubernetes: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="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \ --condition=NoneBerikan 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="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \ --project=PROJECT_ID \ --condition=None
Ganti kode berikut:
PROJECT_ID: project ID Anda.FLEET_HOST_PROJECT_NUMBER: jika Anda menggunakan Workload Identity Federation for GKE, nilai ini sama dengan nomor project Anda. Jika Anda menggunakan Workload Identity Federation untuk GKE, nilai ini adalah nomor project fleet tempat cluster Anda terdaftar.FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation for GKE, nilai ini sama dengan project ID. Jika Anda menggunakan Workload Identity Federation for GKE fleet, nilai ini adalah project ID fleet tempat cluster Anda terdaftar.KUBERNETES_SERVICEACCOUNT: Akun Layanan Kubernetes untuk rekonsiliator. Dalam sebagian besar kasus, nilainya adalahroot-reconcilerkarena Config Sync otomatis membuat objekRootSyncbernamaroot-syncsaat diinstal dengan konsol Google Cloud atau Google Cloud CLI. Jika tidak, gunakanroot-reconciler-ROOT_SYNC_NAMEsebagai nilai.REPOSITORY: ID repositori.LOCATION: lokasi repositori regional atau multi-regional.
Saat Anda menginstal Config Sync, gunakan ServiceAccount Kubernetes (k8sserviceaccount) sebagai jenis autentikasi.
Menggunakan akun layanan default Compute Engine
Sebagai alternatif untuk akun layanan Google, jika Anda belum mengaktifkan Workload Identity Federation for 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@developer.gserviceaccount.com \
--role=roles/artifactregistry.reader
Ganti kode berikut:
PROJECT_ID: project ID AndaPROJECT_NUMBER: nomor project Anda.
Saat Anda menginstal Config Sync,
gunakan akun layanan Compute Engine (gcenode) sebagai jenis autentikasi.