헬름 아키텍처

쿠버네티스 헬름 아키텍처

이 문서에서는 헬름 아키텍처를 개괄적으로 설명한다.

헬름의 목적

헬름은 _차트_라고 하는 쿠버네티스 패키지를 관리하는 도구이다. 헬름으로 다음과 같은 것들을 할 수 있다.

  • 스크래치(scratch)부터 새로운 차트 생성
  • 차트 아카이브(tgz) 파일로 차트 패키징
  • 차트가 저장되는 곳인 차트 리포지터리와 상호작용
  • 쿠버네티스 클러스터에 차트 인스톨 및 언인스톨
  • 헬름으로 설치된 차트들의 릴리스 주기 관리

헬름에는 다음과 같은 중요한 3가지 개념이 있다.

  1. _차트_는 쿠버네티스 애플리케이션의 인스턴스를 생성하는 데에 필요한 정보의 꾸러미이다.
  2. _설정_은 릴리스 가능한 객체를 생성하기 위해 패키징된 차트로 병합될 수 있는 설정 정보를 가진다.
  3. _릴리스_는 _차트_의 구동중 인스턴스이며, 특정 _설정_이 결합되어 있다.

컴포넌트

헬름은 실행프로그램이며, 다음 2가지 부분으로 나누어 구현되었다.

헬름 클라이언트는 엔드유저용 명령줄 클라이언트이다. 이 클라이언트는 다음과 같은 것들을 관장한다.

  • 로컬 차트 개발
  • 리포지터리 관리
  • 릴리스 관리
  • 헬름 라이브러리와 인터페이스 제공
    • 설치할 차트를 전달
    • 기존 릴리스에 대한 업그레이드 또는 언인스톨 요청

헬름 라이브러리는 모든 헬름 동작 수행에 대한 로직을 제공한다. 쿠버네티스 API 서버에 대한 인터페이스 역할을 하며 다음의 기능들을 제공한다.

  • 릴리스를 빌드하기 위해 차트와 설정 결합
  • 쿠버네티스에 차트 설치, 후속 릴리스 객체 제공
  • 쿠버네티스와 상호작용하여 업그레이드 및 언인스톨 수행

단독형 헬름 라이브러리에는 헬름 로직이 캡슐화되어 있어 다른 클라이언트에서 효과적으로 활용할 수 있다.

구현

헬름 클라이언트와 라이브러리는 Go 프로그래밍 언어로 작성되었다.

라이브러리는 쿠버네티스와 소통하기 위해 쿠버네티스 클라이언트 라이브러리를 사용한다. 현재, 라이브러리는 REST+JSON을 사용하며, 쿠버네티스 내부에 위치한 시크릿(secret) 안에 정보를 저장한다. 따라서 별도의 데이터베이스가 필요하지 않다.

설명 파일은 가능하면 YAML로 작성한다.