本文介绍如何使用专用链接(而不是公共 Internet)直接从 Azure Front Door 连接到 Azure 容器应用。 在本教程中,你将创建 Azure 容器应用工作负载配置文件环境 - Azure Front Door,并通过专用链接安全地连接它们。 然后验证容器应用与 Azure Front Door 之间的连接。
先决条件
具有活动订阅的 Azure 帐户。
- 如果没有帐户,可以免费创建一个帐户。
此功能仅在工作负载配置文件环境中受支持。
确保已将
Microsoft.Cdn
资源提供程序注册到订阅中。- 首先请登录到 Azure 门户。
- 浏览到订阅页,然后选择 “设置>资源提供程序”。
- 从提供程序列表中选择 Microsoft.Cdn 。
- 选择“注册”。
创建容器应用
创建一个资源组来组织与你的容器应用部署相关的服务。
在顶部搜索栏中搜索“容器应用”。
在搜索结果中选择容器应用。
选择“创建”按钮。
在“ 创建容器应用 ”页的“ 基本信息 ”选项卡中,执行以下作。
设置 行动 订阅 选择 Azure 订阅。 资源组 选择 “创建新资源组 ”链接并输入 my-container-apps。 容器应用名称 输入 my-container-app。 部署源 选择“容器映像”。 区域 选择“美国中部”。 在 “创建容器应用环境” 字段中,选择“ 创建新环境 ”链接。
在“ 创建容器应用环境” 页的“ 基本信息 ”选项卡中,输入以下值:
设置 价值 环境名称 输入“my-environment”。 区域冗余 选择禁用 选择“网络”选项卡。
将 公用网络访问 设置为 “禁用”:阻止来自公共 Internet 的所有传入流量。
将“使用自己的虚拟网络”设置为“否”。
将 “启用专用终结点 ”保留为 “否”。
选择 创建。
在 “创建容器应用 ”页中,选择“ 容器 ”选项卡。
选择“使用快速入门图像”。
部署容器应用
选择页面底部的“查看和创建”。
如果未找到任何错误,则会启用“创建”按钮。
如果存在错误,则包含错误的任何选项卡都标有红点。 导航到相应的选项卡。包含错误的字段以红色突出显示。 修复所有错误后,再次选择“查看并创建”。
选择 创建。
此时会显示包含消息“部署正在进行”的页面。 部署成功完成后,会看到消息:“部署已完成”。
验证部署
选择“转到资源”,查看新的容器应用。
选择“应用程序 URL”旁边的链接以查看应用程序。
浏览到容器应用终结点时,会看到以下消息:
The public network access on this managed environment is disabled. To connect to this managed environment, please use the Private Endpoint from inside your virtual network. To learn more https://aka.ms/PrivateEndpointTroubleshooting.
而是会使用 Azure Front Door 终结点访问容器应用。
创建 Azure Front Door 配置文件和终结点
在顶部搜索栏中搜索 Front Door 。
在搜索结果中选择 Front Door 和 CDN 配置文件。
选择 “Azure Front Door ”和“ 快速创建”。
选择 “继续”以创建 Front Door 按钮。
在“创建 Front Door 配置文件”页的“基本信息”选项卡中,执行以下操作。
设置 行动 资源组 选择“my-container-apps”。 名称 输入 my-afd-profile。 层 选择“高级”。 标准层上的 Azure Front Door 源不支持专用链接。 终结点名称 输入 my-afd-endpoint。 来源类型 选择“容器应用”。 源主机名 输入容器应用的主机名。 主机名如以下示例所示: my-container-app.orangeplant-77e5875b.centralus.azurecontainerapps.io
启用专用链接服务 启用此设置。 区域 选择(美国)美国中部。 目标子资源 选择 managedEnvironments。 请求消息 输入 AFD 专用链接请求。 选择“查看 + 创建”。
选择 创建。
部署完成后,选择“ 转到资源”。
在 Front Door 和 CDN 配置文件概述页中,找到终结点主机名。 如以下示例所示。 记下此主机名。
my-afd-endpoint.<HASH>.b01.azurefd.net
批准专用终结点连接请求
打开您之前创建的名为my-environment的环境的概述页面。
展开 设置>网络。
可以看到专用终结点连接请求的链接。 例如,
1 private endpoint
。 选择此链接。在 “专用终结点连接 ”页中,使用说明
AFD Private Link Request
批准每个专用终结点连接请求。注意
Azure Front Door 存在一个已知问题,其中可能会创建多个专用终结点连接请求。
从 Azure Front Door 访问容器应用
浏览到之前所记录的 Azure Front Door 终结点主机名。 你会看到快速入门容器应用映像的输出。 全局部署可能需要几分钟时间才能部署,因此如果没有看到预期的输出,请等待几分钟,然后刷新。
清理资源
如果不打算继续使用此应用程序,可以通过移除资源组来删除容器应用和所有关联的服务。
从“概述”部分选择“my-container-apps”资源组。
选择资源组“概述”顶部的“删除资源组”按钮。
在“确定要删除 "my-container-apps" 吗”确认对话中输入资源组名称“my-container-apps”。
选择 删除。
删除资源组的过程可能需要几分钟才能完成。
先决条件
具有活动订阅的 Azure 帐户。
- 如果没有帐户,可以免费创建一个帐户。
若要确保运行的是最新版本的 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 配置文件
确保已将
Microsoft.Cdn
资源提供程序注册到订阅中。az provider register --namespace Microsoft.Cdn
创建 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 与专用终结点 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
浏览到主机名。 你会看到快速入门容器应用映像的输出。
如果一开始看不到预期的输出,请等待几分钟,然后刷新。
清理资源
如果不打算继续使用此应用程序,可以删除 my-container-apps 资源组。 此作将删除 Azure 容器应用实例和所有关联的服务。 还会删除容器应用服务自动创建的资源组,其中包含自定义网络组件。
注意
以下命令删除指定的资源组及其包含的所有资源。 如果本指南范围之外的资源存在于指定的资源组中,则这些资源也会被删除。
az group delete --name $RESOURCE_GROUP
小窍门
遇到问题? 请在 GitHub 上的 Azure 容器应用存储库中打开一个问题,以便告知我们。