Fürtcsatlakozás használata az Azure Arc-kompatibilis Kubernetes-fürtökhöz való biztonságos csatlakozáshoz

A fürtcsatlakozással bárhonnan biztonságosan csatlakozhat az Azure Arc-kompatibilis Kubernetes-fürtökhöz anélkül, hogy bármilyen bejövő portot engedélyezni kellene a tűzfalon.

apiserver Az Azure Arc-kompatibilis Kubernetes-fürthöz való hozzáférés a következő forgatókönyveket teszi lehetővé:

  • Interaktív hibakeresés és hibaelhárítás.
  • Fürthozzáférés az Azure-szolgáltatásokhoz egyéni helyekhez és a rajta létrehozott egyéb erőforrásokhoz.

Mielőtt hozzákezdene, tekintse át a fürtcsatlakozás funkció elméleti áttekintését.

Előfeltételek

  • Telepítse vagy frissítse az Azure CLI-t a legújabb verzióra.

  • Telepítse az Azure CLI-bővítmény legújabb verzióját connectedk8s :

    az extension add --name connectedk8s
    

    Ha már telepítette a bővítményt connectedk8s , frissítse a bővítményt a legújabb verzióra:

    az extension update --name connectedk8s
    
  • Cserélje le a helyőrzőket, és futtassa az alábbi parancsot a dokumentumban használt környezeti változók beállításához:

    CLUSTER_NAME=<cluster-name>
    RESOURCE_GROUP=<resource-group-name>
    ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
    
  • Az Arc-kompatibilis Kubernetes hálózati követelményeinek teljesítése mellett engedélyezze ezeket a végpontokat a kimenő hozzáféréshez:

    Végpont Kikötő
    *.servicebus.windows.net 443
    guestnotificationservice.azure.com, *.guestnotificationservice.azure.com 443

    Feljegyzés

    A helyettesítő karakter adott végpontokra való lefordításához *.servicebus.windows.net használja a parancsot \GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>. Ebben a parancsban a régiót meg kell adni a <location> helyőrzőhöz.

A regionális végpont régiószegmensének lekéréséhez távolítsa el az összes szóközt az Azure-régió nevéből. Például az USA 2. keleti régiója, a régió neve .eastus2

Például: *.<region>.arcdataservices.com az USA 2. keleti régiójában kell lennie *.eastus2.arcdataservices.com .

Az összes régió listájának megtekintéséhez futtassa ezt a parancsot:

az account list-locations -o table
Get-AzLocation | Format-Table

Hitelesítés beállítása

A meglévő Arc-kompatibilis fürtön hozza létre a ClusterRoleBindinget Microsoft Entra-hitelesítéssel vagy szolgáltatásfiók-jogkivonattal.

Microsoft Entra hitelesítési lehetőség

  1. Szerezze be a objectId Microsoft Entra-entitáshoz társított entitást.

    • Microsoft Entra felhasználói fiók esetén:

      AAD_ENTITY_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
      
    • Microsoft Entra-alkalmazás esetén:

      AAD_ENTITY_OBJECT_ID=$(az ad sp show --id <id> --query id -o tsv)
      
  2. Engedélyezze az entitást megfelelő engedélyekkel.

    • Ha natív Kubernetes ClusterRoleBinding vagy RoleBinding szolgáltatást használ a fürt engedélyezési ellenőrzéséhez, és a kubeconfig fájl a fürtre mutat apiserver a közvetlen hozzáférés érdekében, létrehozhat egy, a fürt eléréséhez szükséges Microsoft Entra-entitásra (szolgáltatásnévre vagy felhasználóra) leképezve. Példa:

      kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_OBJECT_ID
      
    • Ha az Azure RBAC-t használja a fürt engedélyezési ellenőrzéséhez, létrehozhat egy, a Microsoft Entra entitáshoz hozzárendelt Azure-szerepkör-hozzárendelést. Példa:

      az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_OBJECT_ID --scope $ARM_ID_CLUSTER
      az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_OBJECT_ID --scope $ARM_ID_CLUSTER
      

Szolgáltatásfiók jogkivonatának hitelesítési lehetősége

  1. Ha a kubeconfig fájl a apiserver Kubernetes-fürtre mutat, futtassa ezt a parancsot egy szolgáltatásfiók létrehozásához. Ez a példa létrehozza a szolgáltatásfiókot az alapértelmezett névtérben, de bármely más névteret helyettesíthet a következővel default: .

    kubectl create serviceaccount demo-user -n default
    
  2. Hozza létre a ClusterRoleBinding szolgáltatást, hogy a szolgáltatásfióknak megfelelő engedélyeket adjon a fürthöz. Ha az első parancsban egy másik névteret használt, cserélje le itt a következőre default: .

    kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
    
  3. Szolgáltatásfiók-jogkivonat létrehozása:

    kubectl apply -f - <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: demo-user-secret
      annotations:
        kubernetes.io/service-account.name: demo-user
    type: kubernetes.io/service-account-token
    EOF
    
    TOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
    
  4. A konzolon való kimenethez tartozó jogkivonat lekérése

    echo $TOKEN
    

Fürt elérése ügyféleszközről

Most már egy másik ügyfélről is elérheti a fürtöt. Futtassa a következő lépéseket egy másik ügyféleszközön.

  1. Jelentkezzen be Microsoft Entra-hitelesítéssel vagy szolgáltatásfiók-jogkivonat-hitelesítéssel.

  2. Kérje le a fürt csatlakozását kubeconfig a fürttel való kommunikációhoz bárhonnan (a fürtöt körülvevő tűzfalon kívülről is), a használt hitelesítési lehetőség alapján:

    • Ha Microsoft Entra-hitelesítést használ:

      az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
      
    • Szolgáltatásfiók-jogkivonat-hitelesítés használata esetén:

      az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
      

      Feljegyzés

      Ez a parancs megnyitja a proxyt, és letiltja az aktuális rendszerhéjat.

  3. Egy másik rendszerhéj-munkamenetben kubectl a kéréseket a fürtnek küldheti el:

    kubectl get pods -A
    

Ekkor megjelenik a fürt válasza, amely tartalmazza a névtérben lévő default összes pod listáját.

Ismert korlátozások

Az Arc-kompatibilis Kubernetes-ügynök verziójának ellenőrzésére használható az connectedk8s show .

A Kubernetes-fürtre irányuló kérések során, ha a használt Microsoft Entra entitás több mint 200 csoport része, a következő hibaüzenet jelenhet meg:

You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported.

Ez egy ismert korlátozás. A hiba túllépéséhez:

  1. Hozzon létre egy szolgáltatásnevet, amely kevésbé valószínű, hogy több mint 200 csoport tagja.
  2. A parancs futtatása előtt jelentkezzen be az Azure CLI-be a az connectedk8s proxy szolgáltatásnévvel.

Következő lépések