IT/DevOps
[DevOps] Helm Chart 란?
kimdragon
2024. 11. 18. 14:07
반응형
Intro
Helm Chart는 쿠버네티스(Kubernetes) 애플리케이션을 관리하고 배포하는 데 사용하는 패키지 관리 도구입니다. 쉽게 말해, 쿠버네티스의 애플리케이션 설치 및 설정을 간편하게 해주는 "설치 스크립트" 같은 것이에요.
Helm Chart란?
- Helm: 쿠버네티스용 패키지 관리 도구(리눅스의
apt
나yum
과 비슷). - Chart: 쿠버네티스 애플리케이션을 정의하고 구성한 패키지 템플릿.
- Chart는 애플리케이션 배포에 필요한 YAML 파일(리소스 정의)을 묶어놓은 패키지예요.
Helm Chart의 역할
- 자동화된 애플리케이션 배포:
- Helm Chart를 이용하면 복잡한 쿠버네티스 리소스(Deployment, Service, ConfigMap 등)를 한 번에 배포할 수 있어요.
- 애플리케이션 설정 관리:
- 설정 파일에 변수(Values)를 적용해 환경마다 다른 설정을 쉽게 적용할 수 있어요(예: 개발, 테스트, 운영 환경).
- 버전 관리:
- 애플리케이션 버전을 쉽게 관리하고, 이전 버전으로 롤백할 수 있어요.
Helm Chart의 주요 구성 요소
Helm Chart는 여러 파일로 구성된 디렉토리 구조를 가지고 있어요:
Chart.yaml
Chart의 메타데이터(이름, 버전, 설명 등)를 담고 있는 파일.
예:
apiVersion: v2 name: my-application description: A Helm chart for my application version: 1.0.0
values.yaml
Chart에서 사용할 기본 설정값(변수).
사용자가 환경에 따라 설정값을 커스터마이징 가능.
예:
replicaCount: 3 image: repository: my-app tag: latest
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 }}"
charts/
- 의존하는 다른 Chart들이 들어 있는 디렉토리.
README.md (선택 사항)
- Chart에 대한 설명과 사용 방법을 적어놓은 문서.
Helm의 주요 명령어
- Chart 검색 및 설치
- 검색:
helm search hub <차트 이름>
- 설치:
helm install <릴리스 이름> <차트 이름>
- 검색:
- 배포된 릴리스 확인
helm list
- 설정값 확인 및 수정
- 기본 설정 보기:
helm show values <차트 이름>
- 설정값 수정:
helm upgrade <릴리스 이름> <차트 이름> --set <key>=<value>
- 기본 설정 보기:
- 업데이트 및 롤백
- 업그레이드:
helm upgrade <릴리스 이름> <차트 이름>
- 롤백:
helm rollback <릴리스 이름> <이전 버전 번호>
- 업그레이드:
- 삭제
helm uninstall <릴리스 이름>
Helm Chart의 장점
- 간편한 배포:
- 복잡한 쿠버네티스 리소스를 하나의 Chart로 묶어 한 번에 배포 가능.
- 유연한 설정 관리:
values.yaml
파일로 환경에 따라 설정값을 쉽게 변경할 수 있어요.
- 버전 관리 및 롤백:
- 배포 기록을 남기고, 필요할 때 이전 버전으로 간단히 롤백 가능.
- 확장성:
- 다른 Chart를 의존성으로 추가해 복잡한 애플리케이션 구성도 가능.
Helm Chart의 사용 사례
- 복잡한 애플리케이션 배포:
- 예: 웹 서버 + 데이터베이스 + 캐시 서버를 하나의 Chart로 정의하고 한 번에 배포.
- 다중 환경 관리:
- 개발, 스테이징, 운영 환경에 따라 다른 설정값을 쉽게 적용 가능.
- CI/CD 통합:
- Helm을 CI/CD 파이프라인에 통합해 자동화된 애플리케이션 배포.
- 공유 가능한 배포 템플릿:
- Chart를 만들어 팀원이나 커뮤니티와 공유 가능.
Helm Chart를 비유하자면?
- Helm Chart는 쿠버네티스용 설치 마법사 같아요.
- 애플리케이션 배포에 필요한 설정과 리소스를 미리 정의해두고, 사용자는 몇 가지 옵션만 조정하면 쉽게 배포할 수 있죠.
정리
- Helm Chart는 쿠버네티스 애플리케이션 배포를 간소화하고, 설정을 관리하며, 배포 프로세스를 자동화하는 도구입니다.
- 복잡한 애플리케이션을 효율적으로 관리하려면 Helm Chart를 사용하는 것이 필수적이에요! 😊
반응형