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 chinanorth3
启用系统分配的托管标识
系统分配的托管标识是与 Fleet Manager 或其他 Azure 资源关联的标识。 系统分配的托管标识与机群管理器的生命周期相关联。 删除机群管理器后,系统分配的托管标识也会被删除。
机群管理器可以使用系统分配的托管标识来授权访问 Azure 中运行的其他资源,并执行长时间运行的后台进程。 可以将 Azure RBAC 角色分配给系统分配的托管标识,以授予 Fleet Manager 访问特定资源的权限。 例如,如果 Fleet Manager 需要管理网络资源,则可以将系统分配的托管标识分配给授予这些权限的 Azure RBAC 角色。
在新机群管理器上启用系统分配的托管标识
在 Azure 门户中创建新的 Fleet Manager 时,系统分配的托管标识会自动创建。
可以通过检查机群管理器的“设置”部分中的“标识”边栏选项卡,来验证系统分配的托管标识是否已启用。
状态为启用,对象(主体)ID已填充(未显示在图像中)。
使用 az fleet create
命令创建一个 Fleet Manager,传递 --enable-managed-identity
参数以启用系统分配的托管标识。
az fleet create \
--resource-group myResourceGroup \
--name myFleetName \
--location chinanorth3 \
--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": "chinanorth3",
"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“设置”部分中的“标识”边栏选项卡管理托管标识。
通过将系统分配的托管标识状态设置为启用并选择保存来启用系统分配的托管标识。
在确认对话框中选择 “是 ”。
片刻后, 状态 更改为 “开 ”,并填充 对象(主体)ID (图像中未显示)。
若要更新现有的 Fleet Manager 以使用系统分配的托管身份,请运行 az fleet update 命令,并将相关参数设置为 --enable-managed-identity
和 true
。
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": "chinanorth3",
"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 角色分配给系统分配的托管标识,以授予 Fleet Manager 对另一个 Azure 资源的权限。 Azure RBAC 支持指定权限级别的内置角色定义和自定义角色定义。 有关分配 Azure RBAC 角色的详细信息,请参阅 分配 Azure 角色的步骤。
在为托管标识分配 Azure RBAC 角色时,必须明确角色的范围。 一般情况下,最佳做法是将角色的范围限制为托管标识所需的最低权限。 有关确定 Azure RBAC 角色的范围的详细信息,请参阅 了解 Azure RBAC 的范围。
注释
授予您车队管理系统托管标识的权限可能需要长达 60 分钟才能传播。
在机群管理器的标识边栏选项卡中选择Azure 角色分配选项卡。 这会打开 “Azure 角色分配 ”窗格。
选择 “添加角色分配 ”以打开 “添加角色分配 ”窗格并输入:
选择 “保存” ,将角色分配给机队经理的系统分配的托管标识。
获取系统分配的托管标识的主体 ID
若要将 Azure RBAC 角色分配给车队管理器的系统分配托管标识,首先需要获取该托管标识的主体 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": "chinanorth3",
"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
若要使用用户分配的托管标识创建车队管理器,需要新托管标识的资源 ID。 若要获取用户分配的托管标识的资源 ID,请调用 az identity show 并在id
属性上进行查询。
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 门户中创建具有用户分配的托管标识的 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。
后续步骤