Ein pre-upgrade-Job für Datenbankmigrationen
Annotieren Sie einen Job, der vor dem Rollout ausgeführt wird.
Ein pre-upgrade-Job für Datenbankmigrationen ist eine kostenlose Helm Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Helm Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Helm Academy-Kurs umfasst insgesamt 4 Lektionen.
Ein konkreter Anwendungsfall
Bevor neuer Anwendungscode ausgerollt wird, muss häufig das Datenbankschema migriert werden. Ein pre-upgrade-Hook ist der ideale Ort, um diese Migration sicher auszuführen.
Warum vor dem Rollout
Wenn Sie die Migration als pre-upgrade ausführen, ist das Schema bereit, bevor die neuen Pods starten. Der neue Code kommuniziert niemals mit einer veralteten, nicht passenden Datenbank.
"helm.sh/hook": pre-upgradeMit einem Job beginnen
Die Migration wird einmal ausgeführt und beendet sich anschließend, daher sollten Sie sie als Kubernetes-Job modellieren. Helm wartet, bis der Job abgeschlossen ist, bevor das Upgrade fortgesetzt wird.
apiVersion: batch/v1
kind: Job
metadata:
name: db-migrateDie Hook-Annotation hinzufügen
Kennzeichnen Sie den Job in seinen Metadaten als Hook. Die auf pre-upgrade gesetzte Annotation helm.sh/hook macht aus diesem gewöhnlichen Job einen Hook.
metadata:
annotations:
"helm.sh/hook": pre-upgradeDen Migrationsbefehl ausführen
Der Container des Jobs führt Ihr Migrationstool aus. Richten Sie ihn auf dieselbe Datenbank wie die Anwendung, damit die Schemaänderungen am richtigen Ort angewendet werden.
spec:
containers:
- name: migrate
image: myapp:1.4
command: ["./migrate", "up"]Bei Fehlern niemals neu starten
Setzen Sie die restartPolicy des Jobs auf Never oder OnFailure. Eine Migration, die endlos wiederholt wird, würde Ihr Upgrade blockieren und Helm niemals fortfahren lassen.
spec:
template:
spec:
restartPolicy: NeverDas Image-Tag per Template setzen
Halten Sie den Migrations-Container mit der Anwendung synchron, indem Sie sein Tag per Template setzen. Verwenden Sie dasselbe .Values.image.tag, das vom Deployment gelesen wird, damit die Versionen übereinstimmen.
image: "myapp:{{ .Values.image.tag }}"Helm wartet bis zum Abschluss
Da es sich um einen pre-upgrade-Hook handelt, hält Helm das Upgrade an, bis der Job Erfolg meldet. Wenn die Migration fehlschlägt, wird der Rollout nicht ausgeführt. 🛑
Nach Erfolg aufräumen
Andernfalls sammeln sich alte Migrationsjobs an. Kombinieren Sie den Hook mit einer hook-delete-policy, damit ein erfolgreicher Job entfernt wird, anstatt den Namespace zu überladen.
"helm.sh/hook-delete-policy": hook-succeededEindeutige Namen helfen
Hooks-Jobs sind nach ihrer Erstellung unveränderlich, daher kann ein fester Name beim nächsten Upgrade zu einem Konflikt führen. Wenn Sie .Release.Revision in den Namen aufnehmen, bleibt jeder Lauf eindeutig.
name: db-migrate-{{ .Release.Revision }}Mit einem Dry-Run testen
Rendern Sie das Chart vor einem echten Upgrade, um zu prüfen, ob der Hook korrekt aussieht. Ein dry-run zeigt das Job-Manifest, das Helm erstellen würde, ohne den Cluster zu verändern.
helm upgrade myapp ./mychart --dry-runKurzer Check
Sie müssen während eines Upgrades eine Schema-Migration ausführen, bevor die neuen Anwendungspods starten.
Rückblick
Sie haben eine Migration als pre-upgrade-Job modelliert, restartPolicy auf Never gesetzt und Helm warten lassen, bis die Migration erfolgreich abgeschlossen ist, bevor neuer Code ausgerollt wird. 🗄️
Häufig gestellte Fragen
Ist die Lektion „Ein pre-upgrade-Job für Datenbankmigrationen“ kostenlos?
Ja — der vollständige Text von „Ein pre-upgrade-Job für Datenbankmigrationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Helm Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Helm Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Ein pre-upgrade-Job für Datenbankmigrationen“?
Annotieren Sie einen Job, der vor dem Rollout ausgeführt wird. Du übst Helm Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Helm Academy zu starten?
Keine Vorkenntnisse erforderlich. Helm Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Ein pre-upgrade-Job für Datenbankmigrationen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Helm Academy-Lektion Code schreiben und ausführen?
Ja. Jede Helm Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Was Hooks sind und wann sie ausgelöst werden
- Ein pre-upgrade-Job für Datenbankmigrationen
- Hook-Gewichte und Reihenfolge
- Löschrichtlinien für Hooks