Kustomize adalah alat transformasi konfigurasi Kubernetes yang dapat Anda gunakan untuk menyesuaikan file YAML yang belum di-template, sehingga tidak mengubah file asli. Kustomize juga dapat menghasilkan resource seperti ConfigMaps dan Secret dari representasi lain. Kustomize dibuat untuk Kubernetes API, sehingga dapat memahami dan memodifikasi objek bergaya Kubernetes.
Jika Anda ingin menggunakan diagram Helm dengan Config Sync, ada dua metode yang didukung: merender Helm melalui Kustomize atau menggunakan Helm API. Halaman ini menjelaskan persyaratan untuk merender diagram Helm melalui Kustomize. Untuk mengetahui informasi selengkapnya tentang cara menggunakan Helm API, lihat Menyinkronkan diagram Helm dari Artifact Registry.
Perbedaan berikut berlaku saat menggunakan Kustomize untuk merender diagram Helm:
- Registry Helm pribadi dan berbasis OCI tidak didukung. Dengan Helm API, registry berbasis pribadi dan OCI didukung.
- Nilai helm dapat dikelola di sumber tepercaya. Dengan Helm API, nilai dikelola sebagai bagian dari RootSync atau RepoSync API.
- Merender beberapa diagram Helm dalam objek RootSync atau RepoSync didukung. Dengan Helm API, Anda hanya dapat merender satu diagram Helm dalam objek RootSync atau RepoSync.
Persyaratan Config Sync untuk Kustomize
Untuk merender konfigurasi Kustomize dan diagram Helm secara otomatis, pastikan lingkungan Config Sync Anda memenuhi persyaratan berikut:
- Menggunakan sumber kebenaran tidak terstruktur. Rendering otomatis tidak didukung untuk sumber hierarkis.
- Untuk memicu proses rendering, sumber tepercaya harus memiliki file konfigurasi Kustomization (
kustomization.yaml
,kustomization.yml
, atauKustomization
) di root direktori Anda. Jika direktori root tidak memiliki file konfigurasi Kustomization, Config Sync akan menyinkronkan konfigurasi apa adanya tanpa rendering. - Sertakan konfigurasi Anda di file
kustomization.yaml
. Jika Anda tidak menyertakan file konfigurasi ini, konfigurasi tidak akan disinkronkan ke cluster.
Merender diagram Helm melalui Kustomize
Bagian ini menjelaskan cara merender diagram Helm melalui Kustomize. Versi Helm dan Kustomize yang Dipaketkan mencantumkan versi Kustomize dan Helm yang dipaketkan dengan versi Config Sync yang sesuai.
Kolom diagram Helm
Anda dapat menambahkan kolom diagram Helm berikut ke file kustomization.yaml
untuk mendukung rendering diagram Helm melalui Kustomize:
Kolom | Deskripsi |
---|---|
helmGlobals |
Parameter diterapkan ke semua diagram Helm |
helmGlobals.chartHome
|
Menerima string. Jalur, yang terkait dengan root Kustomization, ke direktori yang berisi subdirektori untuk setiap diagram yang akan disertakan dalam Kustomization. Nilai default kolom ini adalah charts . |
helmGlobals.configHome
|
Menerima string. Menentukan nilai yang harus diteruskan Kustomize ke Helm dengan variabel lingkungan HELM_CONFIG_HOME . Kustomize tidak mencoba membaca atau menulis direktori ini. Jika dihilangkan, TMP_DIR/helm akan digunakan, dengan TMP_DIR adalah direktori sementara yang dibuat oleh Kustomize untuk Helm. |
helmCharts
|
Array parameter diagram Helm |
helmCharts.name
|
Menerima string. Nama diagram. Kolom ini wajib diisi. |
helmCharts.version
|
Menerima string. Versi diagram |
helmCharts.repo
|
Menerima string. URL yang digunakan untuk menemukan diagram |
helmCharts.releaseName
|
Menerima string. Mengganti RELEASE_NAME di output template diagram |
helmCharts.namespace
|
Menerima string. Menetapkan namespace target untuk rilis (.Release.Namespace dalam template) |
helmCharts.valuesInline
|
Nilai yang akan digunakan, bukan nilai default yang menyertai diagram |
helmCharts.valuesFile
|
Menerima string. ValueFile adalah jalur lokal atau URL jarak jauh ke file nilai yang akan digunakan, bukan nilai default yang menyertai diagram. Nilai default-nya
berada di CHART_HOME/NAME/values.yaml . |
helmCharts.valuesMerge
|
Menerima merge , override , (default) ,
atau replace . ValueMerge menentukan cara memperlakukan ValuesInline sehubungan dengan Values. |
helmCharts.includeCRDs
|
Menerima true atau false . Menentukan apakah Helm juga harus
membuat CustomResourceDefinitions. Nilai defaultnya adalah
false . |
Contoh arsitektur untuk konfigurasi Kustomize
Contoh berikut menunjukkan cara menyiapkan
sumber kebenaran untuk menggunakan konfigurasi Kustomize dengan rendering otomatis. Direktori ini mencakup tiga overlay (team-a
, team-b
, dan team-c
) yang mereferensikan dasar yang sama.
Diagram berikut menunjukkan struktur direktori:
├── base
│ ├── kustomization.yaml
│ ├── namespace.yaml
│ ├── networkpolicy.yaml
│ ├── rolebinding.yaml
│ └── role.yaml
├── kustomization.yaml
├── README.md
├── team-a
│ └── kustomization.yaml
├── team-b
│ └── kustomization.yaml
└── team-c
└── kustomization.yaml
File kustomization.yaml
berikut berada di root sumber kebenaran dan
berisi referensi ke tiga overlay:
# ./kustomization.yaml
resources:
- team-a
- team-b
- team-c
kustomize.yaml
berikut berada di direktori team-a
dan merupakan overlay
untuk team-a
:
# ./team-a/kustomization.yaml
namespace: team-a
resources:
- ../base
patches:
- target:
kind: RoleBinding
name: team-admin-rolebinding
patch: |-
- op: replace
path: /subjects/0/name
value: team-a-admin@mydomain.com
- target:
kind: Namespace
name: default
patch: |-
- op: replace
path: /metadata/name
value: team-a
kustomization.yaml
berikut berada dalam direktori base
dan merupakan basis Kustomize:
# ./base/kustomization.yaml
resources:
- namespace.yaml
- rolebinding.yaml
- role.yaml
- networkpolicy.yaml
Anda dapat mempelajari repositori contoh di direktori mengonfigurasi kebijakan khusus namespace di GitHub.
Merender diagram Helm jarak jauh
Config Sync mendukung rendering diagram Helm jarak jauh pada cluster yang memiliki akses internet publik.
kustomization.yaml
berikut merender cert-manager jarak jauh dengan menetapkan kolom helmCharts
berikut:
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
repo: https://charts.jetstack.io
version: v1.5.3
releaseName: my-cert-manager
namespace: cert-manager
...
Merender diagram Helm lokal
Config Sync mendukung rendering diagram Helm lokal. Untuk menggunakan versi kustom diagram Helm, Anda dapat menarik versi yang dirilis dari diagram Helm (misalnya, ArtifactHub), membuat perubahan secara lokal, lalu mengirim perubahan ke sumber tepercaya Anda.
kustomization.yaml
berikut merender diagram cert-manager
lokal. Direktori default untuk diagram Helm adalah charts
dan karena diagram ini dimasukkan ke dalam direktori charts
, Anda tidak perlu menentukan .helmCharts.repo
atau .helmCharts.version
.
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
releaseName: my-cert-manager
namespace: cert-manager
...
Merender beberapa diagram Helm
Config Sync mendukung rendering beberapa diagram Helm dalam satu file kustomization.yaml
, terlepas dari apakah diagram tersebut bersifat jarak jauh atau lokal.
kustomization.yaml
berikut merender diagram Helm lokal (cert-manager
):
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
releaseName: my-cert-manager
namespace: cert-manager
- name: prometheus
repo: https://prometheus-community.github.io/helm-charts
version: 14.3.0
releaseName: my-prometheus
namespace: monitoring
...
Langkah selanjutnya
- Menggunakan Config Sync dengan Kustomize dan Helm
- Menggunakan Config Sync di beberapa lingkungan dengan rendering otomatis