Kustomize adalah alat transformasi konfigurasi Kubernetes yang memungkinkan Anda menyesuaikan file YAML tanpa template, tanpa mengubah file aslinya. Kustomize juga dapat membuat resource seperti ConfigMap dan Secret dari representasi lainnya. Kustomize dibuat untuk Kubernetes API, sehingga dapat memahami dan mengubah 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 penggunaan Helm API, lihat Menyinkronkan diagram Helm dari Artifact Registry.
Persyaratan dan batasan
Sebelum menyiapkan rendering otomatis dengan Kustomize, tinjau persyaratan dan batasan berikut:
- Sumber hierarkis tidak didukung.
- Basis jarak jauh dari sumber tepercaya pribadi tidak didukung.
- Registry Helm pribadi dan berbasis OCI tidak didukung kecuali jika Anda menggunakan Helm API.
- Nilai Helm dapat dikelola di sumber tepercaya. Dengan Helm API, nilai dikelola sebagai bagian dari RootSync atau RepoSync API.
- Rendering beberapa diagram Helm dalam objek RootSync atau RepoSync didukung. Dengan Helm API, Anda hanya dapat merender satu diagram Helm dalam objek RootSync atau RepoSync.
- Pastikan file konfigurasi Kustomisasi (
kustomization.yaml,kustomization.yml, atauKustomization) berada di root direktori Anda dan semua konfigurasi Anda disimpan dalam file tersebut, bukan dalam file terpisah di sumber tepercaya Anda.
Merender konfigurasi Kustomize
Contoh berikut menunjukkan cara menyiapkan sumber tepercaya untuk 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 mereferensikan 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 tepercaya dan berisi referensi ke empat overlay dengan generator ConfigMap dari file lokal:
# ./example/kustomization.yaml
resources:
- team-a
- team-b
- team-c
- ../external-team
configMapGenerator:
- name: my-configmap
namespace: my-namespace
files:
- ../external-data.txt
kustomize.yaml berikut berada 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 berada 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 direktori configuring namespace-specific policies di GitHub.
Merender diagram Helm melalui Kustomize
Bagian ini menjelaskan cara merender diagram Helm melalui Kustomize. Versi Helm dan Kustomize yang dibundel mencantumkan versi Kustomize dan Helm yang dibundel 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 yang diterapkan ke semua diagram Helm |
helmGlobals.chartHome
|
Menerima string. Jalur, relatif terhadap root Kustomisasi, ke
direktori yang berisi subdirektori untuk setiap diagram yang akan 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 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 dalam 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 disertakan dengan diagram |
helmCharts.valuesFile
|
Menerima string. ValuesFile adalah jalur lokal atau URL jarak jauh ke file nilai yang akan digunakan
bukan nilai default yang disertakan dengan 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 juga harus membuat CustomResourceDefinitions. Nilai defaultnya adalah
false. |
Merender diagram Helm jarak jauh
Config Sync mendukung rendering diagram Helm jarak jauh di cluster yang memiliki akses internet publik.
Berikut kustomization.yaml 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 diagram Helm yang disesuaikan, Anda dapat menarik versi yang dirilis dari diagram Helm (misalnya, ArtifactHub), membuat perubahan secara lokal, lalu mengirim perubahan ke sumber tepercaya.
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. Direktori default untuk diagram Helm adalah charts dan karena diagram ini dicentang ke 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:
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 dalam satu 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 berikutnya
- Menggunakan Config Sync dengan Kustomize dan Helm
- Menggunakan Config Sync di beberapa lingkungan dengan rendering otomatis