Helm 개요

Helm 개요

1️⃣ Helm 개요


1. Helm이란?

Helm은 Kubernetes 애플리케이션을 관리하기 위한 패키지 매니저입니다. Helm을 사용하면 복잡한 Kubernetes 리소스를 쉽게 정의하고, 배포 및 관리할 수 있습니다.

2. Kubernetes에서 Helm이 필요한 이유

  • YAML 매니페스트 관리의 복잡성 감소
  • 애플리케이션 배포 및 업데이트 자동화
  • 재사용 가능한 구성 제공
  • 여러 환경(개발, 테스트, 프로덕션)에서 일관된 배포 보장

3. Helm과 YAML 기반의 쿠버네티스 매니페스트 비교

Helm 없이 직접 Kubernetes 매니페스트를 작성하면 반복적이고 긴 YAML 파일을 관리해야 합니다. Helm은 이러한 매니페스트를 템플릿화하여 유지보수와 재사용성을 높여 줍니다.

# 기존 Kubernetes Deployment 매니페스트 예제
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: my-app
          image: my-app:1.0.0

Helm을 사용하면 다음과 같이 변수화할 수 있습니다.

# Helm 템플릿 예제
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: my-app
          image: {{ .Values.image.repository }}:{{ .Values.image.tag }}

4. Helm의 주요 기능 및 장점

  • 패키징 및 배포 자동화: Helm Chart를 이용하여 손쉽게 애플리케이션을 배포할 수 있습니다.
  • 버전 관리: 이전 버전으로 롤백이 가능하여 안정적인 운영을 지원합니다.
  • 템플릿화된 구성 관리: YAML 템플릿을 활용하여 다양한 환경에 맞게 설정을 변경할 수 있습니다.
  • 레포지토리 기반 배포: 중앙 레포지토리(예: ArtifactHub)를 통해 Helm Chart를 공유하고 재사용할 수 있습니다.

2️⃣ Helm 기본 개념

1. Chart(차트): Helm의 패키징 단위

Helm의 Chart는 Kubernetes 애플리케이션을 배포하는 패키지입니다. Chart는 다음과 같은 구조를 가집니다.

mychart/
  Chart.yaml    # 차트 메타데이터
  values.yaml   # 기본 설정 값
  templates/    # 쿠버네티스 리소스 템플릿
  charts/       # 종속 차트

2. Release(릴리스): Helm을 통해 배포된 애플리케이션

Release는 Helm Chart를 이용해 Kubernetes 클러스터에 배포된 인스턴스를 의미합니다. 동일한 Chart를 여러 번 배포할 수 있으며, 각각의 배포는 별도의 Release로 관리됩니다.

helm install my-release mychart/

3. Repository(레포지토리): Helm 차트를 저장하는 공간

Helm Chart는 로컬이나 원격 저장소(레포지토리)에 저장됩니다.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

4. Values(값): 사용자 정의 설정을 적용하는 방법

values.yaml을 사용하면 기본값을 설정하고 사용자 정의 값을 적용할 수 있습니다.

replicaCount: 2
image:
  repository: nginx
  tag: latest
helm install my-release mychart/ -f custom-values.yaml

5. Templating(템플릿): Helm이 동적으로 쿠버네티스 매니페스트를 생성하는 방식

Helm의 템플릿 엔진을 사용하면 동적인 매니페스트 생성을 할 수 있습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}

3️⃣ Helm 설치 및 기본 사용법

1. Helm 설치 (Linux, macOS, Windows)

Helm을 설치하는 방법은 운영 체제에 따라 다릅니다.

Linux/macOS

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Windows (choco 사용)

choco install kubernetes-helm

2. Helm 명령어 기본 사용법

Helm에서 자주 사용하는 명령어를 정리했습니다.

3. helm repo add (레포지토리 추가)

helm repo add bitnami https://charts.bitnami.com/bitnami

4. helm search repo (차트 검색)

helm search repo nginx

5. helm install (차트 설치)

helm install my-release bitnami/nginx

6. helm list (설치된 차트 목록 확인)

helm list

7. helm upgrade (업데이트)

helm upgrade my-release bitnami/nginx

8. helm rollback (롤백)

helm rollback my-release 1

9. helm uninstall (삭제)

helm uninstall my-release

10. helm show values (차트 기본값 조회)

helm show values bitnami/nginx
RSS Feed
마지막 수정일자