Kubernetes 클러스터에 배포된 애플리케이션이 얼마나 복잡하든, Kubernetes는 각 인프라를 관리할 수 있다. 다만 Kubernetes는 클러스터에 선언된 객체가 존재하고 동작하는 상태를 유지할 뿐, 클러스터 내에서 동작하고 있는 애플리케이션에는 관심이 없다. 즉, 부분 각각을 개별적으로 관리하고 처리한다.
Helm
Kubernetes 클러스터 내의 각 부분을 애플리케이션과 함께 고려하기 위해 개발되었으며, Kubernetes의 패키지 매니저라고 불린다.
Helm은 Kubernetes 객체를 큰 패키지의 부분으로 취급한다. 따라서 Kubernetes 관리자는 변경 작업 수행 시 어떤 패키지에 대해 어떤 개체를 어떻게 변경해야 하는지 지시해야 한다.
패키지 설치
Helm은 설치 마법사와 같이 애플리케이션의 모든 객체와 yaml 파일 등을 클러스터 내에 추가한다.
helm install <RELEASE_NAME> <PACKAGE>
여기서 release란, 쿠버네티스 클러스터에서 동작하는 패키지의 인스턴스에 해당한다. 하나의 패키지는 동일 클리스터 내에 중복으로 설치될 수 있으며, 설치할 때마다 새로운 release가 생성된다. 또한, Helm에서의 패키지 개념은 chart에 해당한다.
설치 시 원하는 구성을 위해 설정을 추가할 수 있으며 설정값은 values.yaml이라는 단일 파일로 관리된다.
릴리스 버전 관리
설치한 애플리케이션은 upgrade/rollback 명령어를 이용해 버전 관리를 할 수 있다.
helm upgrade -f <CONFIGG_FILE> <RELEASE_NAME> <PACKAGE>
# -f 옵션으로 저징한 파일을 반영하여 업그레이드
helm rollbak <RELEASE_NAME> <VERSION>
설치, 업그레이드, 롤백이 실행될 때마다 reslease 버전이 자동으로 1씩 증가한다.
릴리즈 삭제
helm uninstall <RELEASE_NAME>
참고 문서
https://helm.sh/ko/docs/intro/using_helm/
이 카테고리는 Kubernetes Certified Application Developer (CKAD) with Tests (Udemy) 강의 내용을 정리해둔 것인데, Helm Introduction 강의에서는 chart, release와 같은 개념 설명이 없었습니다.
간단하게 언급하긴 했으나, 공식 문서나 기타 블로그 내용을 추가적으로 확인하시기 바랍니다.