웹사이트 검색

Helm을 사용하여 Kubernetes에 애플리케이션을 배포하는 방법


이 문서는 내 문서 \Helm이란 무엇이며 Ubuntu 20.04 서버에 설치하는 방법\의 연속입니다. Helm을 처음 사용하는 경우 먼저 언급한 문서를 살펴보는 것이 좋습니다. 이 기사에서는 기존 차트에서 Apache를 릴리스합니다. 샘플 차트를 만들고 출시, 업그레이드, 롤백, 삭제 및 복원합니다. 나중에 문서에서 명령을 사용하기 전에 간단히 명령을 살펴보겠습니다.

  1. helm 검색: Helm 차트 검색
  2. helm repo: 저장소에서 추가, 나열, 제거, 업데이트 및 색인 생성과 같은 작업을 수행합니다.
  3. helm delete: 모든 Kubernetes 객체를 삭제하는 차트를 삭제합니다.
  4. helm 상태: 출시 상태를 표시합니다.
  5. helm create: helm 차트를 만듭니다.
  6. helm install: Kubernetes 개체를 생성하는 차트를 설치합니다.
  7. helm 업그레이드: 변경 사항으로 릴리스를 업그레이드합니다.
  8. helm 기록: 릴리스 기록을 가져옵니다.
  9. helm rollback: 변경 사항을 이전 버전으로 되돌립니다.

진행하기 전에 Helm의 기본 사항에 익숙하다고 가정합니다. 또한 Kubernetes 클러스터와 helm 클라이언트가 이미 설치되어 있다고 가정합니다.

전제 조건

  1. 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
    Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.
  2. 마스터 노드에 Helm 설치(Helm의 기본 사항을 이해하고 설치하려면 \Helm이란 무엇이며 Ubuntu 20.04 서버에 설치하는 방법\이라는 내 기사를 검색하십시오.)

우리는 무엇을 할 것인가?

  1. 저장소에서 샘플 차트를 릴리스합니다.
  2. 차트를 만들고 샘플 애플리케이션을 출시합니다.
  3. 릴리스를 업그레이드합니다.
  4. 삭제된 릴리스 복원

저장소에서 샘플 차트를 릴리스합니다.

먼저 서버에서 \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 차트를 삭제하고, 이전 버전으로 롤백하고, 채팅을 삭제한 후에도 릴리스 기록을 유지하는 방법을 살펴봤습니다.