DevOps K8S(11) – 한 땀 한 땀 번거롭게 배포하지 말고 Heml Chart – Helm Chart 와 Helm template

안녕하세요, 오늘은 SRE실 안은경 님이 작성해 주신 ‘Helm Chart 와 Helm template’에 대해 알아보겠습니다.

궁금한 부분이 있으시면 댓글을 달아주세요:)

Helm chart

  • 쿠버네티스의 패키지 관리자입니다. 
  • Helm은 오픈소스 소프트웨어로, 많은 chart(패키지와 유사)를 보유하고 있습니다.
  • 쿠버네티스에 최적화된 설정으로 사용할 수 있다는 장점이 있습니다.
Helm 저장소 추가
  • helm에는 많은 chart가 제공되고 있습니다. 
  • helm chart는 헬름 저장소에서 제공됩니다. 
  • helm chart는 Github에서 관리되고 있으며, 헬름 저장소에서 제공됩니다.
  • Stable 저장소 추가
  • Bitnami가 제공하는 helm 저장소 추가
  • 등록된 helm 저장소 확인
  • helm 저장소 변경
Helm 차트 검색
  • 저장소에서 모든 helm chart 검색
  • 저장소에서 특정 helm chart 검색
  • helm hub에서 chart 검색
Helm 차트 설치
  • 파라미터 확인
  • README 표시
  • 설치 명령어에 파라미터 지정하여 설치
  • value 파일 생성하여 설치
  • 생성한 value 파일을 사용하도록 –values 옵션 지정하여 설치
설치한 Helm chart 테스트
  • 설치한 chart 테스트 

Helm Template

  • helm을 사용하여 Template과 설정 값으로 manifest를 생성합니다. 
  • 생성된 manifest를 출력 후, kubectl 명령어를 통해 apply 하는 방식입니다.
Helm Template으로 Manifest 파일 생성
  • Template 파일과 설정값 파일을 통해 manifest를 생성합니다. 
  • Chart를 신규로 생성할 경우, Deployment, Service, Ingress, ServiceAccount, HPA 리소스 Template이 자동으로 생성됩니다.
  • Template 예시
  • values.yaml 파일 예시
  • 생성된 manifest 파일 예시
  • values 파일로 template에서 manifest 생성
Helm Chart 릴리스 확인 및 삭제
  • Helm chart 설치 후 릴리스 확인
  • Helm chart 설치 후 릴리스 지정하여 삭제

Custom Chart 

  • 신규 커스텀 차트 양식 생성
  • 신규 커스텀 차트 양식 생성
  • 신규 커스텀 차트 양식 생성
    • templates/*.yaml : 설치하는 manifest 템플릿
    • templates/tests/*.yaml : 설치한 차트가 정상적으로 동작하는지 테스트하는 manifest 템플릿
    • values.yaml : 사용자가 나중에 덮어 쓸 수 있는 기본값 정의 리소스 제한, 사용 이미지, 포트 번호 등을 제공
    • templates/NOTES.txt : helm install 시 출력되는 메시지
    • requirements.yaml : 의존하는 차트와 해당 버전 기록         
    • templates/_helpers.tpl : 릴리스 이름으로 변수를 정의하는 등의 헬퍼 변수 정의        
    • Chart.yaml : 차트 메타데이터 
  • 자동 생성된 서비스 템플릿
    • template에 추가되는 값은 values.yaml로 지정됨
  • 생성한 helm chart 설치

감사합니다.

Written by 안 은경 / Eunkyung An

Cloud Engineer