Introduction
Gérer le versionnage de charts Helm peut rapidement devenir complexe. Les outils classiques d'automatisation de releases Git imposent souvent de créer un dépôt dédié par chart, ce qui devient difficile à maintenir lorsque leur nombre augmente.
Nx est une solution élégante pour simplifier cette gestion au sein d'un monorepo.
Cette publication s'inspire des travaux d'Antoine Caron, je vous invite à lire son article Managing Terraform Modules with Nx Monorepo
Qu'est-ce que NX ?
NX est un outil de build conçu pour gérer des monorepos. À l'origine orienté vers les technologies web, il est en réalité compatible avec tous les langages.
Le flux de release se résume ainsi :
Configuration d'un environnement NX pour Helm
Construisons ensemble la structure d'un monorepo de charts Helm.
Création du workspace NX
npx create-nx-workspace@latest helm-charts --preset=npm
cd helm-chartsArborescence de fichiers
Voici l’organisation des fichiers et dossiers :
- helm-charts
- charts
- example-chart
- templates
- Chart.yaml
- package.json
- node_modules
- server
- nx.json
- package.json
Chaque chart Helm dispose d'un dossier dédié sous helm-charts/charts/ et dispose de son propre fichier package.json permettant de configurer NX.