Kustomize è uno strumento di trasformazione della configurazione di Kubernetes che ti consente di personalizzare i file YAML senza modelli, lasciando intatti i file originali. Kustomize può anche generare risorse come ConfigMap e Secret da altre rappresentazioni. Kustomize è progettato per l'API Kubernetes, quindi può comprendere e modificare gli oggetti in stile Kubernetes.
Se vuoi utilizzare i grafici Helm con Config Sync, sono supportati due metodi: il rendering di Helm tramite Kustomize o l'utilizzo dell'API Helm. Questa pagina descrive in dettaglio i requisiti per il rendering dei grafici Helm tramite Kustomize. Per saperne di più sull'utilizzo dell'API Helm, consulta Sincronizzazione dei grafici Helm da Artifact Registry.
Requisiti e limitazioni
Prima di configurare il rendering automatico con Kustomize, esamina i seguenti requisiti e limitazioni:
- Le origini gerarchiche non sono supportate.
- Le basi remote da origini attendibili private non sono supportate.
- I registri Helm privati e basati su OCI non sono supportati, a meno che tu non utilizzi l'API Helm.
- I valori Helm possono essere gestiti nella fonte attendibile. Con l'API Helm, i valori vengono gestiti nell'ambito dell'API RootSync o RepoSync.
- Il rendering di più grafici Helm in un oggetto RootSync o RepoSync è supportato. Con l'API Helm, puoi eseguire il rendering di un solo grafico Helm in un oggetto RootSync o RepoSync.
- Assicurati che il file di configurazione Kustomization (
kustomization.yaml,kustomization.ymloKustomization) si trovi nella radice della directory e che tutte le configurazioni siano archiviate in questo file, non in file separati nella tua fonte attendibile.
Esegui il rendering delle configurazioni Kustomize
L'esempio seguente mostra come configurare la fonte attendibile per utilizzare le configurazioni Kustomize con il rendering automatico.
Architettura di esempio per le configurazioni Kustomize
Questa directory include quattro overlay (team-a, team-b, team-c e external-team) che
fanno riferimento alla stessa base e un file utilizzato dal generatore ConfigMap.
Il seguente diagramma mostra la struttura delle directory:
├── 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
Il seguente file kustomization.yaml si trova nella radice della fonte attendibile e contiene riferimenti alle quattro sovrapposizioni con un generatore ConfigMap da un file locale:
# ./example/kustomization.yaml
resources:
- team-a
- team-b
- team-c
- ../external-team
configMapGenerator:
- name: my-configmap
namespace: my-namespace
files:
- ../external-data.txt
Il seguente kustomize.yaml si trova nella directory team-a ed è l'overlay
per 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
Il seguente kustomization.yaml si trova nella directory base ed è la
base di Kustomize:
# ./example/base/kustomization.yaml
resources:
- namespace.yaml
- rolebinding.yaml
- role.yaml
- networkpolicy.yaml
Puoi esplorare un repository di esempio nella directory configuring namespace-specific policies in GitHub.
Eseguire il rendering dei grafici Helm tramite Kustomize
Questa sezione spiega come eseguire il rendering dei grafici Helm tramite Kustomize. Versioni di Helm e Kustomize incluse elenca le versioni di Kustomize e Helm incluse nella versione corrispondente di Config Sync.
Campi del grafico Helm
Puoi aggiungere i seguenti campi del grafico Helm ai tuoi file kustomization.yaml
per supportare il rendering dei grafici Helm tramite Kustomize:
| Campo | Descrizione |
|---|---|
helmGlobals |
Parametri applicati a tutti i grafici Helm |
helmGlobals.chartHome
|
Accetta una stringa. Un percorso, relativo alla radice di Kustomization, a una
directory contenente una sottodirectory per ogni grafico da includere nella
Kustomization. Il valore predefinito di questo campo è charts. |
helmGlobals.configHome
|
Accetta una stringa. Definisce un valore che Kustomize deve passare a Helm con la variabile di ambiente HELM_CONFIG_HOME. Kustomize non tenta
di leggere o scrivere in questa directory. Se omesso, viene utilizzato TMP_DIR/helm, dove TMP_DIR è una directory temporanea creata da Kustomize per Helm. |
helmCharts
|
Un array di parametri del grafico Helm |
helmCharts.name
|
Accetta una stringa. Il nome del grafico. Questo campo è obbligatorio. |
helmCharts.version
|
Accetta una stringa. La versione del grafico |
helmCharts.repo
|
Accetta una stringa. L'URL utilizzato per individuare il grafico |
helmCharts.releaseName
|
Accetta una stringa. Sostituisce RELEASE_NAME nell'output del modello di grafico |
helmCharts.namespace
|
Accetta una stringa. Imposta lo spazio dei nomi di destinazione per una release (.Release.Namespace nel modello) |
helmCharts.valuesInline
|
Valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico |
helmCharts.valuesFile
|
Accetta una stringa. ValuesFile è un percorso locale o un URL remoto a un file di valori da utilizzare
anziché i valori predefiniti che accompagnavano il grafico. I valori predefiniti
sono in CHART_HOME/NAME/values.yaml. |
helmCharts.valuesMerge
|
Accetta merge, override, (default)
o replace. ValuesMerge specifica come trattare ValuesInline
rispetto a Values. |
helmCharts.includeCRDs
|
Accetta true o false. Specifica se Helm deve
generare anche CustomResourceDefinitions. Il valore predefinito è
false. |
Eseguire il rendering di un grafico Helm remoto
Config Sync supporta il rendering dei grafici Helm remoti sui cluster che hanno accesso a internet pubblico.
Il seguente kustomization.yaml esegue il rendering di un cert-manager remoto impostando i seguenti campi helmCharts:
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
repo: https://charts.jetstack.io
version: v1.5.3
releaseName: my-cert-manager
namespace: cert-manager
...
Esegui il rendering di un grafico Helm locale
Config Sync supporta il rendering dei grafici Helm locali. Per utilizzare una versione personalizzata di un grafico Helm, puoi estrarre la versione rilasciata dal grafico Helm (ad esempio, ArtifactHub), apportare modifiche localmente e poi eseguire il push delle modifiche nella tua fonte attendibile.
Il seguente diagramma mostra la struttura delle directory:
├── base
│ ├── charts
│ │ └── cert-manager
│ └── kustomization.yaml
├── overlays
│ └── stage
│ └── kustomization.yaml
└── base_value_overrides.yaml
Il seguente kustomization.yaml esegue il rendering di un grafico cert-manager locale. La
directory predefinita per i grafici Helm è charts e, poiché questo grafico è stato archiviato
nella directory charts, non devi specificare .helmCharts.repo o
.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
...
Visualizzare più grafici Helm
Config Sync supporta il rendering di più grafici Helm in un unico file kustomization.yaml, indipendentemente dal fatto che il grafico sia remoto o locale.
Il seguente kustomization.yaml esegue il rendering di un grafico Helm locale (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
...
Passaggi successivi
- Utilizzare Config Sync con Kustomize e Helm
- Utilizzo di Config Sync in più ambienti con il rendering automatico