자습서: 기존 애플리케이션 게이트웨이를 사용하여 기존 AKS 클러스터에 애플리케이션 게이트웨이 수신 컨트롤러 추가 기능을 사용하도록 설정
Azure CLI 또는 포털을 사용하여 기존 AKS(Azure Kubernetes Services) 클러스터에 AGIC(애플리케이션 게이트웨이 수신 컨트롤러) 추가 기능을 사용하도록 설정할 수 있습니다. 이 자습서에서는 AGIC 추가 기능을 사용하여 별도의 가상 네트워크에 배포된 기존 애플리케이션 게이트웨이를 통해 Kubernetes 애플리케이션을 기존 AKS 클러스터에 공개하는 방법을 알아봅니다. 먼저 한 가상 네트워크에 AKS 클러스터를 만든 다음, 별도의 가상 네트워크에 애플리케이션 게이트웨이를 만들어 기존 리소스를 시뮬레이션합니다. 그런 다음, AGIC 추가 기능을 사용하도록 설정하고, 두 가상 네트워크를 피어링하고, AGIC 추가 기능을 사용하여 애플리케이션 게이트웨이를 통해 공개할 샘플 애플리케이션을 배포합니다. 동일한 가상 네트워크의 기존 애플리케이션 게이트웨이 및 기존 AKS 클러스터에 AGIC 추가 기능을 사용하도록 설정하는 경우 아래의 피어링 단계를 건너뛸 수 있습니다. 이 추가 기능은 Helm보다 훨씬 빠르게 AKS 클러스터에 AGIC를 배포하는 방법을 제공하며, 완전 관리형 환경도 제공합니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 리소스 그룹을 만듭니다.
- 새 AKS 클러스터를 만듭니다.
- 새 애플리케이션 게이트웨이를 만듭니다.
- Azure CLI를 통해 기존 AKS 클러스터에서 AGIC 추가 기능을 사용하도록 설정합니다.
- Azure Portal을 통해 기존 AKS 클러스터에서 AGIC 추가 기능을 사용하도록 설정합니다.
- 애플리케이션 게이트웨이 가상 네트워크를 AKS 클러스터 가상 네트워크와 피어합니다.
- AKS 클러스터에서 수신을 위해 AGIC를 사용하여 샘플 애플리케이션을 배포합니다.
- 애플리케이션 게이트웨이를 통해 애플리케이션에 연결할 수 있는지 확인
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
필수 조건
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
리소스 그룹 만들기
Azure에서 관련 리소스를 리소스 그룹에 할당합니다. az group create를 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 미국 동부 위치(지역)에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location eastus
새 AKS 클러스터 배포
이제 새 AKS 클러스터를 배포하고, AGIC 추가 기능을 사용하도록 설정하려는 기존 AKS 클러스터를 시뮬레이션합니다.
다음 예제에서는 Azure CNI 및 관리 ID를 사용하여 앞에서 만든 리소스 그룹 myResourceGroup에 새 AKS 클러스터 myCluster를 배포합니다.
az aks create --name myCluster --resource-group myResourceGroup --network-plugin azure --enable-managed-identity --generate-ssh-keys
위 명령에 대한 더 많은 매개 변수를 구성하려면 az aks create를 참조하세요.
참고 항목
노드 리소스 그룹은 MC_resource-group-name_cluster-name_location이라는 이름으로 만들어집니다.
새 애플리케이션 게이트웨이 배포
이제 새 애플리케이션 게이트웨이를 배포하고, AKS 클러스터 myCluster에 대한 트래픽 부하를 분산하는 데 사용하려는 기존 애플리케이션 게이트웨이를 시뮬레이션합니다. 애플리케이션 게이트웨이 이름은 myApplicationGateway이지만, 먼저 myPublicIp라는 공용 IP 리소스, 주소 공간이 10.0.0.0/16인 myVnet이라는 새 가상 네트워크, 주소 공간이 10.0.0.0/24인 mySubnet이라는 서브넷을 만들고 myPublicIp를 사용하여 mySubnet에 애플리케이션 게이트웨이를 배포해야 합니다.
주의
별도의 가상 네트워크에서 AKS 클러스터 및 애플리케이션 게이트웨이를 사용하는 경우 두 가상 네트워크의 주소 공간이 겹치지 않아야 합니다. AKS 클러스터가 배포하는 기본 주소 공간은 10.224.0.0/12입니다.
az network public-ip create --name myPublicIp --resource-group myResourceGroup --allocation-method Static --sku Standard
az network vnet create --name myVnet --resource-group myResourceGroup --address-prefix 10.0.0.0/16 --subnet-name mySubnet --subnet-prefix 10.0.0.0/24
az network application-gateway create --name myApplicationGateway --resource-group myResourceGroup --sku Standard_v2 --public-ip-address myPublicIp --vnet-name myVnet --subnet mySubnet --priority 100
참고 항목
AGIC(애플리케이션션 수신 컨트롤러) 추가 기능은 애플리케이션 게이트웨이 v2 SKU(표준 및 WAF)만 지원하고 애플리케이션 게이트웨이 v1 SKU는 지원하지 않습니다.
Azure CLI를 통해 기존 AKS 클러스터에서 AGIC 추가 기능 사용
Azure CLI를 계속 사용하려면 만든 AKS 클러스터 myCluster에서 AGIC 추가 기능을 계속 사용하도록 설정하고, 앞에서 만든 기존 애플리케이션 게이트웨이 myApplicationGateway를 사용하도록 AGIC 추가 기능을 지정합니다.
appgwId=$(az network application-gateway show --name myApplicationGateway --resource-group myResourceGroup -o tsv --query "id")
az aks enable-addons --name myCluster --resource-group myResourceGroup --addon ingress-appgw --appgw-id $appgwId
Azure Portal을 통해 기존 AKS 클러스터에서 AGIC 추가 기능 사용
- Azure Portal 홈페이지에서 AKS 클러스터 리소스로 이동합니다.
- 서비스 메뉴의 설정에서 네트워킹 가상 네트워크 통합을>선택합니다.
- Application Gateway 수신 컨트롤러에서 관리를 선택합니다.
- Application Gateway 수신 컨트롤러 페이지의 확인란을 선택하여 수신 컨트롤러를 사용하도록 설정한 다음 드롭다운 목록에서 기존 애플리케이션 게이트웨이를 선택합니다.
- 저장을 선택합니다.
Important
AKS 클러스터 리소스 그룹과 다른 리소스 그룹에서 애플리케이션 게이트웨이를 사용하는 경우 생성된 관리 ID ingressapplicationgateway-{AKSNAME} 애플리케이션 게이트웨이 리소스 그룹에 설정된 네트워크 기여자 및 읽기 권한자 역할이 있어야 합니다.
두 가상 네트워크를 피어링
한 가상 네트워크에 AKS 클러스터를 배포하고 다른 가상 네트워크에 애플리케이션 게이트웨이를 배포했으므로, 이제 트래픽이 애플리케이션 게이트웨이에서 클러스터의 Pod로 흐르도록 두 가상 네트워크를 피어링해야 합니다. 두 가상 네트워크를 피어링하려면 Azure CLI 명령을 두 번 실행하여 양방향으로 연결해야 합니다. 첫 번째 명령은 애플리케이션 게이트웨이 가상 네트워크에서 AKS 가상 네트워크로 피어링 연결을 만들고, 두 번째 명령은 반대 방향으로 피어링 연결을 만듭니다.
nodeResourceGroup=$(az aks show --name myCluster --resource-group myResourceGroup -o tsv --query "nodeResourceGroup")
aksVnetName=$(az network vnet list --resource-group $nodeResourceGroup -o tsv --query "[0].name")
aksVnetId=$(az network vnet show --name $aksVnetName --resource-group $nodeResourceGroup -o tsv --query "id")
az network vnet peering create --name AppGWtoAKSVnetPeering --resource-group myResourceGroup --vnet-name myVnet --remote-vnet $aksVnetId --allow-vnet-access
appGWVnetId=$(az network vnet show --name myVnet --resource-group myResourceGroup -o tsv --query "id")
az network vnet peering create --name AKStoAppGWVnetPeering --resource-group $nodeResourceGroup --vnet-name $aksVnetName --remote-vnet $appGWVnetId --allow-vnet-access
참고 항목
위의 "새 AKS 클러스터 배포" 단계에서 Azure CNI를 사용하여 AKS를 만들었습니다. Kubenet 모드를 사용하는 기존 AKS 클러스터가 있는 경우 POD IP로 향하는 패킷이 Pod를 호스팅하는 노드에 도달할 수 있도록 경로 테이블을 업데이트해야 합니다. 이를 수행하는 간단한 방법은 AKS에서 만든 동일한 경로 테이블을 Application Gateway의 서브넷에 연결합니다.
AGIC를 사용하여 샘플 애플리케이션 배포
이제 수신용 AGIC 추가 기능을 사용할 샘플 애플리케이션을 앞에서 만든 AKS 클러스터에 배포하고, 애플리케이션 게이트웨이를 AKS 클러스터에 연결합니다. 먼저 az aks get-credentials
명령을 실행하여 앞에서 배포한 AKS 클러스터에 대한 자격 증명을 가져옵니다.
az aks get-credentials --name myCluster --resource-group myResourceGroup
앞에서 만든 클러스터에 대한 자격 증명이 있으므로, 다음 명령을 실행하여 클러스터에 수신용 AGIC를 사용하는 샘플 애플리케이션을 설정합니다. AGIC는 이전에 해당 회람 규칙을 사용하여 설정한 애플리케이션 게이트웨이를 배포한 새 샘플 애플리케이션으로 업데이트합니다.
kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml
애플리케이션에 연결할 수 있는지 확인
애플리케이션 게이트웨이가 AKS 클러스터에 대한 트래픽을 제공하도록 설정되었으므로 이제 애플리케이션에 연결할 수 있는지 확인합니다. 먼저 수신 IP 주소를 가져옵니다.
kubectl get ingress
위의 명령을 실행하여 얻은 애플리케이션 게이트웨이의 IP 주소를 방문하거나 curl
로 확인하여 사용자가 만든 샘플 애플리케이션이 실행 중인지 확인합니다. 애플리게이션 게이트웨이가 업데이트를 가져오는 데 1분 정도 걸릴 수 있으므로, 애플리케이션 게이트웨이가 Azure Portal에서 "업데이트 중" 상태인 경우 완료될 때까지 기다렸다가 IP 주소에 연결합니다.
리소스 정리
더 이상 필요하지 않은 경우 myResourceGroup 및 MC_myResourceGroup_myCluster_eastus 리소스 그룹을 삭제하여 이 자습서에서 만든 모든 리소스를 삭제합니다.
az group delete --name myResourceGroup
az group delete --name MC_myResourceGroup_myCluster_eastus