Chart Helm

Description

Ce template ajoute :

  • une variable WITH_CHART_JOBS : (valeur par défaut: true) Indique si on veut importer également les jobs ou uniquement la fonction .deploy-chart
  • une fonction .deploy-chart : package le chart puis le dépose dans le registre
  • un job deploy:chart : appelle la fonction .deploy-chart (pour le cas où le répertoire contenant le chart s'appelle bien chart)

Pré-requis

Ce template utilise 2 variables d'environnement :

  • CHART_USER: le nom de l'utilisateur ayant l'autorisation de déposer un chart
  • CHART_USER_PWD: le mot de passe associé (ou token)

Il est conseillé d'utiliser un "deploy token" gitlab pour cet utilisateur déclaré au niveau de votre groupe

Utilisation

Directe

Ajouter le code suivant dans votre fichier .gitlab-ci.yml

include:
  - project: geoplateforme/templates
    ref: main
    file:
      - '/ci/chart.yml'

Uniquement la fonction .deploy-chart

Pour ne pas utiliser les jobs mais uniquement la fonction, ajouter la variable globale :

variables:
  WITH_CHART_JOBS: "false"

Pour créer son propre job à partir de la fonction :

monjob:
  extends: .deploy-chart
  variables:
    CHART_DIR: # nom du répertoire contenant le chart à packager
  ...

Exploitation

Les charts sont poussés dans la Package Registry de votre projet. Pour y intégrer cette Package Registry comme un dépôt helm, c'est à dire pouvoir utiliser votre chart comme dépendance dans un autre chart, il faut :

  • ajouter ce nouveau dépôt : bash helm repo add --username 'CHART_USER' --password 'CHART_USER_PWD' REPO_NAME https://gitlab.gpf-tech.ign.fr/api/v4/projects/PROJECT_ID/packages/helm/stable la valeur de PROJECT_ID votre projet GitLab peut être trouvée dans la page d'accueil sous le nom du projet ou dans la catégorie Général des Settings. La valeur de REPO_NAME est arbitaire.

  • ajouter comme dépendance dans votre nouveau chart, ajouter dans la section dependencies de Chart.yaml : ```yaml dependencies:

    • name: MON_SUPER_CHART version: "0.1.0" repository: "@REPO_NAME" ```
  • mise à jour des dépendances : helm dependency update