你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:创建适用于容器的应用程序网关 - 自带部署

本指南假定你遵循自带部署策略,其中 ALB 控制器引用 Azure 中预创建的适用于容器的应用程序网关资源。 假定资源生命周期在 Azure 中管理,独立于 Kubernetes 中定义的内容。

先决条件

请确保已事先将 ALB 控制器部署到 Kubernetes 群集中。 如果尚未部署 ALB 控制器,可以遵循快速入门:部署适用于容器的应用程序网关 ALB 控制器指南。

创建适用于容器的应用程序网关资源

执行以下命令,创建适用于容器的应用程序网关资源。

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

创建前端资源

执行以下命令,创建适用于容器的应用程序网关前端资源。

FRONTEND_NAME='test-frontend'
az network alb frontend create -g $RESOURCE_GROUP -n $FRONTEND_NAME --alb-name $AGFC_NAME

创建关联资源

将子网委托给关联资源

要创建关联资源,首先需要引用适用于容器的应用程序网关的子网以建立连接。 确保适用于容器的应用程序网关关联的子网至少为 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)

为适用于容器的应用程序网关服务启用子网委派。 适用于容器的应用程序网关委派由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

向托管标识委派权限

ALB 控制器需要能够预配新的适用于容器的 Azure 应用程序网关,并加入供适用于容器的 Azure 应用程序网关关联资源使用的子网。

在此示例中,我们将容器配置管理的 AppGW 角色委派给资源组,将网络参与者角色委派给适用于容器的应用程序网关关联了网使用的子网,其中包括 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" 

创建关联资源

执行以下命令以创建关联资源,并将其连接到引用的子网。 创建适用于容器关联的应用程序网关需要 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 中部署了适用于容器的应用程序网关!

请尝试参考操作指南中的部分内容,部署示例应用,指南中演示了适用于容器的应用程序网关的一些负载均衡概念。