Helm을 이용한 Kubernetes 애플리케이션 배포 및 관리
1. 개요
쿠버네티스를 이용해서 애플리케이션을 배포하다 보면, pod을 만들기 위한 작업을 수행하고 외부로 노출시키기 위해서 Service와 데이터를 저장하기 위한 Volume 작업 등을 수행해야 한다.
- pod(Pod, ReplicaSet, Deployment, DaemonSet, StatefulSet 등)
- Service(ClusterIP, NodePort, LoadBalancer, Ingress Controller, External IP 등)
쿠버네티스만을 이용하는 경우에는 여러 개의 작업을 별개로 수행해야 하기 때문에 업데이트를 할 때 오류가 발생하거나 일부분이 업데이트되지 않는 일이 발생할 수 있다.
이러한 작업들을 하나의 패키지로 묶어서 한 번에 수행하기 위한 도구가 Helm이다.
2. Helm 설치
Helm을 설치하는 방법은 다음의 가이드를 보면 잘 나와있다.
설치 가이드: https://helm.sh/ko/docs/intro/install/
헬름 설치하기
헬름 설치하고 작동하는 방법 배우기.
helm.sh
이 실습은 aws ec2 인스턴스와 연결하여 우분투 환경에서 진행한다.
우분투 환경이기 때문에, Apt로 helm을 설치한다.
@danger
AWS EC2 인스턴스에서 실습을 진행하는 경우, minikube가 작동하기 위해서는 CPU가 2개 이상 필요하므로, CPU를 2개 이상 지원하는 인스턴스에서 진행해야 한다.
apt로 helm 설치하기 (데비안/우분투)
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
설치 확인
helm version
3. 애플리케이션 설치
애플리케이션 설치 방법
레포지토리 추가
먼저 helm 레포지토리를 추가해야 하는데, 명령어는 다음과 같다.
helm repo add 이름 URL
# 삭제
helm repo remove 이름
# 리스트 조회
helm repo list
레포지토리의 캐시 업데이트
레포지토리를 추가한 후에 캐시를 업데이트해줘야 만든 레포지토리에 접근할 수 있다.
helm repo update
애플리케이션 검색 및 설치
# 애플리케이션 검색
helm search repo 애플리케이션이름
# 애플리케이션 다운로드
helm pull 애플리케이션이름
실습
이제부터 이 애플리케이션들을 설치해볼 것이다.
https://kiamol.net & vweb, https://charts.bitnami.com/bitnami & nginx
Helm 저장소를 추가한 후, 캐시를 업데이트한다. 이 과정을 통해 kiamol 저장소와 bitnami 저장소에 접근할 수 있다.
helm repo add kiamol https://kiamol.net
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
애플리케이션을 검색 및 설치한다.
helm search repo vweb
helm search repo nginx
nginx 애플리케이션 다운로드
helm pull bitnami/nginx
압축해제
구조를 알아보기 위해 압축을 해제한다.
tar xvfz nginx-18.2.4.tgz
환경변수 확인
tar xvfz nginx-18.2.4.tgz
설치
helm install --set 환경변수=값… 레이블 애플리케이션이름
cd nginx
helm install nginx -f values.yaml .
helm ls
kubectl get pods
원격 서버의 kiamol/vweb을 설치
helm install --set servicePort=8010 --set replicaCount=2 vweb kiamol/vweb --version 1.0.0
helm ls
kubectl get pods
4. 패키징
helm create 차트이름
helm create samplechart
명령을 수행하면 Chart.yaml, Values.yaml, charts와 template 디렉터리가 생성되고, 기본 코드를 작성해 준다.
5. 레지스트리를 만들어서 업로드
레지스트리를 만드는 방법
- Cloud의 File Storage 이용 (AWS의 S3 등)
- Harbor를 이용해서 구축
- github 같은 버전 관리 사이트를 이용
- 직접 웹 서버를 구축(S3는 Front End Server의 기능을 하는 것이 가능)
위의 방법들 중에서, github를 이용하여 helm 레지스트리를 배포하는 실습을 진행했다.
해당 실습은 다음 글에 작성하겠다.
[Kubernetes] Github Pages로 Helm 패키지 배포 및 설치하기
[Kubernetes] Github Pages로 Helm 패키지 배포 및 설치하기
GitHub Pages를 활용한 Helm 패키지 배포 및 설치[Kubernetes] Helm을 이용한 Kubernetes 애플리케이션 배포 및 관리이전 글에 이어서, Helm 차트를 GitHub 레포지토리에 저장하고, 이를 GitHub Pages를 통해 배포하
ynslee627.tistory.com