차트 훅

차트 훅

Helm은 차트 개발자가 릴리스의 수명 주기에서 특정 지점에 개입할 수 있게 해 주는 훅 메커니즘을 제공해요. 예를 들어 훅을 사용해 다음을 할 수 있어요:

  • 다른 차트가 로드되기 전에 설치 중에 ConfigMap이나 Secret을 로드해요.

  • 새 차트를 설치하기 전에 데이터베이스를 백업하는 Job을 실행하고, 업그레이드 후에 데이터를 복원하는 두 번째 Job을 실행해요.

  • 릴리스를 삭제하기 전에 Job을 실행해 서비스를 제거하기 전에 순조롭게 회전에서 빼내요.

Helm 훅은 특별한 어노테이션 helm.sh/hook: <hook-name>이 있는 Kubernetes 리소스를 만들어 동작해요.

훅은 어노테이션이 설정된 일반적인 Kubernetes 매니페스트로 작성돼요. 예를 들면:

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{ include "mychart.fullname" . }}-pre-install"
  annotations:
    "helm.sh/hook": pre-install
spec:
  ...

출처: 문서

본문

훅과 릴리스 수명 주기

훅을 사용하면 지정된 지점에서 릴리스 수명 주기에 개입할 수 있어요. 아래 표는 훅과 실행 시점을 나열해요:

설명
pre-install 템플릿이 렌더링된 후, 하지만 어떤 리소스도 Kubernetes에 로드되기 전에 실행돼요.
post-install 모든 리소스가 Kubernetes에 로드된 후에 실행돼요.
pre-delete 어떤 리소스도 삭제되기 전에 실행돼요.
post-delete 모든 리소스가 삭제된 후에 실행돼요.
pre-upgrade 템플릿이 렌더링된 후, 하지만 어떤 리소스도 Kubernetes에 로드되기 전에 실행돼요.
post-upgrade 모든 리소스가 Kubernetes에 로드된 후에 실행돼요.
pre-rollback 템플릿이 렌더링된 후, 하지만 어떤 리소스도 Kubernetes에 로드되기 전에 실행돼요.
post-rollback 모든 리소스가 Kubernetes에 로드된 후에 실행돼요.

훅 가중치

훅은 실행 순서를 결정하는 가중치를 가질 수 있어요. 가중치를 할당하려면 helm.sh/hook-weight 어노테이션을 사용해요. 훅은 실행 전에 가중치 순(낮은 것에서 높은 것)으로 정렬돼요.

annotations:
  "helm.sh/hook": pre-install
  "helm.sh/hook-weight": "-5"

음수 가중치는 허용되며, 훅을 다른 훅보다 먼저 실행하게 만드는 데 유용해요.

훅 작성

훅은 특별한 어노테이션이 있는 일반적인 Kubernetes 매니페스트로 작성돼요. 훅은 templates/ 디렉터리에 함께 모아져 있어요.

훅 등록과 등록 해제

훅은 로드될 때 등록되고, 릴리스가 삭제될 때 등록이 해제돼요.

훅 삭제 정책

훅이 완료된 후 정리되는 시기를 제어하려면 helm.sh/hook-delete-policy 어노테이션을 사용할 수 있어요. 기본 정책 외에 훅의 성공·실패 시점에 따라 리소스를 삭제하도록 지정할 수 있어요.

훅 나열

helm list를 실행하면 추가된 훅과 함께 릴리스 정보를 확인할 수 있어요.

수동 훅 관리

특정 상황에서는 훅을 수동으로 관리해야 할 수도 있어요. --hooks 플래그를 사용하면 명령 실행 시 어떤 훅을 실행할지 제어할 수 있어요.

결론

훅은 릴리스 수명 주기의 여러 지점에 개입할 수 있는 유연한 메커니즘을 제공해요.

더 알아보기 (Learn more)