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.
Tujuan
- Konfigurasi 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.
- Lihat pratinjau dan validasi konfigurasi yang Anda buat.
- Gunakan Config Sync untuk merender diagram secara otomatis dan menyinkronkan cluster ke repositori Anda.
- Verifikasi bahwa penginstalan Anda berhasil.
Biaya
Di dokumen ini, Anda akan menggunakan komponen Cloud de Confiance by S3NSyang dapat ditagih berikut:
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
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
- 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.enableShellInRenderingdisetel ketrueagar Config Sync dapat mendukung penarikan 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 mengupgradenya ke versi 1.9.0 atau yang lebih baru. - Instal Helm.
Sebaiknya Anda juga memahami Git, Kustomize, dan Helm.
Mengonfigurasi repositori Anda
Tugas berikut menunjukkan cara menyiapkan repositori Git dengan konfigurasi yang menggabungkan konfigurasi Kustomize dengan diagram 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 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 dan menyinkronkan konfigurasi 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
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
- In the Cloud de Confiance console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus resource satu per satu
Hapus manifes di repositori Anda
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 BRANCHVerifikasi bahwa 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 konsol Cloud de Confiance , selesaikan tugas-tugas berikut:
Di konsol Cloud de Confiance , buka halaman GKE.
Di samping cluster yang ingin Anda hapus, klik more_vert Tindakan, lalu klik delete Hapus.
Saat diminta untuk mengonfirmasi, klik Hapus lagi.
gcloud
Untuk menghapus cluster menggunakan Google Cloud CLI, jalankan perintah berikut:
gcloud container clusters delete CLUSTER_NAME
Untuk informasi selengkapnya, lihat
dokumentasi
gcloud container clusters delete.
Langkah berikutnya
- Pelajari lebih lanjut cara menggunakan repositori tidak terstruktur.