애플리케이션을 실제 배포하기 위해서는 환경을 하나하나 구성해 배포해야합니다.
그러나 환경을 하나하나 구성하는 것은 매우 복잡하고 번거로운 일이며, 고정된 값이 아니기에 매니페스트로 작성해 그대로 사용할 수 없고 구성환경에 따라 여러 부분을 동적으로 변경해야합니다.
동적인 변경을 빠르게 적용할 수 있게 도와주는 툴이 헬름입니다.
헬름은 쿠버네티스에 패키지를 손쉽게 배포할 수 있도록 패키지를 관리하는 쿠버네티스 전용 패키지 매니저입니다.
패키지는 실행 파일과 실행 환경에 필요한 의존성 파일과 환경 정보들의 묶음입니다.
패키지 매니저는 설치에 필요한 의존성 파일들을 관리하고 간편하게 설치할 수 있도록 도와주는 것이 목적입니다.
헬름 차트를 사용하면 주소할당영역도 변경이 가능하고, 요구 조건별로 리소스를 편집하거나 변수를 넘겨서 처리하는 패키지를 만들 수 있습니다.
k8s cluster에서 애플리케이션을 구동하기 위해 필요한 모든 리소스를 포함시켜 생성함.(Deployment, Secret, Service)
다양한 요구 조건을 처리할 수 있는 패키지
각 사용자는 공개된 저장소에 등록된 차트를 이용해 애플리케이션을 원하는 형태로 쿠버네티스에 배포할 수 있습니다.
헬름의 기본 저장소는 아티팩트허브입니다. 여기서 설치할 패키지의 경로를 확인할 수 있습니다.
그렇다면 헬름은 그런거구나 대충은 느낌이 옵니다.
그럼 왜 패키지를 쉽게 관리할 수 있는 헬름을 쓰는게 좋다는 걸까?
앞서 배운것들을 먼저 되짚어보자.
이미지를 통해 우리가 원하는 환경을 컨테이너에 생성하고 컨테이너들을 도커로 관리하고 컨테이너 애플리케이션을 유연하고 빠르게 배포하고 운영하기 위해 쿠버네티스를 쓴다.
위 흐름을 파이프라인으로 작성하면 다음과 같다.
1. docker build (애클리케이션 소스 코드를 도커 컨테이너 이미지로 빌드)
2. docker push (빌드한 컨테이너 이미지를 쿠버네티스에서 사용할 수 있도록 레지스트리에 등록)
3. 레지스트리에 등록된 이미지를 기반으로 쿠버네티스 오브젝트 생성
4. 생성한 오브젝트를 외부에서 접속할 수 있도록 서비스 형태로 노출
이제 이 파이프라인을 자동화하여 CI/CD하면 통합 및 배포의 자동화가 가능하다.
여기서 CI부분을 젠킨스를 통해 소스 코드를 테스트 & 컨테이너 빌드,푸시 & 쿠버네티스 환경으로 배포하고 CD부분을 helm을 통해 서비스 배포에 필요한 환경 설정 등을 정의한 helm chart를 통해 빠르고 쉽게 배포할 수 있는 것이다.
brew로 설치하기
brew install helm
자주 쓰는 명령어는 단축어를 만들어 두었습니다.
vi ~/.zshrc
단축어 추가
여기까지 helm이란 무엇이고 설치하는 방법에 대하여 알아보았다.
다음에 helm을 실제 사용하는 방법을 알아보자.
보통 쿠버네티스를 사용하면 단일 클러스터 환경에서 운영하지 않는다.
즉, 여러 환경별로 클러스터를 구성하고 각 클러스터는 하나 이상의 노드를 갖는 형태이다.
쿠버네티스를 사용하면 하나의 애플리케이션 혹은 미들웨어로 디플로이먼트나 서비스, 컨피그맵 혹은 인그레스 등 여러 종류의 리소스를 조합하는 형태로 배포한다.
한 마디로 실제 환경에 배포하는데 신경써야할 부분이 많다.모든 환경마다 매니페스트를 작성하는 것은 복잡하다.. 따라서 배포 환경에 따라 달라지는 설정값만 정의해 둔 다음 이에 따라 배포하는 매커니즘이 헬름이다.