Kustomize adalah sebuah Kubernetes yang memungkinkan Anda menyesuaikan YAML dengan template yang tidak memiliki template file, meninggalkan file asli yang tidak disentuh. Kustomize juga dapat menghasilkan resource sebagai ConfigMaps dan Secret dari representasi lain. Kustomize dibangun untuk Kubernetes API, agar dapat memahami dan memodifikasi objek bergaya Kubernetes.
Jika Anda ingin menggunakan diagram Helm dengan Config Sync, ada dua opsi yang didukung seperti merender Helm melalui Kustomize atau menggunakan Helm API. Detail halaman ini persyaratan untuk merender diagram Helm melalui Kustomize. Untuk informasi selengkapnya menggunakan Helm API, lihat Menyinkronkan chart Helm dari Artifact Registry.
Perbedaan berikut berlaku saat menggunakan Kustomize untuk merender chart Helm:
- Registry Helm pribadi dan berbasis OCI tidak didukung. Dengan Helm API, registry pribadi dan berbasis OCI didukung.
- Nilai helm dapat dikelola di sumber kebenaran. Dengan Helm API, nilai-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 di RootSync atau RepoSync .
Persyaratan Config Sync untuk Kustomize
Untuk merender konfigurasi Kustomize dan chart Helm secara otomatis, pastikan Lingkungan Config Sync memenuhi persyaratan berikut:
- Menggunakan sumber kebenaran tidak terstruktur. Rendering otomatis tidak didukung untuk sumber hierarkis.
- Untuk memicu proses rendering, sumber kebenaran Anda harus memiliki
File konfigurasi Kustomization (
kustomization.yaml
,kustomization.yml
, atauKustomization
) di root direktori Anda. Jika direktori {i>root<i} tidak memiliki file konfigurasi Kustomization, Config Sync akan menyinkronkan konfigurasi sebagaimana adanya tanpa rendering apa pun. - Sertakan konfigurasi Anda dalam file
kustomization.yaml
. Jika Anda tidak menyertakan file konfigurasi ini, konfigurasinya tidak disinkronkan ke cluster. - Sebelum Config Sync 1.19.0, semua konfigurasi harus disertakan di bawah direktori utama Kustomization. Mulai dari versi 1.19.0, Config Sync mendukung file di luar direktori root.
Merender konfigurasi Kustomize
Contoh berikut menunjukkan cara menyiapkan menggunakan konfigurasi Kustomize dengan rendering otomatis.
Contoh arsitektur untuk konfigurasi Kustomize
Direktori ini mencakup empat overlay (team-a
, team-b
, team-c
, dan external-team
) yang
merujuk ke basis yang sama, dan file yang digunakan oleh generator ConfigMap.
Diagram berikut menunjukkan struktur direktori:
├── example
│ ├── 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
├── external-team
│ └── kustomization.yaml
└── external-data.txt
File kustomization.yaml
berikut berada di root sumber kebenaran dan
berisi referensi terhadap empat overlay dengan generator ConfigMap dari file lokal:
# ./example/kustomization.yaml
resources:
- team-a
- team-b
- team-c
- ../external-team # Starting from 1.19.0, Config Sync allows external resources located outside of the Kustomization root directory.
configMapGenerator:
- name: my-configmap
namespace: my-namespace
files:
- ../external-data.txt # Starting from 1.19.0, Config Sync allows external files located outside of the Kustomization root directory.
kustomize.yaml
berikut ada di direktori team-a
dan merupakan overlay
untuk team-a
:
# ./example/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 ada di direktori base
dan merupakan
Basis Kustomize:
# ./example/base/kustomization.yaml
resources:
- namespace.yaml
- rolebinding.yaml
- role.yaml
- networkpolicy.yaml
Anda dapat menjelajahi contoh repositori di mengonfigurasi kebijakan khusus namespace di GitHub.
Merender chart 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 Sinkronisasi Konfigurasi.
Kolom diagram Helm
Anda dapat menambahkan kolom diagram Helm berikut ke kustomization.yaml
untuk mendukung rendering diagram Helm melalui Kustomize:
Kolom | Deskripsi |
---|---|
helmGlobals |
Parameter diterapkan ke semua diagram Helm |
helmGlobals.chartHome
|
Menerima string. Sebuah jalur, relatif terhadap {i>
root<i} Kustomization, ke
yang berisi subdirektori untuk setiap diagram agar disertakan dalam
Kustomisasi. 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 berupaya
untuk membaca atau
menulis direktori ini. Jika dihilangkan, TMP_DIR/helm akan
digunakan, dengan TMP_DIR merupakan direktori sementara yang dibuat oleh
Kustomisasi 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 di 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
alih-alih nilai {i>default<i} yang menyertai diagram. Nilai default
berada di CHART_HOME/NAME/values.yaml . |
helmCharts.valuesMerge
|
Menerima merge , override , (default) ,
atau replace . ValuesMerge menentukan cara memperlakukan ValuesInline
sehubungan dengan Values. |
helmCharts.includeCRDs
|
Menerima true atau false . Menentukan apakah Helm harus
juga membuat CustomResourceDefinitions. Nilai defaultnya adalah
false . |
Merender diagram Helm jarak jauh
Config Sync mendukung rendering diagram Helm jarak jauh pada cluster yang memiliki akses internet publik.
kustomization.yaml
berikut merender remote
cert-manager
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 lokal Diagram helm. Untuk menggunakan bagan Helm versi khusus, Anda dapat menarik versi rilis dari chart Helm (misalnya, ArtifactHub), buat perubahan secara lokal, dan lalu kirimkan perubahan ke sumber yang terpercaya.
Diagram berikut menunjukkan struktur direktori:
├── base
│ ├── charts
│ │ └── cert-manager
│ └── kustomization.yaml
├── overlays
│ └── stage
│ └── kustomization.yaml
└── base_value_overrides.yaml
kustomization.yaml
berikut merender diagram cert-manager
lokal. Tujuan
direktori default untuk chart Helm adalah charts
dan karena diagram ini dicentang
dalam direktori charts
, Anda tidak perlu menentukan .helmCharts.repo
atau
.helmCharts.version
.
# ./overlays/stage/kustomization.yaml
...
# This field is optional if your Helm charts are located in the default 'charts' directory.
helmGlobals:
# Starting from 1.19.0, Config Sync allows loading from an external directory outside of the Kustomization root.
chartHome: ../../base/charts
helmCharts:
- name: cert-manager
releaseName: my-cert-manager
namespace: cert-manager
# Specify a local path or a remote URL to a values file instead of using the default values in CHART_HOME/NAME/values.yaml.
valuesFile: ../../base_value_overrides.yaml
...
Merender beberapa diagram Helm
Config Sync mendukung rendering beberapa diagram Helm sekaligus
File kustomization.yaml
, terlepas dari apakah diagram tersebut 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