Verwenden der Clusterverbindung zur Herstellung einer sicheren Verbindung mit Azure Arc-fähigen Kubernetes-Clustern
Mit Cluster Connect können Sie sicher eine Verbindung mit Kubernetes-Clustern mit Azure Arc-Unterstützung von überall aus herstellen, ohne dass ein Eingangsport in der Firewall aktiviert werden muss.
Der Zugriff auf den apiserver
des Kubernetes-Clusters mit Azure Arc-Unterstützung ermöglicht die folgenden Szenarien:
- Interaktives Debuggen und Problembehandlung
- Clusterzugriff auf Azure-Dienste für benutzerdefinierte Speicherorte und andere auf dieser Basis erstellte Ressourcen
Bevor Sie beginnen, lesen Sie die konzeptionelle Übersicht über die Clusterverbindungsfunktion.
Voraussetzungen
Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
Ein vorhandener Cluster, der mit Kubernetes mit Azure Arc-Unterstützung verbunden ist
- Wenn Sie noch keine Verbindung mit einem Cluster hergestellt haben, verwenden Sie unseren Schnellstart.
- Aktualisieren Sie Ihre Agents auf die neueste Version.
Aktivieren der Netzwerkanforderungen für die Verwendung von Arc-fähigen Kubernetes
Aktivieren Sie diese Endpunkte für ausgehenden Zugriff:
Endpunkt Port *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Hinweis
Um den Platzhalter
*.servicebus.windows.net
in bestimmte Endpunkte zu übersetzen, verwenden Sie den Befehl\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. In diesem Befehl muss die Region für den Platzhalter<location>
angegeben werden.
Um das Regionssegment eines regionalen Endpunkts abzurufen, entfernen Sie alle Leerzeichen aus dem Namen der Azure-Region. Beispiel: Der Regionsname für die Region USA, Osten 2 lautet eastus2
.
Beispiel: Bei der Region „USA, Osten 2“ sollte *.<region>.arcdataservices.com
*.eastus2.arcdataservices.com
sein.
Führen Sie den folgenden Befehl aus, um eine Liste aller Regionen anzuzeigen:
az account list-locations -o table
Get-AzLocation | Format-Table
Installieren Sie die Azure-Befehlszeilenschnittstelle, oder aktualisieren Sie sie auf die neueste Version.
Installieren Sie die neueste Version der Azure CLI-Erweiterung
connectedk8s
:az extension add --name connectedk8s
Wenn Sie die Erweiterung
connectedk8s
bereits installiert haben, aktualisieren Sie die Erweiterung auf die neueste Version:az extension update --name connectedk8s
Ersetzen Sie die Platzhalter, und führen Sie den folgenden Befehl aus, um die in diesem Dokument verwendeten Umgebungsvariablen festzulegen:
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)
Authentifizierung einrichten
Erstellen Sie auf dem vorhandenen Cluster mit Arc-Unterstützung ClusterRoleBinding entweder mit Microsoft Entra-Authentifizierung oder mit einem Token für das Dienstkonto.
Microsoft Entra-Authentifizierungzoption
Rufen Sie die
objectId
zugeordnete Microsoft Entra-Entität ab. Wenn Sie ein Einzelbenutzerkonto verwenden, rufen Sie den Benutzerprinzipalnamen (UPN) ab, der Ihrer Microsoft Entra-Entität zugeordnet ist.- Für ein Microsoft Entra-Gruppenkonto:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
Für ein Microsoft Entra-Einzelbenutzerkonto:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Für eine Microsoft Entra-Anwendung:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autorisieren Sie die Entität mit den entsprechenden Berechtigungen.
Wenn Sie native „ClusterRoleBinding“ oder „RoleBinding“ von Kubernetes für Autorisierungsprüfungen im Cluster verwenden, wobei die
kubeconfig
-Datei für den direkten Zugriff auf denapiserver
Ihres Clusters verweist, können Sie eine Rollenzuweisung erstellen, die der Microsoft Entra-Entität (Dienstprinzipal oder Benutzer) zugeordnet ist, die auf diesen Cluster zugreifen muss. Beispiel:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Wenn Sie Azure RBAC für Autorisierungsprüfungen im Cluster verwenden, können Sie eine anwendbare Azure-Rollenzuweisung erstellen, die der Microsoft Entra-Entität zugeordnet ist. Beispiel:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER
Authentifizierungsoption „Dienstkontotoken“
Führen Sie diesen Befehl aus, wobei die Datei
kubeconfig
auf dasapiserver
Ihres Kubernetes-Clusters verweist, um ein Dienstkonto zu erstellen. In diesem Beispiel wird das Dienstkonto im Standard-Namensraum erstellt, aber Sie können jeden anderen Namensraum durchdefault
ersetzen.kubectl create serviceaccount demo-user -n default
Erstellen Sie ClusterRoleBinding, um diesem Dienstkonto die entsprechenden Berechtigungen für den Cluster zu erteilen. Wenn Sie im ersten Befehl einen anderen Namespace verwendet haben, ersetzen Sie ihn hier durch
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Erstellen eines Dienstkontotokens:
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')
Abrufen des Token zur Ausgabe auf der Konsole
echo $TOKEN
Zugriff auf Ihren Cluster von einem Clientgerät aus
Jetzt können Sie von einem anderen Client aus auf den Cluster zugreifen. Führen Sie die folgenden Schritte auf einem anderen Clientgerät aus.
Melden Sie sich entweder mit der Microsoft Entra-Authentifizierung oder der Token-Authentifizierung für das Dienstkonto an.
Rufen Sie die Cluster Connect-
kubeconfig
-Datei für die Kommunikation mit dem Cluster von einem beliebigen Standort (auch von außerhalb der Firewall, die den Cluster umgibt) je nach Authentifizierungsoption auf:Bei Verwendung der Microsoft Entra-Authentifizierung:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Be Authentifizierung über ein Dienstkontotoken:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Hinweis
Mit diesem Befehl wird der Proxy geöffnet und die aktuelle Shell blockiert.
Verwenden Sie
kubectl
in einer anderen Shell-Sitzung, um Anforderungen an den Cluster zu senden:kubectl get pods -A
Nun sollte eine Antwort aus dem Cluster mit der Liste aller Pods im default
-Namespace angezeigt werden.
Bekannte Einschränkungen
Verwenden Sie az connectedk8s show
, um die Version Ihres Kubernetes-Agenten mit Arc-Unterstützung zu überprüfen.
Wenn beim Senden von Anforderungen an den Kubernetes-Cluster die verwendete Microsoft Entra-Entität Teil von mehr als 200 Gruppen ist, wird u. U. der folgende Fehler angezeigt:
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.
Dies ist eine bekannte Einschränkung. So umgehen Sie diesen Fehler:
- Erstellen Sie einen Dienstprinzipal, der weniger wahrscheinlich Mitglied von mehr als 200 Gruppen ist.
- Melden Sie sich bei der Azure CLI mit dem Dienstprinzipal an, bevor Sie den
az connectedk8s proxy
-Befehl ausführen.
Nächste Schritte
- Richten Sie Microsoft Entra RBAC auf Ihren Clustern ein.
- Bereitstellen und Verwalten von Clustererweiterungen