Kustomize è una piattaforma di trasformazione della configurazione che consente di personalizzare i file YAML senza modelli file originali, lasciando invariati quelli originali. Kustomize può anche generare risorse come come ConfigMap e Secret da altre rappresentazioni. Kustomize è progettato per API Kubernetes, in modo da poter comprendere e modificare gli oggetti di tipo Kubernetes.
Se vuoi utilizzare i grafici Helm con Config Sync, sono supportati due : eseguire il rendering di Helm tramite Kustomize o usare l'API Helm. Dettagli di questa pagina i requisiti per il rendering dei grafici Helm tramite Kustomize. Per ulteriori informazioni sull'utilizzo dell'API Helm, vedi Sincronizzazione dei grafici Helm da Artifact Registry.
Quando utilizzi Kustomize per eseguire il rendering dei grafici Helm, si applicano le seguenti differenze:
- I registri Helm privati e basati su OCI non sono supportati. Con l'API Helm, sia sono supportati i registri privati e OCI.
- I valori Helm possono essere gestiti nella fonte attendibile. Con l'API Helm, i valori vengono gestito come parte dell'API RootSync o RepoSync.
- È supportato il rendering di più grafici Helm in un oggetto RootSync o RepoSync. Con l'API Helm, puoi eseguire il rendering di un solo grafico Helm in RootSync o RepoSync .
Requisiti di Config Sync per Kustomize
Per eseguire automaticamente il rendering delle configurazioni Kustomize e dei grafici Helm, assicurati che L'ambiente Config Sync soddisfa i seguenti requisiti:
- Utilizza una fonte di dati non strutturata. Il rendering automatico non è supportato per origini gerarchiche.
- Per attivare il processo di rendering, la tua fonte attendibile deve avere un
File di configurazione di Kustomization (
kustomization.yaml
,kustomization.yml
oKustomization
) nella directory principale della directory. Se la directory principale non ha un file di configurazione di Kustomization, Config Sync sincronizza le configurazioni così come sono senza rendering. - Includi le tue configurazioni nel file
kustomization.yaml
. Se non includi da questi file, le configurazioni non vengono sincronizzate con il cluster.
Esegui il rendering dei grafici Helm tramite Kustomize
Questa sezione spiega come eseguire il rendering dei grafici Helm tramite Kustomize. Versioni Helm e Kustomize in bundle elenca le versioni Kustomize e Helm in bundle con la versione corrispondente di Config Sync.
Campi del grafico Helm
Puoi aggiungere i seguenti campi del grafico Helm a 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 un
contenente una sottodirectory per ogni grafico da includere nel
Kustomization. Il valore predefinito di questo campo è charts . |
helmGlobals.configHome
|
Accetta una stringa. Definisce un valore che Kustomize deve passare a Helm con il
HELM_CONFIG_HOME variabile di ambiente. Kustomize non tenta
per leggere o scrivere
questa directory. Se omesso, TMP_DIR/helm è
utilizzata, dove TMP_DIR è una directory temporanea creata
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 associati al grafico |
helmCharts.valuesFile
|
Accetta una stringa. ValuesFile è un percorso locale o un URL remoto di un file di valori da utilizzare
anziché i valori predefiniti associati al grafico. I valori predefiniti
si trovano in CHART_HOME/NAME/values.yaml . |
helmCharts.valuesMerge
|
Accetta merge , override , (default) ,
o replace . ValuesMerge specifica come trattare ValuesInline
rispetto ai valori. |
helmCharts.includeCRDs
|
Accetta true o false . Specifica se Helm deve
generano anche CustomResourceDefinitions. Il valore predefinito è
false . |
Architettura di esempio per le configurazioni Kustomize
L'esempio seguente mostra come puoi configurare
per l'utilizzo delle configurazioni Kustomize con rendering automatico. Questo
include tre overlay (team-a
, team-b
e team-c
) che
fare riferimento alla stessa base.
Il seguente diagramma mostra la struttura delle directory:
├── 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
Il seguente file kustomization.yaml
si trova nella radice della fonte attendibile e
contiene i riferimenti ai tre overlay:
# ./kustomization.yaml
resources:
- team-a
- team-b
- team-c
Il seguente kustomize.yaml
si trova nella directory team-a
ed è l'overlay
per 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
Il seguente kustomization.yaml
si trova nella directory base
ed è
Base Kustomize:
# ./base/kustomization.yaml
resources:
- namespace.yaml
- rolebinding.yaml
- role.yaml
- networkpolicy.yaml
Puoi esplorare un repository di esempio configurazione di criteri specifici dello spazio dei nomi in GitHub.
Visualizza un grafico Helm remoto
Config Sync supporta il rendering dei grafici Helm remoti sui cluster che hanno l'accesso a internet pubblico.
Il seguente kustomization.yaml
esegue il rendering di un telecomando
amministratore-certificati
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
...
Visualizza un grafico Helm locale
Config Sync supporta il rendering locale Grafici Helm. Per utilizzare una versione personalizzata di un grafico Helm, puoi eseguire il pull una versione rilasciata dal grafico Helm (ad esempio ArtifactHub), apportare modifiche localmente e quindi applica le modifiche alla tua fonte di riferimento.
Il seguente kustomization.yaml
esegue il rendering di un grafico cert-manager
locale. La
La directory predefinita per i grafici Helm è charts
e poiché questo grafico è selezionato
nella directory charts
, non devi specificare .helmCharts.repo
o
.helmCharts.version
.
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
releaseName: my-cert-manager
namespace: cert-manager
...
Eseguire il rendering di più grafici Helm
Config Sync supporta il rendering di più grafici Helm in uno
kustomization.yaml
, a prescindere 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
- Utilizzare Config Sync in più ambienti con rendering automatico