快速入门:访问舰队资源的 Kubernetes API
如果创建 Azure Kubernetes 舰队管理器资源时启用了中心群集,则可将其用于集中控制 Kubernetes 资源传播等方案。 本文介绍如何访问由舰队资源管理的中心群集的 Kubernetes API。
先决条件
如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
- 需要包含一个中心群集和多个成员群集的舰队资源。 如果没有,请参阅使用 Azure CLI 创建 Azure Kubernetes 舰队管理器资源并加入成员群集。
- 使用的标识(用户或服务主体)需要在舰队资源上具有 Microsoft.ContainerService/fleets/listCredentials/action。
访问舰队资源的 Kubernetes API
为订阅 ID、资源组和舰队资源设置以下环境变量:
export SUBSCRIPTION_ID=<subscription-id> export GROUP=<resource-group-name> export FLEET=<fleet-name>
使用
az account set
命令设置要使用的默认 Azure 订阅。az account set --subscription ${SUBSCRIPTION_ID}
使用
az fleet get-credentials
命令获取中心群集舰队资源的 kubeconfig 文件。az fleet get-credentials --resource-group ${GROUP} --name ${FLEET}
输出应类似于以下示例输出:
Merged "hub" as current context in /home/fleet/.kube/config
为中心群集舰队资源的
id
设置以下环境变量:export FLEET_ID=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/fleets/${FLEET}
使用以下命令将标识授权到中心群集舰队资源的 Kubernetes API 服务器:
对于
ROLE
环境变量,可以使用以下四个内置角色定义之一作为值:- Azure Kubernetes 舰队管理器 RBAC 读者
- Azure Kubernetes 舰队管理器 RBAC 编写者
- Azure Kubernetes 舰队管理器 RBAC 管理员
- Azure Kubernetes 舰队管理器 RBAC 群集管理员
export IDENTITY=$(az ad signed-in-user show --query "id" --output tsv) export ROLE="Azure Kubernetes Fleet Manager RBAC Cluster Admin" az role assignment create --role "${ROLE}" --assignee ${IDENTITY} --scope ${FLEET_ID}
输出应类似于以下示例输出:
{ "canDelegate": null, "condition": null, "conditionVersion": null, "description": null, "id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/fleets/<FLEET>/providers/Microsoft.Authorization/roleAssignments/<assignment>", "name": "<name>", "principalId": "<id>", "principalType": "User", "resourceGroup": "<GROUP>", "roleDefinitionId": "/subscriptions/<SUBSCRIPTION_ID>/providers/Microsoft.Authorization/roleDefinitions/18ab4d3d-a1bf-4477-8ad9-8359bc988f69", "scope": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/fleets/<FLEET>", "type": "Microsoft.Authorization/roleAssignments" }
验证是否可以使用
kubectl get memberclusters
命令访问 API 服务器。kubectl get memberclusters
如果成功,输出应类似于以下示例输出:
NAME JOINED AGE aks-member-1 True 2m aks-member-2 True 2m aks-member-3 True 2m