Middle
Comment stocker correctement les modèles Helm dans GitLab?
sobes.tech IA
Réponse de l'IA
Il est recommandé de stocker les modèles Helm dans un référentiel Git séparé dans GitLab. Cela permet de les versionner, d'appliquer des pipelines CI/CD pour le linting et l'empaquetage, ainsi que de gérer l'accès.
La structure du référentiel peut être la suivante :
my-helm-charts/
├── Chart.yaml // Informations méta du chart
├── values.yaml // Valeurs par défaut
├── templates/ // Modèles de manifestes Kubernetes
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Charts dépendants (optionnel)
└── redis/
└── ...
Pour automatiser, on peut utiliser GitLab CI/CD. Exemple de .gitlab-ci.yml :
stages:
- lint
- package
- deploy # Optionnel
variables:
HELM_VERSION: "3.x.x" # Indique la version actuelle de Helm
HELM_REGISTRY: "my-gitlab-registry" # Nom de votre registre dans GitLab
before_script:
- curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz | tar xz
- mv linux-amd64/helm /usr/local/bin/helm
- helm version
lint_chart:
stage: lint
image: docker.io/alpine/helm:latest # Utilisez une image avec Helm
script:
- helm lint ./my-chart-directory # Chemin vers le répertoire de votre chart
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Création de l'archive .tgz
artifacts:
paths:
- ./*.tgz # Sauvegarde du chart empaqueté en tant qu'artéfact
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Configuration du registre Helm dans GitLab
- HE=helm-registry.$CI_SERVER_HOST helm registry login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- helm push my-chart-*.tgz oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY # Push vers le registre OCI
variables:
# Assurez-vous que les variables CI_REGISTRY_USER et CI_REGISTRY_PASSWORD sont configurées dans GitLab CI/CD
GIT_STRATEGY: none # Ne pas re-cloner le dépôt
# Exemple d'étape de déploiement (optionnel)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Configuration des dépendances (par ex., kubectl, fournisseurs cloud)
# # helm upgrade --install my-release oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY/my-chart --version latest -n my-namespace -f values.yaml
# environment: production # Ou autre environnement
# when: manual # Ou en_branch, etc.
Pour stocker les charts empaquetés (.tgz), on peut utiliser :
- Registry de packages GitLab (charts Helm OCI) : Méthode recommandée. Permet de stocker directement dans GitLab des charts au format OCI.
- Packages génériques : Si Helm OCI n'est pas supporté ou pour d'autres raisons.
- Stockage privé de fichiers statiques : Par exemple, stockage compatible S3 ou GitLab Pages.
En utilisant le Registry de packages GitLab (charts Helm OCI), pour l'ajouter comme dépôt Helm :
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<votre-namespace>/<votre-projet-de-helm-charts>
Remplacez <votre-namespace> et <votre-projet-de-helm-charts> par les valeurs appropriées.