DevOps-bootcamp · Lektion

Ett pre-upgrade-jobb för databasmigrering

Annotera ett Job så att det körs före utrullningen

Lektion 2 av 413 steg

Ett pre-upgrade-jobb för databasmigrering är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Ett verkligt användningsfall

Innan ny applikationskod rullas ut behöver databasschemat ofta migreras. En pre-upgrade-hook är ett perfekt ställe att köra migreringen på ett säkert sätt.

Varför före utrullningen

Att köra den som pre-upgrade innebär att schemat är klart innan de nya poddarna startar. Den nya koden kommunicerar då aldrig med en gammal, inkompatibel databas.

"helm.sh/hook": pre-upgrade

Börja med ett Job

Migreringen körs en gång och avslutas sedan, så modellera den som ett Kubernetes-Job. Helm väntar på att jobbet ska slutföras innan uppgraderingen fortsätter.

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

Lägg till hook-annoteringen

Markera Job-resursen som en hook i dess metadata. Annoteringen helm.sh/hook med värdet pre-upgrade förvandlar detta vanliga Job till en hook.

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

Kör migreringskommandot

Jobbets container kör ditt migreringsverktyg. Rikta det mot samma databas som appen använder, så att schemaändringarna hamnar där de ska.

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

Starta aldrig om vid fel

Ange Jobbets restartPolicy som Never eller OnFailure. En migrering som kör i oändlighet skulle blockera uppgraderingen och aldrig låta Helm fortsätta.

spec:
  template:
    spec:
      restartPolicy: Never

Malla image-taggen

Håll migreringsverktyget synkroniserat med appen genom att malla dess tagg. Återanvänd samma .Values.image.tag som deploymenten läser, så att versionerna stämmer överens.

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

Helm blockerar tills det är klart

Eftersom det är en pre-upgrade-hook pausar Helm uppgraderingen tills jobbet rapporterar att det lyckades. Om migreringen misslyckas genomförs utrullningen aldrig. 🛑

Städa efter lyckat resultat

Gamla migreringsjobb hopar sig annars. Kombinera hooken med en hook-delete-policy så att ett lyckat Job tas bort i stället för att belamra namnrymden.

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

Unika namn hjälper

Hook-Jobs är oföränderliga när de väl har skapats, så ett fast namn kan kollidera vid nästa uppgradering. Om du inkluderar .Release.Revision i namnet förblir varje körning unik.

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

Testa med en dry run

Rendera chartet före en riktig uppgradering för att kontrollera att hooken ser korrekt ut. En dry-run visar det Job-manifest som Helm skulle skapa utan att påverka klustret.

helm upgrade myapp ./mychart --dry-run

Snabbkontroll

Du behöver köra en schemamigrering innan nya apppoddar startar under en uppgradering.

Sammanfattning

Du modellerade en migrering som ett pre-upgrade-Job, angav restartPolicy som Never och lät Helm blockera tills migreringen lyckades innan den nya koden rullades ut. 🗄️

Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”Ett pre-upgrade-jobb för databasmigrering” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Ett pre-upgrade-jobb för databasmigrering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”Ett pre-upgrade-jobb för databasmigrering”?

Annotera ett Job så att det körs före utrullningen Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Ett pre-upgrade-jobb för databasmigrering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Vad hooks är och när de körs
  2. Ett pre-upgrade-jobb för databasmigrering
  3. Hook-vikter och ordning
  4. Regler för borttagning av hooks
← Tillbaka till DevOps-bootcamp