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

Azure Chaos Studio 中的虚拟网络注入

Azure 虚拟网络是 Azure 中专用网络的基本构建基块。 虚拟网络使多种类型的 Azure 资源能够相互之间,与 Internet 以及与本地网络进行安全通信。 虚拟网络类似于你在自己的数据中心内运行的传统网络。 它汇集了 Azure 基础结构的其他好处,如缩放、可用性和隔离性。

虚拟网络注入允许 Azure Chaos Studio 资源提供程序将容器化工作负载注入虚拟网络,以便可以通过虚拟网络上的专用 IP 地址访问没有公共终结点的资源。 为虚拟网络中的资源配置虚拟网络注入并启用资源作为目标后,可以在多个试验中使用它。 如果根据本文中的说明配置专用资源,试验可以针对专用资源和非专用资源的组合。

Chaos Studio 还支持使用专用终结点运行 基于代理的试验 。 在 设置基于代理的试验的专用链接中找到详细说明。

资源类型支持

目前,只能为 Chaos Studio 虚拟网络注入启用某些资源类型:

  • 可以通过 Azure 门户和 Azure CLI 使用虚拟网络注入来启用 Azure Kubernetes 服务 (AKS) 目标。 可以使用所有 AKS Chaos Mesh 故障。
  • 可以通过 Azure 门户和 Azure CLI 使用虚拟网络注入启用 Azure Key Vault 目标。 可用于虚拟网络注入的故障包括禁用证书、递增证书版本和更新证书策略。

启用虚拟网络注入

若要将 Chaos Studio 与虚拟网络注入配合使用,必须满足以下要求。

  1. 必须在订阅中注册 Microsoft.ContainerInstanceMicrosoft.Relay 资源提供程序。
  2. 将注入 Chaos Studio 资源的虚拟网络必须有两个子网:容器子网和中继子网。 一个容器子网被用于 Chaos Studio 容器,这些容器将被注入到您的专用网络中。 中继子网用于将来自 Chaos Studio 的通信转发到专用网络内的容器。
    1. 这两个子网的地址空间大小至少需要 /28(例如在本例中,/27 大于 /28)。 例如,地址前缀为 10.0.0.0/2810.0.0.0/24
    2. 必须将容器子网委托给 Microsoft.ContainerInstance/containerGroups
    3. 子网可以任意命名,但我们建议命名为 ChaosStudioContainerSubnetChaosStudioRelaySubnet
    4. 网络安全组 (NSG):如果使用 NSG 来控制流量,请确保两个子网都允许所需端口进行入站和出站流量传输。 有关详细的端口要求,请参阅 “权限和安全 ”部分。
  3. 启用所需资源作为目标,以便可以在 Chaos Studio 试验中使用它时,必须设置以下属性:
    1. properties.subnets.containerSubnetId 设置为容器子网的 ID。
    2. properties.subnets.relaySubnetId 设置为中继子网的 ID。

如果使用 Azure 门户启用专用资源作为 Chaos Studio 目标,则 Chaos Studio 当前仅识别名为 ChaosStudioContainerSubnetChaosStudioRelaySubnet 的子网。 如果这些子网不存在,门户工作流可以自动创建它们。

如果使用 CLI,容器和中继子网可以具有任何名称(受资源命名准则的约束)。 启用资源作为目标时,请指定相应的 ID。

试验资源的自动标记

Chaos Studio 试验 配置为启用专用网络后运行时,Chaos Studio 会自动在你的订阅中配置两个关键资源:

  1. 有助于安全通信的 Azure 容器实例
  2. 一个 Azure 中继 ,用于管理试验到 Chaos Studio 后端的网络路由。

以前,代表资源创建的这些标记不会继承应用于试验的标签,这可能导致在需要资源标记的环境中出现 Azure策略执行冲突

通过此更新, Chaos Studio 现在会自动将试验中的相同标记应用到容器,并中继它创建的资源。 此改进可增强 Azure 环境中的 资源可见性、合规性和治理 能力。

工作原理

  • 先决条件:您正在创建一个针对虚拟网络中资源的实验。
  • 标记试验时,这些相同的标签会自动传播到 Chaos Studio 为专用网络配置的任何资源
  • 这些标记将显示在 Azure 门户Azure CLIARM API 查询中,就像任何其他 Azure 资源一样。
  • 无需任何其他配置 - 只需将 标记应用到试验 即可确保这些标记由所有相关资源 继承

Benefits

确保符合性 – 资源现在满足 Azure Policy 标记要求。
改进资源跟踪 - 所有与试验关联的资源都携带相同的标记,以便轻松识别。
无需额外设置 – 在试验被标记时自动运行。

示例:将 Chaos Studio 与专用 AKS 群集配合使用

此示例演示如何将专用 AKS 群集配置为与 Chaos Studio 配合使用。 它假定已在 Azure 订阅中拥有专用 AKS 群集。 若要创建一个群集,请参阅创建专用 Azure Kubernetes 服务群集

  1. 在 Azure 门户中,转到订阅中的“订阅”“资源提供程序”>

  2. 如果尚未注册 Microsoft.ContainerInstanceMicrosoft.Relay 资源提供程序,请选择相应提供程序,然后选择注册。 注册 Microsoft.Chaos 资源提供程序。

    屏幕截图显示如何注册资源提供程序。

  3. 转到 Chaos Studio 并选择“目标”。 找到所需的 AKS 群集,选择“启用目标”“启用服务直接目标”>

    屏幕截图显示如何在 Chaos Studio 中启用目标。

  4. 选择群集的虚拟网络。 如果虚拟网络已包含名为 ChaosStudioContainerSubnetChaosStudioRelaySubnet 的子网,请选择它们。 如果它们尚不存在,则系统会自动为你创建它们。

    屏幕截图显示如何选择虚拟网络和子网。

  5. 选择“审阅 + 启用”,然后>“启用”

    屏幕截图显示如何审查目标启用设置。

现在,可以将专用 AKS 群集与 Chaos Studio 配合使用。 若要了解如何安装 Chaos Mesh 并运行试验,请参阅使用 Azure 门户创建一个使用 Chaos Mesh 故障的混沌试验

权限与安全

必需的 RBAC 权限

将 Chaos Studio 与虚拟网络注入配合使用时,实验的托管标识必须具有以下 RBAC 操作,才能在订阅中部署必要的资源:

  • Microsoft.Relay/namespaces/* - 创建和管理 Azure 中继命名空间
  • Microsoft.Relay/namespaces/privateEndpointConnectionProxies/* - 用于管理中继专用终结点连接
  • Microsoft.ContainerInstance/containerGroups/* - 为混沌试验部署容器实例
  • Microsoft.Network/privateEndpoints/* - 为安全连接创建专用终结点
  • Microsoft.Relay/namespaces/hybridConnections/* - 管理用于隧道的混合连接

网络安全组 (NSG) 端口要求

如果使用网络安全组来控制虚拟网络中的流量,可能需要添加端口规则。

重要

默认情况下,允许以下所有通信,但如果采取更严格的安全策略,可能需要适当调整 NSG 规则:

  • ChaosStudioRelaySubnetChaosStudioContainerSubnet 需要通过端口 443 进行双向 TCP 通信(每个子网都需要与其他子网进行通信)
  • ChaosStudioContainerSubnet 需要通过端口 443 和端口范围 9400-9599 与“任意”目标建立出站连接,以便与 Azure 中继服务握手
  • ChaosStudioContainerSubnet需要通过端口 443 连接到 AKS API 服务器

ChaosStudioRelaySubnet:使用 Azure 中继的混合连接在 Chaos Studio 与专用资源之间建立安全隧道。

ChaosStudioContainerSubnet:托管执行混沌试验的容器化工作负载。 它会启动一个侦听器进程,负责侦听混合连接。

要详细了解端口要求,请参阅 Azure 中继端口设置

网络安全配置

在安全环境中运行时,可能需要配置特定的网络规则或了解 Chaos Studio 使用的标识。

针对基于代理的故障的防火墙和 NSG 配置

Chaos Studio 代理需要对 Azure 中继服务进行出站访问。 如果使用网络安全组(NSG)、Azure 防火墙或其他网络设备来限制出站流量,则必须创建规则以允许通信。

  • 标准出站访问: 对于具有防火墙的网络中的代理,必须在端口 443、5671 和 5672 上允许到 Azure 中继的公共终结点的出站 TCP 流量。
  • 专用链接访问: 如果对代理使用 Azure 中继专用终结点 ,则还必须允许端口 9400-9599 上的出站 TCP 流量。 这是在虚拟机上运行的专用中继侦听器所必需的。

在这两种情况下,代理都启动连接,因此 VM 或 NSG 上不需要入站端口规则才能使代理正常运行。

AKS 故障:了解审核日志中的“masterclient”用户

在 AKS 群集上使用 Chaos Studio 的 Microsoft Entra ID 集成故障 (v2v2) 时,仍可能会在群集的 API 服务器审核日志中看到用户主体 masterclient

这是未显式禁用本地帐户的 AKS 群集的预期行为。 masterclient这是一个内置的本地管理员凭据。 当 Chaos Studio 进行身份验证时,Kubernetes 可以使用 Entra ID 标识或此本地帐户。

如果安全策略要求只有 Entra ID 主体出现在审核日志中,则必须 禁用 AKS 群集上的本地帐户

有关详细说明,请参阅官方 AKS 文档: 使用 AKS 管理的 Microsoft Entra 集成禁用本地帐户

Limitations

  • 虚拟网络注入目前只能在 Azure 容器实例和 Azure 中继可用的订阅/区域中进行。

  • 创建使用虚拟网络注入启用的目标资源时,需要对虚拟网络的 Microsoft.Network/virtualNetworks/subnets/write 访问权限。 例如,如果将 AKS 群集部署到 virtualNetwork_A,则必须有权创建子网 virtualNetwork_A ,才能为 AKS 群集启用虚拟网络注入。

  • 虚拟网络注入的订阅范围限制
    将 Chaos Studio 与专用网络(虚拟网络注入)配合使用时,包含目标资源的虚拟网络(例如 AKS 群集)必须与 Chaos Studio 试验 位于同一 Azure 订阅中

    尽管 Chaos Studio 通常支持跨订阅的目标资源,但启用专用网络时 ,此功能不适用 。 这是因为 Chaos Studio 将 VNet 注入所需的专用终结点和其他支持资源部署到 与试验相同的订阅中。 如果目标 VNet 位于不同的订阅中,则专用终结点创建将因跨订阅限制而失败。

    解决方法: 若要成功使用专用网络,请确保在同一 Azure 订阅中创建目标 VNet 和 Chaos Studio 试验。

后续步骤

现在,你已了解如何为 Chaos Studio 实现虚拟网络注入,接下来可以: