通过专用链接对已启用 Arc 的 Kubernetes 群集使用专用连接(预览版)

通过 Azure 专用链接,可以使用专用终结点将 Azure 服务安全地链接到你的虚拟网络。 这意味着你可以将本地 Kubernetes 群集与 Azure Arc 连接,并通过 Azure ExpressRoute 或站点到站点 VPN 连接发送所有流量,而不是使用公共网络发送所有流量。 在 Azure Arc 中,可以使用专用链接范围模型允许多个 Kubernetes 群集借助单个专用终结点与其 Azure Arc 资源进行通信。

本文档介绍 Azure Arc 专用链接的适用情况以及设置方法(预览版)。

重要

Azure Arc 专用链接功能目前在由世纪互联运营的 Azure 中已启用 Azure Arc 的 Kubernetes 存在的所有区域中提供预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Azure 预览版的补充使用条款

优势

借助专用链接,你可以:

  • 以专用方式连接到 Azure Arc,无需开放任何公共网络访问权限。
  • 请确保仅通过授权的专用网络访问启用 Arc 的 Kubernetes 群集数据。
  • 定义通过专用终结点连接的已启用 Azure Arc 的特定 Kubernetes 群集及其他 Azure 服务资源(例如 Azure Monitor),以防止来自专用网络的数据外泄。
  • 使用 ExpressRoute 和专用链接将你的专用本地网络安全地连接到 Azure Arc。
  • 将所有流量保留在 Microsoft Azure 主干网络中。

有关详细信息,请参阅 Azure 专用链接的主要优势

工作原理

Azure Arc 专用链接范围将专用终结点 (及其所包含的虚拟网络) 连接到 Azure 资源,在本例中,启用 Azure Arc 的 Kubernetes 群集。 启用已启用 Arc 的 Kubernetes 群集扩展时,这些方案可能需要连接到其他 Azure 资源。 例如,对于 Azure Monitor,从群集收集的日志将发送到 Log Analytics 工作区。

从前面列出的启用 Arc 的 Kubernetes 群集连接到其他 Azure 资源时,需要为每个服务配置专用链接。 例如,请参阅 Azure Monitor 专用链接

当前限制

规划专用链接设置时,请考虑这些当前限制。

  • 仅可以将一个 Azure Arc 专用链接范围与虚拟网络关联。

  • 启用 Azure Arc 的 Kubernetes 群集只能连接到一个 Azure Arc 专用链接范围。

  • 所有本地 Kubernetes 群集都需要使用相同的 DNS 转发器解析正确的专用终结点信息(FQDN 记录名称和专用 IP 地址),以便使用相同的专用终结点。 有关详细信息,请参阅 Azure 专用终结点专用 DNS 区域值。 已启用 Azure Arc 的 Kubernetes 群集、Azure Arc 专用链接范围和虚拟网络必须在同一个 Azure 区域。 专用终结点和虚拟网络还必须位于同一 Azure 区域,但此区域可不同于 Azure Arc 专用链接作用域和已启用 Arc 的 Kubernetes 群集区域。

  • 在预览期间,必须允许发送至 Microsoft Entra ID、Azure 资源管理器和 Azure 容器注册表服务标记的流量通过本地网络防火墙。

  • 使用的其他 Azure 服务(例如 Azure Monitor)可能需要自己的虚拟网络专用终结点。

    注意

    已启用专用链接和 Azure Arc 的 Kubernetes 群集当前不支持群集连接功能,因此也就不支持自定义位置功能。 使用这些功能的 Azure Arc 服务也尚不支持使用专用链接的网络连接。

在配置了专用链接且已启用 Azure Arc 的 Kubernetes 群集上,这些扩展支持通过专用链接进行端到端连接:

若要通过专用链接将 Kubernetes 群集连接到 Azure Arc,请按如下所示配置网络:

  1. 使用站点到站点 VPNExpressRoute 线路在本地网络和 Azure 虚拟网络之间建立连接。
  2. 部署 Azure Arc 专用链接范围,该范围可以控制哪些 Kubernetes 群集可以通过专用终结点与 Azure Arc 通信,并且会使用专用终结点将其与 Azure 虚拟网络关联。
  3. 更新本地网络的 DNS 配置,以解析专用终结点地址。
  4. 配置本地防火墙以允许访问 Microsoft Entra ID、Azure 资源管理器和 Azure 容器注册表。
  5. 将启用 Azure Arc 的 Kubernetes 群集与 Azure Arc 专用链接范围相关联。
  6. (可选)为已启用 Azure Arc 的 Kubernetes 群集管理的其他 Azure 服务部署专用终结点,例如 Azure Monitor。

后文假设你已设置 ExpressRoute 线路或站点到站点 VPN 连接。

网络配置

将已启用 Azure Arc 的 Kubernetes 群集与多个 Azure 服务集成,可以为混合 Kubernetes 群集实现云管理和治理。 其中大多数服务都已提供专用终结点。 但是,你需要配置防火墙和路由规则,以允许通过 Internet 访问 Microsoft Entra ID 和 Azure 资源管理器,直到这些服务提供专用终结点。 还需要允许访问 Azure 容器注册表(以及作为 Azure 容器注册表的前身的 AzureFrontDoor.FirstParty)来拉取映像和 Helm 图表,以启用 Azure Monitor 等服务,以及在 Kubernetes 群集上进行 Azure Arc 代理初始设置。

可通过两种方法启用此配置:

  • 如果将网络配置为通过 Azure VPN 或 ExpressRoute 线路路由所有 Internet 绑定流量,则可以将与 Azure 中子网关联的网络安全组 (NSG) 配置为允许使用服务标记对 Microsoft Entra ID、Azure 资源管理器、Azure Front Door 和 Azure 容器注册表进行出站 TCP 443 (HTTPS) 访问。 NSG 规则应如下所示:

    设置 Microsoft Entra ID 规则 Azure 资源管理器规则 AzureFrontDoorFirstParty 规则 Azure 容器注册表规则
    Source 虚拟网络 虚拟网络 虚拟网络 虚拟网络
    源端口范围 * * * *
    目标 服务标记 服务标记 服务标记 服务标记
    目标服务标记 AzureActiveDirectory AzureResourceManager AzureFrontDoor.FirstParty MicrosoftContainerRegistry
    目标端口范围 443 443 443 443
    协议 TCP TCP TCP TCP
    操作 Allow 允许 Allow(入站和出站) 允许
    优先级 150(必须低于任何阻止 Internet 访问的规则) 151(必须低于任何阻止 Internet 访问的规则) 152(必须低于任何阻止 Internet 访问的规则) 153(必须低于任何阻止 Internet 访问的规则)
    名称 AllowAADOutboundAccess AllowAzOutboundAccess AllowAzureFrontDoorFirstPartyAccess AllowMCROutboundAccess
  • 或者,将本地网络上的防火墙配置为允许使用可下载的服务标记文件对 Microsoft Entra ID、Azure 资源管理器和 Azure 容器注册表进行出站 TCP 443 (HTTPS) 访问,以及对 AzureFrontDoor.FirstParty 进行入站和出站访问。 JSON 文件包含 Microsoft Entra ID、Azure 资源管理器、AzureFrontDoor.FirstParty 和 Azure 容器注册表使用的所有公共 IP 地址范围,该文件每月都会进行更新,以反映任何更改。 Microsoft Entra 服务标记是 AzureActiveDirectory,Azure 资源管理器的服务标记是 AzureResourceManager,Azure 容器注册表的服务标记是 MicrosoftContainerRegistry,Azure Front Door 的服务标记是 AzureFrontDoor.FirstParty。 请咨询网络管理员和网络防火墙供应商,了解如何配置防火墙规则。

  1. 登录到 Azure 门户

  2. 搜索 Azure Arc 专用链接范围。 或者,可以直接前往 Azure 门户中的 Azure Arc 专用链接范围页面

  3. 选择“创建”。

  4. 选择一个“订阅”和“资源组” 。 在预览期间,虚拟网络和已启用 Azure Arc 的 Kubernetes 群集必须与 Azure Arc 专用链接范围位于相同的订阅中。

  5. 为 Azure Arc 专用链接范围指定一个名称。

  6. 为要求每个与此 Azure Arc 专用链接范围关联并启用了 Arc 的 Kubernetes 群集通过专用终结点将数据发送到服务,请选择允许公用网络访问。 选择后,与此 Azure Arc 专用链接范围关联的 Kubernetes 群集可以通过专用或公用网络与服务通信。 在创建范围后,可根据需要更改此设置。

    Azure 门户中的 Azure Arc 专用链接范围创建屏幕的屏幕截图。

  7. 选择“查看 + 创建”。

  8. 验证完成后,选择“创建”。

创建专用终结点

创建 Azure Arc 专用链接范围后,需使用专用终结点将其连接到一个或多个虚拟网络。 专用终结点会在虚拟网络地址空间中的专用 IP 上公开对 Azure Arc 服务的访问权限。

虚拟机中的专用终结点允许其通过网络池中的专用 IP 来访问已启用 Azure Arc 的 Kubernetes 群集终结点,而不是使用这些终结点的公共 IP。 这样就可以继续使用已启用 Azure Arc 的 Kubernetes 群集,无需向未请求的出站流量开放 VNet。 从专用终结点到资源的流量将通过 Azure,而不会路由到公用网络。

  1. 在 Azure 门户中,导航至你创建的 Azure Arc 专用链接范围资源。

  2. 在资源菜单的“配置”下,选择“专用终结点连接”。

  3. 选择“添加”,启动终结点创建进程。 还可以批准在专用链接中心启动的连接,方式是将其选择并选择“批准”

    Azure 门户中专用终结点连接屏幕的屏幕截图。

  4. 选择“订阅”和“资源组”,然后输入终结点的名称。 选择与你的虚拟网络相同的区域。

  5. 在完成时选择“下一步:资源”。

  6. 资源页上,如果尚未选择这些值,请执行以下操作:

    1. 选择包含你的 Azure Arc 专用链接范围资源的“订阅”。
    2. 对于“资源类型”,请选择“Microsoft.HybridCompute/privateLinkScopes”。
    3. 对于“资源”,选择你之前创建的 Azure Arc 专用链接范围。
    4. 选择“下一步: 虚拟网络”。
  7. 在“虚拟网络”页上:

    1. 选择要从中连接到启用 Azure Arc 的 Kubernetes 群集的虚拟网络和子网。
    2. 选择“下一步: DNS”。
  8. DNS 页上:

    1. 对于“与专用 DNS 区域集成”,请选择“是” 。 系统将创建新的专用 DNS 区域。

      或者,如果你希望手动管理 DNS 记录,请选择“否”,然后完成对专用链接的设置,包括此专用终结点和专用范围配置。 下一步,根据 Azure 专用终结点专用 DNS 区域值中的说明配置 DNS。 切勿在准备专用链接设置时创建空记录。 你创建的 DNS 记录会替代现有设置,并且会影响与启用 Arc 的 Kubernetes 群集之间的连接。

    2. 选择“查看 + 创建”。

    3. 让验证通过。

    4. 选择“创建”。

配置本地 DNS 转发

本地 Kubernetes 群集需要能够将专用链接 DNS 记录解析为专用终结点 IP 地址。 配置步骤因使用 Azure 专用 DNS 区域来维护 DNS 记录,还是在本地使用自己的 DNS 服务器而有所不同。

使用 Azure 集成的专用 DNS 区域进行 DNS 配置

如果在创建专用终结点时为“与专用 DNS 区域集成”选择了“是”,则本地 Kubernetes 群集需要能够将 DNS 查询转发到内置的 Azure DNS 服务器,才能正确解析专用终结点地址。 Azure 中需要有一个 DNS 转发器(专门构建的 VM 或是启用了 DNS 代理的 Azure 防火墙实例),之后你可以将本地 DNS 服务器配置为将查询转发到 Azure,以解析专用终结点 IP 地址。

此专用终结点文档提供有关使用 DNS 转发器配置本地工作负载的操作指南。

手动配置 DNS 服务器

如果在创建专用终结点期间选择退出使用 Azure 专用 DNS 区域,则必须在本地 DNS 服务器中创建所需的 DNS 记录。

  1. 转到 Azure 门户。
  2. 导航到与虚拟网络和 Azure Arc 专用链接范围关联的专用终结点资源。
  3. 在左侧窗格中,选择“DNS 配置”以查看 DNS 记录列表以及需要在 DNS 服务器上设置的相应 IP 地址。 FQDN 和 IP 地址将根据你为专用终结点选择的区域以及子网中可用的 IP 地址而更改。
  4. 按照 DNS 服务器供应商的指导添加必要的 DNS 区域和 A 记录,以匹配门户中的表格。 确保为你的网络选择适当的 DNS 服务器。 使用此 DNS 服务器的 Kubernetes 群集现在会解析专用终结点 IP 地址,并且必须与 Azure Arc 专用链接范围相关联,否则连接将被拒绝。

注意

connectedk8s CLI 扩展的 1.3.0 版本开始,支持为已启用 Azure Arc 的 Kubernetes 群集配置专用链接,但需要 Azure CLI 版本大于 2.3.0。 如果使用的是版本大于 1.3.0 的 connectedk8s CLI 扩展,我们引入了验证,以便仅在运行大于 2.3.0 版本的 Azure CLI 时,才会检查并成功将群集连接到 Azure Arc。

可以使用以下命令为现有启用 Azure Arc 的 Kubernetes 群集或在首次将 Kubernetes 群集加载到 Azure Arc 时配置专用链接:

az connectedk8s connect -g <resource-group-name> -n <connected-cluster-name> -l <location> --enable-private-link true --private-link-scope-resource-id <pls-arm-id>
参数名称 说明
--enable-private-link 如果设置为“True”,则启用专用链接功能。
--private-link-scope-resource-id 先前创建的专用链接范围资源的 ID。 例如:/subscriptions//resourceGroups//providers/Microsoft.HybridCompute/privateLinkScopes/

对于在配置 Azure Arc 专用链接范围之前设置的启用 Azure Arc 的 Kubernetes 群集,可以使用以下步骤通过 Azure 门户配置专用链接:

  1. 在 Azure 门户中,导航至 Azure Arc 专用链接范围资源。
  2. 在资源菜单中的“配置”下,选择“Azure Arc 资源”。 然后选择“添加”。
  3. 你将在专用链接范围所在的同一订阅和区域中看到所有已启用 Arc 的 Kubernetes 群集。 选中要与专用链接范围关联的每个 Kubernetes 群集对应的框。 完成后,选择“选择”以保存更改。

故障排除

如果遇到问题,以下建议可能会有所帮助:

  • 检查本地 DNS 服务器,验证它是转发到 Azure DNS,还是配置为在专用链接区域中使用适当的 A 记录。 这些查找命令应返回 Azure 虚拟网络中的专用 IP 地址。 如果它们会解析公共 IP 地址,请仔细检查服务器以及网络的 DNS 配置。

    nslookup gbl.his.arc.azure.cn
    nslookup agentserviceapi.guestconfiguration.azure.cn
    nslookup dp.kubernetesconfiguration.azure.cn
    
  • 如果在加入 Kubernetes 群集时遇到问题,请确认已将 Microsoft Entra ID、Azure 资源管理器、AzureFrontDoor.FirstParty 和 Azure 容器注册表服务标记添加到本地网络防火墙。

后续步骤