Dalam tutorial ini, Anda akan menambahkan konfigurasi Kustomize yang mereferensikan chart Helm ke repositori, lalu menggunakan Config Sync untuk menyinkronkan cluster ke repositori.
Saat Anda menggunakan Config Sync, konfigurasi Kustomize dan chart Helm yang Anda tempatkan di repositori Git akan otomatis dirender. 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 memelihara satu repositori Git dengan konfigurasi Kustomize dan chart Helm asli, serta repositori Git lainnya dengan output yang dihasilkan oleh hidrasi eksternal. Kemudian, Anda harus mengonfigurasi Config Sync untuk melakukan sinkronisasi dari repositori Git dengan output yang dirender. Dengan rendering otomatis, Anda hanya perlu memelihara satu repositori dengan konfigurasi asli.
Alur kerja pengembangan Anda disederhanakan. Tanpa rendering otomatis, perubahan yang dilakukan pada konfigurasi asli Anda harus 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.
Tujuan
- Mengonfigurasi repositori Anda dengan konfigurasi Kustomize yang mereferensikan chart Helm siap pakai untuk cert-manager. cert-manager adalah alat untuk Kubernetes yang membantu Anda mengelola sertifikat.
- Melihat pratinjau dan memvalidasi konfigurasi yang Anda buat.
- Menggunakan Config Sync untuk otomatis merender chart dan menyinkronkan cluster ke repositori.
- Memastikan penginstalan berhasil.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih berikut Google Cloud:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.
Sebelum memulai
-
Di Google Cloud konsol, pada halaman pemilih project, pilih atau buat 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 Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
- Buat, atau pastikan Anda memiliki akses ke, cluster yang memenuhi
persyaratan untuk Config Sync
dan menggunakan setelan Config Sync berikut:
- Menggunakan repositori tidak terstruktur.
- API
RootSyncdanRepoSyncdiaktifkan. spec.override.enableShellInRenderingditetapkan ketrueagar Config Sync dapat mengambil basis jarak jauh dari repositori publik dalam proses rendering.
- Daftarkan cluster Anda ke fleet.
- Instal alat command line
nomos. Jika Anda sudah menginstal alatnomos, pastikan Anda mengupgrade-nya ke versi 1.9.0 atau yang lebih baru. - Instal Helm.
Sebaiknya Anda juga memiliki pemahaman tentang Git, Kustomize, dan Helm.
Mengonfigurasi repositori
Tugas berikut menunjukkan cara menyiapkan repositori Git dengan konfigurasi yang menggabungkan konfigurasi Kustomize dengan chart Helm:
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 basis Kustomize. Overlay ini mencakup patch untuk basis chart Helm yang menambahkan anotasi
client.lifecycle.config.k8s.io/mutation: ignoreke semua objek Deployment. Anotasi ini 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.yamldan 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 basis Kustomize, yang merender chart Helm jarak jauh.
Kembali ke root repositori Git Anda, buat file bernama
ignore-deployment-mutation-patch.yamldan 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 chart Helm dasar. File 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 chart Helm, Anda harus menggunakan repositori tidak terstruktur dan menambahkan flag 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 Anda gunakan, 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.
Pastikan 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
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- Di Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource satu per satu
Menghapus manifes di repositori
Untuk membantu mencegah penghapusan yang tidak disengaja, Config Sync tidak mengizinkan Anda menghapus semua namespace atau resource cakupan cluster dalam satu commit. Ikuti petunjuk ini untuk meng-uninstal komponen dengan benar dan menghapus namespace dalam commit terpisah:
Hapus komponen cert-manager dari repositori Anda:
git rm -rf manifests/cert-manager \ && git commit -m "uninstall cert-manager" \ && git push origin BRANCHGanti
BRANCHdengan cabang tempat Anda membuat repositori.Hapus namespace cert-manager:
git rm manifests/namespace-cert-manager.yaml \ && git commit -m "remove the cert-manager namespace" \ && git push origin BRANCHPastikan namespace cert-manager tidak ada:
kubectl get namespace cert-namespaceContoh output:
Error from server (NotFound): namespaces "cert-namespace" not found
Menghapus cluster
Untuk menghapus cluster, selesaikan perintah berikut:
Konsol
Untuk menghapus cluster menggunakan Google Cloud konsol, selesaikan tugas berikut:
Di Google Cloud konsol, buka halaman GKE.
Di samping cluster yang ingin Anda hapus, klik more_vert Actions, lalu klik delete Delete.
Saat diminta untuk mengonfirmasi, klik Delete lagi.
gcloud
Untuk menghapus cluster menggunakan Google Cloud CLI, jalankan perintah berikut:
gcloud container clusters delete CLUSTER_NAME
Untuk mengetahui informasi selengkapnya, lihat
gcloud container clusters delete
dokumentasi.
Langkah berikutnya
- Pelajari lebih lanjut cara menggunakan repositori tidak terstruktur.