용어집

용어집 (Glossary)

Helm 아키텍처를 구성하는 요소들을 설명하는 용어 정리입니다.

출처: 문서

참고: 이 페이지는 아직 Helm 4 기준으로 갱신되지 않았으며, 일부 내용이 정확하지 않거나 Helm 4에 적용되지 않을 수 있습니다. Helm 4의 새로운 기능·개선·호환성 깨짐(breaking change)에 대한 자세한 내용은 Helm 4 Overview를 참고하세요.

본문

차트 (Chart)

Kubernetes 리소스 집합을 클러스터에 설치하기에 충분한 정보를 담고 있는 Helm 패키지입니다.

차트는 Chart.yaml 파일과 함께 템플릿, 기본 값(values.yaml), 의존성을 포함합니다.

차트는 잘 정의된 디렉터리 구조로 개발된 뒤, 차트 아카이브(chart archive) 라는 아카이브 형식으로 패키징됩니다.

차트 아카이브 (Chart Archive)

차트 아카이브 는 tar로 묶고 gzip으로 압축한(선택적으로 서명한) 차트입니다.

차트 의존성 (Chart Dependency, Subcharts)

차트는 다른 차트에 의존할 수 있습니다. 의존성은 두 가지 방식으로 발생합니다.

  • 소프트 의존성(soft dependency): 다른 차트가 클러스터에 설치되지 않으면 차트가 단순히 동작하지 않을 수 있습니다. Helm은 이 경우에 대한 도구를 제공하지 않으므로, 의존성을 별도로 관리해야 합니다.
  • 하드 의존성(hard dependency): 차트는 (charts/ 디렉터리 안에) 의존하는 다른 차트를 포함할 수 있습니다. 이 경우 차트를 설치하면 모든 의존성이 함께 설치됩니다. 이때 차트와 그 의존성은 하나의 모음으로 관리됩니다.

차트를 패키징(helm package)하면 모든 하드 의존성이 함께 묶입니다.

차트 버전 (Chart Version)

차트는 SemVer 2 규격에 따라 버전이 매겨집니다. 모든 차트에 버전 번호가 필요합니다.

Chart.yaml

차트에 대한 정보는 Chart.yaml 이라는 특별한 파일에 저장됩니다. 모든 차트는 이 파일을 가져야 합니다.

Helm (그리고 helm)

Helm은 Kubernetes의 패키지 매니저입니다. 운영 체제 패키지 매니저가 OS에 도구를 쉽게 설치하게 해주듯, Helm은 Kubernetes 클러스터에 애플리케이션과 리소스를 쉽게 설치하게 해줍니다.

Helm 이 프로젝트의 이름인 반면, 커맨드라인 클라이언트의 이름도 helm 입니다. 관례상 프로젝트를 가리킬 때는 Helm 으로 대문자화하고, 클라이언트를 가리킬 때는 helm 으로 소문자로 씁니다.

Helm 설정 파일 (Helm Configuration Files, XDG)

Helm은 설정 파일을 XDG 디렉터리에 저장합니다. 이 디렉터리는 helm 이 처음 실행될 때 만들어집니다.

Kube Config (KUBECONFIG)

Helm 클라이언트는 Kube config 파일 형식의 파일들을 사용해 Kubernetes 클러스터에 대해 학습합니다. 기본적으로 Helm은 kubectl 이 만드는 위치($HOME/.kube/config)에서 이 파일을 찾으려고 시도합니다.

린트 (Lint, Linting)

차트를 린트(lint) 한다는 것은 차트가 Helm 차트 표준의 관례와 요구사항을 따르는지 검증하는 것입니다. Helm은 이를 위한 도구를 제공하며, 대표적으로 helm lint 명령이 있습니다.

프로비넌스 (Provenance, Provenance file)

Helm 차트에는 차트가 어디서 왔고 무엇을 담고 있는지에 대한 정보를 제공하는 프로비넌스 파일 이 함께할 수 있습니다.

프로비넌스 파일은 Helm 보안 이야기의 한 부분입니다. 프로비넌스에는 차트 아카이브 파일의 암호화 해시, Chart.yaml 데이터, 서명 블록(OpenPGP "clearsign" 블록)이 포함됩니다. 키체인(keychain)과 함께 사용하면 차트 사용자는 다음을 할 수 있습니다.

  • 차트가 신뢰할 수 있는 당사자에 의해 서명되었는지 검증
  • 차트 파일이 변조되지 않았는지 검증
  • 차트 메타데이터(Chart.yaml) 내용을 검증
  • 차트를 프로비넌스 데이터와 빠르게 대조

프로비넌스 파일은 .prov 확장자를 가지며, 차트 저장소 서버나 다른 HTTP 서버에서 제공될 수 있습니다.

릴리스 (Release)

차트가 설치되면 Helm 라이브러리는 그 설치를 추적하기 위해 릴리스 를 생성합니다.

하나의 차트를 같은 클러스터에 여러 번 설치해 서로 다른 여러 릴리스를 만들 수 있습니다. 예를 들어 helm install 을 릴리스 이름을 다르게 하여 세 번 실행하면 PostgreSQL 데이터베이스를 세 개 설치할 수 있습니다.

릴리스 번호 (Release Number, Release Version)

하나의 릴리스는 여러 번 갱신될 수 있습니다. 변경되는 릴리스를 추적하기 위해 순차 카운터가 사용됩니다. 첫 번째 helm install 이후 릴리스는 릴리스 번호 1을 갖습니다. 릴리스가 업그레이드되거나 롤백될 때마다 릴리스 번호는 증가합니다.

롤백 (Rollback)

릴리스는 더 새로운 차트나 구성으로 업그레이드될 수 있습니다. 하지만 릴리스 이력이 저장되므로, 릴리스를 이전 릴리스 번호로 롤백 할 수도 있습니다. 이는 helm rollback 명령으로 수행합니다.

중요하게도, 롤백된 릴리스는 새 릴리스 번호를 받게 됩니다.

위 표는 install, upgrade, rollback 과정에서 릴리스 번호가 어떻게 증가하는지 보여줍니다.

Helm 라이브러리 (Helm Library, 또는 SDK)

Helm 라이브러리(또는 SDK)는 Kubernetes API 서버와 직접 상호작용하여 Kubernetes 리소스를 설치·업그레이드·조회·제거하는 Go 코드를 말합니다. CLI 대신 Helm을 클라이언트 라이브러리로 사용하기 위해 프로젝트에 import할 수 있습니다.

저장소 (Repository, Repo, Chart Repository)

Helm 차트는 차트 저장소 (repositories, 또는 그냥 repos) 라고 하는 전용 HTTP 서버에 저장될 수 있습니다.

차트 저장소 서버는 차트 묶음을 설명하고 각 차트를 어디서 다운로드할 수 있는지 정보를 제공하는 index.yaml 파일을 제공할 수 있는 단순한 HTTP 서버입니다. (많은 차트 저장소가 차트와 index.yaml 파일을 함께 제공합니다.)

Helm 클라이언트는 0개 이상의 차트 저장소를 가리킬 수 있습니다. 기본적으로 Helm 클라이언트에는 차트 저장소가 구성되어 있지 않습니다. 차트 저장소는 helm repo add 명령으로 언제든 추가할 수 있습니다.

차트 레지스트리 (Chart Registry, OCI 기반 레지스트리)

Helm 차트 레지스트리는 Helm 차트 패키지를 호스팅하고 공유하는 데 사용되는 OCI 기반 저장·배포 시스템입니다. 자세한 내용은 Helm의 레지스트리 문서를 참고하세요.

값 (Values, Values Files, values.yaml)

값(values)은 템플릿 기본값을 사용자 정보로 덮어쓸 수 있는 방법을 제공합니다.

Helm 차트는 "파라미터화(parameterized)" 되어 있습니다. 즉, 차트 개발자가 설치 시점에 덮어쓸 수 있는 구성을 노출할 수 있습니다. 예를 들어, 차트가 서비스의 사용자 이름을 설정할 수 있는 username 필드를 노출할 수 있습니다.

이렇게 노출된 변수를 Helm 용어로 값(values) 이라고 합니다.

값은 helm installhelm upgrade 작업 중에 직접 전달하거나 values.yaml 파일을 사용해 설정할 수 있습니다.

더 알아보기 (Learn more)