0Pricing
Helm Academy · 강의

데이터베이스 마이그레이션 pre-upgrade Job

배포 전에 실행되도록 Job에 주석을 추가합니다.

데이터베이스 마이그레이션 pre-upgrade Job은(는) CoddyKit의 무료 Helm Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Helm Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Helm Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

실제 사용 사례

새 애플리케이션 코드가 배포되기 전에 데이터베이스 스키마를 마이그레이션해야 하는 경우가 많습니다. pre-upgrade 훅은 해당 마이그레이션을 안전하게 실행하기에 적합합니다.

배포 전에 실행하는 이유

pre-upgrade로 실행하면 새 파드가 시작되기 전에 스키마가 준비됩니다. 새 코드가 오래되고 호환되지 않는 데이터베이스와 통신하는 일이 없습니다.

"helm.sh/hook": pre-upgrade

Job으로 시작하기

마이그레이션은 한 번 실행된 후 종료되므로 Kubernetes Job으로 모델링하십시오. Helm은 업그레이드를 계속하기 전에 Job이 완료되기를 기다립니다.

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

훅 주석 추가하기

메타데이터에서 Job을 훅으로 표시하십시오. helm.sh/hook 주석을 pre-upgrade로 설정하면 일반 Job이 훅으로 전환됩니다.

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

마이그레이션 명령 실행하기

Job의 컨테이너가 마이그레이션 도구를 실행합니다. 애플리케이션이 사용하는 것과 동일한 데이터베이스를 가리켜 스키마 변경이 올바른 위치에 적용되도록 하십시오.

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

실패 시 절대 다시 시작하지 않기

Job의 restartPolicy를 Never 또는 OnFailure로 설정하십시오. 마이그레이션이 끝없이 반복되면 업그레이드가 차단되어 Helm이 진행할 수 없습니다.

spec:
  template:
    spec:
      restartPolicy: Never

이미지 태그 템플릿화하기

이미지 태그를 템플릿으로 지정하여 마이그레이션 도구를 애플리케이션과 동일한 버전으로 유지하십시오. 배포에서 읽는 동일한 .Values.image.tag를 재사용하면 버전이 일치합니다.

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

Helm은 완료될 때까지 중단합니다

pre-upgrade 훅이므로 Helm은 Job이 성공을 보고할 때까지 업그레이드를 일시 중지합니다. 마이그레이션이 실패하면 배포가 절대 진행되지 않습니다. 🛑

성공 후 정리하기

그렇지 않으면 이전 마이그레이션 Job이 쌓입니다. 훅을 hook-delete-policy와 함께 사용하여 성공한 Job이 네임스페이스를 어지럽히지 않고 삭제되도록 하십시오.

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

고유한 이름이 도움이 됩니다

훅 Job은 생성된 후 변경할 수 없으므로 고정된 이름은 다음 업그레이드에서 충돌할 수 있습니다. 이름에 .Release.Revision을 포함하면 각 실행을 서로 구분할 수 있습니다.

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

드라이 런으로 테스트하기

실제로 업그레이드하기 전에 차트를 렌더링하여 훅이 올바르게 표시되는지 확인하십시오. dry-run은 클러스터에 영향을 주지 않고 Helm이 생성할 Job 매니페스트를 보여 줍니다.

helm upgrade myapp ./mychart --dry-run

빠른 확인

업그레이드 중에 새 애플리케이션 파드가 시작되기 전에 스키마 마이그레이션을 실행해야 합니다.

복습

마이그레이션을 pre-upgrade Job으로 모델링하고, restartPolicy를 Never로 설정했으며, 새 코드를 배포하기 전에 성공할 때까지 Helm이 중단하도록 구성했습니다. 🗄️

자주 묻는 질문

“데이터베이스 마이그레이션 pre-upgrade Job” 강의는 무료인가요?

네 — “데이터베이스 마이그레이션 pre-upgrade Job” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Helm Academy 강의 전체를 잠금 해제할 수 있습니다. Helm Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“데이터베이스 마이그레이션 pre-upgrade Job”에서 뭘 배우나요?

배포 전에 실행되도록 Job에 주석을 추가합니다. 브라우저에서 직접 실행하는 실습 코드로 Helm Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Helm Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Helm Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“데이터베이스 마이그레이션 pre-upgrade Job” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Helm Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Helm Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 훅의 역할과 실행 시점
  2. 데이터베이스 마이그레이션 pre-upgrade Job
  3. 훅 가중치 및 순서
  4. 훅 삭제 정책
← Helm Academy(으)로 돌아가기