Configurer Kubernetes avec Kustomize
Kustomize est un outil de transformation de configuration Kubernetes qui vous permet de personnaliser les fichiers YAML non modélisés, en laissant les fichiers d'origine intacts. Kustomize peut également générer des ressources telles que des ConfigMaps et des Secrets à partir d'autres représentations. Kustomize est conçu pour l'API Kubernetes, afin de pouvoir comprendre et modifier les objets de style Kubernetes.
Si vous souhaitez utiliser les charts Helm avec Config Sync, deux méthodes sont disponibles: afficher Helm via Kustomize ou utiliser l'API Helm. Cette page présente en détail les conditions requises pour afficher des graphiques Helm via Kustomize. Pour en savoir plus sur l'utilisation de l'API Helm, consultez la page Synchroniser des charts Helm à partir d'Artifact Registry.
Les différences suivantes s'appliquent lorsque vous utilisez Kustomize pour afficher des graphiques Helm:
- Les registres Helm privés et OCI ne sont pas acceptés. L'API Helm accepte les registres privés et OCI.
- Les valeurs Helm peuvent être gérées dans la source de référence. Avec l'API Helm, les valeurs sont gérées dans le cadre de l'API RootSync ou RepoSync.
- Il est possible d'afficher plusieurs graphiques Helm dans un objet RootSync ou RepoSync. Avec l'API Helm, vous ne pouvez afficher qu'un seul graphique Helm dans un objet RootSync ou RepoSync.
Configuration requise pour Config Sync pour Kustomize
Pour afficher automatiquement les configurations Kustomize et les graphiques Helm, assurez-vous que votre environnement Config Sync répond aux exigences suivantes:
- Utilise une source de vérité non structurée. L'affichage automatique n'est pas compatible avec les sources hiérarchiques.
- Pour déclencher le processus d'affichage, votre source de référence doit disposer d'un fichier de configuration Kustomization (
kustomization.yaml
,kustomization.yml
ouKustomization
) à la racine de votre répertoire. Si le répertoire racine ne possède pas de fichier de configuration Kustomization, Config Sync synchronise les configurations telles quelles sans aucun rendu. - Incluez vos configurations dans le fichier
kustomization.yaml
. Si vous n'incluez pas ces fichiers de configuration, les configurations ne sont pas synchronisées avec le cluster.
Afficher des graphiques Helm via Kustomize
Cette section explique comment effectuer le rendu des graphiques Helm via Kustomize. Versions intégrées de Helm et Kustomize : liste les versions Kustomize et Helm fournies avec la version correspondante de Config Sync.
Champs du chart Helm
Vous pouvez ajouter les champs de graphique Helm suivants à vos fichiers kustomization.yaml
pour permettre l'affichage des graphiques Helm via Kustomize:
Champ | Description |
---|---|
helmGlobals |
Paramètres appliqués à tous les charts Helm |
helmGlobals.chartHome
|
Accepte une chaîne. Un chemin d'accès, relatif à la racine Kustomization, à un répertoire contenant un sous-répertoire pour chaque graphique à inclure dans Kustomization. La valeur par défaut de ce champ est charts . |
helmGlobals.configHome
|
Accepte une chaîne. Définit une valeur que Kustomize doit transmettre à Helm avec la variable d'environnement HELM_CONFIG_HOME . Kustomize ne tente pas de lire ou d'écrire ce répertoire. En cas d'omission, TMP_DIR/helm est utilisé, où TMP_DIR est un répertoire temporaire créé par Kustomize pour Helm. |
helmCharts
|
Un tableau de paramètres de chart Helm |
helmCharts.name
|
Accepte une chaîne. Le nom du chart. Ce champ est obligatoire. |
helmCharts.version
|
Accepte une chaîne. La version du chart |
helmCharts.repo
|
Accepte une chaîne. L'URL utilisée pour localiser le chart |
helmCharts.releaseName
|
Accepte une chaîne. Remplace RELEASE_NAME dans le résultat du modèle de chart |
helmCharts.namespace
|
Accepte une chaîne. Définit l'espace de noms cible pour une version (.Release.Namespace dans le modèle) |
helmCharts.valuesInline
|
Valeurs à utiliser à la place des valeurs par défaut qui accompagnent le chart |
helmCharts.valuesFile
|
Accepte une chaîne. ValueFile est un chemin d'accès local ou une URL distante à un fichier de valeurs à utiliser à la place des valeurs par défaut accompagnant le graphique. Les valeurs par défaut sont dans CHART_HOME/NAME/values.yaml . |
helmCharts.valuesMerge
|
Accepte merge , override , (default) , ou replace . ValuesMerge spécifie comment traiter ValuesInline par rapport à Values. |
helmCharts.includeCRDs
|
Accepte true ou false . Spécifie si Helm doit également générer CustomResourceDefinitions. La valeur par défaut est false . |
Exemple d'architecture pour les configurations Kustomize
L'exemple suivant montre comment configurer votre source de référence pour utiliser des configurations Kustomize avec le rendu automatique. Ce répertoire comprend trois superpositions (team-a
, team-b
et team-c
) qui font référence à la même base.
Le schéma suivant montre la structure des répertoires :
├── 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
Le fichier kustomization.yaml
suivant se trouve à la racine de la source fiable. Il contient des références aux trois superpositions:
# ./kustomization.yaml
resources:
- team-a
- team-b
- team-c
Le fichier kustomize.yaml
suivant se trouve dans le répertoire team-a
et est la superposition de 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
Le fichier kustomization.yaml
suivant se trouve dans le répertoire base
et est la base Kustomize :
# ./base/kustomization.yaml
resources:
- namespace.yaml
- rolebinding.yaml
- role.yaml
- networkpolicy.yaml
Vous pouvez explorer un exemple de dépôt dans le répertoire Configurer des règles spécifiques à l'espace de noms dans GitHub.
Effectuer le rendu d'un chart Helm distant
Config Sync est compatible avec le rendu des charts Helm distants sur les clusters disposant d'un accès Internet public.
Le kustomization.yaml
suivant effectue le rendu d'un cert-manager distant en définissant les champs helmCharts
suivants :
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
repo: https://charts.jetstack.io
version: v1.5.3
releaseName: my-cert-manager
namespace: cert-manager
...
Effectuer le rendu d'un chart Helm local
Config Sync est compatible avec le rendu des charts Helm locaux. Pour utiliser une version personnalisée d'un chart Helm, vous pouvez extraire la version publiée du chart Helm (par exemple, ArtifactHub), apporter des modifications localement, puis les appliquer à votre source de référence.
Le kustomization.yaml
suivant effectue le rendu d'un chart cert-manager
local. Le répertoire par défaut des charts Helm est charts
, et comme ce chart est vérifié dans le répertoire charts
, vous n'avez pas besoin de spécifier .helmCharts.repo
ou .helmCharts.version
.
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
releaseName: my-cert-manager
namespace: cert-manager
...
Effectuer le rendu de plusieurs charts Helm
Config Sync accepte le rendu de plusieurs charts Helm dans un fichier kustomization.yaml
, que le chart soit distant ou local.
Le kustomization.yaml
suivant effectue le rendu d'un chart Helm local (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
...
Étapes suivantes
- Utiliser Config Sync avec Kustomize et Helm
- Utiliser Config Sync dans plusieurs environnements avec l'affichage automatisé