본문 바로가기

AWS EKS 실습/EKS Beginner

Helm으로 nginx 설치

Helm은 여러 Kubernetes Resource를 Chart 라는 단일 논리적 배포 단위로 패키징하는 Kubernetes용 패키지 관리자 및 애플리케이션 관리 도구 이다.

 

Helm은 다음 이점을 제공한다.

 

 ㅇ 단순하고 (하나의 명령) 반복 적인 Deployment 수행

 ㅇ 다른 애플리케이션 및 서비스의 특정 버전을 사용하여 애플리케이션간의 종속성 관리

 ㅇ 여러 배포 구성 관리: Test, Stag, Production 등

 ㅇ 업데이트 / 롤백 및 애플리케이션 배포 테스트

 

ㅇ Install the Helm CLI

 

$ curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

 

 

 

 

ㅇ 설치된 버전 확인

 

$ helm version --short

v3.5.2+g167aac7

 

 ㅇ Chart Repository 구성, Chart 리포지토리는 APT 또는 YUM Repo와 유사하다.  아래에서는 Stable Repository를 다운로드 한다.

 

$ helm repo add stable https://charts.helm.sh/stable 

 

 

 

 

 ㅇ Stable Repo에 인스톨할 수 있는 chart가 있는지 리스트 하여 확인해 본다.

 

 

ㅇ helm command를 위한 bash 환경 구성을 완료 한다.

 

$ helm completion bash >> ~/.bash_completion

$ . /etc/profile.d/bash_completion.sh

$ . ~/.bash_completion

source <(helm completion bash)

 

 ㅇ Update the Chart Repository

 

Helm은 Charts라고 불리는 패키징 포맷을 사용한다. 차트는 쿠버네티스 리소스를 기술하는 파일과 템플릿의 모음이다.

 

Kubernets 리소스를 kubectl을 통해 수동으로 설치하는 것 보다 사전에 정의되어 있는 차트를 인스톨하는 Helm을 사용하여 오타 또는 운영자의 실수를 줄일 수 있다.

 

Chart Repo는 자주 업데이트되고 새로 추가되는 항목이 많으므로 Helm의 로컬 리스트를 'repository update' 명령어를 통하여 가끔씩 업데이트 하는 것이 필요하다.

 

Helm의 로컬 차트 목록을 업데이트 하려면 다음과 같이 하면 된다.

 

$ helm repo add stable https://charts.helm.sh/stable 

$ helm repo udpate

 

아래와 유사한 결과가 나올 것이다.

 

 

 ㅇ nginx web server Chart 검색

 

 모든 차트를 리스트 하기 위해서는 

 

$ helm search repo

 

를 수행하면 되나 너무 많은 결과가 나오므로 nginx만 검색하기 위해서는

 

$ helm search repo nginx

 

 

 

와 같이 결과가 나온다.

 

In the last slide, we saw that nginx offers many different products via the default Helm Chart repository, but the nginx standalone web server is not one of them.

After a quick web search, we discover that there is a Chart for the nginx standalone web server available via the Bitnami Chart repository.

To add the Bitnami Chart repo to our local list of searchable charts:

 

 

ㅇ nginx Chart Repo 추가

 

기본 Helm Chart 저장소를 통해 다양한 제품을 제공하지만 nginx 독립형 웹 서버는 기본적으로 제공하지 않는다. 따라서 일반적인 웹검색을 통해 nginx가 bitami chart reposityro가 가능하다는것을 찾은 후 로컬 리스트에 추가한다.

 

$ helm repo add bitami https://charts.bitami.com/bitami 

 

bitami repo 가 정상적으로 추가 되었는지 확인하려면

 

$ helm search repo bitami

 

 

nginx에 대해서만 다시 검색 해 본다.

 

$ helm search repo nginx

 

 

 

bitami repo에서만 nginx를 검색한다.

 

$ helm search repo bitami/ngingx

 

 

이 것이 찾고 있는 nginx 독립형 웹서버를 위한 Chart이므로 helm을 사용하여 EKS 클러스터에 설치 할 수 있다.

 

ㅁ Install bitami/nginx

 

 ㅇ helm 인스톨을 위해서는 다음과 같은 명령어를 사용한다.

 

   $ helm install -f myvalues.yaml myredis ./redis

   또는

   $ helm install --set name=prod myredis ./redis

   또는

   $ helm install --set-string long_int=1234567890 myredis ./redis

   또는

   $ helm install --set-file my_script=dothings.sh myredis ./redis

 

  따라서 nginx 설치를 하기 위해서는 아래와 같은 명령어를 사용한다.

 

 $ helm install mywebserver bitami/ngingx

 

 

ㅇ 정상적으로 설치가 되었는지 확인을 위해 kubectl get svc, po, deploy 를 수행한다.

 

 $ kubectl get svc, po, deploy

 

 

ㅇ 상세 내용을 확인하기 위해서

 $ kubectl describe deployment mywebserver

 

 

 

$ kubectl get service mywebserver-nginx -o wide

 

 

 

여기서 나온 External-IP 로 접근하면 아래와 같이 정상적으로 접근 되는것을 볼 수 있어야 한다. 

 

a480ed5402c07474b997906d9c85b279-360355306.ap-northeast-2.elb.amazonaws.com

 

 

nginx가 helm을 통해 eks 환경에 정상 배포 완료되었다고 볼 수 있다.

 

ㅁ 삭제 방법

 

ㅇ helm 으로 설치되어 있는 리스트를 확인하기 위해서는

 $ helm list

 

 

 

 

 ㅇ unistall 명령을 통해 uninstall 한다.

 $ helm uninstall mywebserver