Utiliser un dépôt avec des configurations Kustomize et des charts Helm
Lorsque vous utilisez Config Sync, les configurations Kustomize et les charts Helm que vous placez dans votre dépôt Git sont rendus automatiquement. Le rendu automatisé offre les avantages suivants :
Vous n'avez plus besoin d'un pipeline d'hydratation externe. Sans rendu automatisé, vous devez le rendu des configurations manuellement à l'aide de Kustomize et Helm sur votre poste de travail, ou configurer une étape pour déclencher le processus d'hydratation dans vos systèmes CI. Grâce au rendu automatisé, Config Sync gère l'exécution.
Vos coûts de maintenance sont réduits. Sans rendu automatisé, vous devez conserver un dépôt Git avec les configurations Kustomize et les graphiques Helm d'origine, et un autre dépôt Git avec le résultat généré par l'hydratation externe. Vous devez ensuite configurer Config Sync pour la synchronisation à partir du dépôt Git avec le résultat rendu. Avec le rendu automatisé, vous n'avez besoin de conserver qu'un seul dépôt avec les configurations d'origine.
Votre workflow de développement est simplifié. Sans rendu automatisé, les modifications apportées à vos configurations d'origine doivent être examinées deux fois avant la fusion : une fois dans le dépôt d'origine, puis une fois dans le dépôt rendu. Avec le rendu automatisé, les configurations de rendu sont générées par Config Sync et vous ne devez examiner que les modifications apportées aux configurations d'origine.
Exigences
Pour afficher automatiquement les configurations Kustomize et les charts Helm, assurez-vous que votre environnement répond aux exigences suivantes :
- Utilise un dépôt non structuré. L'affichage automatique n'est pas compatible avec les dépôts hiérarchiques.
- Les API
RootSync
etRepoSync
doivent être activées. Si vous avez installé Config Sync manuellement à l'aide dekubectl
et que les APIRootSync
etRepoSync
ne sont pas activées, vous devez migrer l'objet ConfigManagement. - Pour déclencher le processus de rendu, votre dépôt Git doit comporter un fichier de configuration Kustomize (
kustomization.yaml
,kustomization.yml
ouKustomization
) à la racine de votre répertoire Git. Si le répertoire racine ne possède pas de fichier de configuration Kustomization, Config Sync synchronise les configurations telles quelles sans aucun rendu. - À partir d'Anthos Config Management version 1.12.0 ou ultérieure,
spec.override.enableShellInRendering
doit être défini surtrue
pour permettre à Config Sync d'extraire des bases distantes du dépôt public pendant le processus de rendu. - Incluez vos configurations dans
kustomization.yaml
. Si vous n'incluez pas ces fichiers de configuration, les configurations ne sont pas synchronisées avec le cluster.
Versions groupées de Helm et Kustomize
Config Sync exploite les exécutables Helm et Kustomize pour effectuer le rendu des configurations en arrière-plan. Le tableau suivant fournit une liste des versions de Config Sync compatibles avec la fonctionnalité de rendu, ainsi que les versions groupées de Helm et Kustomize.
Versions de Config Sync | Version de Helm | Version de Kustomize |
---|---|---|
1.11.0 et versions ultérieures | v3.6.3 | v4.5.2 |
De la version 1.9.0 à la version 1.10.2 | v3.6.3 | v4.3.0 |
Exemple d'architecture de dépôt pour les configurations Kustomize
L'exemple de dépôt suivant montre comment configurer le dépôt pour utiliser les configurations Kustomize avec le rendu automatique. Ce dépôt comprend trois superpositions (team-a
, team-b
et team-c
) qui référencent 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 du dépôt et contient les références des 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 ce dépôt dans le répertoire Configurer des règles spécifiques à un espace de noms de l'exemple de dépôt Anthos Config Management.
Afficher automatiquement les charts Helm
Vous pouvez afficher automatiquement les charts Helm à l'aide des champs helmGlobals
et helmCharts
de vos fichiers kustomization.yaml
.
Champs du chart Helm
Config Sync accepte l'ajout des champs suivants à vos fichiers kustomization.yaml
:
Champ | Description |
---|---|
helmGlobals |
Paramètres appliqués à tous les charts Helm |
helmGlobals.chartHome
|
Accepte une chaîne. Un chemin d'accès au fichier, en rapport à la racine Kustomization, vers un répertoire contenant un sous-répertoire pour chaque chart à 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. ValuesFile est un chemin d'accès local ou une URL distante vers un fichier de valeurs à utiliser à la place des valeurs par défaut qui accompagnent le chart. 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 . |
Exemples de charts Helm
Les exemples des sections suivantes présentent différentes manières d'utiliser les charts Helm.
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 depuis le dépôt de charts Helm (par exemple, ArtifactHub), effectuer les modifications localement, puis transférer les modifications dans votre dépôt.
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
...
Champs pris en charge
L'exemple suivant montre quels champs sont compatibles avec votre fichier kustomization.yaml
:
helmGlobals:
chartHome: string
configHome: string
helmCharts:
- name: string
version: string
repo: string
releaseName: string
namespace: string
valuesInline: map[string]interface{}
valuesFile: string
valuesMerge: string
includeCRDs: bool
Étapes suivantes
- Suivez un tutoriel pour découvrir comment utiliser Config Sync avec Kustomize et Helm.