Un Job de migración de base de datos pre-upgrade
Anote un Job para ejecutarlo antes del despliegue
Un Job de migración de base de datos pre-upgrade es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.
Un caso de uso real
Antes de desplegar código nuevo de la aplicación, a menudo es necesario migrar el esquema de la base de datos. Un hook pre-upgrade es el lugar ideal para ejecutar esa migración de forma segura.
Por qué antes del despliegue
Ejecutarlo como pre-upgrade significa que el esquema estará listo antes de que se inicien los nuevos pods. El código nuevo nunca se comunicará con una base de datos antigua e incompatible.
"helm.sh/hook": pre-upgradeComience con un Job
La migración se ejecuta una vez y después termina, así que debe modelarla como un Job de Kubernetes. Helm esperará a que el Job finalice antes de continuar con la actualización.
apiVersion: batch/v1
kind: Job
metadata:
name: db-migrateAñada la anotación del hook
Marque el Job como hook en sus metadatos. La anotación helm.sh/hook establecida en pre-upgrade es lo que convierte este Job normal en un hook.
metadata:
annotations:
"helm.sh/hook": pre-upgradeEjecute el comando de migración
El contenedor del Job ejecuta su herramienta de migración. Apúntelo a la misma base de datos que usa la aplicación para que los cambios de esquema se apliquen donde corresponde.
spec:
containers:
- name: migrate
image: myapp:1.4
command: ["./migrate", "up"]No reinicie en caso de error
Establezca restartPolicy del Job en Never o OnFailure. Una migración que se ejecute indefinidamente bloquearía la actualización y no permitiría que Helm continuara.
spec:
template:
spec:
restartPolicy: NeverParametrice la etiqueta de la imagen
Mantenga el migrador sincronizado con la aplicación parametrizando su etiqueta. Reutilice el mismo .Values.image.tag que lee el deployment para que las versiones coincidan.
image: "myapp:{{ .Values.image.tag }}"Helm bloquea la operación hasta que termine
Al ser un hook pre-upgrade, Helm pausa la actualización hasta que el Job informa de que se ha completado correctamente. Si la migración falla, el despliegue nunca se realiza. 🛑
Limpie después de una ejecución correcta
De lo contrario, los Jobs de migración antiguos se acumulan. Asocie el hook con una hook-delete-policy para eliminar un Job completado correctamente en lugar de llenar el namespace.
"helm.sh/hook-delete-policy": hook-succeededLos nombres únicos ayudan
Los Jobs de hook son inmutables una vez creados, por lo que un nombre fijo puede entrar en conflicto durante la siguiente actualización. Incluir .Release.Revision en el nombre mantiene cada ejecución diferenciada.
name: db-migrate-{{ .Release.Revision }}Pruébelo con un dry-run
Antes de realizar una actualización real, renderice el chart para confirmar que el hook es correcto. Un dry-run muestra el manifiesto del Job que Helm crearía sin tocar el clúster.
helm upgrade myapp ./mychart --dry-runComprobación rápida
Necesita que una migración de esquema se ejecute antes de iniciar los nuevos pods de la aplicación durante una actualización.
Resumen
Modeló una migración como un Job pre-upgrade, estableció restartPolicy en Never y permitió que Helm bloqueara la operación hasta completarse correctamente antes de desplegar el código nuevo. 🗄️
Preguntas frecuentes
¿La lección «Un Job de migración de base de datos pre-upgrade» es gratis?
Sí — el texto completo de «Un Job de migración de base de datos pre-upgrade» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.
¿Qué aprenderé en «Un Job de migración de base de datos pre-upgrade»?
Anote un Job para ejecutarlo antes del despliegue Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Un Job de migración de base de datos pre-upgrade»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Qué son los hooks y cuándo se activan
- Un Job de migración de base de datos pre-upgrade
- Pesos y orden de los hooks
- Políticas de eliminación de hooks