Condividi tramite


Accedere all'API Kubernetes per un cluster hub di Gestione flotta Kubernetes di Azure

Si applica a: ✔️ Gestione flotta con un cluster hub

Se la risorsa di Gestione flotta Kubernetes di Azure (flotta Kubernetes) è stata creata con un cluster hub, è possibile usarla per controllare in modo centralizzato scenari come la propagazione delle risorse Kubernetes. Questo articolo illustra come accedere all'API Kubernetes per un cluster hub di Flotta Kubernetes.

Prima di iniziare

Se la risorsa di Azure Kubernetes Fleet Manager (Kubernetes Fleet) è stata creata con un cluster hub privato, è possibile usarla per controllare in modo centralizzato scenari come la propagazione delle risorse Kubernetes. Questo articolo illustra come accedere all'API Kubernetes per un cluster hub Kubernetes privato in modo sicuro usando la funzionalità di tunneling client nativo di Azure Bastion.

L'uso di Azure Bastion protegge il cluster hub privato dall'esposizione di endpoint all'esterno, garantendo comunque l'accesso sicuro. Per altre informazioni, vedere Che cos'è Azure Bastion?

Prima di iniziare

Accedere all'API Kubernetes

  1. Impostare le variabili di ambiente seguenti per l'ID sottoscrizione, il gruppo di risorse e la risorsa Flotta Kubernetes:

    export SUBSCRIPTION_ID=<subscription-id>
    export GROUP=<resource-group-name>
    export FLEET=<fleet-name>
    
  2. Impostare la sottoscrizione di Azure predefinita usando il comando az account set:

    az account set --subscription ${SUBSCRIPTION_ID}
    
  3. Ottenere il file kubeconfig del cluster hub di Flotta Kubernetes usando il comando az fleet get-credentials:

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

    L'output dovrebbe essere simile all'esempio seguente:

    Merged "hub" as current context in /home/fleet/.kube/config
    
  4. Impostare la variabile di ambiente seguente per il valore FLEET_ID della risorsa Flotta Kubernetes del cluster hub:

    export FLEET_ID=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/fleets/${FLEET}
    
  5. Autorizzare l'identità ad accedere al cluster hub di Flotta Kubernetes usando i comandi seguenti.

    Per la variabile di ambiente ROLE, è possibile usare una delle quattro definizioni di ruolo predefinite seguenti come valore:

    • Reader di Controllo degli accessi in base al ruolo di Gestione flotta Kubernetes di Azure
    • Writer di Controllo degli accessi in base al ruolo di Gestione flotta Kubernetes di Azure
    • Admin di Controllo degli accessi in base al ruolo di Gestione flotta Kubernetes di Azure
    • Admin del cluster di Controllo degli accessi in base al ruolo di Gestione flotta Kubernetes di Azure
    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}
    

    L'output dovrebbe essere simile all'esempio seguente:

    {
      "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. Verificare di poter accedere al server API usando il comando kubectl get memberclusters:

    kubectl get memberclusters
    

    Se il comando ha esito positivo, l'output dovrebbe essere simile all'esempio seguente:

    NAME           JOINED   AGE
    aks-member-1   True     2m
    aks-member-2   True     2m
    aks-member-3   True     2m
    
  1. Aprire il tunnel al cluster hub di 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>
    
  2. In una nuova finestra del terminale connettersi al cluster hub tramite il tunnel Bastion e verificare l'accesso al server API:

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

    Se il comando ha esito positivo, l'output dovrebbe essere simile all'esempio seguente:

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