IT/DevOps

[DevOps] Helm Chart 란?

kimdragon 2024. 11. 18. 14:07
반응형

Intro

Helm Chart는 쿠버네티스(Kubernetes) 애플리케이션을 관리하고 배포하는 데 사용하는 패키지 관리 도구입니다. 쉽게 말해, 쿠버네티스의 애플리케이션 설치 및 설정을 간편하게 해주는 "설치 스크립트" 같은 것이에요.

Helm Chart란?

  • Helm: 쿠버네티스용 패키지 관리 도구(리눅스의 aptyum과 비슷).
  • Chart: 쿠버네티스 애플리케이션을 정의하고 구성한 패키지 템플릿.
    • Chart는 애플리케이션 배포에 필요한 YAML 파일(리소스 정의)을 묶어놓은 패키지예요.

Helm Chart의 역할

  • 자동화된 애플리케이션 배포:
    • Helm Chart를 이용하면 복잡한 쿠버네티스 리소스(Deployment, Service, ConfigMap 등)를 한 번에 배포할 수 있어요.
  • 애플리케이션 설정 관리:
    • 설정 파일에 변수(Values)를 적용해 환경마다 다른 설정을 쉽게 적용할 수 있어요(예: 개발, 테스트, 운영 환경).
  • 버전 관리:
    • 애플리케이션 버전을 쉽게 관리하고, 이전 버전으로 롤백할 수 있어요.

Helm Chart의 주요 구성 요소

Helm Chart는 여러 파일로 구성된 디렉토리 구조를 가지고 있어요:

  1. Chart.yaml

    • Chart의 메타데이터(이름, 버전, 설명 등)를 담고 있는 파일.

    • 예:

      
        apiVersion: v2
        name: my-application
        description: A Helm chart for my application
        version: 1.0.0
      
  2. values.yaml

    • Chart에서 사용할 기본 설정값(변수).

    • 사용자가 환경에 따라 설정값을 커스터마이징 가능.

    • 예:

      
        replicaCount: 3
        image:
          repository: my-app
          tag: latest
      
  3. templates/

    • 쿠버네티스 리소스 정의 파일(Deployment, Service 등)이 들어 있는 디렉토리.

    • 템플릿 파일은 Go 템플릿 문법을 사용해 변수와 조건문을 추가할 수 있어요.

    • 예:

      
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: {{ .Release.Name }}-deployment
        spec:
          replicas: {{ .Values.replicaCount }}
          template:
            spec:
              containers:
                - name: my-app
                  image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
      
  4. charts/

    • 의존하는 다른 Chart들이 들어 있는 디렉토리.
  5. README.md (선택 사항)

    • Chart에 대한 설명과 사용 방법을 적어놓은 문서.

Helm의 주요 명령어

  1. Chart 검색 및 설치
    • 검색: helm search hub <차트 이름>
    • 설치: helm install <릴리스 이름> <차트 이름>
  2. 배포된 릴리스 확인
    • helm list
  3. 설정값 확인 및 수정
    • 기본 설정 보기: helm show values <차트 이름>
    • 설정값 수정: helm upgrade <릴리스 이름> <차트 이름> --set <key>=<value>
  4. 업데이트 및 롤백
    • 업그레이드: helm upgrade <릴리스 이름> <차트 이름>
    • 롤백: helm rollback <릴리스 이름> <이전 버전 번호>
  5. 삭제
    • helm uninstall <릴리스 이름>

Helm Chart의 장점

  1. 간편한 배포:
    • 복잡한 쿠버네티스 리소스를 하나의 Chart로 묶어 한 번에 배포 가능.
  2. 유연한 설정 관리:
    • values.yaml 파일로 환경에 따라 설정값을 쉽게 변경할 수 있어요.
  3. 버전 관리 및 롤백:
    • 배포 기록을 남기고, 필요할 때 이전 버전으로 간단히 롤백 가능.
  4. 확장성:
    • 다른 Chart를 의존성으로 추가해 복잡한 애플리케이션 구성도 가능.

Helm Chart의 사용 사례

  1. 복잡한 애플리케이션 배포:
    • 예: 웹 서버 + 데이터베이스 + 캐시 서버를 하나의 Chart로 정의하고 한 번에 배포.
  2. 다중 환경 관리:
    • 개발, 스테이징, 운영 환경에 따라 다른 설정값을 쉽게 적용 가능.
  3. CI/CD 통합:
    • Helm을 CI/CD 파이프라인에 통합해 자동화된 애플리케이션 배포.
  4. 공유 가능한 배포 템플릿:
    • Chart를 만들어 팀원이나 커뮤니티와 공유 가능.

Helm Chart를 비유하자면?

  • Helm Chart는 쿠버네티스용 설치 마법사 같아요.
    • 애플리케이션 배포에 필요한 설정과 리소스를 미리 정의해두고, 사용자는 몇 가지 옵션만 조정하면 쉽게 배포할 수 있죠.

정리

  • Helm Chart는 쿠버네티스 애플리케이션 배포를 간소화하고, 설정을 관리하며, 배포 프로세스를 자동화하는 도구입니다.
  • 복잡한 애플리케이션을 효율적으로 관리하려면 Helm Chart를 사용하는 것이 필수적이에요! 😊
반응형