Freigeben über


Verwenden von Service Connector in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) ist einer der Computedienste, die von Service Connector unterstützt werden.

In diesem Artikel wird Folgendes behandelt:

  • Die Unterschiede zwischen Service Connector für AKS und anderen Rechendiensten.
  • Die Vorgänge, die während der Erstellung einer Dienstverbindung auf dem Cluster ausgeführt werden.
  • Die Vorgänge, die während der Erstellung einer Dienstverbindung für die Zieldienste ausgeführt werden.
  • Verwenden der Kubernetes-Ressourcen, die von Service Connector erstellt wurden.
  • Problembehandlung und Anzeigen von Dienstconnector-Protokollen in einem AKS-Cluster.

Voraussetzungen

Unterschiede zwischen Dienstconnector für AKS und anderen Computediensten

Service Connector für AKS unterscheidet sich von der Funktionsweise mit anderen Computediensten, die von Service Connector auf verschiedene Arten unterstützt werden. Im Folgenden werden AKS-spezifische Optionen und Verhaltensweisen für jeden API-Vorgang beschrieben.

Kreation

Die AKS-spezifischen Erstellungsoptionen sind unten aufgeführt. Informationen zum Erstellen einer neuen Verbindung in AKS finden Sie in den Schnellstarts im Azure-Portal oder in der Azure CLI.

  • Service Connector für AKS erfordert den Kubernetes namespace Parameter, um anzugeben, wo die Kubernetes-Ressourcen erstellt werden sollen. Standardmäßig wird der default Namespace verwendet.
  • Service Connector für AKS unterstützt Workload Identity als die sichere Authentifizierungsoption für Anmeldeinformationen, während andere Compute-Dienste System Managed Identity und User Managed Identity Optionen anbieten.
  • Bei Verwendung von Azure Key Vault als Zieldienst mit aktiviertem Secret Store CSI-Treiber verwendet Service Connector die vom Benutzer zugewiesene verwaltete Identität aus dem AKS azure-keyvault-secrets-provider-Add-On für die Authentifizierung, ohne dass Benutzer den Authentifizierungstyp angeben müssen.
  • Service Connector für AKS unterstützt nur die Option Firewall Rules Networking, während andere Computedienste auch Private Link und Virtual Network Optionen unterstützen können.

Konfigurationen auflisten

Der Dienstconnector für AKS zeigt nur Konfigurationen ohne Anmeldeinformationen in den Listenkonfigurationsansichten an. Benutzer sollten die Anmeldeinformationen bei Bedarf manuell in der zugehörigen Kubernetes-Ressource überprüfen.

Mit dem befehl Azure CLI az aks connection list-configuration ist der Wert einer Anmeldeinformationskonfiguration eine leere Zeichenfolge. Im Azure-Portal ist der Wert einer Anmeldeinformationskonfiguration ausgeblendet, wie unten dargestellt.

Screenshot der Konfiguration der AKS-Verbindungsauflistung.

Validierung

Der Service Connector für AKS überprüft keine Konfigurationswertänderungen, die im Cluster des Benutzers vorgenommen wurden, unabhängig davon, ob es sich um Anmeldeinformationen oder nicht um Anmeldeinformationen handelt. Der Dienstconnector führt jedoch die folgenden Überprüfungen aus, wie bei anderen Computediensten:

  • Überprüfen des Vorhandenseins des Zieldiensts
  • Überprüfen von IP-Firewallregeln für den Zugriff auf den Zieldienst
  • Sicherstellen der Rollenzuweisung für die Workloadidentität für den Zugriff auf den Zieldienst

Die Ausgabe des Azure CLI Befehls az aks connection validate ist immer success. Das gleiche gilt für das Azure-Portal, wie unten dargestellt.

Screenshot der AKS-Verbindungsüberprüfung.

Vorgänge, die vom Dienstconnector im AKS-Cluster ausgeführt werden

Die vom Service Connector im AKS-Cluster ausgeführten Vorgänge variieren je nach den Zieldiensten und Authentifizierungstypen, die beim Erstellen einer Dienstverbindung ausgewählt wurden. Im Folgenden sind die Vorgänge aufgeführt, die vom Dienstconnector ausgeführt werden können.

Hinzufügen der Kubernetes-Erweiterung „Dienstconnector“

Beim ersten Erstellen einer Dienstverbindung wird dem Cluster eine Kubernetes-Erweiterung sc-extension hinzugefügt. Später hilft die Erweiterung beim Erstellen von Kubernetes-Ressourcen im Cluster des Benutzers, wenn eine Dienstverbindungsanforderung an Service Connector kommt. Die Erweiterung befindet sich im AKS-Cluster des Benutzers im Azure-Portal im Menü Extensions + applications.

Screenshot des Azure Portals, anzeigen Sie die AKS extension.

Die Metadaten der Clusterverbindung werden auch in der Erweiterung gespeichert. Durch das Deinstallieren der Erweiterung werden alle Verbindungen im Cluster unbrauchbar. Der Erweiterungsoperator wird im Clusternamespace sc-systemgehostet.

Erstellen von Kubernetes-Ressourcen

Service Connector erstellt Kubernetes-Ressourcen im Namespace, den der Benutzer beim Erstellen der Dienstverbindung angibt. Die Kubernetes-Ressourcen speichern die Verbindungsinformationen, die von den Workloaddefinitionen des Benutzers oder dem Anwendungscode benötigt werden, um mit den Zieldiensten zu kommunizieren. Je nach Authentifizierungstyp werden unterschiedliche Kubernetes-Ressourcen erstellt. Für die Connection String und Service Principal Authentifizierungsarten wird ein Kubernetes Secret erstellt. Für den Workload Identity Authentifizierungstyp wird zusätzlich zu einem Kubernetes-Geheimnis auch ein Kubernetes-Dienstkonto erstellt.

Sie finden die Kubernetes-Ressourcen, die von Service Connector für jede Dienstverbindung im Azure Portal in Ihrer Kubernetes-Ressource erstellt wurden, im Menü "Service Connector".

``` Screenshot des Azure-Portals, Ansicht der vom Service Connector erstellten Kubernetes-Ressourcen. ```

Durch das Löschen einer Dienstverbindung wird die zugeordnete Kubernetes-Ressource nicht gelöscht. Entfernen Sie ihre Ressource bei Bedarf manuell, z. B. mit dem kubectl delete Befehl.

Aktivieren des azureKeyvaultSecretsProvider Add-Ons

Wenn der Zieldienst Azure Key Vault und der CSI-Treiber für den geheimen Speicher aktiviert ist, aktiviert Service Connector das azureKeyvaultSecretsProvider-Add-On für den Cluster.

Screenshot des Azure Portals, wodurch CSI-Treiber für keyvault aktiviert wird, wenn eine Verbindung erstellt wird.

Folgen Sie der Anleitung zum Verbinden mit Azure Key Vault mit dem CSI-Treiber, um eine Verbindung zu Azure Key Vault unter Verwendung des Secret Store CSI-Treibers herzustellen.

Aktivieren der Workloadidentität und des OIDC-Ausstellers (OpenID Connect)

Wenn der Authentifizierungstyp lautet Workload Identity, aktiviert Service Connector die Workloadidentität und den OIDC-Aussteller für den Cluster.

Screenshot des Azure Portals mithilfe von Workload-Identität zum Erstellen einer Verbindung.

Wenn der Authentifizierungstyp lautet Workload Identity, wird eine vom Benutzer zugewiesene verwaltete Identität benötigt, um die Verbundidentitätsanmeldeinformationen zu erstellen. Erfahren Sie mehr über Workload-Identitäten oder lesen Sie das folgende Lernprogramm, um eine Verbindung mit Azure Storage mithilfe einer Workloadidentität einzurichten.

Vorgänge, die vom Service Connector für die Zieldienste ausgeführt werden

Der Dienstconnector für AKS führt dieselben Vorgänge für Zieldienste wie andere Computedienste aus. Die Vorgänge variieren jedoch je nach Zieldiensttypen und Authentifizierungsmethoden. Im Folgenden werden einige mögliche Vorgänge aufgelistet.

Abrufen von Verbindungskonfigurationen

Service Connector ruft die erforderlichen Verbindungskonfigurationen vom Zieldienst ab und legt sie als Kubernetes-Geheimnis im Cluster des Benutzers fest. Die Verbindungskonfigurationen variieren je nach Zieldiensttyp und Authentifizierungsmethode:

  • Für den Authentifizierungstyp Connection String enthält die Konfiguration in der Regel einen geheimen Dienstschlüssel oder connection string.
  • Für den Workload Identity-Authentifizierungstyp ist in der Regel der Dienstendpunkt enthalten.
  • Für den Service Principal-Authentifizierungstyp sind die Mandanten-ID, die Client-ID und der geheime Clientschlüssel des Dienstprinzipals enthalten.

Ausführliche Informationen zu bestimmten Zieldiensten finden Sie in der entsprechenden Dokumentation, z. B. im Handbuch für Foundry Tools .

Erstellen von IP-basierten Firewallregeln

Service Connector ruft die ausgehende öffentliche IP aus dem AKS-Cluster ab und erstellt IP-Firewallregeln für den Zieldienst, um den Netzwerkzugriff vom Cluster zu ermöglichen.

Erstellen von Microsoft Entra ID-Rollenzuweisungen

Bei Verwendung des Authentifizierungstyps Workload Identity erstellt Service Connector automatisch eine Rollenzuweisung für die Identität. Die zugewiesene Rolle variiert je nach Zieldienst, um einen angemessenen Zugriff sicherzustellen. Benutzer können Rollenzuweisungen auch nach Bedarf anpassen. Weitere Informationen finden Sie unter Rollenanpassung.

Verwenden der vom Dienstconnector erstellten Kubernetes-Ressourcen

Service Connector erstellt verschiedene Kubernetes-Ressourcen je nach ausgewähltem Zieldiensttyp und Authentifizierungstyp. In den folgenden Abschnitten wird gezeigt, wie Sie die vom Dienstconnector erstellten Kubernetes-Ressourcen in Ihrer Clusterworkloaddefinition und in Ihrem Anwendungscode verwenden.

Kubernetes-Geheimnis

Ein Kubernetes-Geheimnis wird erstellt, wenn der Authentifizierungstyp entweder Connection String oder Service Principal. Ihre Clusterworkloaddefinition kann direkt auf das Geheimnis verweisen. Der folgende Codeschnipsel zeigt ein Beispiel.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
spec:
  template:
    spec:
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Anschließend kann Ihr Anwendungscode die Verbindungszeichenfolge im Geheimnis auf Grundlage einer Umgebungsvariablen verwenden. Überprüfen Sie den folgenden Beispielcode , um mehr über die Namen der Umgebungsvariablen und deren Verwendung in Ihrem Anwendungscode zur Authentifizierung bei verschiedenen Zieldiensten zu erfahren.

Kubernetes-Dienstkonto

Ein Kubernetes-Dienstkonto und ein Secret werden erstellt, wenn der Authentifizierungstyp auf Workload Identity gesetzt ist. Ihre Clusterworkloaddefinition kann auf das Dienstkonto und den geheimen Schlüssel verweisen, um sich über die Workloadidentität zu authentifizieren. Der folgende Codeschnipsel zeigt ein Beispiel.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
  labels:
    azure.workload.identity/use: "true"
spec:
  template:
    spec:
      serviceAccountName: <ServiceAccountCreatedByServiceConnector>
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Schauen Sie sich das folgende Tutorial an, um zu lernen, wie man eine Verbindung zu Azure Storage mit Workload-Identität herstellt.

Problembehandlung und Anzeigen von Protokollen

Wenn beim Erstellen einer Dienstverbindung ein Fehler auftritt, der auch durch Wiederholen des Vorgangs nicht behoben werden kann, erhalten Sie mithilfe der folgenden Methoden weitere Informationen zur Problembehandlung.

Überprüfen der Kubernetes-Erweiterung „Dienstconnector“

Die Service Connector Kubernetes-Erweiterung basiert auf Azure Arc-fähigen Kubernetes-Clustererweiterungen. Verwenden Sie die folgenden Befehle, um nach Fehlern zu suchen, die während der Erweiterungsinstallation oder des Aktualisierungsprozesses auftreten.

  1. Installieren Sie die Erweiterung k8s-extension Azure CLI.

    az extension add --name k8s-extension
    
  2. Rufen Sie den Status der Erweiterung „Dienstconnector“ ab. Überprüfen Sie die statuses-Eigenschaft in der Befehlsausgabe, um Fehler zu identifizieren.

    az k8s-extension show \
        --resource-group MyClusterResourceGroup \
        --cluster-name MyCluster \
        --cluster-type managedClusters \
        --name sc-extension
    

Überprüfen der Kubernetes-Clusterprotokolle

Wenn während der Erweiterungsinstallation ein Fehler auftritt und die Fehlermeldung in der statuses Eigenschaft keine ausreichenden Informationen bereitstellt, können Sie die Kubernetes-Protokolle mit den folgenden Schritten weiter untersuchen.

  1. Stellen Sie eine Verbindung mit Ihrem AKS-Cluster her.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. Die Erweiterung „Dienstconnector“ wird im sc-system-Namespace mithilfe eines Helm-Charts installiert. Überprüfen Sie den Namespace und das Helm-Release mithilfe der folgenden Befehle.

    • Überprüfen Sie, ob der Namespace vorhanden ist.

      kubectl get ns
      
    • Überprüfen Sie den Helm-Releasestatus.

      helm list -n sc-system
      
  3. Während der Erweiterungsinstallation oder -aktualisierung erstellt ein Kubernetes-Auftrag sc-job namens Kubernetes die Kubernetes-Ressourcen für die Dienstverbindung. Der Erweiterungsfehler wird in der Regel durch einen Fehler bei der Auftragsausführung verursacht. Überprüfen Sie den Auftragsstatus, indem Sie die folgenden Befehle ausführen. Wenn sc-job nicht im sc-system-Namespace existiert, sollte es erfolgreich ausgeführt worden sein. Dieser Auftrag ist so konzipiert, dass er nach erfolgreicher Ausführung automatisch gelöscht wird.

    • Überprüfen Sie, ob der Auftrag vorhanden ist.

      kubectl get job -n sc-system
      
    • Rufen Sie den Auftragsstatus ab.

      kubectl describe job/sc-job -n sc-system
      
    • Zeigen Sie die Auftragsprotokolle an.

      kubectl logs job/sc-job -n sc-system
      

Häufige Fehler und Behebung

Fehler beim Erstellen der Erweiterung

Fehlermeldung:

  • Unable to get a response from the agent in time.
  • Extension pods can't be scheduled if all the node pools in the cluster are "CriticalAddonsOnly" tainted

Risikominderung:

Verweisen auf Fehler bei der Erstellung von Erweiterungen

Helm-Fehler

Fehlermeldungen:

  • Unable to download the Helm chart from the repo URL

Dieser Fehler wird durch Konnektivitätsprobleme verursacht, die sowohl durch Blockierungen beim Egress als auch zwischen dem Cluster und der Firewall entstehen. Informationen zum Beheben dieses Problems finden Sie unter Outbound Network and FQDN rules for Azure Kubernetes Service (AKS) clusters, und fügen Sie den erforderlichen FQDN hinzu, um das Service Connector Helm-Chart abzurufen: mcr.microsoft.com

Fehlermeldungen:

  • Timed out waiting for resource readiness
  • Helm chart rendering failed with given values
  • Resource already exists in your cluster
  • Operation is already in progress for Helm

Risikominderung:

Siehe Helmfehler

Konflikt:

Fehlermeldung:

Operation returned an invalid status code: Conflict.

Grund:

Dieser Fehler tritt in der Regel auf, wenn versucht wird, eine Dienstverbindung zu erstellen, während sich der Azure Kubernetes Service (AKS) Cluster in einem Aktualisierungszustand befindet. Das Dienstverbindungsupdate verursacht einen Konflikt mit dem ausgeführten Update. Dieser Fehler tritt auch auf, wenn Ihr Abonnement nicht beim Microsoft.KubernetesConfiguration Ressourcenanbieter registriert ist.

Risikominderung:

  1. Vergewissern Sie sich, dass Ihr Cluster den Status „Erfolgreich“ hat, und wiederholen Sie die Erstellung.

  2. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Ihr Abonnement beim Microsoft.KubernetesConfiguration Ressourcenanbieter registriert ist.

    az provider register -n Microsoft.KubernetesConfiguration
    

Nicht autorisierter Ressourcenzugriff

Fehlermeldung:

You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Grund:

Service Connector erfordert Berechtigungen zum Ausführen der Azure Ressourcen, mit denen Sie eine Verbindung herstellen möchten, um Verbindungsvorgänge in Ihrem Auftrag auszuführen. Dieser Fehler weist auf einen Mangel an erforderlichen Berechtigungen für einige Azure Ressourcen hin.

Risikominderung:

Überprüfen Sie die Berechtigungen für die in der Fehlermeldung angegebenen Azure Ressourcen. Richten Sie die erforderlichen Berechtigungen ein, und wiederholen Sie die Erstellung.

Fehlende Abonnementregistrierung

Fehlermeldung:

The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'

Grund:

Service Connector erfordert, dass das Abonnement bei Microsoft.KubernetesConfiguration registriert wird, bei dem es sich um den Ressourcenanbieter für Azure Arc-fähige Kubernetes-Clustererweiterungen handelt.

Risikominderung:

Registrieren Sie den Microsoft.KubernetesConfiguration Ressourcenanbieter, indem Sie den folgenden Befehl ausführen. Weitere Informationen zu Registrierungsfehlern des Ressourcenanbieters finden Sie unter Beheben von Fehlern für die Registrierung von Ressourcenanbietern.

az provider register -n Microsoft.KubernetesConfiguration

Nächster Schritt

Erfahren Sie mehr über die Integration verschiedener Zieldienste sowie deren Konfigurationseinstellungen und Authentifizierungsmethoden.