Helm은 Kubernetes 애플리케이션을 설치하고 수명 주기를 관리하는 오픈 소스 패키징 도구입니다. APT 및 Yum과 같은 Linux 패키지 관리자와 마찬가지로 사전 구성된 Kubernetes 리소스의 패키지인 Kubernetes 차트 관리에 Helm을 사용합니다.
빠른 시작에서 Helm을 사용하여 AKS에서 애플리케이션을 패키징하고 실행합니다. Helm을 사용하여 기존 애플리케이션을 설치하는 방법에 대한 자세한 내용은 AKS에서 Helm을 사용하여 기존 애플리케이션 설치를 참조하세요.
필수 구성 요소
- Azure 구독 Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
- Azure CLI 또는 Azure PowerShell 설치.
- Helm v3 설치
Azure Container Registry 만들기
AKS 클러스터에서 Helm을 사용하여 애플리케이션을 실행하려면 컨테이너 이미지를 ACR(Azure Container Registry)에 저장해야 합니다. 레지스트리 이름은 Azure 내에서 고유하고 5~50자의 영숫자만 포함해야 합니다. 소문자만 허용됩니다. 기본 SKU는 개발을 위해 비용에 최적화된 진입점으로, 스토리지와 처리량의 균형을 적절하게 맞추었습니다.
az group create 명령을 사용하여 Azure 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location eastusaz acr create 명령을 호출하여 이름이 고유한 Azure Container Registry를 만듭니다. 다음 예제에서는 기본 SKU를 사용하여 myhelmacr이라는 ACR을 만듭니다.
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic출력은 다음의 축약된 예제와 비슷하게 표시됩니다. ACR의 loginServer 값을 기록해 두었다가 이후 단계에서 사용하세요.
{ "adminUserEnabled": false, "creationDate": "2023-12-26T22:36:23.998425+00:00", "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr", "location": "eastus", "loginServer": "myhelmacr.azurecr.io", "name": "myhelmacr", "networkRuleSet": null, "provisioningState": "Succeeded", "resourceGroup": "myResourceGroup", "sku": { "name": "Basic", "tier": "Basic" }, "status": null, "storageAccount": null, "tags": {}, "type": "Microsoft.ContainerRegistry/registries" }
AKS 클러스터 만들기
새 AKS 클러스터는 컨테이너 이미지를 풀해서 실행하기 위해 ACR에 액세스해야 합니다.
ACR에 대한 클러스터 액세스 권한을 부여하려면 매개 변수와 함께
--attach-acr명령을 사용하여 AKS 클러스터를 만듭니다. 다음 예제에서는 myAKSCluster라는 AKS 클러스터를 만들고 myhelmacr ACR에 대한 액세스 권한을 부여합니다.myhelmacr를 ACR의 이름으로 바꾸도록 합니다.az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
AKS 클러스터에 연결
Kubernetes 클러스터를 로컬로 연결하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. Azure Cloud Shell을 사용하는 경우 kubectl이 이미 설치되어 있습니다.
샘플 애플리케이션 다운로드
이 빠른 시작에서는 Azure Vote 애플리케이션을 사용합니다.
git clone명령을 사용하여 GitHub에서 애플리케이션을 복제합니다.git clone https://github.com/Azure-Samples/azure-voting-app-redis.gitazure-vote명령을 사용하여cd디렉터리로 이동합니다.cd azure-voting-app-redis/azure-vote/
샘플 애플리케이션을 빌드하여 ACR로 푸시합니다.
az acr build 명령을 사용하여 이미지를 빌드하고 ACR에 푸시합니다. 다음 예제에서는 azure-vote-front:v1이라는 이미지를 빌드하고 myhelmacr ACR 푸시합니다.
myhelmacr를 ACR의 이름으로 바꾸도록 합니다.az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
참고 항목
Helm 차트를 ACR로 가져올 수도 있습니다. 자세한 내용은 Azure 컨테이너 레지스트리에 Helm 차트 푸시 및 끌어오기를 참조하세요.
Helm 차트 만들기
helm create명령을 사용하여 Helm 차트를 생성합니다.helm create azure-vote-front다음 예제에서는 azure-vote-front/Chart.yaml을 업데이트하여 차트 리포지토리의
https://charts.bitnami.com/bitnami차트 종속성을 추가하고appVersion을v1로 업데이트합니다.참고 항목
이 가이드에 표시된 컨테이너 이미지 버전은 이 예제에서 작동하도록 테스트되었지만 사용 가능한 최신 버전이 아닐 수 있습니다.
apiVersion: v2 name: azure-vote-front description: A Helm chart for Kubernetes dependencies: - name: redis version: 17.3.17 repository: https://charts.bitnami.com/bitnami ... # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. appVersion: v1helm dependency update명령을 사용하여 Helm 차트 종속성을 업데이트합니다.helm dependency update azure-vote-front다음과 같이 변경하여 azure-vote-front/values.yaml을 업데이트합니다.
- redis 섹션을 추가하여 이미지 세부 정보, 컨테이너 포트 및 배포 이름을 설정합니다.
- 프런트 엔드 부분을 redis 배포에 연결하기 위한 backendName을 추가합니다.
-
image.repository를
<loginServer>/azure-vote-front로 변경합니다. -
image.tag를
v1로 변경합니다. - service.type을 LoadBalancer로 변경합니다.
예시:
replicaCount: 1 backendName: azure-vote-backend-master redis: image: registry: mcr.microsoft.com repository: oss/bitnami/redis tag: 6.0.8 fullnameOverride: azure-vote-backend auth: enabled: false image: repository: myhelmacr.azurecr.io/azure-vote-front pullPolicy: IfNotPresent tag: "v1" ... service: type: LoadBalancer port: 80 ...env섹션을 azure-vote-front/templates/deployment.yaml에 추가하여 redis 배포의 이름을 전달합니다.... containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: REDIS value: {{ .Values.backendName }} ...
Helm 차트 실행
helm install명령을 사용하여 Helm 차트를 사용하여 애플리케이션을 설치합니다.helm install azure-vote-front azure-vote-front/서비스가 공인 IP 주소를 반환하는 데 몇 분이 걸릴 수 있습니다.
kubectl get service인수와 함께--watch명령을 사용하여 진행률을 모니터링합니다.kubectl get service azure-vote-front --watch서비스가 준비되면
EXTERNAL-IP값이<pending>에서 IP 주소로 변경됩니다.CTRL+C조사식 프로세스를 중지하려면kubectl를 누릅니다.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE azure-vote-front LoadBalancer 10.0.18.228 <pending> 80:32021/TCP 6s ... azure-vote-front LoadBalancer 10.0.18.228 52.188.140.81 80:32021/TCP 2m6s<EXTERNAL-IP>을 사용하여 브라우저에서 애플리케이션의 부하 분산 장치로 이동하여 애플리케이션 예제를 확인합니다.
클러스터 삭제
참고 항목
시스템이 할당한 관리 ID(이 빠른 시작의 기본 ID 옵션)로 AKS 클러스터를 만든 경우 ID는 플랫폼에서 관리되며 제거할 필요가 없습니다.
서비스 사용자로 AKS 클러스터를 만든 경우 클러스터를 삭제해도 서비스 사용자가 제거되지 않습니다. 서비스 사용자를 제거하려면 AKS 서비스 사용자 고려 사항 및 삭제를 참조하세요.
다음 단계
Helm을 사용하는 방법에 대한 자세한 내용은 Helm 설명서를 참조하세요.