Azure Kubernetes Fleet Manager 使用 Microsoft Entra 标识访问 Azure 资源(如 Azure 虚拟网络),或管理长时间运行的后台活动,例如多群集 自动升级。
可以使用托管标识授权从 Fleet Manager 访问任何支持Microsoft Entra 授权的服务,而无需管理凭据或将其包含在代码中。 将 Azure 基于角色的访问控制(Azure RBAC)角色分配给托管标识,以向其授予对 Azure 中特定资源的权限。 有关 Azure RBAC 的详细信息,请参阅什么是 Azure 基于角色的访问控制 (Azure RBAC)?。
本文介绍如何在新的或现有的 Azure Kubernetes Fleet Manager 上启用以下类型的托管标识:
- 系统分配的托管标识。 系统分配的托管标识与单个 Azure 资源(例如机群管理器)相关联。 它仅适用于车队经理的生命周期。
- 用户分配的托管标识。 用户分配的托管标识是一个独立的 Azure 资源,Fleet Manager 可用于授权访问其他 Azure 服务。 它与机群管理器分开保留,可供多个 Azure 资源使用。
若要了解托管标识的详细信息,请参阅 Azure 资源托管标识。
在您开始之前
如果打算使用 Azure CLI,请确保已安装 Azure CLI 2.75.0 或更高版本。 若要查找版本,请运行 az --version。 如果需要进行安装或升级,请参阅安装 Azure CLI。
在运行本文中的 Azure CLI 示例之前,请通过调用 az account set 命令并传入订阅 ID,将订阅设置为当前活动订阅。
az account set --subscription <subscription-id>
如果你没有 Azure 资源组,也可以通过调用 az group create 命令创建一个。
az group create \
--name myResourceGroup \
--location westus2
启用系统分配的托管标识
系统分配的托管标识是与 Fleet Manager 或其他 Azure 资源关联的标识。 系统分配的托管标识与机群管理器的生命周期相关联。 删除机群管理器后,系统分配的托管标识也会被删除。
机群管理器可以使用系统分配的托管标识来授权访问 Azure 中运行的其他资源,并执行长时间运行的后台进程。 可以将 Azure RBAC 角色分配给系统分配的托管标识,以授予 Fleet Manager 访问特定资源的权限。 例如,如果 Fleet Manager 需要管理网络资源,则可以将系统分配的托管标识分配给授予这些权限的 Azure RBAC 角色。
在新机群管理器上启用系统分配的托管标识
在 Azure 门户中创建新的 Fleet Manager 时,系统分配的托管标识会自动创建。
可以通过检查“机群管理器的设置”部分中的“标识”边栏选项卡来验证系统分配的托管标识是否已启用。
状态为 On,并且对象(主体)ID 已填充(未显示在图像中)。
使用 az fleet create 命令创建一个 Fleet Manager,传递 --enable-managed-identity 参数以启用系统分配的托管标识。
az fleet create \
--resource-group myResourceGroup \
--name myFleetName \
--location westus2 \
--enable-managed-identity
命令输出指示标识类型为 SystemAssigned ,并包括主体 ID 和租户。
{
"eTag": "\"13003f4b-0000-1b00-0000-68900c3c0000\"",
"hubProfile": null,
"id": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/fleets/myFleetName",
"identity": {
"principalId": "<principal-id>",
"tenantId": "<tenant-id>",
"type": "SystemAssigned",
"userAssignedIdentities": null
},
"location": "westus2",
"name": "flt-mgr-02",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"status": {
"lastOperationError": null,
"lastOperationId": "d31e866c-a3d3-46ab-8a97-094bc4672d35"
},
"systemData": {
"createdAt": "2025-08-04T01:26:17.588030+00:00",
"createdBy": "",
"createdByType": "User",
"lastModifiedAt": "2025-08-04T01:26:17.588030+00:00",
"lastModifiedBy": "",
"lastModifiedByType": "User"
},
"tags": null,
"type": "Microsoft.ContainerService/fleets"
}
更新现有的 Fleet Manager 以使用系统分配的托管标识
可以使用“机群管理器设置”部分中的“标识”边栏选项卡管理 Fleet Manager 托管标识。
通过将系统分配的状态设置为“打开”并选择“保存”来启用系统分配的托管标识。
在确认对话框中选择 “是 ”。
片刻后, 状态 更改为 “开 ”,并填充 对象(主体)ID (图像中未显示)。
若要更新现有 Fleet Manager 以使用系统分配的托管标识,请运行 az fleet update 命令, 并将参数设置为 。
az fleet update \
--resource-group myResourceGroup \
--name myFleetName \
--enable-managed-identity true
命令输出指示标识类型为 SystemAssigned ,并包括主体 ID 和租户。
{
"eTag": "\"13003f4b-0000-1b00-0000-68900c3c0000\"",
"hubProfile": null,
"id": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/fleets/myFleetName",
"identity": {
"principalId": "<principal-id>",
"tenantId": "<tenant-id>",
"type": "SystemAssigned",
"userAssignedIdentities": null
},
"location": "westus2",
"name": "flt-mgr-02",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"status": {
"lastOperationError": null,
"lastOperationId": "d31e866c-a3d3-46ab-8a97-094bc4672d35"
},
"systemData": {
"createdAt": "2025-08-04T01:26:17.588030+00:00",
"createdBy": "",
"createdByType": "User",
"lastModifiedAt": "2025-08-04T01:26:17.588030+00:00",
"lastModifiedBy": "",
"lastModifiedByType": "User"
},
"tags": null,
"type": "Microsoft.ContainerService/fleets"
}
为系统分配的托管标识添加角色分配
可以将 Azure RBAC 角色分配给系统分配的托管标识,以授予机群管理器对另一个 Azure 资源的权限。 Azure RBAC 支持指定权限级别的内置和自定义角色定义。 有关分配 Azure RBAC 角色的详细信息,请参阅分配 Azure 角色的步骤。
将 Azure RBAC 角色分配到托管标识时,必须定义该角色的范围。 一般情况下,最佳做法是将角色的范围限制为托管标识所需的最低特权。 有关确定 Azure RBAC 角色范围的详细信息,请参阅了解 Azure RBAC 的范围。
注释
授予机队经理托管标识的权限传播可能需要长达 60 分钟。
在“机群管理器的标识”边栏选项卡中选择“Azure 角色分配”选项卡。 这会打开 “Azure 角色分配 ”窗格。
选择 “添加角色分配 ”以打开 “添加角色分配 ”窗格并输入:
选择 “保存” ,将角色分配给机队经理的系统分配的托管标识。
获取系统分配的托管标识的主体 ID
若要将 Azure RBAC 角色分配给 Fleet Manager 的系统分配托管标识,首先需要托管标识的主体 ID。 通过调用 az fleet show 命令获取 Fleet Manager 系统分配的托管标识的主体 ID。
# Get the principal ID for a system-assigned managed identity.
CLIENT_ID=$(az fleet show \
--name myFleetName \
--resource-group myResourceGroup \
--query identity.principalId \
--output tsv)
将 Azure RBAC 角色分配到系统分配的托管标识
若要向 Azure 中的资源授予系统分配的托管标识权限,请调用 az role assignment create 该命令,将 Azure RBAC 角色分配给托管标识。
例如,使用 Network Contributor 命令在自定义资源组上分配 az role assignment create 角色。
--scope对于参数,请为 Fleet Manager 的资源组提供资源 ID。
az role assignment create \
--assignee $CLIENT_ID \
--role "Network Contributor" \
--scope "<fleet-manager-resource-group-id>"
启用用户分配的托管标识
用户分配的托管标识是独立的 Azure 资源。 使用用户分配的托管标识创建 Fleet Manager 时,必须在创建 Fleet Manager 之前存在用户分配的托管标识资源。
创建用户分配的托管标识
如果还没有用户分配的托管标识资源,请使用 Azure 门户或 Azure CLI 创建一个。
创建用户分配的托管标识。
如果你没有用户分配的托管标识资源,请使用 az identity create 命令创建一个。
az identity create \
--name myIdentity \
--resource-group myResourceGroup
输出应与下面的示例输出类似:
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
"location": "westus2",
"name": "myIdentity",
"principalId": "<principal-id>",
"resourceGroup": "myResourceGroup",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
获取用户分配的托管标识的主体 ID
若要获取用户分配的托管标识的主体 ID,请调用 az Identity Show 并查询 principalId 属性:
CLIENT_ID=$(az identity show \
--name myIdentity \
--resource-group myResourceGroup \
--query principalId \
--output tsv)
获取用户分配的托管标识的资源 ID
若要使用用户分配的托管标识创建 Fleet Manager,需要新托管标识的资源 ID。 若要获取用户分配的托管标识的资源 ID,请调用 az identity show 和 query on the id property:
RESOURCE_ID=$(az identity show \
--name myIdentity \
--resource-group myResourceGroup \
--query id \
--output tsv)
将 Azure RBAC 角色分配给用户分配的托管标识
在创建机群管理器之前,请为托管标识添加角色分配。
注释
授予机队经理托管标识的权限传播可能需要长达 60 分钟。
导航到托管标识资源。
在托管标识资源的左侧导航中选择 Azure 角色分配 选项卡。 这会打开 “Azure 角色分配 ”窗格。
选择 “添加角色分配 ”以打开 “添加角色分配 ”窗格并输入:
选择 “保存 ”,将角色分配给托管标识。
az role assignment create使用命令将角色分配给用户分配的托管标识。
以下示例分配 网络参与者 角色以授予访问网络资源的标识权限。 角色分配的范围限定为机群管理器资源组。
az role assignment create \
--assignee $CLIENT_ID \
--role "Network Contributor" \
--scope "<fleet-manager-resource-group-id>"
使用用户分配的托管标识创建 Fleet Manager
注释
Azure 美国政府云中的 USDOD Central、USDOD East 和 USGov 爱荷华州区域不支持使用用户分配的托管标识创建机群管理器。
无法在 Azure 门户中创建具有用户分配的托管标识的 Fleet Manager。 可以在创建 Fleet Manager 后将 Fleet Manager 标识类型更改为用户分配的,也可以使用 Azure CLI。
使用 az fleet create 具有参数的命令 --assign-identity 创建具有用户分配的托管标识的 Fleet Manager。 传入用户分配的托管标识的资源 ID:
az fleet create \
--resource-group myResourceGroup \
--name myFleetName \
--assign-identity $RESOURCE_ID
更新现有的 Fleet Manager 以使用用户分配的托管标识
可以使用“机群管理器设置”部分中的“标识”边栏选项卡管理 Fleet Manager 托管标识。
通过选择“用户分配”,切换到 用户分配的托管标识选项卡。
选择 “+ 添加” 以打开 “添加用户分配的托管标识 ”窗格。
-
订阅 - 选择包含要使用的用户分配的托管标识的 Azure 订阅。
-
用户分配的托管标识 - 搜索要使用的用户分配的托管标识。
选择 “添加” ,将用户分配的托管标识添加到 Fleet Manager。
片刻后, 用户分配 的列表会更改,并列出用户分配的托管标识。
若要更新现有 Fleet Manager 以使用用户分配的托管标识,请调用 az fleet update 该命令。 包含 --assign-identity 参数并传入用户分配的托管标识的资源 ID:
az fleet update \
--resource-group myResourceGroup \
--name myFleetName \
--enable-managed-identity \
--assign-identity $RESOURCE_ID
成功更新到使用用户分配的托管标识的 Fleet Manager 更新的输出应类似于以下示例输出:
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
确定正在使用的托管标识的类型
可以使用“机队管理器设置”部分中的“ 标识 ”边栏选项卡检查机群管理器托管标识 设置 。
检查 系统分配 的分区和 用户分配 部分,以确定已启用哪种类型的托管标识。
若要确定现有 Fleet Manager 正在使用的托管标识类型,请调用 az fleet show 命令并查询标识 的类型 属性。
az fleet show \
--name myFleetName \
--resource-group myResourceGroup \
--query identity.type \
--output tsv
响应为 SystemAssigned 或 UserAssigned。
后续步骤