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.yamldan tempelkan kode berikut ke dalamnya:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: DeploymentFile 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: ignoreke 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 baseDi direktori
base, buat file lain bernamakustomization.yamllalu 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-managerFile 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: ignoreFile ini adalah patch yang diterapkan ke diagram Helm dasar. Tindakan ini menambahkan anotasi
client.lifecycle.config.k8s.io/mutation: ignoreke 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 hydrateberikut dengan flag berikut:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORYDalam perintah ini:
--source-format=unstructuredmemungkinkannomos hydrateberfungsi di repositori tidak terstruktur. Karena Anda menggunakan konfigurasi Kustomize dan diagram Helm, Anda harus menggunakan repositori tidak terstruktur dan menambahkan tanda ini.--output=OUTPUT_DIRECTORYmemungkinkan Anda menentukan jalur ke konfigurasi yang dirender. GantiOUTPUT_DIRECTORYdengan lokasi tempat Anda ingin menyimpan output.
Periksa sintaksis dan validitas konfigurasi Anda dengan menjalankan
nomos vetdengan flag berikut:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORYDalam perintah ini:
--source-format=unstructuredmemungkinkannomos vetberfungsi di repositori tidak terstruktur.--keep-output=truemenyimpan konfigurasi yang dirender.--output=OUTPUT_DIRECTORYadalah 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: trueGanti
YOUR_GIT_REPOSITORYdengan URL repositori Git Anda.Terapkan file
root-sync.yamlke 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 statusContoh output:
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5aVerifikasi apakah komponen Helm berhasil diinstal:
kubectl get all -n cert-managerContoh 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