0Pricing
Helm Academy · Leçon

Une tâche de migration de DB avant la mise à niveau

Annotez une tâche pour l’exécuter avant le déploiement.

Une tâche de migration de DB avant la mise à niveau est une leçon Helm Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Helm Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Helm Academy comprend 4 leçons au total.

Un cas d’utilisation concret

Avant de déployer le nouveau code de l’application, vous devez souvent faire évoluer le schéma de votre base de données. Un crochet pre-upgrade est l’endroit idéal pour exécuter cette migration en toute sécurité.

Pourquoi avant le déploiement

Exécuter la migration avec pre-upgrade signifie que le schéma est prêt avant le démarrage des nouveaux pods. Le nouveau code ne communique ainsi jamais avec une base de données ancienne et incompatible.

"helm.sh/hook": pre-upgrade

Commencez par une tâche

La migration s’exécute une fois, puis se termine : modélisez-la donc comme une tâche Kubernetes. Helm attendra la fin de cette tâche avant de poursuivre la mise à niveau.

apiVersion: batch/v1
kind: Job
metadata:
  name: db-migrate

Ajoutez l’annotation du crochet

Marquez la tâche comme crochet dans ses métadonnées. L’annotation helm.sh/hook définie sur pre-upgrade transforme cette tâche ordinaire en crochet.

metadata:
  annotations:
    "helm.sh/hook": pre-upgrade

Exécutez la commande de migration

Le conteneur de la tâche exécute votre outil de migration. Pointez-le vers la même base de données que celle utilisée par l’application afin que les modifications du schéma soient appliquées au bon endroit.

spec:
  containers:
    - name: migrate
      image: myapp:1.4
      command: ["./migrate", "up"]

Ne redémarrez jamais en cas d’échec

Définissez restartPolicy de la tâche sur Never ou OnFailure. Une migration qui boucle indéfiniment bloquerait votre mise à niveau et empêcherait Helm de continuer.

spec:
  template:
    spec:
      restartPolicy: Never

Modélisez la balise de l’image

Gardez l’outil de migration synchronisé avec l’application en modélisant sa balise. Réutilisez le même .Values.image.tag que celui lu par le déploiement afin que les versions correspondent.

image: "myapp:{{ .Values.image.tag }}"

Helm bloque jusqu’à la fin

Comme il s’agit d’un crochet pre-upgrade, Helm met la mise à niveau en pause jusqu’à ce que la tâche signale sa réussite. Si la migration échoue, le déploiement n’a jamais lieu. 🛑

Nettoyez après la réussite

Sinon, les anciennes tâches de migration s’accumulent. Associez le crochet à une hook-delete-policy afin qu’une tâche réussie soit supprimée au lieu d’encombrer l’espace de noms.

"helm.sh/hook-delete-policy": hook-succeeded

Les noms uniques sont utiles

Les tâches de crochet sont immuables une fois créées : un nom fixe peut donc entrer en collision lors de la mise à niveau suivante. Inclure .Release.Revision dans le nom permet de distinguer chaque exécution.

name: db-migrate-{{ .Release.Revision }}

Testez avec une exécution à blanc

Avant une véritable mise à niveau, effectuez le rendu du graphique pour vérifier que le crochet est correct. Une exécution dry-run affiche le manifeste de la tâche que Helm créerait sans toucher à la grappe.

helm upgrade myapp ./mychart --dry-run

Vérification rapide

Vous devez exécuter une migration de schéma avant le démarrage des nouveaux pods de l’application lors d’une mise à niveau.

Récapitulatif

Vous avez modélisé une migration comme une tâche pre-upgrade, défini restartPolicy sur Never et laissé Helm bloquer jusqu’à sa réussite avant de déployer le nouveau code. 🗄️

Questions Fréquemment Posées

La leçon « Une tâche de migration de DB avant la mise à niveau » est-elle gratuite ?

Oui — le texte complet de « Une tâche de migration de DB avant la mise à niveau » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Helm Academy, passe à CoddyKit PRO. Le cours Helm Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Une tâche de migration de DB avant la mise à niveau » ?

Annotez une tâche pour l’exécuter avant le déploiement. Tu pratiques Helm Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Helm Academy ?

Aucune expérience préalable n'est requise. Helm Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Une tâche de migration de DB avant la mise à niveau » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Helm Academy ?

Oui. Chaque leçon Helm Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Ce que sont les hooks et quand ils se déclenchent
  2. Une tâche de migration de DB avant la mise à niveau
  3. Poids et ordre des hooks
  4. Politiques de suppression des hooks
← Retour à Helm Academy