你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 与虚拟网络注入配合使用,必须满足以下要求。
- 必须在订阅中注册
Microsoft.ContainerInstance和Microsoft.Relay资源提供程序。 - 将注入 Chaos Studio 资源的虚拟网络必须有两个子网:容器子网和中继子网。 一个容器子网被用于 Chaos Studio 容器,这些容器将被注入到您的专用网络中。 中继子网用于将来自 Chaos Studio 的通信转发到专用网络内的容器。
- 这两个子网的地址空间大小至少需要
/28(例如在本例中,/27大于/28)。 例如,地址前缀为10.0.0.0/28或10.0.0.0/24。 - 必须将容器子网委托给
Microsoft.ContainerInstance/containerGroups。 - 子网可以任意命名,但我们建议命名为
ChaosStudioContainerSubnet和ChaosStudioRelaySubnet。 - 网络安全组 (NSG):如果使用 NSG 来控制流量,请确保两个子网都允许所需端口进行入站和出站流量传输。 有关详细的端口要求,请参阅 “权限和安全 ”部分。
- 这两个子网的地址空间大小至少需要
- 启用所需资源作为目标,以便可以在 Chaos Studio 试验中使用它时,必须设置以下属性:
- 将
properties.subnets.containerSubnetId设置为容器子网的 ID。 - 将
properties.subnets.relaySubnetId设置为中继子网的 ID。
- 将
如果使用 Azure 门户启用专用资源作为 Chaos Studio 目标,则 Chaos Studio 当前仅识别名为 ChaosStudioContainerSubnet 和 ChaosStudioRelaySubnet 的子网。 如果这些子网不存在,门户工作流可以自动创建它们。
如果使用 CLI,容器和中继子网可以具有任何名称(受资源命名准则的约束)。 启用资源作为目标时,请指定相应的 ID。
试验资源的自动标记
当 Chaos Studio 试验 配置为启用专用网络后运行时,Chaos Studio 会自动在你的订阅中配置两个关键资源:
- 有助于安全通信的 Azure 容器实例 。
- 一个 Azure 中继 ,用于管理试验到 Chaos Studio 后端的网络路由。
以前,代表资源创建的这些标记不会继承应用于试验的标签,这可能导致在需要资源标记的环境中出现 Azure策略执行冲突。
通过此更新, Chaos Studio 现在会自动将试验中的相同标记应用到容器,并中继它创建的资源。 此改进可增强 Azure 环境中的 资源可见性、合规性和治理 能力。
工作原理
- 先决条件:您正在创建一个针对虚拟网络中资源的实验。
- 标记试验时,这些相同的标签会自动传播到 Chaos Studio 为专用网络配置的任何资源。
- 这些标记将显示在 Azure 门户、 Azure CLI 和 ARM API 查询中,就像任何其他 Azure 资源一样。
- 无需任何其他配置 - 只需将 标记应用到试验 即可确保这些标记由所有相关资源 继承 。
Benefits
✅
确保符合性 – 资源现在满足 Azure Policy 标记要求。
✅
改进资源跟踪 - 所有与试验关联的资源都携带相同的标记,以便轻松识别。
✅
无需额外设置 – 在试验被标记时自动运行。
示例:将 Chaos Studio 与专用 AKS 群集配合使用
此示例演示如何将专用 AKS 群集配置为与 Chaos Studio 配合使用。 它假定已在 Azure 订阅中拥有专用 AKS 群集。 若要创建一个群集,请参阅创建专用 Azure Kubernetes 服务群集。
- Azure 门户
- Azure CLI
在 Azure 门户中,转到订阅中的“订阅”“资源提供程序”>。
如果尚未注册
Microsoft.ContainerInstance和Microsoft.Relay资源提供程序,请选择相应提供程序,然后选择注册。 注册Microsoft.Chaos资源提供程序。转到 Chaos Studio 并选择“目标”。 找到所需的 AKS 群集,选择“启用目标”“启用服务直接目标”>。
选择群集的虚拟网络。 如果虚拟网络已包含名为
ChaosStudioContainerSubnet和ChaosStudioRelaySubnet的子网,请选择它们。 如果它们尚不存在,则系统会自动为你创建它们。选择“审阅 + 启用”,然后>“启用”。
现在,可以将专用 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 规则:
-
ChaosStudioRelaySubnet和ChaosStudioContainerSubnet需要通过端口 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 实现虚拟网络注入,接下来可以: