AKS (Azure Kubernetes Service)에서 Helm을 사용 하 여 기존 응용 프로그램 설치Install existing applications with Helm in Azure Kubernetes Service (AKS)

투구 는 Kubernetes 응용 프로그램의 수명 주기를 설치 하 고 관리 하는 데 도움이 되는 오픈 소스 패키징 도구입니다.Helm is an open-source packaging tool that helps you install and manage the lifecycle of Kubernetes applications. APT , Yum 등의 Linux 패키지 관리자와 마찬가지로, 투구는 미리 구성 된 Kubernetes 리소스의 패키지인 Kubernetes 차트를 관리 하는 데 사용 됩니다.Similar to Linux package managers such as APT and Yum, Helm is used to manage Kubernetes charts, which are packages of preconfigured Kubernetes resources.

이 아티클에서는 AKS의 Kubernetes 클러스터에서 Helm을 구성하고 사용하는 방법을 보여줍니다.This article shows you how to configure and use Helm in a Kubernetes cluster on AKS.

시작하기 전에Before you begin

이 문서에서는 기존 AKS 클러스터가 있다고 가정합니다.This article assumes that you have an existing AKS cluster. AKS 클러스터가 필요한 경우 AKS 빠른 시작 Azure CLI 사용 또는 Azure Portal 사용을 참조하세요.If you need an AKS cluster, see the AKS quickstart using the Azure CLI or using the Azure portal.

또한 개발 시스템에서 실행 되는 클라이언트 인 Helm CLI가 설치 되어 있어야 합니다.You also need the Helm CLI installed, which is the client that runs on your development system. 이를 통해 Helm으로 응용 프로그램을 시작, 중지 및 관리할 수 있습니다.It allows you to start, stop, and manage applications with Helm. Azure Cloud Shell을 사용하는 경우 Helm CLI가 이미 설치되어 있습니다.If you use the Azure Cloud Shell, the Helm CLI is already installed. 로컬 플랫폼에 대 한 설치 지침은 Helm 설치를 참조 하세요.For installation instructions on your local platform, see Installing Helm.

중요

투구는 Linux 노드에서 실행 하기 위한 것입니다.Helm is intended to run on Linux nodes. 클러스터에 Windows Server 노드가 있는 경우에는 투구 pod가 Linux 노드에서 실행 되도록 예약 되어 있는지 확인 해야 합니다.If you have Windows Server nodes in your cluster, you must ensure that Helm pods are only scheduled to run on Linux nodes. 또한 설치 하는 투구 차트가 올바른 노드에서 실행 되도록 예약 되어 있는지도 확인 해야 합니다.You also need to ensure that any Helm charts you install are also scheduled to run on the correct nodes. 이 문서의 명령은 [노드 선택기] [k8s]를 사용 하 여 pod이 올바른 노드에 예약 되어 있는지 확인 하지만 일부 투구 차트는 노드 선택기를 표시할 수 없습니다.The commands in this article use [node-selectors][k8s-node-selector] to make sure pods are scheduled to the correct nodes, but not all Helm charts may expose a node selector. Taints와 같은 클러스터의 다른 옵션을 사용 하는 것을 고려할 수도 있습니다.You can also consider using other options on your cluster, such as taints.

Helm 버전 확인Verify your version of Helm

명령을 사용 하 여 helm version Helm 3이 설치 되어 있는지 확인 합니다.Use the helm version command to verify you have Helm 3 installed:

helm version

다음 예제에서는 3.0.0 설치 된 Helm 버전을 보여 줍니다.The following example shows Helm version 3.0.0 installed:

$ helm version

version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}

Helm v3을 사용 하 여 응용 프로그램 설치Install an application with Helm v3

Helm 리포지토리 추가Add Helm repositories

Helm 리포지토리 명령을 사용 하 여 nginx 리포지토리를 추가 합니다.Use the helm repo command to add the ingress-nginx repository.

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

Helm 차트 찾기Find Helm charts

Helm 차트는 Kubernetes 클러스터에 애플리케이션을 배포하는 데 사용됩니다.Helm charts are used to deploy applications into a Kubernetes cluster. 미리 만든 Helm 차트를 검색 하려면 Helm search 명령을 사용 합니다.To search for pre-created Helm charts, use the helm search command:

helm search repo ingress-nginx

다음 압축된 예제 출력에서는 사용할 Helm 차트의 일부를 보여줍니다.The following condensed example output shows some of the Helm charts available for use:

$ helm search repo ingress-nginx

NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
ingress-nginx/ingress-nginx     2.12.0          0.34.1          Ingress controller for Kubernetes using NGINX a...

차트 목록을 업데이트하려면 helm repo update 명령을 사용합니다.To update the list of charts, use the helm repo update command.

helm repo update

다음 예제에서는 성공적인 리포지토리 업데이트를 보여줍니다.The following example shows a successful repo update:

$ helm repo update

Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ingress-nginx" chart repository
Update Complete. ⎈ Happy Helming!⎈

Helm 차트 실행Run Helm charts

Helm을 사용 하 여 차트를 설치 하려면 Helm install 명령을 사용 하 고 릴리스 이름 및 설치할 차트 이름을 지정 합니다.To install charts with Helm, use the helm install command and specify a release name and the name of the chart to install. 동작에서 Helm 차트 설치를 보려면 Helm 차트를 사용 하 여 기본 nginx 배포를 설치 해 보겠습니다.To see installing a Helm chart in action, let's install a basic nginx deployment using a Helm chart.

helm install my-nginx-ingress ingress-nginx/ingress-nginx \
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

다음 압축된 예제 출력에서는 Helm 차트에서 만든 Kubernetes 리소스의 배포 상태를 보여줍니다.The following condensed example output shows the deployment status of the Kubernetes resources created by the Helm chart:

$ helm install my-nginx-ingress ingress-nginx/ingress-nginx \
>     --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
>     --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

NAME: my-nginx-ingress
LAST DEPLOYED: Fri Nov 22 10:08:06 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller'
...

명령을 사용 kubectl get services 하 여 서비스의 외부 IP 를 가져옵니다.Use the kubectl get services command to get the EXTERNAL-IP of your service.

kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller

예를 들어 아래 명령은 nginx-nginx 서비스의 외부 IP 를 보여 줍니다.For example, the below command shows the EXTERNAL-IP for the my-nginx-ingress-ingress-nginx-controller service:

$ kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller

NAME                                        TYPE           CLUSTER-IP   EXTERNAL-IP      PORT(S)                      AGE   SELECTOR
my-nginx-ingress-ingress-nginx-controller   LoadBalancer   10.0.2.237   <EXTERNAL-IP>    80:31380/TCP,443:32239/TCP   72s   app.kubernetes.io/component=controller,app.kubernetes.io/instance=my-nginx-ingress,app.kubernetes.io/name=ingress-nginx

릴리스 목록List releases

클러스터에 설치 된 릴리스 목록을 보려면 helm list 명령을 사용 합니다.To see a list of releases installed on your cluster, use the helm list command.

helm list

다음 예제에서는 이전 단계에서 배포한 nginx 수신 릴리스를 보여 줍니다.The following example shows the my-nginx-ingress release deployed in the previous step:

$ helm list

NAME                NAMESPACE   REVISION    UPDATED                                 STATUS      CHART                   APP VERSION
my-nginx-ingress    default     1           2019-11-22 10:08:06.048477 -0600 CST    deployed    nginx-ingress-1.25.0    0.26.1 

리소스 정리Clean up resources

Helm 차트를 배포하면 다수의 Kubernetes 리소스가 생성됩니다.When you deploy a Helm chart, a number of Kubernetes resources are created. 이러한 리소스에는 Pod, 배포 및 서비스가 포함됩니다.These resources include pods, deployments, and services. 이러한 리소스를 정리 하려면 Helm uninstall 명령을 사용 하 여 이전 명령에 나와 있는 대로 릴리스 이름을 지정 helm list 합니다.To clean up these resources, use the helm uninstall command and specify your release name, as found in the previous helm list command.

helm uninstall my-nginx-ingress

다음 예제에서는 nginx 라는 릴리스가 제거 된 것을 보여 줍니다.The following example shows the release named my-nginx-ingress has been uninstalled:

$ helm uninstall my-nginx-ingress

release "my-nginx-ingress" uninstalled

다음 단계Next steps

Helm을 사용하여 Kubernetes 애플리케이션 배포를 관리하는 방법에 대한 자세한 내용은 Helm 설명서를 참조하세요.For more information about managing Kubernetes application deployments with Helm, see the Helm documentation.