Helm으로 Nginx 배포

NGINX 웹 서버를 설치하는 방법을 실습합니다.

1. 차트 저장소 업데이트

Helm은 차트라는 패키징 형식을 사용합니다. 차트는 쿠버네티스 리소스를 설명하는 파일과 템플릿들의 모음집 입니다.

차트는 독립형 웹 서버를 기술하는 것과 같이 간단한 것 부터 웹 서버를 포함한 전체 웹 애플리케이션 스택, 데이터베이스, 프록시 등을 나타내는 것과 같이 더 복잡한 것을 다룰 수 있습니다.

kubectl을 통해 쿠버네티스 리소스를 수동으로 설치하는 대신 Helm을 사용하여 오류나 다른 가능성을 줄이면서 사전 정의 된 차트를 더 빠르게 설치할 수 있습니다.

차트 저장소는 업데이트 및 새롭게 추가되는 기능으로 인해 자주 변경됩니다. Helm의 로컬 목록을 이러한 모든 변경 사항으로 업데이트 되도록 유지하기 위해 repository update 명령을 실행 해야 합니다.

Helm의 로컬 차트 목록을 업데이트 하려면 다음을 실행하십시오.

# first, add the default repository, then update
helm repo add stable https://charts.helm.sh/stable
helm repo update

2. 차트 저장소 검색

이제 저장소 차트 목록이 업데이트 되었으므로 차트에서 검색 할 수 있습니다. 모든 차트를 나열 하려면 다음의 명령어를 입력합니다.

helm search repo

출력에서 우리가 추가 한 모든 차트 목록을 확인 할 수 있습니다. 키워드를 포함하여 훨씬 더 유용한 검색을 할 수 있습니다.

다음으로 nginx 웹 서버 차트를 검색합니다.

helm search repo nginx

그 결과는 다음과 같습니다.

명령어에 대한 추가 정보는 이곳에서 찾을 수 있습니다.

3. Bitnami 저장소 추가

이전 단계에서 NGINX가 기본 Helm 차트 저장소를 통해 여러개의 다른 제품을 제공하는 것을 알 수 있었습니다. NGINX 독립형 웹 서버는 그 중 하나 입니다.

빠른 웹 검색으로 Bitnami Chart 저장소를 통해 사용 가능한 NGINX 독립형 웹 서버에 대한 차트가 있음을 발견 하였습니다.

검색 가능한 차트의 로컬 목록에 Bitnami 차트 리포지토리를 추가 하기 위해 아래 명령어를 수행합니다.

helm repo add bitnami https://charts.bitnami.com/bitnami

완료되면 모든 Bitnami 차트를 검색 할 수 있습니다:

helm search repo bitnami

nginx를 다시 한 번 검색하면:

helm search repo nginx

이제 두 저장소에서 더 많은 nginx 옵션을 볼 수 있습니다.

nginx에 대해 Bitnami 저장소에서 검색할 수 도 있습니다.

helm search repo bitnami/nginx

NAME                                    CHART VERSION   APP VERSION     DESCRIPTION
bitnami/nginx                           5.1.6           1.16.1          Chart for the nginx server
bitnami/nginx-ingress-controller        5.3.4           0.29.0          Chart for the nginx Ingress...

In both of those last two searches, we see

bitnami/nginx

as a search result. That’s the one we’re looking for, so let’s use Helm to install it to the EKS cluster.

다른 방법으로 nginx에 대해 Bitnami 저장소에서 검색 하여 검색 범위를 좁힐 수 있습니다.

helm search repo bitnami/nginx

검색 결과에서 실습에 필요한 nginx를 찾았으므로, Helm을 사용하여 EKS 클러스터에 설치합니다.

4. bitnami/nginx 설치

helm install 명령어를 사용하여 Bitnami 독립형 nginx 웹 서버 차트를 설치 합니다.

Helm 차트는 쿠버네티스 클러스터 내에 여러 번 설치 할 수 있습니다. 이것은 차트의 설치가 사용자 별로 다른 목적에 맞게 변경 할 수 있기 때문 입니다. 따라서 설치 시 고유한 이름을 제공해야 합니다.

helm 유틸리티를 사용하여 bitnami/nginx 차트를 설치 하십시오. 쿠버네티스 배포에 ‘mywebserver’라는 이름을 지정합니다. helm 설치 문서를 작성하거나helm install --help 명령을 실행 하여 명령 구문을 확인합니다.

helm install mywebserver bitnami/nginx

이 명령을 실행하면 출력에 다음과 같은 유사한 배포 상태, 개정, namespace 등에 대한 정보가 포함 됩니다.

기본 쿠버네티스 서비스, Pod 및 배포를 검토 하려면 다음을 실행 합니다.

kubectl get svc,po,deploy

다음kubectl 명령 예제에서 각 개체의 ‘DESIRED’및 ‘CURRENT’값이 일치 하는데 1,2분 정도 걸릴 수 있습니다. 첫 번째 시도에서 일치하지 않으면 몇 초간 기다린 다음 명령을 다시 실행하여 상태를 확인 하십시오.

이 출력에 표시된 첫 번째 개체는 Deployment 입니다. Deployment 객체는 다양한 버전의 롤아웃 (및 롤백) 애플리케이션을 관리 합니다.

다음 명령을 실행 하여 Deployment 객체를 더 자세히 확 할 수 있습니다.

kubectl describe deployment mywebserver

차트에 의해 생성 된 다음 개체는 Pod 입니다. Pod는 하나 이상의 컨테이너 그룹 입니다.

Pod 객체가 성공적으로 배포되었는지 확인하기 위해 다음 명령을 실행 할 수 있습니다.

kubectl get pods -l app.kubernetes.io/name=nginx

이 차트가 생성하는 세 번째 개체는 Service 입니다. Service는 인터넷이나 Elastic Load Balancer(ELB)가 nginx 웹 서버에 연결할 수 있게 합니다.

이 Service의 전체 URL을 얻으려면 다음을 실행하십시오:

kubectl get service mywebserver-nginx -o wide

다음과 유사한 출력이 표시됩니다. EXTERNAL-IP의 값을 복사하고 웹 브라우저에서 새 탭에 붙여 넣습니다.

ELB 및 관련 DNS 이름을 사용할 수있게되는 데 몇 분 정도 걸릴 수 있습니다. 오류가 발생하면 1 분 정도 기다렸다가 재로드를 누르십시오.

Service가 온라인 상태가 되면 다음과 유사한 환영 메시지가 표시됩니다.

5. 정리하기

Helm 차트에서 생성한 모든 개체를 제거하려면 Helm delete를 사용할 수 있습니다.

애플리케이션을 제거하기 전에 Helm list 명령을 통해 실행중인 항목을 확인할 수 있습니다.

helm list

다음과 유사한 mywebserver가 설치 되었음을 보여주는 출력이 표시 되어야 합니다.

제거 하기 위해서 다음 명령을 실행 합니다:

helm uninstall mywebserver

다음과 같은 결과를 확인 할 수 있습니다.

kubectl은 또한 pod와 service를 더 이상 사용할 수 없음을 보여줍니다.

kubectl get pods -l app.kubernetes.io/name=nginx
kubectl get service mywebserver-nginx -o wide

이것으로 정리가 완료되었습니다.

Last updated