Job migracji bazy danych pre-upgrade
Dodawanie adnotacji do Job uruchamianego przed wdrożeniem.
Job migracji bazy danych pre-upgrade to bezpłatna lekcja Helm Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Helm Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Helm Academy zawiera 4 lekcji w sumie.
Praktyczny przypadek użycia
Przed wdrożeniem nowego kodu aplikacji często trzeba zmigrować schemat bazy danych. Hook pre-upgrade jest idealnym miejscem na bezpieczne uruchomienie takiej migracji.
Dlaczego przed wdrożeniem
Uruchomienie migracji jako pre-upgrade oznacza, że schemat będzie gotowy, zanim wystartują nowe pody. Nowy kod nie połączy się z niezgodną, starą wersją bazy danych.
"helm.sh/hook": pre-upgradeRozpocznij od zadania
Migracja uruchamia się raz, a następnie kończy działanie, dlatego należy zamodelować ją jako Kubernetesowy Job. Helm zaczeka na zakończenie zadania przed kontynuowaniem aktualizacji.
apiVersion: batch/v1
kind: Job
metadata:
name: db-migrateDodaj adnotację hooka
Hook należy oznaczyć w metadanych zadania. Adnotacja helm.sh/hook ustawiona na pre-upgrade zmienia zwykły Job w hook.
metadata:
annotations:
"helm.sh/hook": pre-upgradeUruchom polecenie migracji
Kontener zadania uruchamia narzędzie migracji. Należy wskazać tę samą bazę danych, z której korzysta aplikacja, aby zmiany schematu trafiły we właściwe miejsce.
spec:
containers:
- name: migrate
image: myapp:1.4
command: ["./migrate", "up"]Nigdy nie uruchamiaj ponownie po błędzie
Warto ustawić restartPolicy zadania na Never lub OnFailure. Migracja zapętlona bez końca zablokowałaby aktualizację i nie pozwoliła Helmowi przejść dalej.
spec:
template:
spec:
restartPolicy: NeverSzablonowanie tagu obrazu
Aby zachować zgodność migratora z aplikacją, należy użyć szablonu dla jego tagu. Warto ponownie wykorzystać tę samą wartość .Values.image.tag, którą odczytuje wdrożenie, aby wersje były zgodne.
image: "myapp:{{ .Values.image.tag }}"Helm blokuje działanie do zakończenia
Ponieważ jest to hook pre-upgrade, Helm wstrzymuje aktualizację, aż zadanie zgłosi powodzenie. Jeśli migracja się nie powiedzie, wdrożenie nie nastąpi. 🛑
Sprzątanie po powodzeniu
W przeciwnym razie stare zadania migracji będą się gromadzić. Należy połączyć hook z hook-delete-policy, aby pomyślnie zakończone zadanie było usuwane i nie zaśmiecało przestrzeni nazw.
"helm.sh/hook-delete-policy": hook-succeededUnikalne nazwy pomagają
Hookowe zadania po utworzeniu są niezmienne, więc stała nazwa może kolidować podczas kolejnej aktualizacji. Umieszczenie .Release.Revision w nazwie zapewnia odrębność każdego uruchomienia.
name: db-migrate-{{ .Release.Revision }}Testowanie za pomocą dry-run
Przed prawdziwą aktualizacją należy wyrenderować chart, aby potwierdzić poprawność hooka. dry-run pokazuje manifest zadania, który Helm utworzyłby bez modyfikowania klastra.
helm upgrade myapp ./mychart --dry-runSzybki test
Trzeba uruchomić migrację schematu, zanim podczas aktualizacji wystartują pody nowej wersji aplikacji.
Podsumowanie
Zmigrowali Państwo schemat za pomocą zadania pre-upgrade, ustawili restartPolicy na Never i pozwolili Helmowi wstrzymać działanie do czasu powodzenia migracji, zanim wdrożony zostanie nowy kod. 🗄️
Często zadawane pytania
Czy lekcja „Job migracji bazy danych pre-upgrade” jest bezpłatna?
Tak — pełny tekst „Job migracji bazy danych pre-upgrade” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Helm Academy, przejdź na CoddyKit PRO. Kurs Helm Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Job migracji bazy danych pre-upgrade”?
Dodawanie adnotacji do Job uruchamianego przed wdrożeniem. Ćwiczysz Helm Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Helm Academy?
Nie wymagamy żadnego doświadczenia. Helm Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Job migracji bazy danych pre-upgrade”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Helm Academy?
Tak. Każda lekcja Helm Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Czym są hooki i kiedy się uruchamiają
- Job migracji bazy danych pre-upgrade
- Wagi i kolejność hooków
- Zasady usuwania hooków