ARM 템플릿을 사용하여 KEDA(Kubernetes 이벤트 기반 자동 크기 조정) 추가 기능 설치
이 문서에서는 ARM 템플릿을 사용하여 AKS(Azure Kubernetes Service)에 KEDA(Kubernetes 이벤트 기반 자동 스케일링) 추가 기능을 배포하는 방법을 보여 줍니다.
Important
클러스터 Kubernetes 버전은 AKS 클러스터에 설치될 KEDA 버전을 결정합니다. 각 AKS 버전에 매핑되는 KEDA 버전을 확인하려면 Kubernetes 구성 요소 버전 테이블의 AKS 관리되는 추가 기능 열을 참조하세요.
GA Kubernetes 버전의 경우 AKS는 테이블에 있는 해당 KEDA 부 버전을 완벽히 지원합니다. Kubernetes 미리 보기 버전과 최신 KEDA 패치 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.
시작하기 전에
- Azure 구독이 필요합니다. Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
- Azure CLI를 설치해야 합니다.
- 이 문서에서는 기존 Azure 리소스 그룹이 있다고 가정합니다. 기존 리소스 그룹이 없으면
az group create
명령을 사용하여 만들 수 있습니다. - Kubernetes API 서버에 대한 액세스를 허용하도록 방화벽 규칙이 구성되어 있는지 확인합니다. 자세한 내용은 AKS(Azure Kubernetes Service) 클러스터에 대한 아웃바운드 네트워크 및 FQDN 규칙을 참조하세요.
- SSH 키 쌍 만들기
참고 항목
Microsoft Entra 워크로드 ID를 사용 중이고 워크로드 ID 전에 KEDA를 사용하도록 설정하는 경우 적절한 환경 변수를 주입할 수 있도록 KEDA 연산자 Pod를 다시 시작해야 합니다.
kubectl rollout restart deployment keda-operator -n kube-system
을 실행하여 Pod를 다시 시작합니다.kubectl get pod -n kube-system
을 사용하여keda-operator
로 시작하는 Pod를 찾아 KEDA 연산자 Pod를 가져옵니다.kubectl describe pod <keda-operator-pod> -n kube-system
을 실행하여 환경 변수를 성공적으로 주입했는지 확인합니다.Environment
아래AZURE_TENANT_ID
,AZURE_FEDERATED_TOKEN_FILE
,AZURE_AUTHORITY_HOST
값이 표시됩니다.
SSH 키 쌍 만들기
Azure Cloud Shell로 이동합니다.
az sshkey create
명령을 사용하여 SSH 키 쌍을 만듭니다.az sshkey create --name <sshkey-name> --resource-group <resource-group-name>
ARM 템플릿으로 KEDA 추가 기능 사용
AKS 클러스터용 ARM 템플릿을 배포합니다.
템플릿 편집을 선택합니다.
다음 예에 표시된 대로 ARM 템플릿에서
workloadAutoScalerProfile
필드를 지정하여 KEDA 추가 기능을 사용하도록 설정합니다."workloadAutoScalerProfile": { "keda": { "enabled": true } }
저장을 선택합니다.
ARM 템플릿에 필요한 값을 업데이트합니다.
- 구독: 배포에 사용할 Azure 구독을 선택합니다.
- 리소스 그룹: 배포에 사용할 리소스 그룹을 선택합니다.
- 지역: 배포에 사용할 지역을 선택합니다.
- DNS 접두사: 클러스터에 사용할 고유한 DNS 이름을 입력합니다.
- Linux 관리 사용자 이름: 클러스터의 사용자 이름을 입력합니다.
- SSH 공개 키 원본: Azure에 저장된 기존 키 사용을 선택합니다.
- 키 저장: 문서 앞부분에서 만든 키 쌍을 선택합니다.
검토 + 만들기>만들기를 차례로 선택합니다.
AKS 클러스터에 연결
로컬 디바이스에서 Kubernetes 클러스터에 연결하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다.
Azure Cloud Shell을 사용하는 경우 kubectl
이 이미 설치되어 있습니다. az aks install-cli
명령을 사용하여 kubectl을 로컬로 설치할 수도 있습니다.
kubectl
을 구성하여 Kubernetes 클러스터에 연결하고 az aks get-credentials 명령을 사용합니다. 다음 예제에서는 MyResourceGroup에서 MyAKSCluster라는 이름의 AKS 클러스터를 위한 자격 증명을 가져옵니다.
az aks get-credentials --resource-group MyResourceGroup --name MyAKSCluster
배포 예제
다음 코드 조각은 3개의 DS2_v5
노드로 구성된 단일 노드 풀로 활성화된 KEDA를 통해 클러스터를 만드는 샘플 배포입니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"apiVersion": "2023-03-01",
"dependsOn": [],
"type": "Microsoft.ContainerService/managedClusters",
"location": "westcentralus",
"name": "myAKSCluster",
"properties": {
"kubernetesVersion": "1.27",
"enableRBAC": true,
"dnsPrefix": "myAKSCluster",
"agentPoolProfiles": [
{
"name": "agentpool",
"osDiskSizeGB": 200,
"count": 3,
"enableAutoScaling": false,
"vmSize": "Standard_D2S_v5",
"osType": "Linux",
"type": "VirtualMachineScaleSets",
"mode": "System",
"maxPods": 110,
"availabilityZones": [],
"nodeTaints": [],
"enableNodePublicIP": false
}
],
"networkProfile": {
"loadBalancerSku": "standard",
"networkPlugin": "kubenet"
},
"workloadAutoScalerProfile": {
"keda": {
"enabled": true
}
}
},
"identity": {
"type": "SystemAssigned"
}
}
]
}
KEDA를 사용하여 앱 스케일링 시작
CRD(사용자 지정 리소스 정의)를 사용하여 KEDA로 앱을 자동 크기 조정할 수 있습니다. 자세한 내용은 KEDA 설명서를 참조하세요.
리소스 제거
az group delete
명령을 사용하여 리소스 그룹 및 모든 관련 리소스를 제거합니다.az group delete --name <resource-group-name>
다음 단계
이 문서에서는 AKS 클러스터에 KEDA 추가 항목을 설치한 다음, 설치 및 실행 중인지 확인하는 방법을 보여 줍니다. 클러스터에 KEDA 추가 기능이 설치되어 있으면 샘플 애플리케이션을 배포하여 앱 스케일링을 시작할 수 있습니다.
KEDA 문제 해결에 대한 자세한 내용은 KEDA(Kubernetes Event-driven Autoscaling) 부가기능 문제 해결을 참조하세요.
자세한 내용은 업스트림 KEDA 문서를 참조하세요.