빠른 시작: 컨테이너용 Application Gateway 만들기 - BYOD(Bring Your Own Deployment)
이 가이드에서는 ALB 컨트롤러가 Azure에서 미리 작성된 컨테이너용 Application Gateway 리소스를 참조하는 BYOD (Bring Your Own Deployment)를 따르고 있다고 가정합니다. 리소스 수명 주기는 Kubernetes 내에서 정의된 것과는 별개로 Azure에서 관리되는 것으로 간주됩니다.
필수 조건
먼저 Kubernetes 클러스터에 ALB 컨트롤러를 배포했는지 확인합니다. ALB 컨트롤러를 아직 배포하지 않은 경우 빠른 시작: 컨트롤러용 Application Gateway ALB 컨테이너 배포 가이드를 따를 수 있습니다.
컨테이너용 Application Gateway 리소스 만들기
다음 명령을 실행하여 컨테이너용 Application Gateway 리소스를 만듭니다.
RESOURCE_GROUP='<your resource group name>'
AGFC_NAME='alb-test' # Name of the Application Gateway for Containers resource to be created
az network alb create -g $RESOURCE_GROUP -n $AGFC_NAME
프런트 엔드 리소스 만들기
다음 명령을 실행하여 컨테이너용 Application Gateway 프런트 엔드 리소스를 만듭니다.
FRONTEND_NAME='test-frontend'
az network alb frontend create -g $RESOURCE_GROUP -n $FRONTEND_NAME --alb-name $AGFC_NAME
연결 리소스 만들기
서브넷을 연결 리소스에 위임
연결 리소스를 만들려면 먼저 연결을 설정할 컨테이너용 Application Gateway에 대한 서브넷을 참조합니다. 컨테이너용 Application Gateway 연결에 대한 서브넷이 C 클래스 이상(/24 또는 더 작은 CIDR 접두사)인지 확인합니다. 이 단계에서는 기존 서브넷을 다시 사용하고 서브넷 위임을 사용하도록 설정할 수 있습니다. 또는 새 VNET, 서브넷을 만들고 서브넷 위임을 사용하도록 설정할 수 있습니다.
기존 서브넷을 참조하려면 다음 명령을 실행하여 이후 단계에서 서브넷 참조에 대한 변수를 설정합니다.
VNET_NAME='<name of the virtual network to use>'
VNET_RESOURCE_GROUP='<the resource group of your VNET>'
ALB_SUBNET_NAME='subnet-alb' # subnet name can be any non-reserved subnet name (i.e. GatewaySubnet, AzureFirewallSubnet, AzureBastionSubnet would all be invalid)
컨테이너용 Application Gateway 서비스에 대해 서브넷 위임을 사용하도록 설정합니다. 컨테이너용 Application Gateway에 대한 위임은 Microsoft.ServiceNetworking/trafficControllers 리소스 종류로 식별됩니다.
az network vnet subnet update \
--resource-group $VNET_RESOURCE_GROUP \
--name $ALB_SUBNET_NAME \
--vnet-name $VNET_NAME \
--delegations 'Microsoft.ServiceNetworking/trafficControllers'
ALB_SUBNET_ID=$(az network vnet subnet list --resource-group $VNET_RESOURCE_GROUP --vnet-name $VNET_NAME --query "[?name=='$ALB_SUBNET_NAME'].id" --output tsv)
echo $ALB_SUBNET_ID
관리 ID에 사용 권한 위임
ALB 컨트롤러에는 새 컨테이너용 Application Gateway 리소스를 프로비전하는 기능과 컨테이너용 Application Gateway 연결 리소스용 서브넷에 조인하는 기능이 필요합니다.
이 예제에서는 AppGW for Containers Configuration Manager 역할을 리소스 그룹에 위임하고 네트워크 기여자 역할을 컨테이너용 Application Gateway 연결 서브넷에서 사용되는 서브넷에 위임합니다. 여기에는 Microsoft.Network/virtualNetworks/subnets/join/action 권한이 포함됩니다.
원할 경우 Microsoft.Network/virtualNetworks/subnets/join/action 권한으로 사용자 지정 역할을 만들고 할당하여 네트워크 기여자 역할에 포함된 다른 권한을 제거할 수 있습니다. 서브넷 권한 관리에 대해 자세히 알아봅니다.
IDENTITY_RESOURCE_NAME='azure-alb-identity'
resourceGroupId=$(az group show --name $RESOURCE_GROUP --query id -otsv)
principalId=$(az identity show -g $RESOURCE_GROUP -n $IDENTITY_RESOURCE_NAME --query principalId -otsv)
# Delegate AppGw for Containers Configuration Manager role to RG containing Application Gateway for Containers resource
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $resourceGroupId --role "fbc52c3f-28ad-4303-a892-8a056630b8f1"
# Delegate Network Contributor permission for join to association subnet
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $ALB_SUBNET_ID --role "4d97b98b-1d4f-4787-a291-c67834d212e7"
연결 리소스 만들기
다음 명령을 실행하여 연결 리소스를 만들고 참조된 서브넷에 연결합니다. 컨테이너용 Application Gateway 연결을 만드는 데 5~6분이 걸릴 수 있습니다.
ASSOCIATION_NAME='association-test'
az network alb association create -g $RESOURCE_GROUP -n $ASSOCIATION_NAME --alb-name $AGFC_NAME --subnet $ALB_SUBNET_ID
다음 단계
축하합니다. 클러스터에 ALB 컨트롤러를 설치하고 Azure에서 컨테이너용 Application Gateway 리소스를 배포했습니다.
샘플 애플리케이션을 배포하기 위한 몇 가지 방법 가이드를 사용해 보세요. 이 가이드에서는 컨테이너용 Application Gateway의 부하 분산 개념을 보여 줍니다.