Dela via


Få åtkomst till Kubernetes API för ett Azure Kubernetes Fleet Manager-hubbkluster

Gäller för: ✔️ Fleet Manager med hubbkluster

Om din Azure Kubernetes Fleet Manager-resurs (Kubernetes Fleet) har skapats med ett hubbkluster kan du använda den för att centralt styra scenarier som Kubernetes-resursspridning. I den här artikeln lär du dig att komma åt Kubernetes API för ett Kubernetes Fleet-hubbkluster.

Innan du börjar

Om din Azure Kubernetes Fleet Manager-resurs (Kubernetes Fleet) skapades med ett privat hubbkluster kan du använda den för att centralt styra scenarier som Kubernetes-resursspridning. I den här artikeln får du lära dig hur du får åtkomst till Kubernetes API för ett privat Kubernetes Fleet-hubbkluster på ett säkert sätt med hjälp av Azure Bastions inbyggda klienttunnelfunktion.

Genom att använda Azure Bastion skyddas ditt privata hubbkluster från att exponera slutpunkter till omvärlden, samtidigt som det ger säker åtkomst. Mer information finns i Vad är Azure Bastion?

Innan du börjar

  • Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.
  • Du behöver en Kubernetes Fleet-resurs med ett hubbkluster och medlemskluster. Om du inte har en kan du läsa Skapa en Azure Kubernetes Fleet Manager-resurs och ansluta till medlemskluster med hjälp av Azure CLI.
  • Du behöver ett virtuellt nätverk med en Bastionvärd redan installerad.
    • Kontrollera att du har konfigurerat en Azure Bastion-värd för det virtuella nätverk där Fleet Manager finns. Information om hur du konfigurerar en Azure Bastion-värd finns i Snabbstart: Distribuera Bastion med standardinställningar.
    • Bastion måste vara Standard eller Premium SKU och ha inbyggt klientstöd aktiverat under konfigurationsinställningar.
  • Den identitet (användaren eller tjänstens huvudnamn) som du använder måste ha:
    • Behörigheter för Microsoft.ContainerService/fleets/listCredentials/action på resursen Kubernetes Fleet.
    • Microsoft.Network/bastionHosts/read på Bastion-resursen.
    • Microsoft.Network/virtualNetworks/read på det virtuella nätverket i det privata hubbklustret.

Få åtkomst till Kubernetes API

  1. Ange följande miljövariabler för ditt prenumerations-ID, resursgrupp och Kubernetes Fleet-resurs:

    export SUBSCRIPTION_ID=<subscription-id>
    export GROUP=<resource-group-name>
    export FLEET=<fleet-name>
    
  2. Ange standardprenumerationen az account set för Azure med hjälp av kommandot:

    az account set --subscription ${SUBSCRIPTION_ID}
    
  3. Hämta kubeconfig-filen för Kubernetes Fleet Hub-klustret med hjälp az fleet get-credentials av kommandot:

    az fleet get-credentials --resource-group ${GROUP} --name ${FLEET}
    

    Resultatet bör se ut ungefär så här:

    Merged "hub" as current context in /home/fleet/.kube/config
    
  4. Ange följande miljövariabel för värdet för FLEET_ID hubbklustrets Kubernetes Fleet-resurs:

    export FLEET_ID=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/fleets/${FLEET}
    
  5. Ge din identitet åtkomst till Kubernetes Fleet Hub-klustret med hjälp av följande kommandon.

    ROLE För miljövariabeln kan du använda någon av följande fyra inbyggda rolldefinitioner som värde:

    • RBAC-läsare för Azure Kubernetes Fleet Manager
    • Azure Kubernetes Fleet Manager RBAC-skribent
    • RBAC-administratör för Azure Kubernetes Fleet Manager
    • Azure Kubernetes Fleet Manager RBAC-klusteradministratör
    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}
    

    Resultatet bör se ut ungefär så här:

    {
      "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"
    }
    
  1. Kontrollera att du kan komma åt API-servern med hjälp kubectl get memberclusters av kommandot :

    kubectl get memberclusters
    

    Om kommandot lyckas bör dina utdata se ut ungefär som i följande exempel:

    NAME           JOINED   AGE
    aks-member-1   True     2m
    aks-member-2   True     2m
    aks-member-3   True     2m
    
  1. Öppna tunneln till din Private Fleet Manager-hubbkluster:

    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>
    
  2. I ett nytt terminalfönster ansluter du till hubbklustret via Bastion-tunneln och verifierar API-serveråtkomsten:

    kubectl get memberclusters --server=https://localhost:<LocalMachinePort>
    

    Om kommandot lyckas bör dina utdata se ut ungefär som i följande exempel:

    NAME           JOINED   AGE
    aks-member-1   True     2m
    aks-member-2   True     2m
    aks-member-3   True     2m