Sdílet prostřednictvím


Přístup k rozhraní API Kubernetes pro cluster centra Azure Kubernetes Fleet Manager

Platí pro: ✔️ Fleet Manager s centrálním clusterem

Pokud se prostředek Azure Kubernetes Fleet Manager (Kubernetes Fleet) vytvořil s clusterem centra, můžete ho použít k centrálnímu řízení scénářů, jako je šíření prostředků Kubernetes. V tomto článku se dozvíte, jak získat přístup k rozhraní API Kubernetes pro cluster Centra flotily Kubernetes.

Než začnete

Pokud byl prostředek Azure Kubernetes Fleet Manager (Kubernetes Fleet) vytvořen s privátním hub clusterem, můžete jej použít pro centrální řízení scénářů, jako je šíření prostředků Kubernetes. V tomto článku se dozvíte, jak bezpečně přistupovat k rozhraní Kubernetes API pro privátní cluster centra Kubernetes Fleet Hub pomocí funkce tunelování nativního klienta služby Azure Bastion.

Použití služby Azure Bastion chrání cluster privátního centra před zveřejněním koncových bodů vnějšímu světu a přitom zajišťuje zabezpečený přístup. Další informace najdete v tématu Co je Azure Bastion?

Než začnete

  • Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
  • Potřebujete prostředek Kubernetes Fleet s clusterem centra a členskými clustery. Pokud ho nemáte, přečtěte si téma Vytvoření prostředku Azure Kubernetes Fleet Manageru a připojení k členským clusterům pomocí Azure CLI.
  • Potřebujete virtuální síť s již nainstalovaným hostitelem Bastion.
    • Ujistěte se, že jste nastavili hostitele služby Azure Bastion pro virtuální síť, ve které se nachází Správce flotily. Informace o nastavení hostitele Služby Azure Bastion najdete v tématu Rychlý start: Nasazení Bastionu s výchozím nastavením.
    • Bastion musí být skladová položka Standard nebo Premium a musí mít povolenou nativní podporu klienta v nastavení konfigurace.
  • Identita (uživatel nebo aplikační objekt), kterou používáte, musí mít:
    • Microsoft.ContainerService/fleets/listCredentials/akce oprávnění na prostředek Kubernetes Fleet.
    • Microsoft.Network/bastionHosts/read v prostředku Bastion.
    • Microsoft.Network/virtualNetworks/read ve virtuální síti clusteru privátního centra.

Přístup k rozhraní Kubernetes API

  1. Nastavte následující proměnné prostředí pro VAŠE ID předplatného, skupinu prostředků a prostředek Kubernetes Fleet:

    export SUBSCRIPTION_ID=<subscription-id>
    export GROUP=<resource-group-name>
    export FLEET=<fleet-name>
    
  2. Pomocí příkazu nastavte výchozí předplatné az account set Azure:

    az account set --subscription ${SUBSCRIPTION_ID}
    
  3. Pomocí příkazu získejte soubor kubeconfig clusteru az fleet get-credentials centra Kubernetes Fleet Hub:

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

    Výstup by měl vypadat podobně jako v následujícím příkladu:

    Merged "hub" as current context in /home/fleet/.kube/config
    
  4. Nastavte následující proměnnou prostředí pro FLEET_ID hodnotu prostředku Kubernetes Fleet clusteru centra:

    export FLEET_ID=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/fleets/${FLEET}
    
  5. Pomocí následujících příkazů autorizujete svou identitu pro přístup ke clusteru centra Kubernetes Fleet Hub.

    Pro proměnnou ROLE prostředí můžete jako hodnotu použít jednu z následujících čtyř předdefinovaných definic rolí:

    • Čtenář RBAC v Azure Kubernetes Fleet Manageru
    • Azure Kubernetes Fleet Manager – zapisovač RBAC
    • Správce RBAC v Azure Kubernetes Fleet Manageru
    • Správce clusteru RBAC v Azure Kubernetes Fleet Manageru
    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}
    

    Výstup by měl vypadat podobně jako v následujícím příkladu:

    {
      "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. Pomocí příkazu ověřte, že máte přístup k serveru kubectl get memberclusters rozhraní API:

    kubectl get memberclusters
    

    Pokud je příkaz úspěšný, měl by výstup vypadat podobně jako v následujícím příkladu:

    NAME           JOINED   AGE
    aks-member-1   True     2m
    aks-member-2   True     2m
    aks-member-3   True     2m
    
  1. Otevřete tunel do centrálního clusteru Private Fleet Manageru:

    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. V novém okně terminálu se připojte k rozbočovacímu clusteru přes bastionový tunel a ověřte přístup k API serveru.

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

    Pokud je příkaz úspěšný, měl by výstup vypadat podobně jako v následujícím příkladu:

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