카샤의 만개시기

쿠베네티스 헬름(Helm) 본문

DevOps/Docker & K8S

쿠베네티스 헬름(Helm)

SKaSha 2020. 1. 22. 14:02

헬름은 쿠버네티스 리소스 집합을 나타내는 차트를 관리하기 위한 패키지 매니저이다.
쿠버네티스 서비스를 운영하기 위해서는 Phase(dev,stage,prod 등) 별로 클러스터를 구성하기도 하고 미들웨어를 컨피그맵, 인그레스 등 여러 종류의 리소스를 조합하는 형태로 배포하는데 각 Phase마다 혹은 조합마다 메타 정보들이 많이 달라지게 된다.
그럴때 각 환경마다 매니페스트를 작성하여 관리한다면 관리 포인트가 너무나 많아질 것이기 때문에 배포 환경에 따라 달라지는 설정 값들만 정의하여 배포하는 매커니즘이 헬름이다.

Helm 구조

헬름은 클라이언트와 서버(Tiller)로 구성된다.
helm

  • helm client : 사용자를 위한 CLI client
  • tiller : 서버는 클라이언트로부터 전달받은 명령에 따라 클러스터에 패키지를 설치, 업데이트, 삭제 등의 작업을 수행.
  • chart : 어플리케이션을 실행하는데 필요한 모든 리소스를 정의를 포함하는 매니페스트 파일을 생성하는 템플릿을 패키지한 헬름 패키지
  • release : 클러스터에서 실행되는 차트의 특정 인스턴스

helm3에서는 tiller는 제거되었습니다.

리포지터리

차트가 모여 있는 저장소

Helm Chart 구성

chart
├── charts # 차트가 의존하는 차트 디렉토리
├── crds # Custom Resource Definitions
├── templates # manifest 파일 템플릿 디렉토리
│ ├── NOTES.txt # 차트 사용법 등 참조 문서 템플릿 (OPTIONAL)
│ ├── _helper.tpl # manifest 렌더링에 사용되는 템플릿 헬퍼
│ └── example.yaml # 각종 K8S 리소스의 manifest 템플릿
├── Chart.yaml # 차트 정보가 정의 파일
├── values.yaml # 차트 기본값 value 파일
├── values.schema.json # values.yaml을 json 형태로 나타낸것 (OPTIONAL)
├── LICENSE # (OPTIONAL)
└── README.md # (OPTIONAL)
헬름 차트 공홈

Helm Hook

쿠버네티스에서 helm 차트로 설치, 업그레이드,삭제 그리고 롤백과 같은 애플리케이션 생명주기의 개입할 수 있는 기능을 Hook을 통하여 제공

hook으로 다음과 같은 일들이 가능하다

명령어 설명
pre-install Executes after templates are rendered, but before any resources are created in Kubernetes
post-install Executes after all resources are loaded into Kubernetes
pre-delete Executes on a deletion request before any resources are deleted from Kubernetes
post-delete Executes on a deletion request after all of the release’s resources have been deleted
pre-upgrade Executes on an upgrade request after templates are rendered, but before any resources are updated
post-upgrade Executes on an upgrade after all resources have been upgraded
pre-rollback Executes on a rollback request after templates are rendered, but before any resources are rolled back
post-rollback Executes on a rollback request after all resources have been modified
test Executes when the Helm test subcommand is invoked (view test docs)

여러개의 Hook이 정의되었을때, 실행 순서를 정하거나 실행이 끝났을때 Hook 리소스를 지워야하는지 정책을 결정하는 기능이 있다.
헬름 훅 공홈

Hook weight

Hook weight를 통하여 Hook 들의 실행 순서를 정의한다.
음수/양수 모두 사용할 수 있으며 작은 수를 가지고 있는 Hook부터 실행된다.

annotations:
    "helm.sh/hook-weight": "10"

Hook delete policy

Hook이 실행된 후에, Hook 리소스들을 지울지 말지 지정하는 정책.
기본적으로 Hook이 실행된 후에 Hook 리소스는 삭제되지 않고 남아 있다.
Hook이 실행된 후에 Hook을 삭제 하고 싶으면 다음과 같이 지정한다.

annotations:
    "helm.sh/hook-delete-policy": hook-succeeded 
Hook delete policy 종류
  • hook-succeeded : Hook 이 성공적으로 실행이 되고 나면 삭제하도록 한다.
  • hook-failed : Hook 실행이 실패하였을 경우 삭제 한다.
  • before-hook-creation : Hook 을 실행하기 전에 기존의 Hook을 삭제하고 실행하도록 한다.

헬름 훅 공홈

Comments