Kubernetes는 컨테이너 오케스트레이션 플랫폼으로, 애플리케이션을 배포, 운영 및 관리하기 위해 널리 사용됩니다. 그러나 Kubernetes의 리소스 구성을 다루는 것은 때때로 복잡할 수 있습니다. Helm은 이러한 복잡성을 줄여주는 도구로, Kubernetes 애플리케이션을 패키징하고 배포하는 데 유용합니다. 이번 글에서는 Helm을 활용하여 Kubernetes 애플리케이션을 패키징하고 배포하는 과정을 단계별로 설명하겠습니다.

Helm 설치

먼저, Helm을 설치해야 합니다. Helm은 Go 언어로 작성된 CLI 도구로, 패키지 매니저로서의 역할을 수행합니다. 아래는 Helm을 설치하는 방법입니다.

macOS에서 Helm 설치

brew install helm

Linux에서 Helm 설치

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

Windows에서 Helm 설치

Windows에서는 Chocolatey를 사용할 수 있습니다.

choco install kubernetes-helm

설치가 완료되면 Helm 버전을 확인하여 정상적으로 설치되었는지 확인합니다.

helm version

Helm 차트 생성

Helm을 통해 Kubernetes 애플리케이션을 패키징하려면 Helm 차트를 생성해야 합니다. Helm 차트는 Kubernetes 리소스의 모든 구성 정보를 포함하는 묶음입니다. 아래 명령어를 통해 새로운 Helm 차트를 생성할 수 있습니다.

helm create my-chart

위 명령어를 실행하면 my-chart라는 디렉토리가 생성되고, 그 안에 기본적인 디렉토리 구조와 샘플 파일들이 포함됩니다.

차트 구조 이해하기

생성된 차트의 기본 구조는 다음과 같습니다.

my-chart/
  Chart.yaml
  values.yaml
  charts/
  templates/
  • Chart.yaml: 차트에 대한 메타데이터를 포함합니다.
  • values.yaml: 사용자 정의 값 파일로, 디플로이먼트 및 서비스 설정을 포함합니다.
  • charts/: 다른 차트를 종속성으로 포함할 수 있는 디렉토리입니다.
  • templates/: Kubernetes 매니페스트 템플릿을 저장하는 디렉토리입니다.

차트 템플릿 수정

이제 차트 템플릿을 수정해 보겠습니다. templates/deployment.yaml 파일을 열어 기본 디플로이먼트 매니페스트를 수정합니다. 아래는 예시입니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
  labels:
    app: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}
    spec:
      containers:
      - name: {{ .Release.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: {{ .Values.service.port }}

values.yaml 수정

이제 values.yaml 파일을 수정하여 배포할 애플리케이션의 기본 값을 설정합니다.

replicaCount: 1

image:
  repository: my-docker-repo/my-app
  tag: latest

service:
  port: 80

차트 배포

이제 Helm 차트를 Kubernetes 클러스터에 배포해 보겠습니다. Helm은 차트를 설치하고 관리하는 데 유용한 명령어들을 제공합니다. 아래 명령어로 차트를 설치할 수 있습니다.

helm install my-release ./my-chart

이 명령어는 my-release라는 이름으로 Helm 차트를 설치합니다. 설치가 완료되면 아래 명령어로 설치된 리소스를 확인할 수 있습니다.

kubectl get all

차트 업데이트

애플리케이션을 업데이트하려면 Helm 차트를 수정하고 아래 명령어로 업데이트합니다.

helm upgrade my-release ./my-chart

차트 삭제

더 이상 필요하지 않은 경우, Helm 차트를 삭제할 수 있습니다.

helm uninstall my-release

마무리

Helm은 Kubernetes 애플리케이션을 패키징하고 배포하는 데 실용적인 도구입니다. 이번 튜토리얼을 통해 Helm의 기본적인 사용법을 익혔으며, Helm을 사용하여 쉽게 Kubernetes 애플리케이션을 관리할 수 있게 되었습니다. 실무에서는 이 기본적인 사용법을 바탕으로 더 복잡한 설정을 적용해 보실 수 있습니다. Helm을 활용해 효율적인 DevOps 환경을 구축하시기 바랍니다.