Helm을 사용하여 Kubernetes에 애플리케이션을 배포하는 방법
이 문서는 내 문서 \Helm이란 무엇이며 Ubuntu 20.04 서버에 설치하는 방법\의 연속입니다. Helm을 처음 사용하는 경우 먼저 언급한 문서를 살펴보는 것이 좋습니다. 이 기사에서는 기존 차트에서 Apache를 릴리스합니다. 샘플 차트를 만들고 출시, 업그레이드, 롤백, 삭제 및 복원합니다. 나중에 문서에서 명령을 사용하기 전에 간단히 명령을 살펴보겠습니다.
- helm 검색: Helm 차트 검색
- helm repo: 저장소에서 추가, 나열, 제거, 업데이트 및 색인 생성과 같은 작업을 수행합니다.
- helm delete: 모든 Kubernetes 객체를 삭제하는 차트를 삭제합니다.
- helm 상태: 출시 상태를 표시합니다.
- helm create: helm 차트를 만듭니다.
- helm install: Kubernetes 개체를 생성하는 차트를 설치합니다.
- helm 업그레이드: 변경 사항으로 릴리스를 업그레이드합니다.
- helm 기록: 릴리스 기록을 가져옵니다.
- helm rollback: 변경 사항을 이전 버전으로 되돌립니다.
진행하기 전에 Helm의 기본 사항에 익숙하다고 가정합니다. 또한 Kubernetes 클러스터와 helm 클라이언트가 이미 설치되어 있다고 가정합니다.
전제 조건
- 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다. - 마스터 노드에 Helm 설치(Helm의 기본 사항을 이해하고 설치하려면 \Helm이란 무엇이며 Ubuntu 20.04 서버에 설치하는 방법\이라는 내 기사를 검색하십시오.)
우리는 무엇을 할 것인가?
- 저장소에서 샘플 차트를 릴리스합니다.
- 차트를 만들고 샘플 애플리케이션을 출시합니다.
- 릴리스를 업그레이드합니다.
- 삭제된 릴리스 복원
저장소에서 샘플 차트를 릴리스합니다.
먼저 서버에서 \helm\을 사용할 수 있는지 확인합니다.
helm version
예를 들어 허브에서 Apache 차트를 설치해 보겠습니다. 다음 명령어를 실행하여 허브에서 Apache를 검색합니다.
helm search hub apache
일련의 결과가 표시되고 Apache 검색 중 하나의 URL을 복사합니다. 이 경우 첫 번째 URL을 복사했습니다.
웹 브라우저에서 URL을 누르면 다음과 같은 페이지가 나타납니다.
이 페이지에서 로컬 시스템에 저장소를 추가하고 여기에서 차트를 설치하는 명령을 받게 됩니다.
Apache 차트에 대한 리포지토리를 추가할 로컬 시스템에서 명령을 실행합니다.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list
시스템에 저장소가 있으면 차트를 설치하고 Helm을 사용하여 Apache용 릴리스를 생성할 수 있습니다.
helm install my-release bitnami/apache
명령을 성공적으로 실행하면 위와 같은 출력이 표시됩니다.
차트가 해제되면 Kubernetes 클러스터에서 생성된 개체를 볼 수 있습니다.
kubectl get nodes
kubectl get pods
이제 pod의 IP를 가져오고 curl 명령어를 사용하여 Apache 페이지에 액세스할 수 있습니다.
kubectl get pods -o wide
kubectl get svc
curl 10.244.1.2:8080
릴리스를 삭제하려면 다음 명령어를 사용하면 됩니다.
helm delete my-release
클러스터의 출시 버전을 나열하고 출시 버전이 성공적으로 삭제되었는지 확인할 수 있습니다.
helm ls
helm status my-release
차트 만들기 및 샘플 애플리케이션 배포
위의 시나리오에서는 쉽게 사용할 수 있고 구성된 차트를 설치했습니다. 자체 차트를 만들고 애플리케이션을 출시할 수 있습니다. helm을 사용하여 차트를 만드는 것은 매우 간단합니다. 다음 명령을 실행하면 Nginx의 샘플 애플리케이션이 포함된 차트를 얻을 수 있습니다.
helm create my-first-chart
위의 명령을 사용하여 생성한 차트의 폴더 구조를 탐색합니다.
cd my-first-chart/
ls -l
ls -l charts/
ls -l templates/
ls -l templates/tests/
Chart.yaml 파일의 콘텐츠를 확인합니다.
ls -lt
cat Chart.yaml
values.yaml의 콘텐츠 확인
ls -lt
cat values.yaml
이제 로컬 차트를 사용하여 샘플 애플리케이션을 배포해 보겠습니다.
pwd
cd ..
ls -l | grep my-first-chart
kubectl get pods
helm install my-first-release my-first-chart/
차트가 성공적으로 릴리스되면 클러스터에 생성된 포드를 볼 수 있습니다.
kubectl get pods
kubectl get svc
이제 서비스를 통해 Nginx 포드에 액세스할 수 있습니다.
curl 10.104.229.187
다음 명령을 사용하여 생성한 릴리스에 대한 정보를 찾을 수 있습니다.
helm ls
helm status my-first-release
릴리스 업그레이드
위의 시나리오에서는 샘플 Nginx 애플리케이션으로 차트를 만들었습니다. 위 시나리오의 복제본 수는 1이었습니다. 복제본 수를 늘리려면 values.yaml 파일을 변경하여 쉽게 할 수 있습니다.
cat my-first-chart/values.yaml | grep replica
vim my-first-chart/values.yaml
cat my-first-chart/values.yaml | grep replica
helm ls
이제 변경 사항을 쉽게 롤아웃하고 릴리스를 업그레이드할 수 있습니다.
helm upgrade my-first-release my-first-chart/
릴리스 버전이 2로 업데이트된 것을 확인할 수도 있습니다.
helm ls
이번에는 복제본 수를 2로 지정했기 때문에 클러스터에서 실행 중인 두 개의 포드를 볼 수 있습니다.
kubectl get pods
helm ls
릴리스 기록을 확인하면 릴리스에 두 가지 개정판이 있음을 알 수 있습니다. 개정 1에는 포드가 1개 있었고 나중에 복제본 수를 2로 업데이트하여 릴리스의 개정 2를 만들었습니다.
helm history my-first-release
버전 2에서 변경사항을 릴리스하지 않고 버전 1로 되돌리려면 다음 롤백 명령을 사용하면 됩니다.
helm rollback my-first-release 1
helm ls
그러면 릴리스에 대한 개정 3이 생성됩니다.
helm history my-first-release
이제 클러스터에서 실행 중인 pod가 하나뿐인 것을 볼 수 있습니다.
kubectl get pods
차트에서 출시된 샘플 Nginx 어플리케이션을 삭제하고자 하는 경우, 해당 릴리즈를 삭제하여 삭제할 수 있습니다.
helm ls
helm delete my-first-release
helm ls
삭제 후 릴리스 복원
위의 시나리오에서는 릴리스를 삭제했습니다. 그러나 기본적으로 릴리스는 삭제될 때 릴리스 기록을 유지하지 않습니다. 이러한 시나리오에서 되돌리려는 경우 delete release 명령에 --keep-history 옵션을 지정하지 않으면 되돌릴 수 없습니다.
helm ls
helm install my-second-release my-first-chart/
helm ls
릴리스를 삭제하는 동안 --keep-history 옵션을 지정하면 helm에서 새 릴리스 버전을 생성합니다. 이러한 방식으로 릴리스 또는 애플리케이션을 삭제한 후에도 이전 작업 버전으로 되돌릴 수 있습니다.
helm delete my-second-release --keep-history
helm ls
helm ls -a
helm history my-second-release
helm rollback my-second-release 1
helm ls
helm history my-second-release
결론
이 기사에서는 인터넷에서 사용할 수 있는 Helm 차트의 샘플 애플리케이션을 배포했습니다. 시스템에서 Helm 차트를 만들고 출시하는 단계도 보았습니다. 이와 함께 Helm 차트를 삭제하고, 이전 버전으로 롤백하고, 채팅을 삭제한 후에도 릴리스 기록을 유지하는 방법을 살펴봤습니다.