0Pricing
Helm Academy · Lezione

Un Job di migrazione del database pre-upgrade

Aggiunga annotazioni a un Job per eseguirlo prima del rollout

Un Job di migrazione del database pre-upgrade è una lezione Helm Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Helm Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Helm Academy include 4 lezioni in totale.

Un caso d'uso reale

Prima della distribuzione del nuovo codice dell'app, spesso è necessario migrare lo schema del database. Un hook pre-upgrade è il punto ideale per eseguire la migrazione in sicurezza.

Perché prima della distribuzione

Eseguirla come pre-upgrade significa che lo schema è pronto prima dell'avvio dei nuovi pod. Il nuovo codice non comunica mai con un database obsoleto e incompatibile.

"helm.sh/hook": pre-upgrade

Iniziare con un Job

La migrazione viene eseguita una volta e poi termina, quindi la modelli come un Job Kubernetes. Helm attenderà il completamento del Job prima di proseguire con l'upgrade.

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

Aggiungere l'annotazione dell'hook

Contrassegni il Job come hook nei suoi metadati. L'annotazione helm.sh/hook impostata su pre-upgrade trasforma questo normale Job in un hook.

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

Eseguire il comando di migrazione

Il container del Job esegue lo strumento di migrazione. Lo punti allo stesso database usato dall'app, così le modifiche allo schema vengono applicate nel posto corretto.

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

Non riavviare mai in caso di errore

Imposti restartPolicy del Job su Never o OnFailure. Una migrazione che entra in un ciclo infinito bloccherebbe l'upgrade e impedirebbe a Helm di procedere.

spec:
  template:
    spec:
      restartPolicy: Never

Creare il tag dell'immagine con un template

Mantenga sincronizzato il migratore con l'app creando il tag tramite un template. Riutilizzi lo stesso .Values.image.tag letto dal deployment, così le versioni corrispondono.

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

Helm blocca l'operazione fino al completamento

Poiché è un hook pre-upgrade, Helm mette in pausa l'upgrade finché il Job non comunica il successo. Se la migrazione non riesce, la distribuzione non viene mai eseguita. 🛑

Eseguire la pulizia dopo il successo

Altrimenti i vecchi Job si accumulano. Abbini l'hook a hook-delete-policy, così un Job completato con successo viene rimosso invece di ingombrare il namespace.

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

I nomi univoci sono utili

Una volta creati, i Job degli hook sono immutabili, quindi un nome fisso può entrare in conflitto durante l'upgrade successivo. Includere .Release.Revision nel nome mantiene distinta ogni esecuzione.

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

Eseguire un test con una simulazione

Prima di un upgrade reale, renderizzi il chart per verificare che l'hook sia corretto. Un dry-run mostra il manifest del Job che Helm creerebbe senza modificare il cluster.

helm upgrade myapp ./mychart --dry-run

Verifica rapida

È necessario eseguire una migrazione dello schema prima dell'avvio dei nuovi pod dell'app durante un upgrade.

Riepilogo

Ha modellato una migrazione come Job pre-upgrade, ha impostato restartPolicy su Never e ha lasciato che Helm bloccasse l'operazione finché la migrazione non fosse completata con successo, prima di distribuire il nuovo codice. 🗄️

Domande Frequenti

La lezione «Un Job di migrazione del database pre-upgrade» è gratuita?

Sì — il testo completo di «Un Job di migrazione del database pre-upgrade» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Helm Academy, passa a CoddyKit PRO. Il corso Helm Academy include 4 lezioni in totale.

Cosa imparerò in «Un Job di migrazione del database pre-upgrade»?

Aggiunga annotazioni a un Job per eseguirlo prima del rollout Eserciti Helm Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Helm Academy?

Non è richiesta alcuna esperienza precedente. Helm Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Un Job di migrazione del database pre-upgrade»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Helm Academy?

Sì. Ogni lezione Helm Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Cosa sono gli hook e quando vengono eseguiti
  2. Un Job di migrazione del database pre-upgrade
  3. Pesi e ordinamento degli hook
  4. Policy di eliminazione degli hook
← Torna a Helm Academy