Helm 아키텍처(Helm Architecture)

Helm 아키텍처(Helm Architecture)

이 문서는 Helm 아키텍처를 높은 수준에서 설명해요. 차트·컨피그·릴리스의 관계와 Helm 클라이언트·라이브러리라는 두 부분을 이해하면 Helm이 어떻게 동작하는지 잡힐 거예요.

출처: https://helm.sh/docs/topics/architecture/

Helm의 목적

  • 차트(chart) 는 Kubernetes 애플리케이션의 인스턴스를 만드는 데 필요한 정보의 묶음이에요.
  • 컨피그(config) 는 패키징된 차트에 병합되어 릴리스 가능한 객체를 만들 수 있는 구성 정보예요.
  • 릴리스(release) 는 특정 컨피그와 결합된, 실행 중인 차트의 인스턴스예요.

구성 요소

Helm은 두 개의 뚜렷한 부분으로 구현된 실행 가능한 프로그램이에요.

Helm 클라이언트는 최종 사용자를 위한 명령줄 클라이언트예요. 다음을 담당해요.

  • 로컬 차트 개발
  • 리포지토리 관리
  • 릴리스 관리
  • Helm 라이브러리와 인터페이스 (설치할 차트 전송, 기존 릴리스의 업그레이드·언인스톨 요청)

Helm 라이브러리는 모든 Helm 작업을 실행하는 로직을 제공해요. Kubernetes API 서버와 인터페이스하며 다음 능력을 제공해요.

  • 차트와 구성을 결합해 릴리스 구축
  • 차트를 Kubernetes에 설치하고 결과 릴리스 객체 제공
  • Kubernetes와 상호작용하여 릴리스 업그레이드·언인스톨

독립적인 Helm 라이브러리는 Helm 로직을 캡슐화해서 서로 다른 클라이언트가 활용할 수 있게 해줘요.

구현

Helm 클라이언트와 라이브러리는 Go 프로그래밍 언어로 작성됐어요. 라이브러리는 Kubernetes 클라이언트 라이브러리로 Kubernetes와 통신하는데, 현재는 REST+JSON을 쓰고, 정보를 Kubernetes 안의 Secrets에 저장해요. 자체 데이터베이스가 필요 없어요. 구성 파일은 가능하면 YAML로 작성돼요.

더 알아보기