Dalam tutorial ini, Anda akan menambahkan konfigurasi Kustomize yang mereferensikan diagram Helm ke repositori, lalu menggunakan Config Sync untuk menyinkronkan cluster ke repositori.
Saat Anda menggunakan Config Sync, konfigurasi Kustomize dan diagram Helm yang Anda tempatkan di repositori Git akan dirender secara otomatis. Rendering otomatis memberikan manfaat berikut:
Anda tidak lagi memerlukan pipeline hidrasi eksternal. Tanpa rendering otomatis, Anda harus merender konfigurasi secara manual menggunakan Kustomize dan Helm di workstation, atau menyiapkan langkah untuk memicu proses hidrasi di sistem CI. Dengan rendering otomatis, Config Sync menangani eksekusi.
Biaya pemeliharaan Anda berkurang. Tanpa rendering otomatis, Anda harus mengelola satu repositori Git dengan konfigurasi Kustomize asli dan diagram Helm, serta repositori Git lain dengan output yang dihasilkan oleh penggabungan eksternal. Kemudian, Anda harus mengonfigurasi Config Sync untuk menyinkronkan dari repositori Git dengan output yang dirender. Dengan rendering otomatis, Anda hanya perlu mengelola satu repositori dengan konfigurasi asli.
Alur kerja pengembangan Anda disederhanakan. Tanpa rendering otomatis, perubahan yang dilakukan pada konfigurasi asli Anda perlu ditinjau dua kali sebelum digabungkan; sekali di repositori asli dan sekali lagi di repositori yang dirender. Dengan rendering otomatis, konfigurasi yang dirender dihasilkan oleh Config Sync, dan Anda hanya perlu meninjau perubahan pada konfigurasi asli.
Mengonfigurasi repositori Anda
Tugas berikut menunjukkan cara menyiapkan repositori Git dengan konfigurasi yang menggabungkan konfigurasi Kustomize dengan Helm chart:
Buat, atau pastikan Anda memiliki akses ke, repositori Git. Karena repositori Anda menggunakan Kustomize dan Helm, repositori ini harus berupa repositori tidak terstruktur.
Di root repositori Git Anda, buat file bernama
kustomization.yaml
dan tempelkan kode berikut ke dalamnya:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: Deployment
File ini adalah overlay Kustomize yang mengarah ke dasar Kustomize. Overlay ini mencakup patch untuk dasar diagram Helm yang menambahkan anotasi
client.lifecycle.config.k8s.io/mutation: ignore
ke semua objek Deployment. Anotasi menyebabkan Config Sync mengabaikan perubahan yang bertentangan pada objek ini di cluster setelah Anda membuatnya.Di repositori Git Anda, buat direktori bernama
base
:mkdir base
Di direktori
base
, buat file lain bernamakustomization.yaml
lalu tempelkan kode berikut ke dalamnya:# ./base/kustomization.yaml helmCharts: - name: cert-manager repo: https://charts.jetstack.io version: v1.5.3 releaseName: my-cert-manager namespace: cert-manager
File ini adalah dasar Kustomize, yang merender diagram Helm jarak jauh.
Kembali ke root repositori Git Anda, buat file bernama
ignore-deployment-mutation-patch.yaml
, lalu tempelkan kode berikut ke dalamnya:# ./ignore-deployment-mutation-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: any annotations: client.lifecycle.config.k8s.io/mutation: ignore
File ini adalah patch yang diterapkan ke diagram Helm dasar. Tindakan ini menambahkan anotasi
client.lifecycle.config.k8s.io/mutation: ignore
ke semua Deployment di direktori dasar.Lakukan perubahan pada repositori Anda:
git add . git commit -m 'Set up manifests.' git push
Repositori contoh memiliki contoh tampilan repositori tersebut.
Melihat pratinjau dan memvalidasi konfigurasi yang dirender
Sebelum Config Sync merender konfigurasi dan menyinkronkannya ke cluster, pastikan
konfigurasi akurat dengan menjalankan nomos hydrate
untuk melihat pratinjau konfigurasi yang dirender
dan menjalankan nomos vet
untuk memvalidasi bahwa formatnya sudah benar.
Jalankan
nomos hydrate
berikut dengan flag berikut:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORY
Dalam perintah ini:
--source-format=unstructured
memungkinkannomos hydrate
berfungsi di repositori tidak terstruktur. Karena Anda menggunakan konfigurasi Kustomize dan diagram Helm, Anda harus menggunakan repositori tidak terstruktur dan menambahkan tanda ini.--output=OUTPUT_DIRECTORY
memungkinkan Anda menentukan jalur ke konfigurasi yang dirender. GantiOUTPUT_DIRECTORY
dengan lokasi tempat Anda ingin menyimpan output.
Periksa sintaksis dan validitas konfigurasi Anda dengan menjalankan
nomos vet
dengan flag berikut:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORY
Dalam perintah ini:
--source-format=unstructured
memungkinkannomos vet
berfungsi di repositori tidak terstruktur.--keep-output=true
menyimpan konfigurasi yang dirender.--output=OUTPUT_DIRECTORY
adalah jalur ke konfigurasi yang dirender.
Mengonfigurasi sinkronisasi dari repositori Git
Setelah membuat repositori dengan konfigurasi yang ingin digunakan, Anda dapat mengonfigurasi sinkronisasi dari cluster ke repositori.
Untuk mengonfigurasi objek
RootSync
, buat fileroot-sync.yaml
:# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: YOUR_GIT_REPOSITORY branch: main auth: none override: enableShellInRendering: true
Ganti
YOUR_GIT_REPOSITORY
dengan URL repositori Git Anda.Terapkan file
root-sync.yaml
ke cluster Anda:kubectl apply -f root-sync.yaml
Memverifikasi penginstalan
Setelah menginstal dan mengonfigurasi Config Sync, Anda dapat memverifikasi bahwa penginstalan berhasil diselesaikan.
Verifikasi bahwa tidak ada error lain dengan menggunakan
nomos status
:nomos status
Contoh output:
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5a
Verifikasi apakah komponen Helm berhasil diinstal:
kubectl get all -n cert-manager
Contoh output:
NAME READY STATUS RESTARTS AGE pod/my-cert-manager-54f5ccf74-wfzs4 1/1 Running 0 10m pod/my-cert-manager-cainjector-574bc8678c-rh7mq 1/1 Running 0 10m pod/my-cert-manager-webhook-7454f4c77d-rkct8 1/1 Running 0 10m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/my-cert-manager ClusterIP 10.76.9.35 <none> 9402/TCP 10m service/my-cert-manager-webhook ClusterIP 10.76.11.205 <none> 443/TCP 10m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/my-cert-manager 1/1 1 1 10m deployment.apps/my-cert-manager-cainjector 1/1 1 1 10m deployment.apps/my-cert-manager-webhook 1/1 1 1 10m NAME DESIRED CURRENT READY AGE replicaset.apps/my-cert-manager-54f5ccf74 1 1 1 10m replicaset.apps/my-cert-manager-cainjector-574bc8678c 1 1 1 10m replicaset.apps/my-cert-manager-webhook-7454f4c77d 1 1 1 10m