Ho migrazioni di database che vorrei eseguire prima di distribuire una nuova versione della mia app in un cluster Kubernetes. Voglio che queste migrazioni vengano eseguite automaticamente come parte di una pipeline di fornitura continua. La migrazione verrà incapsulata come immagine del contenitore. Qual è il miglior meccanismo per raggiungere questo obiettivo?Il modo migliore per eseguire attività di migrazione una tantum in un cluster di Kubernetes
Requisiti per una soluzione:
- essere in grado di determinare se un errore si è verificato in modo che non ci successivamente tenta di distribuire una nuova versione dell'app nel cluster.
- rinunciare se una migrazione non riesce - non continuare a riprovare.
- accedere ai registri per diagnosticare le migrazioni non riuscite.
ho dato per scontato che la funzionalità di Lavoro in kubernetes renderebbe questo facile, ma ci sembra essere un paio di sfide:
- kubernetes volontà repeatedly re-run containers whose processes terminate with a non-zero exit code, anche se il lavoro ha una
restartPolicy
dinever
. - blocco in attesa del risultato di un lavoro in coda-up sembra richiedere script arrotolate a mano
Sarebbe utilizzando "baccelli nude" essere un approccio migliore? Se è così, come potrebbe funzionare?
Come sei finito a fare questo? Avendo me stesso lo stesso dilemma ... –