Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 API-Server des Azure Arc-fähigen Kubernetes-Clusters ermöglicht die folgenden Szenarien:
- Interaktives Debuggen und Problembehandlung
- Clusterzugriff auf Azure Dienste für custom locations und andere ressourcen, die auf dem Cluster erstellt wurden.
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 keinen Cluster verbunden haben, verwenden Sie die Schnellstartanleitung.
- Upgrade Ihrer Agents auf die neueste Version.
Aktivieren Sie die Netzwerkanforderungen für Arc-fähige Kubernetes, einschließlich aller Endpunkte, die für die Clusterverbindung als erforderlich aufgeführt sind.
Installieren Sie die Azure-Befehlszeilenschnittstelle, oder aktualisieren Sie sie auf die neueste Version.
Installation der neuesten Version der Azure-CLI-Erweiterung
connectedk8s:az extension add --name connectedk8sWenn Sie die Erweiterung
connectedk8sbereits installiert haben, aktualisieren Sie die Erweiterung auf die neueste Version:az extension update --name connectedk8sErsetzen Sie die Platzhalter, und führen Sie den folgenden Befehl aus, um die 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)
Einrichten der Authentifizierung
Erstellen Sie im vorhandenen Arc-fähigen Cluster die ClusterRoleBinding entweder unter Verwendung der Microsoft Entra ID-Authentifizierung oder eines Dienstkonto-Tokens.
Microsoft Entra ID-Authentifizierung
Rufen Sie die
objectIdab, die Ihrer Microsoft Entra ID-Entität zugeordnet ist. Rufen Sie für einzelne Benutzerkonten den Benutzerprinzipalnamen (UPN) ab, der Ihrer Microsoft Entra ID-Entität zugeordnet ist.Für ein Microsoft Entra-Gruppenkonto:
AAD_ENTITY_ID=$(az ad group show --group <group-name> --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 für die Autorisierungsprüfungen im Cluster die Kubernetes-eigenen ClusterRoleBinding- oder RoleBinding-Objekte verwenden, wobei die Datei
kubeconfigauf den Kubernetes-API-Server (kube-apiserver) Ihres Clusters verweist, um direkten Zugriff zu ermöglichen, können Sie ein Objekt erstellen, das der Microsoft Entra ID-Entität zugeordnet ist, die auf diesen Cluster zugreifen muss. Beispiel:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_IDWenn Sie Azure RBAC für Autorisierungsprüfungen im Cluster verwenden, können Sie eine entsprechende Azure Rollenzuweisung erstellen der Microsoft Entra ID Entität zugeordnet. 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
Dienstkontotokenauthentifizierung
Hinweis
Die Befehle auf dieser Registerkarte setzen eine Bash-kompatible Shell (Linux, macOS oder Windows-Subsystem für Linux) voraus. Verwenden Sie für Windows PowerShell die Registerkarte Azure PowerShell.
Führen Sie mit der
kubeconfigDatei, die auf den Kubernetes-API-Server (kube-apiserver) Ihres Kubernetes-Clusters zeigt, diesen Befehl aus, um ein Dienstkonto zu erstellen. In diesem Beispiel wird das Dienstkonto im Standard-Namensraum erstellt, aber Sie können jeden anderen Namensraum durchdefaultersetzen.kubectl create serviceaccount demo-user -n defaultErstellen Sie ein 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-userErstellen 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 EOFTOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')Geben Sie das Token an die Konsole aus:
echo $TOKEN
Zugriff auf Ihren Cluster von einem Clientgerät aus
Nachdem Sie die Authentifizierung auf dem Cluster eingerichtet haben, führen Sie die folgenden Schritte von jedem Clientgerät aus, um einen Clusterverbindungsproxy zu öffnen und kubectl-Befehle für den Azure Arc-fähigen Kubernetes-Cluster auszuführen.
Melden Sie sich entweder mit Microsoft Entra ID-Authentifizierung oder per Dienstkonto-Token an.
Rufen Sie die Clusterverbindung
kubeconfigab, die Sie für die Kommunikation mit dem Cluster von überall (auch außerhalb der Firewall) verwenden, basierend auf Ihrer Authentifizierungsoption:Für die Microsoft Entra ID-Authentifizierung:
# Microsoft Entra ID authentication az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUPFür die Dienstkontotokenauthentifizierung:
# Service account token authentication az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKENHinweis
Dieser Befehl öffnet den Proxy und blockiert die aktuelle Shell.
Verwenden Sie in einer anderen Shell-Sitzung
kubectl, um Anfragen an den Cluster zu senden. Führen Sie beispielsweise den folgenden Befehl aus:kubectl get pods -n default
Wenn die Verbindung ordnungsgemäß funktioniert, werden in der Antwort alle Pods im default Namespace aufgelistet.
Bekannte Einschränkungen
Die folgende Einschränkung gilt, wenn Sie cluster connect verwenden, um auf einen Azure Arc-fähigen Kubernetes-Cluster zuzugreifen.
Wenn Sie sich vor dem Ausführen von az connectedk8s proxy bei Azure CLI mit einem Microsoft Entra ID Dienstprinzipal anmelden und dieser Dienstprinzipal Mitglied von mehr als 200 Gruppen ist, wird möglicherweise der folgende Fehler angezeigt:
Overage claim (users with more than 200 group membership) for SPN is currently not supported. For troubleshooting, please refer to aka.ms/overageclaimtroubleshoot
So umgehen Sie diese Einschränkung:
- 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 ID RBAC in Ihren Clustern ein.
- Bereitstellen und Verwalten von Clustererweiterungen
- Helfen Sie, Ihren Cluster auf andere Weise zu schützen, indem Sie den Anweisungen im Sicherheitsbuch für Azure Arc-fähige Kubernetes folgen.