Amazon EKS에서 Helm 사용하기
Helm이란 무엇인가?

Helm은 Kubernetes 클러스터에서 애플리케이션을 설치하고 관리하는 데 사용되는 패키지 관리자입니다.
Helm은 Kubernetes 애플리케이션을 정의, 설치, 업그레이드 및 삭제하는 과정을 간소화합니다. Helm을 사용하면 복잡한 애플리케이션을 쉽게 배포하고 관리할 수 있습니다.
왜 Helm을 사용하는가?
- 간편한 배포: Helm 차트를 사용하면 애플리케이션의 모든 구성 요소를 하나의 패키지로 묶어 쉽게 배포할 수 있습니다. 수동으로 YAML을 작성하고 관리하는 번거로움을 줄여줍니다.
- 버전 관리: Helm은 애플리케이션의 버전을 관리할 수 있는 기능을 제공합니다. 특정 버전으로 롤백하거나 업그레이드할 수 있어 안정적인 운영이 가능합니다.
- 재사용성: Helm 차트는 재사용 가능한 패키지로, 여러 환경에서 동일한 애플리케이션을 배포할 수 있습니다. 이는 개발, 테스트, 프로덕션 환경 간의 일관성을 유지하는 데 도움이 됩니다.
- 커뮤니티 지원: Helm은 활발한 커뮤니티 지원을 받는 오픈 소스 프로젝트로, 다양한 공개 차트를 사용할 수 있습니다. 이를 통해 필요한 애플리케이션을 빠르게 배포할 수 있습니다.
Helm 차트 기본 구성 요소
- 차트 (Chart.yaml): 이름, 버전, 종속성 등 메타데이터를 정의합니다.
- 값 (values.yaml): 설정 값을 정의합니다. 이 파일을 통해 차트의 재사용성을 높이고, 변수 대체 값을 설정할 수 있습니다.
- 템플릿 디렉터리 (templates/): 리소스 매니페스트 파일의 템플릿을 포함하는 디렉터리입니다. 이 템플릿들은 values.yaml 파일의 값과 결합되어 실제 매니페스트 파일을 생성합니다.
- 차트 디렉터리 (charts/): Chart.yaml에서 정의한 모든 차트 종속성을 저장합니다. Helm 종속성 빌드 또는 업데이트를 통해 재구성할 수 있습니다.
Helm 차트 사용 방법
Helm CLI를 설치한 후에는 사전 정의된 리소스와 값이 있는 기존 차트를 사용하거나, 사용자 정의 차트를 생성하여 자체 애플리케이션 리소스를 패키징할 수 있습니다.
Amazon EKS에서 Helm 차트 사용하기
1. Helm 설치
운영 체제에 따라 Helm을 설치합니다.
- macOS: Homebrew를 사용하여 설치
brew install helm
- Windows: Chocolatey를 사용하여 설치
choco install kubernetes-helm
- Linux: 스크립트를 사용하여 설치
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
기존 차트 사용
- Helm 리포지토리 추가
helm repo add stable https://charts.helm.sh/stable
helm repo update

- 차트 설치
helm install my-release stable/nginx --namespace my-namespace
- 설치된 리소스 확인
kubectl get all --namespace my-namespace
사용자 정의 차트 생성
- Helm 차트 생성
helm create my-chart

- 차트 수정
Chart.yaml
: 애플리케이션 메타데이터 정의values.yaml
: 설정 값 정의templates/
: Kubernetes 리소스 템플릿 정의
- 차트 설치
helm install my-release ./my-chart --namespace my-namespace
네임스페이스 생성 및 설정
Helm 차트를 설치할 네임스페이스를 생성하고, 현재 컨텍스트를 해당 네임스페이스로 설정합니다.
kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace
Helm 차트 설치
Helm 차트를 사용하여 애플리케이션을 설치할 수 있습니다. 예를 들어, NGINX를 설치하려면 다음 명령을 사용합니다.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-nginx bitnami/nginx --namespace my-namespace

설치된 리소스 확인
설치된 리소스를 확인하려면 kubectl
명령어를 사용합니다.
kubectl get all --namespace my-namespac
이 명령어를 실행하면 다음과 같은 출력이 나타납니다
NAME READY STATUS RESTARTS AGE
pod/my-nginx-7bb7cd8db5-8k2z5 1/1 Running 0 5m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/my-nginx ClusterIP 10.100.200.100 <none> 80/TCP 5m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-nginx 1/1 1 1 5m
NAME DESIRED CURRENT READY AGE
replicaset.apps/my-nginx-7bb7cd8db5 1 1 1 5m
EKS에서 Helm 차트 활용하기
확장성: EKS는 AWS의 관리형 Kubernetes 서비스로, 클러스터의 확장성과 안정성을 보장합니다. Helm을 사용하면 이러한 EKS 클러스터에서 애플리케이션을 쉽게 배포하고 관리할 수 있습니다.
통합 관리: EKS와 Helm을 함께 사용하면 AWS의 다양한 서비스와 통합하여 애플리케이션을 관리할 수 있습니다. 예를 들어, Amazon RDS, S3, IAM 등과의 통합을 통해 더 강력한 애플리케이션 환경을 구축할 수 있습니다.
자동화: Helm 차트를 사용하면 애플리케이션 배포를 자동화할 수 있습니다. 이는 CI/CD 파이프라인과 통합하여 지속적인 배포를 구현하는 데 유용합니다.
결론
Helm은 Kubernetes 애플리케이션의 배포와 관리를 간소화하는 강력한 도구입니다.
Amazon EKS와 함께 사용하면 클러스터에서 애플리케이션을 효율적으로 관리할 수 있습니다. 이 가이드를 통해 Helm의 기본 개념과 사용 방법을 이해하고, 실제 환경에서 활용해보세요.