우노
[Helm] Helm, Helm Chart란? 본문
들어가기 앞서
- 쿠버네티스를 통해 애플리케이션을 배포하기 위해서는 많은 오브젝트가 필요합니다.
- 대표적으로는 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