EKS에서 Helm 사용하기

Amazon EKS에서 Helm 사용하기

Helm이란 무엇인가?

Helm은 Kubernetes 클러스터에서 애플리케이션을 설치하고 관리하는 데 사용되는 패키지 관리자입니다.

Helm은 Kubernetes 애플리케이션을 정의, 설치, 업그레이드 및 삭제하는 과정을 간소화합니다. Helm을 사용하면 복잡한 애플리케이션을 쉽게 배포하고 관리할 수 있습니다.

왜 Helm을 사용하는가?

  1. 간편한 배포: Helm 차트를 사용하면 애플리케이션의 모든 구성 요소를 하나의 패키지로 묶어 쉽게 배포할 수 있습니다. 수동으로 YAML을 작성하고 관리하는 번거로움을 줄여줍니다.
  2. 버전 관리: Helm은 애플리케이션의 버전을 관리할 수 있는 기능을 제공합니다. 특정 버전으로 롤백하거나 업그레이드할 수 있어 안정적인 운영이 가능합니다.
  3. 재사용성: Helm 차트는 재사용 가능한 패키지로, 여러 환경에서 동일한 애플리케이션을 배포할 수 있습니다. 이는 개발, 테스트, 프로덕션 환경 간의 일관성을 유지하는 데 도움이 됩니다.
  4. 커뮤니티 지원: 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의 기본 개념과 사용 방법을 이해하고, 실제 환경에서 활용해보세요.