오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-09 00:00
관리 메뉴

우노

[Helm] Helm, Helm Chart란? 본문

DevOps/Helm

[Helm] Helm, Helm Chart란?

운호(Noah) 2023. 5. 24. 19:02

들어가기 앞서

  • 쿠버네티스를 통해 애플리케이션을 배포하기 위해서는 많은 오브젝트가 필요합니다.
  • 대표적으로는 deployment, pod, configmap, secret, service, persistent volume, persistent volume claim 등이 있습니다.
  • 쿠버네티스는 이러한 오브젝트들을 정의하고 생성할때 yaml 파일 형식을 활용합니다.
  • 하지만, 각각의 애플리케이션마다 모든 오브젝트들의 yaml 파일을 관리하는 것은 매우 반복적이고 번거로운 작업입니다.
  • 따라서, 이를 편하게 하고자 만든 것이 helm입니다.

Helm, Helm Chart란?

  • Helm은 Kubernetes 클러스터에 애플리케이션을 쉽게 배포하고 관리하기 위해 개발된 Kubernetes 용 패키지 매니저입니다.
  • 이때, 패키지를 Helm Chart라고 부릅니다.
    • Helm Chart는 YAML 파일의 묶음으로 구성되고,
    • 애플리케이션의 구성, 종속성, 리소스 등을 포함합니다.
    • 애플레케이션에 따라 Helm Chart의 환경 변수는 달라질 수 있습니다.
  • Kubernetes의 helm은 ubuntu의 apt, Mac의 brew, Node의 npm과 유사한 의미로 이해하시면 됩니다.

Helm 사용 예제

  • Target Kubernetes Cluster 접근 설정

    • 사용하려는 Kubernetes Cluster에 접근할 수 있도록 환경 설정이 필요합니다.
    • 만약, Local에서 GKE로 접근해 작업한다면 Local에서 gcloud config 및 GKE 연결 작업이 필요합니다.
    • 연결 작업 이후, 아래 작업들은 Local에서 진행하시면 됩니다.
  • Helm 클라이언트 설치 (Mac)

      brew install helm
  • Helm Repository 추가

    • Helm Repository는 Helm 클라이언트가 Helm Chart를 가져올 수 있는 위치입니다.

      # helm repo add [내 Helm 저장소 이름] [Helm 저장소 주소]
      helm repo add apache-airflow https://airflow.apache.org
  • Helm Repository 추가 확인

      helm repo list
  • Helm 저장소에서 Helm Chart를 가져와 Helm Chart 기반 자원 생성

      # helm install [내 릴리즈 이름] [내 Helm 저장소 이름/Helm 차트 이름]
      helm install airflow apache-airflow/airflow
  • Helm Chart 기반 자원 제거

      # helm uninstall [내 릴리즈 이름]
      helm uninstall airflow

Helm Chart 수정 예제

  • Helm Chart를 통해 설치한 애플리케이션의 환경 변수를 수정하고 싶다면,

  • yaml 파일을 사용해 환경 변수를 수정할 수 있습니다.

  • 만약, 현재 설치된 애플리케이션이 해당 애플리케이션이 기본으로 제공하는 Helm Chart를 기반으로 설치된 상태라면,

  • 아래 명령어를 통해 현재 애플리케이션 설치에 적용된 모든 환경 변수를 yaml 파일로 변환할 수 있습니다.

      helm show values apache-airflow/airflow > my-values.yaml
  • 또는, 해당 애플리케이션의 공식 사이트로부터 Helm Chart를 확인할 수도 있습니다.

  • 일반적으로, 해당 애플리케이션의 전체 환경 변수에서 필요한 환경 변수만을 추출해 yaml 파일에 작성한 뒤, 해당 부분만 Override해서 배포합니다.

  • my-values.yaml 예제

      # Airflow 설치 설정
      airflow:
        # Airflow 웹 서버 설정
        web:
          replicas: 2
          service:
            type: LoadBalancer
            port: 8080
        # 스케줄러 설정
        scheduler:
          replicas: 1
        # 실행자 설정
        executor: Celery
    
      # 데이터베이스 설정
      postgresql:
        enabled: true
        postgresqlUsername: airflow
        postgresqlPassword: airflow
        postgresqlDatabase: airflow
    
      # Ingress 설정
      ingress:
        enabled: true
        annotations:
          kubernetes.io/ingress.class: nginx
        hosts:
          - host: airflow.example.com
            paths:
              - /
  • 위 my-values.yaml와 같이, 원하는 환경 변수만 수정한 뒤, upgrade를 통해 재적용 할 수 있습니다.

      helm upgrade airflow apache-airflow/airflow -f my-values.yaml
  • Helm Chart 기반 자원 제거

      helm uninstall airflow

참고

'DevOps > Helm' 카테고리의 다른 글

[Helm] Helm Chart를 사용해 GKE에 Airflow 설치하기  (0) 2023.07.21
[Helm] Helm Chart --set 사용 방법  (0) 2023.06.16
Comments