적용 대상: ✔️ AKS 자동화
Azure Kubernetes Service (AKS) 자동 AKS 클러스터 설정 및 작업을 자동화하고 모범 사례 구성을 포함하는 관리되는 Kubernetes 환경입니다. 또한 AKS Automatic에는 5분 이내에 99.9% 적격 Pod 준비 작업이 완료되도록 보장하는 [Pod 준비 SLA][azure-sla]가 포함되어 있으므로 애플리케이션에 대한 안정적이고 자동 복구 가능한 인프라를 보장합니다. 이 빠른 시작에서 다음을 수행하는 방법을 알아봅니다.
- AKS 자동 클러스터를 배포합니다.
- 소매 시나리오를 시뮬레이션하는 마이크로 서비스 및 웹 프런트 엔드 그룹을 사용하여 샘플 다중 컨테이너 애플리케이션을 실행합니다.
시작하기 전 주의 사항:
- 이 빠른 시작에서는 Kubernetes 기본 개념을 이해하고 있다고 가정합니다. 자세한 내용은 Azure Kubernetes Service (AKS) 대한 핵심 개념을 참조하세요.
- AKS 자동 설정은 AKS 클러스터에서 Azure Policyt을 활성화하지만,
Microsoft.PolicyInsights리소스 공급자를 구독 내에서 미리 등록해야 합니다. 자세한 내용은 Azure 리소스 공급자 및 형식 참조하세요.
Azure Cloud Shell Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell 시작하기를 참조하세요.
CLI 참조 명령을 로컬로 실행하려면 Azure CLI를 설치하세요. Windows 또는 macOS에서 실행하는 경우 Docker 컨테이너에서 Azure CLI 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI 실행하는 방법 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI 사용하여 Azure 인증을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은
Azure CLI 참조하세요. az version을 실행하여 설치된 버전과 관련 종속 라이브러리를 확인합니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
- Azure CLI 버전 2.77.0 이상.
az --version명령을 사용하여 버전을 찾으세요. 설치 혹은 업그레이드를 진행하려면 Azure CLI를 참조하세요. Azure Cloud Shell 사용하는 경우 최신 버전이 이미 설치되어 있습니다. - 여러 Azure 구독이 있는 경우 적절한 구독 ID를 선택하여
az account set명령을 사용하여 리소스에 요금을 청구합니다.
- Bicep 파일을 배포하려면 만든 리소스에 대한 쓰기 액세스 권한과
Microsoft.Resources/deployments리소스 유형의 모든 작업에 액세스해야 합니다. 예를 들어 VM(가상 머신)을 만들려면Microsoft.Compute/virtualMachines/write및Microsoft.Resources/deployments/*권한이 필요합니다. 역할 및 권한 목록은 Azure 기본 제공 역할 참조하세요.
제한점
- AKS 자동 클러스터의 시스템 노드 풀은 3개 이상의 사용 가능 영역, 임시 OS 디스크 및 Azure Linux OS를 지원하는 Azure 지역에 배포해야 합니다.
- AKS Automatic은 다음 지역에서 사용할 수 있습니다.
australiaeast,austriaeast,belgiumcentral,brazilsouth,canadacentral,centralindia,centralus,chilecentral,denmarkeast,eastasia,eastus,eastus2,francecentral,germanywestcentral,indonesiacentral,israelcentral,italynorth,japaneast,japanwest,koreacentral,malaysiawest,mexicocentral,newzealandnorth,northcentralus,northeurope,norwayeast,polandcentral,southafricanorth,southcentralus,southeastasia,spaincentral,swedencentral,switzerlandnorth,uaenorth,uksouth,westeurope,westus,westus2,westus3. - AKS 자동 클러스터에는 node 리소스 그룹 잠금 미리 구성되어 있어 MC_ 리소스 그룹을 변경할 수 없으므로 기본 Private DNS 영역에서 가상 네트워크 링크가 차단됩니다. VNet 간 또는 사용자 지정 DNS 시나리오의 경우 사용자 지정 가상 네트워크에서 프라이빗 Azure Kubernetes Service (AKS) 자동 클러스터 만들기 따라 사용자 지정 네트워크 및 프라이빗 DNS를 사용합니다.
중요합니다
AKS Automatic은 구독에서 사용할 수 있는 용량에 따라 노드 풀에 대한 system 가상 머신 크기를 동적으로 선택하려고 시도합니다. 구독이 클러스터를 배포하는 지역에서 다음 크기 중 하나로 16개 vCPU에 대한 할당량이 있는지 확인하십시오: Standard_D4lds_v5, Standard_D4ads_v5, Standard_D4ds_v5, Standard_D4d_v5, Standard_D4d_v4, Standard_DS3_v2, Standard_DS12_v2, Standard_D4alds_v6, Standard_D4lds_v6, 또는 Standard_D4alds_v5. Azure 포털을 통해 특정 VM 제품군에 대한 할당량을 확인하고 할당량 증가 요청 제출할 수 있습니다.
추가 질문이 있는 경우 문제 해결 문서를 통해 자세히 알아보세요.
리소스 그룹 만들기
Azure 리소스 그룹은 Azure 리소스가 배포되고 관리되는 논리 그룹입니다.
az group create 명령을 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location eastus
다음 샘플 출력은 리소스 그룹을 성공적으로 만드는 것과 유사합니다.
{
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
AKS 자동 클러스터 만들기
az aks create 명령을 사용하여 --sku 매개 변수가 automatic로 설정된 AKS 자동 클러스터를 만듭니다. 다음 예제에서는 Managed Prometheus 및 Container Insights 통합을 사용하도록 설정된 myAKSAutomaticCluster 라는 클러스터를 만듭니다.
az aks create \
--resource-group myResourceGroup \
--name myAKSAutomaticCluster \
--sku automatic
몇 분 후에 명령이 완료되고 클러스터에 대한 JSON 형식 정보를 반환합니다.
자동 Kubernetes 클러스터 만들기
AKS 자동 클러스터를 만들려면 Kubernetes 서비스를 검색하여 선택합니다. 그러면 Kubernetes 센터(미리 보기) 페이지로 이동합니다.
Kubernetes 센터(미리 보기) 페이지에서자동 Kubernetes 클러스터>를 선택합니다.
기본 사항 탭에서 필요한 모든 필드(구독, 리소스 그룹, Kubernetes 클러스터 이름 및 지역)를 입력한 다음 다음을 선택합니다.
모니터링 탭에서 Azure Monitor(Container Insights), 관리되는 Prometheus, Grafana 대시보드, ACNS(Container Network Observability) 및 경고에서 원하는 모니터링 구성을 선택한 다음, Next 선택합니다.
고급 탭에서 원하는 고급 구성인 프라이빗 액세스, Azure 가상 네트워킹, 관리 ID, ACNS(Container Network Security), 및 관리되는 Kubernetes 네임스페이스를 선택한 후, 검토 + 만들기를 선택합니다.
검토 + 만들기 탭에서 구성을 검토한 다음 만들기를 선택하여 AKS 자동 클러스터를 배포합니다.
GitHub 첫 번째 애플리케이션 구성을 시작하고 자동화된 배포 파이프라인을 설정합니다.
Bicep 파일 검토
다음 Bicep 파일은 AKS 자동 클러스터를 정의합니다.
@description('The name of the managed cluster resource.')
param clusterName string = 'myAKSAutomaticCluster'
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
name: clusterName
location: location
sku: {
name: 'Automatic'
}
properties: {
agentPoolProfiles: [
{
name: 'systempool'
mode: 'System'
count: 3
}
]
}
identity: {
type: 'SystemAssigned'
}
}
Bicep 파일에 정의된 리소스에 대한 자세한 내용은 Microsoft.ContainerService/managedClusters 참조 문서를 참조하세요.
Bicep 파일 배포
Bicep 파일을 main.bicep로 로컬 컴퓨터에 저장합니다.
중요합니다
Bicep 파일은
clusterName매개 변수를 문자열 myAKSAutomaticCluster 설정합니다. 다른 클러스터 이름을 사용하려면 파일을 컴퓨터에 저장하기 전에 문자열을 기본 클러스터 이름으로 업데이트해야 합니다.[
az deployment group create][az-deployment-group-create] 명령을 사용하여 Bicep 파일을 배포합니다.az deployment group create --resource-group myResourceGroup --template-file main.bicepAKS 클러스터를 만드는 데 몇 분 정도 걸립니다. 다음 단계로 이동하기 전에 클러스터가 성공적으로 배포될 때까지 기다립니다.
클러스터에 연결
Kubernetes 클러스터를 관리하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. Azure Cloud Shell 사용하는 경우 kubectl 이미 설치되어 있습니다.
kubectl을/를 로컬에 설치하려면 az aks install-cli 명령을 사용하세요. AKS 자동 클러스터는 Microsoft Entra ID로 Kubernetes 역할 기반 액세스 제어 (RBAC)에 대해 구성됩니다.
kubectl명령을 사용하여 Kubernetes 클러스터에 연결하도록az aks get-credentials을 구성합니다. 이 명령은 자격 증명을 다운로드하고 이를 사용하도록 Kubernetes CLI를 구성합니다.az aks get-credentials --resource-group myResourceGroup --name myAKSAutomaticClusterkubectl get명령을 사용하여 클러스터에 대한 연결을 확인합니다. 이 명령은 클러스터 노드 목록을 반환합니다.kubectl get nodes다음 샘플 출력은 로그인하라는 메시지가 표시되는 방법을 보여줍니다.
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.로그인한 후 다음 샘플 출력은 관리되는 시스템 노드 풀을 보여 줍니다. 노드 상태가 준비 상태인지 확인합니다.
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 2m26s v1.28.5 aks-nodepool1-12345678-vmss000001 Ready agent 2m26s v1.28.5 aks-nodepool1-12345678-vmss000002 Ready agent 2m26s v1.28.5
애플리케이션 배포
애플리케이션을 배포하려면 매니페스트 파일을 사용하여 AKS Store 애플리케이션 실행하는 데 필요한 모든 개체를 만듭니다. Kubernetes 매니페스트 파일은 실행할 컨테이너 이미지와 같은 클러스터의 원하는 상태를 정의합니다. 매니페스트에는 다음 Kubernetes 배포 및 서비스가 포함됩니다.
- 스토어 전면: 고객이 제품을 보고 주문을 할 수 있는 웹 애플리케이션입니다.
- 제품 서비스: 제품 정보를 표시합니다.
- 주문 서비스: 주문합니다.
- Rabbit MQ: 주문 큐에 대한 메시지 큐입니다.
비고
프로덕션을 위한 영구 스토리지 없이 Rabbit MQ와 같은 상태 저장 컨테이너를 실행하지 않는 것이 좋습니다. 여기서는 단순성을 위해 사용되지만 Azure Cosmos DB 또는 Azure Service Bus 같은 관리되는 서비스를 사용하는 것이 좋습니다.
Kubernetes 리소스를 배포할 네임스페이스
aks-store-demo를 생성합니다.kubectl create ns aks-store-demo명령
kubectl apply을(를) 사용하여 네임스페이스aks-store-demo에 애플리케이션을 배포합니다. 배포를 정의하는 YAML 파일은 GitHub.kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yaml다음 샘플 출력은 배포 및 서비스를 보여 줍니다.
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created ingress/store-front created
애플리케이션 테스트
애플리케이션이 실행되면 Kubernetes 서비스는 애플리케이션 프런트 엔드를 인터넷에 노출합니다. 이 프로세스를 완료하는 데 몇 분 정도 걸릴 수 있습니다.
kubectl get Pods 명령을 사용하여 배포된 Pod의 상태를 확인합니다. 계속하기 전에 모든 Pod가
Running상태인지 확인하세요. 배포하는 첫 번째 워크로드인 경우 노드 자동 프로비저닝 에서 Pod를 실행하는 노드 풀을 만드는 데 몇 분 정도 걸릴 수 있습니다.kubectl get pods -n aks-store-demo스토어 프런트 애플리케이션에 대한 공용 IP 주소를 확인합니다. 인수를 사용하여 kubectl get service 명령으로 진행 상황을 모니터링합니다
--watch.kubectl get ingress store-front -n aks-store-demo --watch서비스의 ADDRESS 출력은 처음에 비어 있습니다.
NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 80 12m주소가 빈 주소에서 실제 공용 IP 주소로 변경되면
CTRL-C을 사용하여kubectl관찰 프로세스를 중지하십시오.다음 샘플 출력은 서비스에 할당된 유효한 공용 IP 주소를 보여줍니다.
NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 4.255.22.196 80 12m인그레스의 외부 IP 주소로 웹 브라우저를 열고, Azure 스토어 앱이 작동하는 모습을 확인해 보세요.
클러스터 삭제
AKS 자습서 진행하지 않으려면 불필요한 리소스를 정리하여 Azure 요금을 방지합니다.
az group delete 명령을 사용하여 리소스 그룹, 컨테이너 서비스 및 모든 관련 리소스를 제거합니다.
az group delete --name myResourceGroup --yes --no-wait
비고
AKS 클러스터는 이 빠른 시작에서 사용되는 기본 ID 옵션인 시스템이 할당한 관리 ID를 사용하여 만들어졌습니다. 플랫폼은 이 ID를 관리하므로 수동으로 제거할 필요가 없습니다.
관련 콘텐츠
이 빠른 시작에서는 AKS Automatic 을 사용하여 Kubernetes 클러스터를 배포한 다음, 간단한 다중 컨테이너 애플리케이션을 배포했습니다. 이 샘플 응용 프로그램은 데모 목적으로만 사용되며 Kubernetes 응용 프로그램에 대한 모든 모범 사례를 나타내지는 않습니다. 프로덕션용 AKS를 사용하여 전체 솔루션을 만드는 방법에 대한 지침은 AKS 솔루션 지침을 참조하세요.
AKS Automatic 기능에 대해 더 알아보려면 Azure Kubernetes Service (AKS) 자동화 소개를 참조하세요.