你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将 Microsoft Entra 身份验证与 Chaos Studio AKS 错误结合使用
概述
Azure Chaos Studio 与 Chaos Mesh 集成,可在 Azure Kubernetes Service (AKS) 群集上运行错误,例如删除 pod、CPU 压力、网络中断等。 可以根据配置和首选项,使用两种不同类型的身份验证来运行这些错误,无论是本地帐户还是 AKS 管理的 Microsoft Entra 身份验证:
- Kubernetes 本地帐户存储在 Kubernetes API 服务器中,可用于对群集的请求进行身份验证和授权。 在此页面:管理本地帐户中了解有关本地帐户的更多信息。
- AKS 托管的 Microsoft Entra 身份验证支持使用 Microsoft Entra 凭据和 Azure RBAC 登录和管理群集的权限。 了解如何启用 AKS 托管的 Microsoft Entra 身份验证。
注意
只要凭据位于客户端计算机上,本地帐户权限就会授予访问权限,而 AKS 托管的 Microsoft Entra 身份验证则可进行更大范围的权限分配和管理。 了解有关此最佳实践的更多信息:群集安全和升级的最佳实践。
以前,Chaos Studio 仅支持将 Chaos Mesh 与本地帐户一起使用,但现在,所有 AKS 错误的 2.2 版都支持本地帐户和 Microsoft Entra 身份验证。
警告
如果你看到运行时错误 Object reference not set to an instance of an object
,这是版本 2.2 故障的已知 bug。 修补程序预计在 2025 年 1 月初完成部署。 在启用了本地帐户的群集上使用新的 AKS Chaos Mesh 故障版本 (2.2) 时,会出现这种情况。 解决方法是在 UI 中使用标记为“(已弃用)”的 v2.1 故障,或使用启用了 Entra 身份验证的 AKS 群集。
更新目标
目标 (Microsoft.Chaos/targets
) 代表 Chaos Studio 资源模型中的另一个 Azure 资源,因此你可以轻松控制是否为某个资源启用错误注入以及可以针对它运行哪些错误。 在本例中,目标代表你想要影响的 AKS 群集。
如果在 Azure 门户中将 AKS 群集作为新的 Chaos Studio 目标加入,则新的错误版本将自动可用。
如果要在现有 AKS 目标上使用新的错误版本,则需要更新目标。 可以通过两种方法执行此操作:
- 禁用并重新启用目标资源。
- 若要在 Azure 门户中执行此操作,请访问 Chaos Studio 门户界面中的“目标”窗格,选择相关的 AKS 群集,然后选择“禁用目标”。 等待 1-2 分钟或等待确认通知,然后选择“启用目标”>“启用服务直接目标”并进入“查看和创建”屏幕。
- 更新已启用的功能。
- 若要在 Azure 门户中执行此操作,请访问 Chaos Studio 中的“目标”窗格,找到 AKS 群集,选择“管理操作”,并确保已启用所有功能。 选择“保存”以完成更新。
如果你使用的是 API 或命令行,请按照使用 Azure CLI 创建使用 Chaos Mesh 错误的混沌试验中的说明进行操作,以确保启用最新的可用功能。
新建新实验
在 Azure 门户中创建使用 AKS Chaos Mesh 错误的新试验时,可能会看到每个错误的两个版本,例如“AKS Chaos Mesh DNS Chaos”和“AKS Chaos Mesh DNS Chaos(已弃用)”。 选择第一个选项,而不是已弃用的选项。
如果在选择错误后没有看到 AKS 群集作为可能的目标,则可能需要在群集上启用新的错误版本。 访问“目标”页面,找到你的 AKS 群集并选择“管理操作”,然后在选择“保存”之前,确保已选择所有功能。
按照通过 Azure 门户创建使用 Chaos Mesh 错误来终止 AKS Pod 的 Chaos 试验教程来创建试验。
更新现有试验
按照以下两种方法之一来更新现有试验。
- 打开包含至少一个 AKS Chaos Mesh 错误的试验。
- 在错误上选择“编辑”,然后将
jsonSpec
参数值复制到剪贴板。 - 打开错误选择下拉菜单,选择所需错误的版本,但不带
(deprecated)
标记。 - 将剪贴板中的
jsonSpec
粘贴到参数字段中。 - 保存错误和试验。
权限
Chaos Studio 需要权限才能在你的资源上执行错误。
在 Azure 门户中创建试验时,可以选择“启用自定义角色创建和分配”,让 Chaos Studio 尝试将必要的权限分配给试验的托管标识。
如果选择不使用自定义角色创建,或者不使用 Azure 门户,则必须在创建试验后执行以下操作之一:
- 手动将 Azure Kubernetes 服务 RBAC 管理员和 Azure Kubernetes 服务群集用户角色分配给试验托管标识(系统分配或用户分配)。
- 手动创建一个自定义角色,允许执行 RBAC 操作中所需的全部操作。
- 手动创建一个自定义角色,允许执行所需操作的部分操作,并部署自定义 YAML 文件。 此过程在可选的最低特权访问中有详细说明。
RBAC 操作
以下 RBAC 操作适用于 AKS Chaos Mesh 错误:
- 操作:
- Microsoft.ContainerService/managedClusters/read
- 数据操作:
- Microsoft.ContainerService/managedClusters/namespaces/read
- Microsoft.ContainerService/managedClusters/pods/read
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/delete
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/bind/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/escalate/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/delete
可选的最低特权访问
如果你不想授予对 Chaos Studio 试验身份的完整 ClusterRole 和 ClusterRoleBinding 读/写访问权限,则可以手动为 Chaos Mesh 创建必要的角色和绑定。 这对于 Chaos Mesh 确保试验具有定位指定租户命名空间的权限是必要的。
此可选配置包含两个步骤。
在为试验的托管身份分配权限时,请使用具有一组有限权限的自定义角色。 所需权限包括:
- 操作:
- Microsoft.ContainerService/managedClusters/read
- 数据操作:
- Microsoft.ContainerService/managedClusters/namespaces/read
- Microsoft.ContainerService/managedClusters/pods/read
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- 操作:
部署以下 YAML 配置以创建角色和绑定。 在 AKS 文档:使用 Azure 门户部署 Azure Kubernetes 服务 (AKS) 群集中了解有关部署的更多信息。
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: role-cluster-manager-pdmas rules: - apiGroups: - chaos-mesh.org resources: [ "*" ] verbs: ["get", "list", "watch", "create", "delete", "patch", "update"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: cluster-manager-binding namespace: {Namespace targeted by experiment} subjects: - kind: User name: {CHAOS-STUDIO-EXPERIMENT-MSI-OBJECT-ID} roleRef: kind: ClusterRole name: role-cluster-manager-pdmas apiGroup: rbac.authorization.k8s.io