---
title: "헬름 아키텍처"
description: "헬름 아키텍처를 개괄적으로 설명한다."
weight: 8
---

# 쿠버네티스 헬름 아키텍처

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

## 헬름의 목적

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

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

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

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

## 컴포넌트

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

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

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

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

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

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

## 구현

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

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

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