Halaman ini menunjukkan cara menyinkronkan chart Helm dari Artifact Registry dengan membuat dan mengirim chart Helm ke repositori di Artifact Registry. Halaman ini juga berisi konfigurasi contoh untuk menyinkronkan chart dari repositori Helm Anda.
Anda dapat mengonfigurasi
Config Sync untuk menyinkronkan dari repositori Helm.
Anda dapat menyimpan chart Helm di Artifact Registry, yang merupakan
repositori Helm yang direkomendasikan untuk Google Cloud. Untuk menggunakan fitur ini, Anda harus
mengaktifkan
RootSync dan RepoSync API.
Config Sync merender chart Helm menggunakan
helm template
sehingga tidak mendukung pengelolaan siklus proses Helm penuh.
Daftar versi Helm dan Kustomize yang dibundel mencantumkan versi Kustomize dan Helm yang dibundel dengan versi Config Sync yang sesuai.
Sebelum memulai
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih Google Cloud project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Google Cloud project Anda.
-
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan GKE, Config Sync, Artifact Registry API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
anthosconfigmanagement.googleapis.com artifactregistry.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih Google Cloud project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Google Cloud project Anda.
-
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan GKE, Config Sync, Artifact Registry API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
anthosconfigmanagement.googleapis.com artifactregistry.googleapis.com - Buat, atau miliki akses ke, cluster yang memenuhi persyaratan untuk Config Sync dan menggunakan Config Sync versi terbaru.
- Instal
nomosCLI atau upgrade ke versi terbaru. - Instal Helm 3.8.0 atau yang lebih baru. Pada versi Helm sebelumnya, dukungan untuk chart dalam format OCI adalah fitur eksperimental.
- Aktifkan Workload Identity Federation untuk GKE di cluster Anda.
Batasan
Anda tidak dapat mengubah kolom yang tidak dapat diubah dalam konfigurasi hanya dengan mengubah nilai dalam sumber tepercaya. Jika perlu memperbarui kolom yang tidak dapat diubah, buat perubahan di sumber tepercaya terlebih dahulu, lalu hapus objek secara manual di cluster. Config Sync kemudian dapat membuat ulang objek dengan nilai kolom baru.
Chart Helm berikut menyertakan Tugas dan tidak direkomendasikan untuk deployment oleh Config Sync:
Untuk mempelajari lebih lanjut alasan Tugas tidak direkomendasikan untuk digunakan dengan Config Sync, lihat Menghindari pengelolaan Tugas dengan Config Sync.
Membuat repositori Artifact Registry
Di bagian ini, Anda akan membuat repositori Artifact Registry. Untuk mempelajari lebih lanjut cara membuat repositori Artifact Registry, lihat Membuat repositori.
Aktifkan Artifact Registry API:
gcloud services enable artifactregistry.googleapis.com --project=PROJECT_IDBuat repositori Artifact Registry:
gcloud artifacts repositories create AR_REPO_NAME \ --repository-format=docker \ --location=AR_REGION \ --description="Config Sync Helm repo" \ --project=PROJECT_ID
Ganti kode berikut:
PROJECT_ID: project ID organisasi.AR_REPO_NAME: ID repositori.AR_REGION: lokasi regional atau multi-regional repositori.
Variabel yang digunakan di bagian berikut:
FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation for GKE, ini sama denganPROJECT_ID. Jika Anda menggunakan Workload Identity Federation for GKE fleet, ini adalah project ID fleet tempat cluster Anda terdaftar.GSA_NAME: nama akun layanan Google kustom yang ingin Anda gunakan untuk terhubung ke Artifact Registry.KSA_NAME: akun layanan Kubernetes untuk rekonsiliator.- Untuk repositori root, jika nama
RootSyncadalahroot-sync, tambahkanroot-reconciler. Jika tidak, tambahkanroot-reconciler-ROOT_SYNC_NAME. - Untuk repositori namespace, jika nama
RepoSyncadalahrepo-sync, tambahkanns-reconciler-NAMESPACE. Jika tidak, tambahkanns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTHdenganREPO_SYNC_NAME_LENGTHadalah jumlah karakter dalamREPO_SYNC_NAME.
- Untuk repositori root, jika nama
Memberikan izin pembaca
Gunakan akun layanan Kubernetes untuk melakukan autentikasi ke Artifact Registry dengan menyelesaikan langkah-langkah berikut:
Berikan peran IAM Artifact Registry Reader (roles/artifactregistry.reader) ke akun layanan Kubernetes yang memiliki kumpulan Workload Identity Federation for GKE:
gcloud artifacts repositories add-iam-policy-binding AR_REPO_NAME \
--location=AR_REGION \
--member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
--role=roles/artifactregistry.reader \
--project=PROJECT_ID
Mengirim chart Helm ke repositori Artifact Registry
Di bagian ini, Anda akan mendownload chart Helm publik dan mengirimkannya ke Artifact Registry.
Ambil paket
mysql-9.3.1.tgzdari repositori Helm publik dan download secara lokal:helm pull mysql --repo https://charts.bitnami.com/bitnami --version 9.3.1Lakukan autentikasi dengan token akses:
Linux / macOS
gcloud auth print-access-token | helm registry login -u oauth2accesstoken \ --password-stdin https://AR_REGION-docker.pkg.devWindows
gcloud auth print-access-token ya29.8QEQIfY_... helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \ https://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAMEDalam perintah ini,
oauth2accesstokenadalah nama pengguna yang akan digunakan saat melakukan autentikasi dengan token akses dangcloud auth print-access-tokenadalah perintah untuk mendapatkan token akses. Token akses Anda adalah sandi untuk autentikasi. Autentikasi dengan token akses adalah metode autentikasi teraman authentication method.Kirim chart Helm ke Artifact Registry:
helm push mysql-9.3.1.tgz oci://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME
Mengonfigurasi Config Sync untuk menyinkronkan dari chart Helm Anda
Di bagian ini, Anda akan membuat objek RootSync dan mengonfigurasi Config Sync untuk menyinkronkan dari chart Helm.
Jika ingin mengganti nilai default chart Helm, Anda dapat melakukannya
dengan menentukan nilai di kolom spec.helm.values atau dengan menambahkan referensi ke
ConfigMap
menggunakan kolom spec.helm.valuesFileRefs. Untuk mempelajari lebih lanjut kolom opsional, lihat
Konfigurasi untuk repositori Helm.
nilai
Buat objek RootSync dengan nama unik:
cat <<EOF>> ROOT_SYNC_NAME.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceFormat: unstructured sourceType: helm helm: repo: oci://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME chart: mysql version: 9.3.1 releaseName: my-mysql namespace: test auth: k8sserviceaccount # Use the optional field spec.helm.values to override default values. # You can use the same format as the default values file to override # default values. values: image: pullPolicy: Always primary: resources: limits: cpu: 250m memory: 256Mi requests: cpu: 250m memory: 256Mi EOFGanti
ROOT_SYNC_NAMEdengan nama objek RootSync Anda. Nama harus unik di cluster dan tidak boleh lebih dari 26 karakter. Jika Anda menginstal Config Sync menggunakan Google Cloud konsol atau Google Cloud CLI, pilih nama selainroot-sync.Dalam contoh ini, chart Helm di-deploy di namespace
testkarena resource-nya berisinamespace: {{ .Release.Namespace }}dalam templatenya.Anda dapat menggunakan
helm.valuesuntuk mengganti nilai default. Untuk mempelajari kolom opsional, lihat Konfigurasi untuk repositori Helm.Terapkan objek RootSync:
kubectl apply -f ROOT_SYNC_NAME.yamlPastikan Config Sync menyinkronkan dari image:
nomos status --contexts=$(kubectl config current-context)Outputnya mirip dengan hal berikut ini:
Connecting to clusters... *cluster-name -------------------- <root>:root-sync oci://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/mysql:9.3.1 SYNCED 9.3.1 Managed resources: NAMESPACE NAME STATUS SOURCEHASH default configmap/my-mysql Current 9.3.1 default secret/my-mysql Current 9.3.1 default service/my-mysql Current 9.3.1 default service/my-mysql-headless Current 9.3.1 default serviceaccount/my-mysql Current 9.3.1 default statefulset.apps/my-mysql Current 9.3.1Anda kini telah berhasil menyinkronkan chart Helm ke cluster Anda.
valuesFileRefs
Buat objek RootSync dengan nama unik:
cat <<EOF>> ROOT_SYNC_NAME.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceFormat: unstructured sourceType: helm helm: repo: oci://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME chart: mysql version: 9.3.1 releaseName: my-mysql auth: k8sserviceaccount # use the optional field spec.helm.valuesFilesRefs to override default values # by referencing a ConfigMap valuesFileRefs: - name: CONFIGMAP_NAME dataKey: DATA_KEY EOFGanti kode berikut:
ROOT_SYNC_NAME: nama objek RootSync Anda. Nama harus unik di cluster dan tidak boleh lebih dari 26 karakter. Jika Anda menginstal Config Sync menggunakan Google Cloud konsol atau Google Cloud CLI, pilih nama selainroot-sync.CONFIGMAP_NAME: nama ConfigMap Anda. Nama ini dapat berupa nama ConfigMap valid yang diterima oleh Kubernetes dan unik di cluster Anda.- (opsional)
DATA_KEY: kunci data di ConfigMap yang nilainya ingin Anda baca. Default-nya adalahvalues.yaml.
Buat objek ConfigMap dengan nilai Anda:
cat <<EOF>> CONFIGMAP_NAME.yaml apiVersion: v1 kind: ConfigMap metadata: name: CONFIGMAP_NAME namespace: config-management-system immutable: true # You can use the same format as the default values file to override # default values. data: DATA_KEY: |- image: pullPolicy: Always primary: resources: limits: cpu: 250m memory: 256Mi requests: cpu: 250m memory: 256Mi EOFJika Anda tidak menentukan nilai untuk
DATA_KEYdi RootSync, nilai tersebut harus berupavalues.yamldefault.Terapkan objek ConfigMap:
kubectl apply -f CONFIGMAP_NAME.yamlTerapkan objek RootSync:
kubectl apply -f ROOT_SYNC_NAME.yamlPastikan Config Sync menyinkronkan dari image:
nomos status --contexts=$(kubectl config current-context)Outputnya mirip dengan hal berikut ini:
Connecting to clusters... *cluster-name -------------------- <root>:root-sync oci://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/mysql:9.3.1 SYNCED 9.3.1 Managed resources: NAMESPACE NAME STATUS SOURCEHASH default configmap/my-mysql Current 9.3.1 default secret/my-mysql Current 9.3.1 default service/my-mysql Current 9.3.1 default service/my-mysql-headless Current 9.3.1 default serviceaccount/my-mysql Current 9.3.1 default statefulset.apps/my-mysql Current 9.3.1Anda kini telah berhasil menyinkronkan chart Helm ke cluster Anda.
Anda juga dapat melihat
imagePullPolicydi salah satu resource yang disinkronkan di cluster untuk memverifikasi bahwa nilai dari ConfigMap digunakan untuk merender chart:kubectl get statefulset -n test my-mysql -o yaml | grep imagePullPolicyKarena ConfigMap tidak dapat diubah, untuk mengubah nilai, Anda harus membuat ConfigMap baru dan memperbarui
spec.helm.valuesFileRefsdalam spesifikasi RootSync atau RepoSync agar mengarah ke ConfigMap baru. Membuat ConfigMap baru memastikan perubahan pada nilai menyebabkan chart Helm dirender ulang, yang berguna saat beberapa ConfigMap yang direferensikan dispec.helm.valuesFileRefsperlu diperbarui secara bersamaan saat dirender ulang. Untuk mengubah nilai yang digunakan untuk merender chart, buat ConfigMap baru dengan nama yang berbeda:cat <<EOF>> CONFIGMAP_NAME-2.yaml apiVersion: v1 kind: ConfigMap metadata: name: CONFIGMAP_NAME-2 namespace: config-management-system immutable: true # You can use the same format as the default values file to override # default values. data: DATA_KEY: |- image: pullPolicy: Never primary: resources: limits: cpu: 100m memory: 256Mi requests: cpu: 250m memory: 200Mi EOFPerbarui objek RootSync untuk mereferensikan ConfigMap baru:
cat <<EOF>> ROOT_SYNC_NAME.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceFormat: unstructured sourceType: helm helm: repo: oci://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME chart: mysql version: 9.3.1 releaseName: my-mysql namespace: test auth: k8sserviceaccount # use the optional field spec.helm.valuesFilesRefs to override default values # by referencing a ConfigMap valuesFileRefs: - name: CONFIGMAP_NAME-2 dataKey: DATA_KEY EOFTerapkan objek ConfigMap:
kubectl apply -f CONFIGMAP_NAME-2.yamlTerapkan objek RootSync:
kubectl apply -f ROOT_SYNC_NAME.yamlPastikan Config Sync menyinkronkan dari image:
nomos status --contexts=$(kubectl config current-context)Anda juga dapat melihat
imagePullPolicydi salah satu resource yang disinkronkan di cluster untuk memverifikasi bahwa nilai baru dari ConfigMap yang diperbarui digunakan untuk merender chart:kubectl get statefulset -n test my-mysql -o yaml | grep imagePullPolicy
Langkah berikutnya
- Pelajari lebih lanjut cara menginstal Config Sync.