適用於: ✔️ 使用中樞叢集的車隊管理器
如果您的 Azure Kubernetes 機群管理員 (Kubernetes 機群) 資源是使用中樞叢集建立的,您可以使用它集中控制 Kubernetes 資源傳播等案例。 在本文中,您將了解如何存取適用於 Kubernetes 機群中樞叢集的 Kubernetes API。
開始之前
- 如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
- 您需要具有中樞叢集和成員叢集的 Kubernetes 機群資源。 如果沒有,請參閱使用 Azure CLI 建立 Azure Kubernetes 機群管理員資源並加入成員叢集。
- 您所使用的身分識別 (使用者或服務主體) 必須具有 Kubernetes 機群資源上的 Microsoft.ContainerService/fleets/listCredentials/action 權限。
如果您的 Azure Kubernetes 叢集管理員 (Kubernetes 叢集) 資源是使用私人中樞叢集建立,您可以使用它來集中控制 Kubernetes 資源傳播等案例。 在本文中,您將瞭解如何使用 Azure Bastion 的原生用戶端通道功能,安全地存取私人 Kubernetes 叢集中樞叢集的 Kubernetes API。
使用 Azure Bastion 可保護您的私人中樞叢集免於將端點公開給外部世界,同時仍提供安全存取。 如需詳細資訊,請參閱 什麼是 Azure Bastion?
開始之前
- 如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
- 您需要具有中樞叢集和成員叢集的 Kubernetes 機群資源。 如果沒有,請參閱使用 Azure CLI 建立 Azure Kubernetes 機群管理員資源並加入成員叢集。
- 您需要已安裝堡壘主機(Bastion Host)的虛擬網路。
- 請確定您已為叢集管理員所在的虛擬網路設定 Azure 堡壘主機。 若要設定 Azure 堡壘主機,請參閱 快速入門:使用預設設定部署堡壘主機。
- Bastion 主機必須是標準或進階 SKU,並已在組態設定下啟用原生用戶端支援。
- 您使用的身分識別 (使用者或服務主體) 必須具有:
- Kubernetes 機群資源上的 Microsoft.ContainerService/fleets/listCredentials/action 權限。
- Bastion 資源上的 Microsoft.Network/bastionHosts/read。
- 私人中樞叢集之虛擬網路上的 Microsoft.Network/virtualNetworks/read。
存取 Kubernetes API
為您的訂用帳戶識別碼、資源群組和 Kubernetes 機群資源設定下列環境變數:
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命令 (部分機器翻譯) 取得 Kubernetes 機群中樞叢集的 kubeconfig 檔案:az fleet get-credentials --resource-group ${GROUP} --name ${FLEET}輸出看起來應類似下列範例:
Merged "hub" as current context in /home/fleet/.kube/config針對中樞叢集 Kubernetes 機群資源的
FLEET_ID值設定下列環境變數:export FLEET_ID=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/fleets/${FLEET}使用下列命令授權您的身分識別以存取 Kubernetes 機群中樞叢集。
針對
ROLE環境變數,您可以使用下列四個內建角色定義之一做為值:- Azure Kubernetes 機群管理員 RBAC 讀取者
- Azure Kubernetes 機群管理員 RBAC 編寫器
- Azure Kubernetes 機群管理員 RBAC 管理員
- Azure Kubernetes 機群管理員 RBAC Cluster 管理員
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
開啟通往 Private Fleet Manager 中樞叢集的通道:
export HUB_CLUSTER_ID=<hub-cluster-id-in-FL_resourceGroup> az network bastion tunnel --name <BastionName> --resource-group ${GROUP} --target-resource-id ${HUB_CLUSTER_ID}$ --resource-port 443 --port <LocalMachinePort>在新的終端機視窗中,透過堡壘主機通道連線到中樞叢集,並驗證 API 伺服器存取:
kubectl get memberclusters --server=https://localhost:<LocalMachinePort>如果命令成功,您的輸出看起來應該類似下列範例:
NAME JOINED AGE aks-member-1 True 2m aks-member-2 True 2m aks-member-3 True 2m