본문 바로가기

AWS/EKS

[EKS] EKS에 Helm 설치 및 사용

반응형

Helm 이란?
- kubernetes용 Helm 패키지 관리자는 kubernetes 클러스터에서 애플리케이션을 설치하고 관리
- 쉽게 표현하자면, apt, yum, pip 툴과 비슷하게 플랫폼의 패키지를 관리한다. Helm을 이용하여 원하는 소프트웨어(패키지)를 쿠버네티스에 손쉽게 설치할 수 있다. Helm 패키지 또한 YAML 형식으로 구성되어 있으며, 이것을 chart라고 한다.
https://docs.helm.sh/

 

Helm

Helm - The Kubernetes Package Manager.

helm.sh

Helm의 특징
- 복잡성 관리
- 쉬운 업데이트
- 간단한 공유
- 롤백

 

Helm의 주요 구성 요소

https://developer.ibm.com/blogs/kubernetes-helm-3/

1. Chart

- Helm의 리소스 패키지로 k8s cluster에서 애플리케이션이 기동 되기 위해 필요한 모든 리소스들이 포함
- Helm 차트 검색하는 사이트 (https://artifacthub.io/packages/search?kind=0)

2. Repository(저장소)
- 차트 저장소로 차트를 모아두고 공유하는 장소

3. Helm Hub
- Helm의 원격 리포지토리로 원하는 리포지토리를 다운로드

4. Release
- 차트 인스턴스로 일반적으로 동일한 차트를 여러 번 설치할 수 있고 이는 새로운 Release로 관리되게 된다.
  Release 될 때 패키지된 차트와 Config가 결합되어 정상 실행되게 된다.
  아래 순서가 같이 연계된다고 보면 된다.
  Cluster 내부에 Helm Chart를 원하는 Repository에서 검색 후 설치 > 각 설치에 따른 새로운 Release 생성

 

Helm chart의 구조
Helm chart의 구조는 크게 values.yaml과 templates/ 디렉토리로 구성된다.
  - values.yaml: 사용자가 원하는 값들을 설정하는 파일이다.
  - templates/: 설치할 리소스 파일들이 존재하는 디렉토리이다. 해당 디렉토리 안에는 Deployment, Service 등과 같은 쿠버네티스 리소스가 YAML 파일 형태로 들어가 있다. 각 파일들의 설정값은 비워져 있고(placeholder) values.yaml의 설정값들로 채워진다.
패키지가 설치될 시점에 values.yaml 파일의 설정값들을 이용하여 templates 디렉토리에 들어있는 YAML 파일의 구멍난 부분을 채운다. values.yaml 파일에는 자주 바뀌거나 사용자마다 달라지는 설정값들을 입력하는 용도로 사용하고 templates 디렉토리는 패키지의 뼈대를 이룬다.
Helm을 잘 활용하면 다른 사람이 만든 애플리케이션도 손쉽게 나의 쿠버네티스 클러스터로 가져올 수 있게 된다. 도커가 단순히 프로세스 레벨에서 외부의 것을 가져다 쓸 수 있게 해준것이라면, 쿠버네티스에서는 Helm을 이용하여 프로세스(Pod)와 네트워크(Service), 저장소(PersistentVolume) 등 애플리케이션에서 필요한 모든 자원들을 외부에서 가져올 수 있게 한다.

 

Helm 설치

EKS 클러스터에 Helm 차트를 설치하기 전에 EKS에 대해 작동하도록 kubectl을 구성해야함

$ kubectl get svc


설치가 안되어 있다면 아래 링크 참고
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/create-kubeconfig.html

 

# Helm 설치
$ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   172.20.0.1   <none>        443/TCP   135d
$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11345  100 11345    0     0  47863      0 --:--:-- --:--:-- --:--:-- 48072
$ chmod 700 get_helm.sh
$ ./get_helm.sh
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/ec2-user/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/ec2-user/.kube/config
Helm v3.10.3 is available. Changing from version v3.9.3.
Downloading https://get.helm.sh/helm-v3.10.3-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm

# Helm 버전 확인
$ helm version --short | cut -d + -f 1
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/ec2-user/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/ec2-user/.kube/config
v3.10.3

 

WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/ec2-user/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/ec2-user/.kube/config

 

WARING의 경우 ~/.kube/config 파일의 group, other 권한에 읽기 권한이 부여되서 나타난 것이다.

아래와 같이 권한을 변경하면 WARING은 나타나지 않는다.

$ ls -altr /home/ec2-user/.kube/config
-rw-rw-r-- 1 ec2-user ec2-user 2346 Aug 23 02:23 config

$ chmod 600 /home/ec2-user/.kube/config

$ ls -altr /home/ec2-user/.kube/config
-rw------- 1 ec2-user ec2-user 2346 Aug 23 02:23 /home/ec2-user/.kube/config

 

Helm 사용법

Helm 자동완성

source <(helm completion bash)

 

Helm 간단명령어

# Helm 가이드
helm completion

# repo 검색
helm search repo [keyword]

# hub 검색
helm search hub [keyword]

# 레포지토리 관리
helm repo add [name] [url]

# 레포지토리 리스트 확인
helm repo list

# 레포지토리 업데이트
helm repo update

# 레포지토리 삭제
helm repo remove [name]

# 배포 관리
helm install [name] [chart] [flags]

# 배포 리스트 보기
helm list

# 배포 상태 확인
helm status

# 배포 삭제
helm uninstall

 

 

[참고]

https://12bme.tistory.com/643
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/helm.html
https://nayoungs.tistory.com/entry/Kubernetes-Helm%EC%9D%B4%EB%9E%80-Helm%EC%9D%98-%EA%B0%9C%EC%9A%94%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95#--%--Repository-%EC%A-%--%EC%-E%A-%EC%--%-C-
https://may9noy.tistory.com/316

반응형