Skip to main content

Helm Charts

Déploiement

La définition de l'application doit être dans le git https://gitlab.com/olicy/bedigital/infra/applications

Voir documentation

Values

Configuration du chart Helm — values.yaml

1. Réplicas

CléDescriptionValeur
replicaCountNombre de pods déployés1

2. Image

CléDescriptionValeur
image.repositoryRepository de l’imageregistry.gitlab.com/olicy/igor/igor/
image.pullPolicyPolitique de récupérationIfNotPresent
image.tagTag de l’image2.3.8.1-1

3. Application

CléDescriptionValeur
app.nameNom de l’applicationIgor
app.mail.from_nameNom utilisé pour l’envoi d'emailsIgor
app.session.driverDriver de sessiondatabase
app.session.lifetimeDurée de session (minutes)10080
app.queue_connectionMode queuesync
app.worker.enabledActivation du workertrue

4. Paramètres PHP

CléDescriptionValeur
php.memoryMémoire PHP512M
php.uploadTaille max upload50M

5. Gotenberg

CléDescriptionValeur
gotenberg.urlURL du service Gotenberghttp://igor-gotenberg.igor.svc.cluster.local:3000

6. Environnement

CléDescriptionValeur
env.appEnvironnement applicatifproduction

7. Secrets & Overrides

CléDescriptionValeur
imagePullSecretsSecret d’accès registregitlab-registry-igor
nameOverrideNom personnalisé""
fullnameOverrideNom complet personnalisé""

8. Sécurité Pods & Conteneurs

CléDescriptionValeur
podSecurityContextContexte sécurité du pod{}
securityContextContexte sécurité conteneur{}

9. Service

CléDescriptionValeur
service.typeType de serviceClusterIP
service.portPort HTTP80

10. Ingress

Configuration principale

CléDescriptionValeur
ingress.classClasse Ingress (Traefik)traefik
ingress.enabledActivationtrue
ingress.entryPointsEntrypoint Traefikwebsecure

TLS

CléDescriptionValeur
ingress.tls.enabledActivation TLStrue
ingress.tls.secretNameSecret TLSwildcard-igor-cert

Ingress personnalisé

CléDescriptionValeur
ingress.custom.enabledIngress customfalse
ingress.custom.entryPointsEntrypoint customwebsecure
ingress.custom.tls.enabledTLS customtrue

DNS

CléDescriptionValeur
ingress.dns.ttlTTL DNS"3600"

11. Autoscaling

CléDescriptionValeur
autoscaling.enabledActivation HPAfalse
autoscaling.minReplicasMinimum1
autoscaling.maxReplicasMaximum3
autoscaling.averageUtilizationCible CPU85

12. Cronjob

CléDescriptionValeur
cronjob.scheduleExpression CRON"*/5 * * * *"

13. Base de données

CléDescriptionValeur
db.portPort MySQL"3306"

14. Resources

HTTP

CléDescriptionValeur
resources.http.requests.memoryMemory request64Mi
resources.http.requests.cpuCPU request50m
resources.http.limits.memoryMemory limit256Mi
resources.http.limits.cpuCPU limit1

PHP

CléDescriptionValeur
resources.php.requests.memoryMemory request128Mi
resources.php.requests.cpuCPU request50m
resources.php.limits.memoryMemory limit2048Mi
resources.php.limits.cpuCPU limit1

15. Scheduling

CléDescriptionValeur
nodeSelectorCiblage de nœud{}
tolerationsTolerations[]
affinityAffinité pods{}

16. PodDisruptionBudget

CléDescriptionValeur
poddisruptionbudget.enabledActivationfalse
poddisruptionbudget.minMin pods1

17. Identifiants registre

CléDescriptionValeur
imageCredentials.registryRegistreregistry.gitlab.com
imageCredentials.usernameUsernameCommenté
imageCredentials.passwordPasswordCommenté

Pipeline et mise à jour

1. Quel est l'objectif ?

Ce pipeline gère un chart Helm nommé igor. Ses fonctions sont :

  1. Valider la syntaxe du chart.
  2. Mettre à jour la version du chart (manuellement ou en synchronisation avec l'application).
  3. Publier le chart dans le registre de paquets Helm de GitLab.

2. Comment ça marche ?

Le pipeline est divisé en plusieurs étapes et s'exécute principalement sur la branche main et pour les tags Git.


Étape 1 : lint (Validation)

  • Job : helm:lint
  • Quoi ? Ce job vérifie que la structure et la syntaxe de votre chart Helm sont correctes et ne contiennent pas d'erreurs.
  • Quand ? Automatiquement, à chaque fois qu'une modification est poussée sur la branche main.
  • Comment ? Il utilise la commande helm lint. Si une erreur est trouvée, le pipeline s'arrête.

Étape 2 : chart-versioning (Gestion des versions du Chart)

Cette étape contient deux jobs différents pour la gestion des versions :

Job 1 : bump:version (Mise à jour Manuelle de la Version du Chart)
  • Quoi ? Ce job vous permet d'augmenter manuellement le numéro de version du chart lui-même (ex: de 1.2.3 à 1.2.4 ou 2.0.0).
  • Quand ? Manuellement uniquement. Vous devez le déclencher depuis l'interface de GitLab.
  • Comment ?
    1. Il clone le dépôt des charts.
    2. Il lit la version actuelle du chart dans igor/Chart.yaml.
    3. Il augmente la version (par défaut, il incrémente le dernier chiffre).
    4. Il crée un commit Git avec la nouvelle version et le pousse sur la branche main.
Job 2 : update:helm-chart (Synchronisation de la Version de l'Application)
  • Quoi ? Ce job met à jour la version de l'application que votre chart va déployer. Il synchronise l'appVersion dans Chart.yaml et l'image.tag dans values.yaml avec le tag de l'application Docker fraîchement construite (ex: v1.2.0).
  • Quand ? Automatiquement, à chaque fois qu'un tag est poussé pour l'application, après que l'image Docker de l'application a été construite et poussée.
  • Comment ?
    1. Il clone le dépôt des charts.
    2. Il met à jour les fichiers igor/values.yaml et igor/Chart.yaml pour refléter la nouvelle version de l'application.
    3. Il crée un commit avec ces modifications et le pousse sur la branche main.
    4. Il inclut une logique de re-tentative (retry) en cas d'échec de push initial.

Étape 3 : publish (Publication du Chart)

  • Job : helm:publish
  • Quoi ? Ce job prépare et publie le chart Helm.
  • Quand ? Automatiquement, après l'étape lint (et donc après toute mise à jour de version effectuée par bump:version ou update:helm-chart), à chaque fois qu'une modification est poussée sur main.
  • Où est-il publié ? Dans le Registre de Paquets Helm du projet GitLab, accessible via "Deploy > Package Registry".
  • Comment ? Il met à jour les dépendances du chart, compresse le chart dans une archive (.tgz) et l'envoie au registre GitLab.