데이터베이스 마이그레이션 pre-upgrade Job
배포 전에 실행되도록 Job에 주석을 추가합니다.
데이터베이스 마이그레이션 pre-upgrade Job은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
실제 사용 사례
새 애플리케이션 코드가 배포되기 전에 데이터베이스 스키마를 마이그레이션해야 하는 경우가 많습니다. pre-upgrade 훅은 해당 마이그레이션을 안전하게 실행하기에 적합합니다.
배포 전에 실행하는 이유
pre-upgrade로 실행하면 새 파드가 시작되기 전에 스키마가 준비됩니다. 새 코드가 오래되고 호환되지 않는 데이터베이스와 통신하는 일이 없습니다.
"helm.sh/hook": pre-upgradeJob으로 시작하기
마이그레이션은 한 번 실행된 후 종료되므로 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로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“데이터베이스 마이그레이션 pre-upgrade Job”에서 뭘 배우나요?
배포 전에 실행되도록 Job에 주석을 추가합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“데이터베이스 마이그레이션 pre-upgrade Job” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 훅의 역할과 실행 시점
- 데이터베이스 마이그레이션 pre-upgrade Job
- 훅 가중치 및 순서
- 훅 삭제 정책