빠른 시작: Helm을 사용하여 AKS(Azure Kubernetes Service)에서 개발
Helm 은 Kubernetes 애플리케이션의 수명 주기를 설치하고 관리하는 데 도움이 되는 오픈 소스 패키징 도구입니다. APT 및 Yum과 같은 Linux 패키지 관리자와 마찬가지로 사전 구성된 Kubernetes 리소스의 패키지인 Kubernetes 차트 관리에 Helm을 사용합니다.
이 빠른 시작에서는 Helm을 사용하여 AKS에서 애플리케이션을 패키지하고 실행합니다. Helm을 사용하여 기존 애플리케이션을 설치하는 방법에 대한 자세한 내용은 AKS에서 Helm을 사용하여 기존 애플리케이션 설치를 참조 하세요.
필수 구성 요소
- Azure 구독 Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
- Azure CLI 또는 Azure PowerShell 설치.
- Helm v3이 설치되었습니다.
Azure Container Registry 만들기
Helm을 사용하여 AKS 클러스터에서 애플리케이션을 실행하려면 ACR(Azure Container Registry)에 컨테이너 이미지를 저장해야 합니다. 레지스트리 이름은 Azure 내에서 고유해야 하며 5-50자 영숫자를 포함해야 합니다. 소문자만 허용됩니다. 기본 SKU는 스토리지와 처리량의 균형을 제공하는 개발 목적으로 비용 최적화 진입점입니다.
az group create 명령을 사용하여 Azure 리소스 그룹을 만듭니 다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location eastus
az 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에 액세스하여 컨테이너 이미지를 끌어와 실행해야 합니다.
az aks create 명령을 매개 변수와 함께
--attach-acr
사용하여 AKS 클러스터를 만들어 클러스터에 ACR에 대한 액세스 권한을 부여합니다. 다음 예제에서는 myAKSCluster라는 AKS 클러스터를 만들고 myhelmacr ACR에 대한 액세스 권한을 부여합니다. ACR의 이름으로 바꿔myhelmacr
야 합니다.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 애플리케이션을 사용합니다.
명령을 사용하여 GitHub에서 애플리케이션을 복제합니다
git clone
.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
azure-vote
명령을 사용하여 디렉터리로cd
이동합니다.cd azure-voting-app-redis/azure-vote/
ACR에 샘플 애플리케이션 빌드 및 푸시
az acr build 명령을 사용하여 이미지를 빌드하고 ACR에 푸시합니다. 다음 예제에서는 azure-vote-front:v1이라는 이미지를 빌드하고 myhelmacr ACR에 푸시합니다. ACR의 이름으로 바꿔
myhelmacr
야 합니다.az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
참고 항목
Helm 차트를 ACR로 가져올 수도 있습니다. 자세한 내용은 Helm 차트를 Azure 컨테이너 레지스트리로 푸시 및 끌어오기를 참조하세요.
Helm 차트 만들기
helm create
명령을 사용하여 Helm 차트를 생성합니다.helm create azure-vote-front
다음 예제와 같이 azure-vote-front/Chart.yaml을 업데이트하여 차트 리포지토리에서
https://charts.bitnami.com/bitnami
redis 차트에 대한 종속성을 추가하고 업데이트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: v1
명령을 사용하여
helm 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 차트를 사용하여 애플리케이션을 설치합니다
helm install
.helm install azure-vote-front azure-vote-front/
서비스가 공인 IP 주소를 반환하는 데 몇 분이 걸릴 수 있습니다. 인수와
kubectl get service
함께 명령을 사용하여 진행률을 모니터링합니다--watch
.kubectl get service azure-vote-front --watch
서비스가 준비되면 값이
EXTERNAL-IP
IP 주소로<pending>
변경됩니다. 조사식 프로세스를 중지kubectl
하려면 누릅니CTRL+C
다.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>
에서 애플리케이션의 부하 분산 장치로 이동합니다.
클러스터 삭제
리소스 그룹, AKS 클러스터, Azure 컨테이너 레지스트리, ACR에 저장된 컨테이너 이미지 및 az group delete 명령을 사용하여 매개 변수와 함께
--yes
모든 관련 리소스를 제거하여 삭제를--no-wait
확인하고 작업이 완료될 때까지 기다리지 않고 명령 프롬프트로 돌아갈 매개 변수를 제거합니다.az group delete --name myResourceGroup --yes --no-wait
참고 항목
시스템 할당 관리 ID(이 빠른 시작의 기본 ID 옵션)를 사용하여 AKS 클러스터를 만든 경우 ID는 플랫폼에서 관리되며 제거가 필요하지 않습니다.
서비스 주체를 사용하여 AKS 클러스터를 만든 경우 클러스터를 삭제할 때 서비스 주체가 제거되지 않습니다. 서비스 주체를 제거하려면 AKS 서비스 주체 고려 사항 및 삭제를 참조 하세요.
다음 단계
Helm 사용에 대한 자세한 내용은 Helm 설명서를 참조 하세요.