你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure Front Door 创建指向 Azure 容器应用的专用链接(预览版)
本文介绍如何使用专用链接(而不是公共 Internet)直接从 Azure Front Door 连接到 Azure 容器应用。 在本教程中,你将创建 Azure 容器应用工作负载配置文件环境 - Azure Front Door,并通过专用链接安全地连接它们。 然后验证容器应用与 Azure Front Door 之间的连接。
先决条件
具有活动订阅的 Azure 帐户。
- 如果没有帐户,可以免费创建一个帐户。
此功能仅在 Azure CLI 中提供。 为确保运行的是最新版本的 Azure CLI,请运行以下命令。
az upgrade
适用于 Azure CLI 的 Azure 容器应用扩展的最新版本。 为确保运行的是最新版本,请运行以下命令。
az extension add --name containerapp --upgrade --allow-preview true
注意
从 2024 年 5 月开始,Azure CLI 扩展不再默认启用预览功能。 要访问容器应用预览功能,请使用
--allow-preview true
安装容器应用扩展。此功能仅在工作负载配置文件环境中受支持。
有关先决条件和设置的详细信息,请参阅快速入门:使用 containerapp up 部署第一个容器应用。
设置环境变量。
设置以下环境变量。
RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
AFD_PROFILE="my-afd-profile"
AFD_ENDPOINT="my-afd-endpoint"
AFD_ORIGIN_GROUP="my-afd-origin-group"
AFD_ORIGIN="my-afd-origin"
AFD_ROUTE="my-afd-route"
创建 Azure 资源组
创建一个资源组来组织与你的容器应用部署相关的服务。
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
创建环境
创建容器应用环境。
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
检索环境 ID。 你将使用此 ID 配置环境。
ENVIRONMENT_ID=$(az containerapp env show \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --query "id" \ --output tsv)
禁用环境的公用网络访问。
az containerapp env update \ --id $ENVIRONMENT_ID \ --public-network-access Disabled
部署容器应用
运行以下命令以在你的环境中部署容器应用。
az containerapp up \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image mcr.microsoft.com/k8se/quickstart:latest \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
检索容器应用终结点。
ACA_ENDPOINT=$(az containerapp show \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.configuration.ingress.fqdn \ --output tsv)
如果浏览到容器应用终结点,你会收到“
ERR_CONNECTION_CLOSED
”,因为容器应用环境已禁用公共访问。 因此,应使用 AFD 终结点访问容器应用。
创建 Azure Front Door 配置文件
创建 AFD 配置文件。 具有 SKU Standard_AzureFrontDoor
的 AFD 配置文件中的源不支持专用链接。
az afd profile create \
--profile-name $AFD_PROFILE \
--resource-group $RESOURCE_GROUP \
--sku Premium_AzureFrontDoor
创建 Azure Front Door 终结点
将终结点添加到 AFD 配置文件。
az afd endpoint create \
--resource-group $RESOURCE_GROUP \
--endpoint-name $AFD_ENDPOINT \
--profile-name $AFD_PROFILE \
--enabled-state Enabled
创建 Azure Front Door 源组
创建 AFD 源组。
az afd origin-group create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--profile-name $AFD_PROFILE \
--probe-request-type GET \
--probe-protocol Http \
--probe-interval-in-seconds 60 \
--probe-path / \
--sample-size 4 \
--successful-samples-required 3 \
--additional-latency-in-milliseconds 50
创建 Azure Front Door 源
将 AFD 源添加到源组。
az afd origin create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--origin-name $AFD_ORIGIN \
--profile-name $AFD_PROFILE \
--host-name $ACA_ENDPOINT \
--origin-host-header $ACA_ENDPOINT \
--priority 1 \
--weight 500 \
--enable-private-link true \
--private-link-location $LOCATION \
--private-link-request-message "AFD Private Link Request" \
--private-link-resource $ENVIRONMENT_ID \
--private-link-sub-resource-type managedEnvironments
列出专用终结点连接
运行以下命令,列出环境的专用终结点连接。
az network private-endpoint-connection list \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --type Microsoft.App/managedEnvironments
记录响应中的专用终结点连接资源 ID。 专用终结点连接的
properties.privateLinkServiceConnectionState.description
值为AFD Private Link Request
。 专用终结点连接资源 ID 如下所示。/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
不要将其与专用终结点 ID 混淆,后者如下所示。
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
批准专用终结点连接
运行以下命令批准连接。 将<占位符>替换为在上一部分中记录的专用终结点连接资源 ID。
az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>
添加路由
运行以下命令将之前创建的终结点映射到源组。 Azure 容器应用上的专用终结点仅支持入站 HTTP 流量。 不支持 TCP 流量。
az afd route create \
--resource-group $RESOURCE_GROUP \
--profile-name $AFD_PROFILE \
--endpoint-name $AFD_ENDPOINT \
--forwarding-protocol MatchRequest \
--route-name $AFD_ROUTE \
--https-redirect Enabled \
--origin-group $AFD_ORIGIN_GROUP \
--supported-protocols Http Https \
--link-to-default-domain Enabled
从 Azure Front Door 访问容器应用
检索 AFD 终结点的主机名。
az afd endpoint show \ --resource-group $RESOURCE_GROUP \ --profile-name $AFD_PROFILE \ --endpoint-name $AFD_ENDPOINT \ --query hostName \ --output tsv
主机名如以下示例所示。
my-afd-endpoint.<HASH>.b01.azurefd.net
浏览到主机名。 你会看到快速入门容器应用映像的输出。
全局部署 AFD 配置文件需要几分钟时间,因此,如果一开始没有看到预期输出,请等待几分钟,然后刷新。
清理资源
如果不打算继续使用此应用程序,可以删除 my-container-apps 资源组。 这样会删除 Azure 容器应用实例和所有关联的服务。 还会删除容器应用服务自动创建的资源组,其中包含自定义网络组件。
注意
以下命令删除指定的资源组及其包含的所有资源。 如果指定的资源组中存在本指南范围外的资源,这些资源也会被删除。
az group delete --name $RESOURCE_GROUP