0Pricing
DevOps Bootcamp · Lektion

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 DevOps Bootcamp-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 DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-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-upgrade

Mit 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-migrate

Die 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-upgrade

Den 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: Never

Das 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-succeeded

Eindeutige 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-run

Kurzer 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 DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-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 DevOps Bootcamp 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 DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp 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 DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-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

  1. Was Hooks sind und wann sie ausgelöst werden
  2. Ein pre-upgrade-Job für Datenbankmigrationen
  3. Hook-Gewichte und Reihenfolge
  4. Löschrichtlinien für Hooks
← Zurück zu DevOps Bootcamp