Ett pre-upgrade-jobb för databasmigrering
Annotera ett Job så att det körs före utrullningen
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-upgradeBö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-migrateLä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-upgradeKö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: NeverMalla 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-succeededUnika 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-runSnabbkontroll
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. 🗄️
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
- Vad hooks är och när de körs
- Ett pre-upgrade-jobb för databasmigrering
- Hook-vikter och ordning
- Regler för borttagning av hooks