Dalam tutorial ini, Anda akan menambahkan konfigurasi Kustomize yang mereferensikan diagram Helm ke repositori, lalu menggunakan Config Sync untuk menyinkronkan cluster ke repositori Anda.
Saat Anda menggunakan Config Sync, konfigurasi Kustomize dan diagram Helm yang Anda tempatkan di repositori Git akan otomatis dirender. Rendering otomatis memberi Anda manfaat berikut:
Anda tidak lagi memerlukan pipeline hidrasi eksternal. Tanpa rendering otomatis, Anda harus merender konfigurasi secara manual menggunakan Kustomize dan Helm di workstation Anda, atau menyiapkan langkah untuk memicu proses hidrasi di sistem CI Anda. Dengan rendering otomatis, Config Sync menangani eksekusi.
Biaya pemeliharaan berkurang. Tanpa rendering otomatis, Anda harus mempertahankan satu repositori Git dengan konfigurasi Kustomize asli dan diagram Helm serta repositori Git lain dengan output yang dihasilkan oleh hidrasi eksternal. Selanjutnya, Anda harus mengonfigurasi Config Sync untuk menyinkronkan dari repositori Git dengan output yang dirender. Dengan rendering otomatis, Anda hanya perlu mempertahankan satu repositori dengan konfigurasi asli.
Alur kerja pengembangan Anda disederhanakan. Tanpa rendering otomatis, perubahan yang dibuat 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
- Konfigurasikan repositori Anda dengan konfigurasi Kustomize yang mereferensikan diagram 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 otomatis merender diagram dan menyinkronkan cluster Anda ke repositori Anda.
- Pastikan penginstalan Anda berhasil.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
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, lihat Pembersihan.
Sebelum memulai
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud 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.
RootSync
API danRepoSync
API diaktifkan.spec.override.enableShellInRendering
ditetapkan ketrue
untuk memungkinkan Config Sync mendukung pengambilan basis jarak jauh dari repositori publik dalam proses rendering.
- Daftarkan cluster Anda ke sebuah fleet.
- Instal alat command line
nomos
. Jika sudah menginstal alatnomos
, pastikan Anda mengupgradenya ke versi 1.9.0 atau yang lebih baru. - Instal Helm.
Selain itu, ada baiknya juga jika Anda terbiasa menggunakan Git, Kustomize, dan Helm.
Mengonfigurasi repositori Anda
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, ini seharusnya merupakan repositori yang tidak terstruktur.
Di root repositori Git Anda, buat file bernama
kustomization.yaml
, lalu tempel kode berikut ke dalamnya:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: Deployment
File ini adalah Kustomize overlay yang mengarah ke Kustomize base. Overlay ini menyertakan patch untuk dasar chart Helm yang menambahkan anotasi
client.lifecycle.config.k8s.io/mutation: ignore
ke semua objek Deployment. Anotasi menyebabkan Config Sync mengabaikan setiap perubahan yang bertentangan pada objek ini di cluster setelah Anda membuatnya.Di repositori Git Anda, buat direktori bernama
base
:mkdir base
Dalam direktori
base
, buat file lain bernamakustomization.yaml
, lalu tempel 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 basis Kustomize, yang merender diagram Helm jarak jauh.
Kembali ke root repositori Git Anda, buat file bernama
ignore-deployment-mutation-patch.yaml
, lalu tempel 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 pada diagram Helm dasar. Tindakan ini akan menambahkan anotasi
client.lifecycle.config.k8s.io/mutation: ignore
ke semua Deployment di direktori dasar.Commit 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 sudah akurat dengan menjalankan nomos hydrate
untuk melihat pratinjau konfigurasi
yang dirender dan menjalankan nomos vet
untuk memvalidasi bahwa format sudah benar.
Jalankan
nomos hydrate
berikut dengan tanda berikut:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORY
Dalam perintah ini:
--source-format=unstructured
memungkinkannomos hydrate
bekerja pada repositori tidak terstruktur. Karena Anda menggunakan konfigurasi Kustomize dan diagram Helm, Anda perlu menggunakan repositori tak terstruktur dan menambahkan flag 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 dengan menjalankan
nomos vet
dengan tanda berikut:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORY
Dalam perintah ini:
--source-format=unstructured
memungkinkannomos vet
bekerja pada 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. Jika Anda sudah menginstal Config Sync, lanjutkan ke Memverifikasi status sinkronisasi.
Di konsol Google Cloud, aktifkan GKE Hub API.
- Di konsol Google Cloud, buka halaman Config di bagian Features.
Klik add Install Config Sync.
Pilih Upgrade otomatis untuk mengaktifkan Config Sync agar dapat mengupgrade versi secara otomatis.
Di bagian Installation options, pilih Install Config Sync on individual clusters.
Pada tabel Cluster yang tersedia, pilih
cs-cluster
, lalu klik Install Config Sync. Di tab Setelan, Anda akan melihat status untukcs-cluster
sebagai Enabled setelah beberapa menit.Di dasbor Config Sync, klik Deploy Package.
Di tabel Select clusters for package deployment, pilih
cs-cluster
, lalu klik Continue.Biarkan Package hosts on Git dipilih, lalu klik Continue.
Di kolom Package name, masukkan
sample-repository
.Di kolom Repository URL, masukkan
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
.Pada kolom Path, masukkan
config-sync-quickstart/multirepo/root
.Biarkan semua kolom lain tetap pada nilai defaultnya.
Klik Deploy Package.
Setelah beberapa menit, Anda akan melihat Disinkronkan di kolom Status sinkronisasi untuk
cs-cluster
.
Memverifikasi penginstalan
Setelah menginstal dan mengonfigurasi Config Sync, Anda dapat memastikan bahwa penginstalan berhasil diselesaikan.
Pastikan 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
Pastikan 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
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 konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang 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 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 lancar 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 BRANCH
Ganti
BRANCH
dengan 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 BRANCH
Pastikan bahwa namespace cert-manager tidak ada:
kubectl get namespace cert-namespace
Contoh output:
Error from server (NotFound): namespaces "cert-namespace" not found
Menghapus kluster
Untuk menghapus cluster, selesaikan perintah berikut:
Konsol
Untuk menghapus cluster menggunakan Konsol Google Cloud, selesaikan tugas-tugas berikut:
Di konsol Google Cloud, 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 selanjutnya
- Pelajari lebih lanjut cara menggunakan repositori yang tidak terstruktur.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.