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

通过 Azure Arc 网关(预览版)简化网络配置要求

如果使用企业代理来管理出站流量,Azure Arc 网关(预览版)可帮助简化启用连接的过程。

使用 Azure Arc 网关(预览版)可以:

  • 通过仅向七个完全限定域 (FQDN) 开放公共网络访问来连接到 Azure Arc。
  • 查看并审核 Arc 代理通过 Arc 网关发送到 Azure 的所有流量。

重要

Azure Arc 网关当前以预览版提供。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

Azure Arc 网关的工作原理

Arc 网关的工作原理是引入两个新组件

Arc 网关资源是一种 Azure 资源,充当 Azure 流量的公共前端。 此网关资源通过特定域/URL 提供。 必须按照本文中所述的步骤创建此资源。 成功创建网关资源后,此域/URL 将包含在成功响应中。

Arc 代理是一个作为自己的 Pod 运行的新组件(称为“Azure Arc 代理”)。 此组件充当 Azure Arc 代理和扩展使用的转发代理。 Azure Arc 代理不需要你进行任何配置。 从已启用 Arc 的 Kubernetes 代理版本 1.21.10 开始,此 Pod 现在是核心 Arc 代理的一部分,并且在已启用 Arc 的 Kubernetes 群集的上下文中运行。 

网关设置好后,流量流经以下跃点:Arc 代理 → Azure Arc 代理 → 企业代理 → Arc 网关 → 目标服务。

显示已启用 Arc 的 Kubernetes 的 Azure Arc 网关(预览版)体系结构的关系图。

当前限制

在公共预览版期间,存在以下限制。 规划配置时,请考虑这些因素。

  • Arc 网关不支持 TLS 终止代理。
  • 除 Arc 网关之外,不能使用 ExpressRoute/站点到站点 VPN 或专用终结点。
  • 每个 Azure 订阅限制为五个 Arc 网关资源。

可以使用 Azure CLI 或 Azure PowerShell 来创建 Arc 网关资源。

创建 Arc 网关资源时,可以指定在其中创建资源的订阅和资源组以及 Azure 区域。 但是,同一租户中所有已启用 Arc 的资源都可以使用该资源,而不考虑其自己的订阅或区域。

要创建 Arc 网关资源并管理它们与已启用 Arc 的 Kubernetes 群集的关联,需要以下权限:

  • Microsoft.Kubernetes/connectedClusters/settings/default/write
  • Microsoft.hybridcompute/gateways/read
  • Microsoft.hybridcompute/gateways/write

创建 Arc 网关资源

  1. 在有权访问 Azure 的计算机上,运行以下 Azure CLI 命令:

    az extension add -n arcgateway
    
  2. 接下来,运行以下 Azure CLI 命令以创建 Arc 网关资源,并将占位符替换为所需的值:

    az arcgateway create --name <gateway's name> --resource-group <resource group> --location <region> --gateway-type public --allowed-features * --subscription <subscription name or id>
    

创建 Arc 网关资源通常需要大约 10 分钟。

确认对所需 URL 的访问权限

成功创建资源后,成功响应将包括 Arc 网关 URL。 请确保 Arc 资源所在的环境中允许 Arc 网关 URL 和下方的所有 URL。

URL 目的
[Your URL prefix].gw.arc.azure.com 网关 URL。 可在创建网关资源后运行 az arcgateway list 来获取此 URL。
management.azure.com Azure 资源管理器控制通道所需的 Azure 资源管理器终结点。
<region>.obo.arc.azure.com 在配置群集连接功能时是必需的。
login.microsoftonline.com<region>.login.microsoft.com 用于获取标识访问令牌的 Microsoft Entra ID 终结点。
gbl.his.arc.azure.com<region>.his.arc.azure.com 用于与 Arc 代理通信的云服务终结点。 使用短名称,例如使用 eus 代表美国东部。
mcr.microsoft.com*.data.mcr.microsoft.com 拉取 Azure Arc 代理的容器映像所需的终结点。

使用 Arc 网关资源将 Kubernetes 群集加入 Azure Arc

  1. 确保环境满足已启用 Azure Arc 的 Kubernetes 的所有必需先决条件。 由于使用的是 Azure Arc 网关,因此无需满足全套网络要求。

  2. 在部署计算机上,设置 Azure CLI 使用出站代理服务器所需的环境变量:

    export HTTP_PROXY=<proxy-server-ip-address>:<port> export HTTPS_PROXY=<proxy-server-ip-address>:<port> export NO_PROXY=<cluster-apiserver-ip-address>:<port>

  3. 在 Kubernetes 群集上,运行指定了 proxy-httpsproxy-http 参数的连接命令。 如果代理服务器同时设置了 HTTP 和 HTTPS,请确保对 HTTP 代理使用 --proxy-http,对 HTTPS 代理使用 --proxy-https。 如果代理服务器仅使用 HTTP,则可以将该值用于这两个参数。

    az connectedk8s connect -g <resource_group> -n <cluster_name> --gateway-resource-id <gateway_resource_id> --proxy-https <proxy_value> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --location <region>

    注意

    某些网络请求(例如涉及群集内服务间通信的请求)必须与通过代理服务器路由进行出站通信的流量分开。 --proxy-skip-range 参数可用于以逗号分隔的方式指定 CIDR 范围和终结点,以便代理与这些终结点之间的通信不会通过出站代理进行。 群集中服务的 CIDR 范围至少应指定为此参数的值。 例如,如果 kubectl get svc -A 返回一个服务列表,其中所有服务在 10.0.0.0/16 范围内都有 ClusterIP 值,则要为 --proxy-skip-range 指定的值为 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc

    大多数出站代理环境预期使用 --proxy-http--proxy-https--proxy-skip-range。 仅在需要将代理预期的受信任证书插入代理 Pod 的受信任证书存储中时,才需要 --proxy-cert

    必须将出站代理配置为允许 WebSocket 连接。

将现有群集配置为使用 Arc 网关

要更新现有群集,使其使用 Arc 网关,请运行以下命令:

az connectedk8s update -g <resource_group> -n <cluster_name> --gateway-resource-id <gateway_resource_id>

要验证更新是否成功,请运行以下命令并确认响应为 true

 az connectedk8s show -g <resource_group> -n <cluster_name> --query 'gateway.enabled' 

将计算机更新为使用 Arc 网关后,将不再需要企业代理或防火墙中之前允许使用的一些 Arc 终结点,可以将其删除。 建议至少等待一小时,然后再删除不再需要的任何终结点。 请确保不要删除 Arc 网关所需的任何终结点

删除 Arc 网关

要禁用 Arc 网关并删除 Arc 网关资源与已启用 Arc 的群集之间的关联,请运行以下命令:

az connectedk8s update -g <resource_group> -n <cluster_name> --disable-gateway 

监视流量

可以通过查看网关路由器的日志来审核网关流量:

  1. kubectl get pods -n azure-arc运行
  2. 标识 Arc 代理 Pod(其名称以 arc-proxy- 开头)。
  3. kubectl logs -n azure-arc <Arc Proxy pod name>运行

其他方案

在公共预览版期间,Arc 网关涵盖加入群集所需的终结点,以及其他支持 Arc 的方案所需的部分终结点。 根据采用的方案,代理中仍然需要允许其他终结点。

使用 Arc 网关时,必须在企业代理中允许以下方案中列出的所有终结点: