Menggunakan Config Sync dengan Kustomize dan Helm


Dalam tutorial ini, Anda akan menambahkan konfigurasi Kustomize yang mereferensikan Helm diagram ke repositori Anda lalu menggunakan Config Sync untuk menyinkronkan cluster untuk repositori Anda.

Saat Anda menggunakan Config Sync, konfigurasi Kustomize dan diagram Helm yang di repositori Git Anda akan secara 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 Anda, atau siapkan langkah untuk memicu proses hidrasi dalam sistem CI Anda. Dengan rendering otomatis, Config Sync menangani eksekusi.

  • Biaya pemeliharaan berkurang. Tanpa rendering otomatis, Anda harus memelihara satu repositori Git dengan konfigurasi Kustomize asli dan bagan Helm serta repositori Git lainnya dengan {i>output<i} yang dihasilkan oleh hidrasi eksternal. Kemudian, 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 awal perlu ditinjau dua kali sebelum digabungkan; sekali di repositori asli dan sekali lagi di repositori repositori resource. Dengan rendering otomatis, konfigurasi yang dirender dihasilkan oleh Config Sync, dan Anda hanya perlu meninjau perubahan pada yang asli konfigurasi standar.

Tujuan

  • Konfigurasikan repositori Anda dengan konfigurasi Kustomize yang merujuk bagan Helm siap pakai untuk manajer sertifikat. 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 Anda secara otomatis dan menyinkronkan cluster 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. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Buat, atau pastikan bahwa Anda memiliki akses ke, cluster yang memenuhi persyaratan untuk Config Sync dan menggunakan setelan Config Sync berikut:
  4. Mendaftarkan cluster ke suatu fleet.
  5. Instal alat command line nomos. Jika sudah menginstal alat nomos, pastikan Anda mengupgradenya ke versi 1.9.0 atau yang lebih baru.
  6. Instal Helm.

Selain itu, ada baiknya juga jika Anda terbiasa menggunakan Git, Kustomize, dan Helm.

Mengonfigurasi repositori Anda

Tugas-tugas berikut menunjukkan cara menyiapkan repositori Git dengan konfigurasi yang menggabungkan konfigurasi Kustomize dengan chart Helm:

  1. Buat atau pastikan Anda memiliki akses ke repositori Git. Karena menggunakan Kustomize dan Helm. repositori resource.

  2. 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 Menyesuaikan overlay yang menunjuk ke Customize base. Overlay ini mencakup patch untuk dasar chart Helm yang menambahkan client.lifecycle.config.k8s.io/mutation: ignore anotasi ke semua Objek deployment. Anotasi menyebabkan Config Sync mengabaikan semua perubahan yang berkonflik pada objek ini di cluster setelah Anda membuatnya.

  3. Di repositori Git Anda, buat direktori bernama base:

    mkdir base
    
  4. Di direktori base, buat file lain bernama kustomization.yaml dan 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 basis Kustomize, yang merender diagram Helm jarak jauh.

  5. Kembali ke root repositori Git Anda, buat file bernama ignore-deployment-mutation-patch.yaml dan 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 pada diagram Helm dasar. Ini menambahkan client.lifecycle.config.k8s.io/mutation: ignore anotasi ke semua Deployment di direktori dasar.

  6. Commit perubahan pada repositori Anda:

    git add .
    git commit -m 'Set up manifests.'
    git push
    

Repositori contoh memiliki contoh seperti apa repositori itu akan terlihat.

Melihat pratinjau dan memvalidasi konfigurasi yang dirender

Sebelum Config Sync merender konfigurasi dan menyinkronkannya ke cluster, pastikan bahwa konfigurasi sudah akurat dengan menjalankan nomos hydrate untuk melihat pratinjau objek yang dirender konfigurasi dan menjalankan nomos vet untuk memvalidasi bahwa format sudah benar.

  1. Jalankan nomos hydrate berikut dengan tanda berikut:

    nomos hydrate \
        --source-format=unstructured \
        --output=OUTPUT_DIRECTORY
    

    Dalam perintah ini:

    • --source-format=unstructured memungkinkan nomos hydrate mengerjakan repositori tak terstruktur. Karena Anda menggunakan konfigurasi Kustomize dan Chart Helm, Anda perlu menggunakan repositori yang tidak terstruktur dan menambahkan flag ini.
    • --output=OUTPUT_DIRECTORY memungkinkan Anda menentukan jalur ke pada konfigurasi yang dirender. Ganti OUTPUT_DIRECTORY dengan lokasi tempat Anda ingin menyimpan output.
  2. 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 memungkinkan nomos vet mengerjakan repositori tak terstruktur.
    • --keep-output=true menyimpan konfigurasi yang dirender.
    • --output=OUTPUT_DIRECTORY adalah jalur ke objek yang dirender konfigurasi standar.

Mengonfigurasi sinkronisasi dari repositori Git

Sekarang setelah Anda membuat repositori dengan konfigurasi yang ingin Anda gunakan, Anda dapat mengonfigurasi sinkronisasi dari cluster ke repositori. Jika Anda memiliki sudah menginstal Config Sync, lanjutkan ke Memverifikasi status sinkronisasi.

  1. Di konsol Google Cloud, aktifkan GKE Hub API.

    Buka GKE Hub API

  2. Di konsol Google Cloud, buka halaman Config di bagian Features.

    Buka Konfigurasi

  3. Klik Install Config Sync.

  4. Pilih Upgrade otomatis ke mengaktifkan Config Sync untuk mengupgrade versi secara otomatis.

  5. Di bagian Opsi penginstalan, pilih Instal Config Sync di cluster individual.

  6. Di kolom Tabel Cluster yang tersedia, pilih cs-cluster, lalu klik Install Config Sync. Di tab Setelan, Anda akan melihat status untuk cs-cluster sebagai Enabled setelah beberapa menit.

  7. Di dasbor Config Sync, klik Deploy Package.

  8. Di tabel Select clusters for package deployment, pilih cs-cluster lalu klik Continue.

  9. Biarkan Package hosts on Git dipilih, lalu klik Continue.

  10. Di kolom Package name, masukkan sample-repository.

  11. Di kolom Repository URL, masukkan https://github.com/GoogleCloudPlatform/anthos-config-management-samples.

  12. Pada kolom Path, masukkan config-sync-quickstart/multirepo/root.

  13. Biarkan kolom lain tetap pada nilai defaultnya.

  14. Klik Deploy Package.

    Setelah beberapa menit, Anda akan melihat Disinkronkan di Status sinkronisasi untuk cs-cluster.

Memverifikasi penginstalan

Setelah menginstal dan mengonfigurasi Config Sync, Anda dapat memverifikasi bahwa instalasi berhasil diselesaikan.

  1. 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
    
  2. 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

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. 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:

  1. 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 yang Anda buat ke repositori.

  2. Hapus namespace cert-manager:

    git rm manifests/namespace-cert-manager.yaml \
        && git commit -m "remove the cert-manager namespace" \
        && git push origin BRANCH
    
  3. Pastikan bahwa namespace cert-manager tidak ada:

    kubectl get namespace cert-namespace
    

    Contoh output:

    Error from server (NotFound): namespaces "cert-namespace" not found
    

Menghapus cluster

Untuk menghapus cluster, selesaikan perintah berikut:

Konsol

Untuk menghapus cluster menggunakan Konsol Google Cloud, lakukan langkah-langkah berikut tugas:

  1. Di konsol Google Cloud, buka halaman GKE.

    Buka GKE

  2. Di samping cluster yang ingin Anda hapus, klik Tindakan, lalu klik Hapus.

  3. 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