0Pricing
Helm Academy · Lekcja

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-upgrade

Rozpocznij 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-migrate

Dodaj 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-upgrade

Uruchom 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: Never

Szablonowanie 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-succeeded

Unikalne 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-run

Szybki 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

  1. Czym są hooki i kiedy się uruchamiają
  2. Job migracji bazy danych pre-upgrade
  3. Wagi i kolejność hooków
  4. Zasady usuwania hooków
← Powrót do Helm Academy