Delen via


Serviceconnector gebruiken in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) is een van de rekenservices die worden ondersteund door Service Connector.

In dit artikel wordt het volgende behandeld:

  • De verschillen tussen Service Connector voor AKS en andere rekenservices.
  • De bewerkingen die worden uitgevoerd op het cluster tijdens het maken van een serviceverbinding.
  • De bewerkingen die worden uitgevoerd op de doelservices tijdens het maken van een serviceverbinding.
  • Gebruik de Kubernetes-resources die zijn gemaakt door Service Connector.
  • Problemen met serviceconnectorlogboeken in een AKS-cluster oplossen en weergeven.

Vereiste voorwaarden

Verschillen tussen serviceconnector voor AKS en andere rekenservices

Serviceconnector voor AKS verschilt op verschillende manieren qua werking met andere rekenservices die door Service Connector worden ondersteund. Hieronder vindt u een overzicht van AKS-specifieke opties en gedragingen voor elke API-bewerking.

Creatie

Hieronder vindt u de AKS-specifieke aanmaakopties. Raadpleeg de quickstarts van Azure Portal of Azure CLI voor meer informatie over het maken van een nieuwe verbinding in AKS.

  • Serviceconnector voor AKS vereist de Kubernetes namespace parameter om op te geven waar de Kubernetes-resources moeten worden gemaakt. Standaard wordt de default naamruimte gebruikt.
  • Serviceconnector voor AKS ondersteunt Workload Identity als de optie voor verificatie van beveiligde referenties, terwijl andere compute services System Managed Identity en User Managed Identity als opties bieden.
  • Wanneer u Azure Key Vault gebruikt als doelservice waarvoor het CSI-stuurprogramma secret store is ingeschakeld, gebruikt Service Connector de door de gebruiker toegewezen beheerde identiteit van de AKS-invoegtoepassing azure-keyvault-secrets-provider voor verificatie, zonder dat gebruikers het verificatietype hoeven op te geven.
  • Service Connector voor AKS ondersteunt alleen de Firewall Rules netwerkoptie, terwijl andere rekenservices ook de Private Link en Virtual Network opties kunnen ondersteunen.

Configuraties weergeven

Serviceconnector voor AKS geeft alleen niet-referentieconfiguraties weer in de lijstconfiguratieweergaven. Gebruikers moeten de referenties in de bijbehorende Kubernetes-resource indien nodig handmatig controleren.

Met de Azure CLI-opdracht az aks connection list-configuration is de waarde van een referentieconfiguratie een lege tekenreeks. In Azure Portal is de waarde van een referentieconfiguratie verborgen, zoals hieronder wordt weergegeven.

Schermopname van de configuratie van de AKS-verbinding.

Validatie

Service Connector voor AKS valideert geen wijzigingen in configuratiewaarden die zijn aangebracht in het cluster van de gebruiker, ongeacht of het om referentie- of niet-referentieconfiguraties gaat. Service Connector voert echter de volgende validaties uit, net als voor andere rekenservices:

  • Het bestaan van de doelservice controleren
  • IP-firewallregels controleren voor toegang tot de doelservice
  • Zorg ervoor dat roltoewijzing voor workload-identiteit toegang heeft tot de doelservice

De uitvoer van de Azure CLI-opdracht az aks connection validate is altijd success. Hetzelfde geldt voor Azure Portal, zoals hieronder wordt weergegeven.

Schermopname van de AKS-verbindingsvalidatie.

Bewerkingen uitgevoerd door Service Connector op het AKS-cluster

De bewerkingen die door Service Connector op het AKS-cluster worden uitgevoerd, variëren afhankelijk van de doelservices en verificatietypen die zijn geselecteerd bij het maken van een serviceverbinding. Hieronder ziet u de mogelijke bewerkingen die door serviceconnector worden uitgevoerd.

De Kubernetes-extensie serviceconnector toevoegen

Een Kubernetes-extensie met de naam sc-extension wordt toegevoegd aan het cluster wanneer er voor het eerst een serviceverbinding wordt gemaakt. Later helpt de extensie bij het maken van Kubernetes-resources in het cluster van de gebruiker, wanneer er een serviceverbindingsaanvraag wordt verzonden naar serviceconnector. De extensie vindt u in het AKS-cluster van de gebruiker in Azure Portal, in het menu Extensies en toepassingen .

Schermopname van De Azure-portal, bekijk de AKS-extensie.

De metagegevens van de clusterverbinding worden ook opgeslagen in de extensie. Als u de extensie verwijdert, worden alle verbindingen in het cluster niet beschikbaar. De extensieoperator wordt gehost in de clusternaamruimte sc-system.

De Kubernetes-resources maken

ServiceConnector maakt Kubernetes-resources in de naamruimte die de gebruiker opgeeft bij het maken van de serviceverbinding. De Kubernetes-resources slaan de verbindingsgegevens op die nodig zijn voor de workloaddefinities of toepassingscode van de gebruiker om te communiceren met de doelservices. Afhankelijk van het verificatietype worden verschillende Kubernetes-resources gemaakt. Voor de auth-typen Connection String en Service Principal wordt een Kubernetes-geheim gemaakt. Voor het Workload Identity verificatietype wordt naast een Kubernetes-geheim ook een Kubernetes-serviceaccount gemaakt.

U vindt de Kubernetes-resources die door Service Connector zijn gemaakt voor elke serviceverbinding in Azure Portal in uw Kubernetes-resource in het menu Serviceconnector.

Schermopname van het Azure-portaal, weergeven van de serviceconnector voor gecreëerde Kubernetes-resources.

Als u een serviceverbinding verwijdert, wordt de bijbehorende Kubernetes-resource niet verwijderd. Verwijder indien nodig de resource handmatig met behulp van bijvoorbeeld de kubectl delete opdracht.

Het azureKeyvaultSecretsProvider invoegtoepassing inschakelen

Als de doelservice Azure Key Vault is en de Secret Store CSI-driver is ingeschakeld, schakelt Service Connector de azureKeyvaultSecretsProvider invoegtoepassing voor het cluster in.

Schermopname van Azure Portal, waarbij het CSI-stuurprogramma voor keyvault wordt ingeschakeld bij het maken van een verbinding.

Volg de zelfstudie verbinding maken met Azure Key Vault met behulp van CSI-stuurprogramma om een verbinding met Azure Key Vault in te stellen met behulp van het CSI-stuurprogramma secret store.

Workloadidentiteit en OIDC-verlener (OpenID Connect) inschakelen

Als het verificatietype Workload Identity is, schakelt Service Connector workload-identiteit en OIDC-uitgever voor het cluster in.

Schermopname van Azure Portal met behulp van workloadidentiteit om een verbinding te maken.

Als het verificatietype is Workload Identity, is een door de gebruiker toegewezen beheerde identiteit nodig om de federatieve identiteitsreferentie te maken. Meer informatie over workload-identiteiten of raadpleeg de zelfstudie om een verbinding met Azure Storage in te stellen met behulp van een workload-identiteit.

Bewerkingen uitgevoerd door serviceconnector op de doelservices

ServiceConnector voor AKS voert dezelfde bewerkingen uit op doelservices als andere rekenservices. De bewerkingen variëren echter, afhankelijk van de typen doelservices en verificatiemethoden. Hieronder vindt u enkele mogelijke bewerkingen.

Verbindingsconfiguraties ophalen

ServiceConnector haalt de vereiste verbindingsconfiguraties op uit de doelservice en stelt deze in als een Kubernetes-geheim in het cluster van de gebruiker. De verbindingsconfiguraties variëren op basis van het doelservicetype en de verificatiemethode:

  • Voor het Connection String verificatietype bevat de configuratie doorgaans een servicegeheim of verbindingsreeks.
  • Voor het Workload Identity verificatietype bevat het meestal het service-eindpunt.
  • Voor het Service Principal verificatietype bevat het de tenant-id, de client-id en het clientgeheim van de service-principal.

Raadpleeg de bijbehorende documentatie, zoals de Handleiding voor Azure AI-services voor gedetailleerde informatie over specifieke doelservices.

Firewallregels op basis van IP maken

Service Connector haalt het uitgaande openbare IP-adres op uit het AKS-cluster en maakt IP-firewallregels op de doelservice om netwerktoegang vanuit het cluster toe te staan.

Roltoewijzingen voor Microsoft Entra-id maken

Wanneer u het Workload Identity verificatietype gebruikt, maakt Service Connector automatisch een roltoewijzing voor de identiteit. De toegewezen rol varieert op basis van de doelservice om de juiste toegang te garanderen. Gebruikers kunnen zo nodig ook roltoewijzingen aanpassen. Zie rolaanpassing voor meer informatie.

De Kubernetes-resources gebruiken die zijn gemaakt door Service Connector

Serviceconnector maakt verschillende Kubernetes-resources, afhankelijk van het doelservicetype en het geselecteerde verificatietype. In de volgende secties ziet u hoe u de Kubernetes-resources gebruikt die zijn gemaakt door Service Connector in de definitie van uw clusterworkloads en toepassingscode.

Kubernetes-geheim

Er wordt een Kubernetes-geheim gemaakt wanneer het verificatietype is ingesteld op of Connection StringService Principal. De definitie van uw clusterworkload kan rechtstreeks naar het geheim verwijzen. Het volgende codefragment bevat een voorbeeld.

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

Uw toepassingscode kan de verbindingsreeks in het geheim van een omgevingsvariabele gebruiken. Raadpleeg de volgende voorbeeldcode voor meer informatie over de namen van omgevingsvariabelen en hoe u deze kunt gebruiken in uw toepassingscode om te verifiëren bij verschillende doelservices.

Kubernetes-serviceaccount

Er worden een Kubernetes-serviceaccount en een geheim gemaakt wanneer het verificatietype is ingesteld op Workload Identity. De definitie van de clusterworkload kan verwijzen naar het serviceaccount en geheim om te authenticeren door de workloadidentiteit. Het volgende codefragment bevat een voorbeeld.

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

Raadpleeg de volgende zelfstudie voor meer informatie over het maken van verbinding met Azure Storage met behulp van workloadidentiteit.

Problemen met logboeken oplossen en weergeven

Als er een fout optreedt en niet kan worden opgelost door opnieuw te proberen bij het maken van een serviceverbinding, helpen de volgende methoden om meer informatie te verzamelen voor het oplossen van problemen.

Service-connector Kubernetes-extensie controleren

De Serviceconnector-Kubernetes-extensie is gebaseerd op Azure Arc-compatibele Kubernetes-clusterextensies. Gebruik de volgende opdrachten om te controleren op eventuele fouten die optreden tijdens de installatie van de extensie of het updateproces.

  1. Installeer de k8s-extension Azure CLI-extensie.

    az extension add --name k8s-extension
    
  2. Haal de status van de serviceconnector-extensie op. Controleer de statuses eigenschap in de opdrachtuitvoer om eventuele fouten te identificeren.

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

Kubernetes-clusterlogboeken controleren

Als er een fout optreedt tijdens de installatie van de extensie en het foutbericht in de statuses eigenschap onvoldoende informatie bevat, kunt u dit verder onderzoeken door de Kubernetes-logboeken te controleren met de volgende stappen.

  1. Maak verbinding met uw AKS-cluster.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. De serviceconnector-extensie wordt in de sc-system naamruimte geïnstalleerd met behulp van een Helm-grafiek. Controleer de naamruimte en de Helm-release met behulp van de volgende opdrachten.

    • Controleer of de naamruimte bestaat.

      kubectl get ns
      
    • Controleer de status van de helm-release.

      helm list -n sc-system
      
  3. Tijdens de installatie of update van de extensie maakt een Kubernetes-taak met de naam sc-job de Kubernetes-resources voor de serviceverbinding. Een mislukte taakuitvoering zorgt er doorgaans voor dat de extensie mislukt. Controleer de taakstatus door de volgende opdrachten uit te voeren. Als sc-job niet bestaat in de sc-system naamruimte, had het succesvol uitgevoerd moeten zijn. Deze taak is ontworpen om automatisch te worden verwijderd na een geslaagde uitvoering.

    • Controleer of de taak bestaat.

      kubectl get job -n sc-system
      
    • Haal de taakstatus op.

      kubectl describe job/sc-job -n sc-system
      
    • Bekijk de taaklogboeken.

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

Veelvoorkomende fouten en oplossingen

Fout bij het maken van extensies

Foutbericht:

  • 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

Mitigatie:

Raadpleeg fouten bij het maken van extensies

Helm-fouten

Foutberichten:

  • Unable to download the Helm chart from the repo URL

Deze fout wordt veroorzaakt door connectiviteitsproblemen die optreden tussen het cluster en de firewall, in combinatie met uitgaande blokkades. Als u dit probleem wilt oplossen, raadpleegt u uitgaande netwerk- en FQDN-regels voor AKS-clusters (Azure Kubernetes Service) en voegt u de FQDN toe die is vereist voor het ophalen van de Helm-grafiek voor serviceconnector: scaksextension.azurecr.io

Foutberichten:

  • 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

Mitigatie:

Verwijs naar Helm-fouten

Conflict

Foutbericht:

Operation returned an invalid status code: Conflict.

Reden:

Deze fout treedt meestal op wanneer u probeert een serviceverbinding te maken terwijl het Azure Kubernetes Service (AKS)-cluster in een update toestand verkeert. De update van de serviceverbinding conflicteert met de doorlopende update. Deze fout treedt ook op wanneer uw abonnement niet is geregistreerd bij de Microsoft.KubernetesConfiguration resourceprovider.

Mitigatie:

  1. Zorg ervoor dat uw cluster de status Geslaagd heeft en probeer het opnieuw te maken.

  2. Voer de volgende opdracht uit om te controleren of uw abonnement is geregistreerd bij de Microsoft.KubernetesConfiguration resourceprovider.

    az provider register -n Microsoft.KubernetesConfiguration
    

Onbevoegde toegang tot bronnen

Foutbericht:

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

Reden:

ServiceConnector vereist machtigingen om de Azure-resources te laten werken waarmee u verbinding wilt maken, om namens u verbindingsbewerkingen uit te voeren. Deze fout geeft aan dat er onvoldoende machtigingen zijn voor sommige Azure-resources.

Mitigatie:

Controleer de machtigingen voor de Azure-resources die zijn opgegeven in het foutbericht. Haal de vereiste machtigingen op en probeer het opnieuw te maken.

Ontbrekende abonnementsregistratie

Foutbericht:

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

Reden:

Serviceconnector vereist dat het abonnement is geregistreerd bij Microsoft.KubernetesConfiguration, de resourceprovider voor Kubernetes-clusterextensies met Azure Arc.

Mitigatie:

Registreer de Microsoft.KubernetesConfiguration resourceprovider door de volgende opdracht uit te voeren. Raadpleeg voor meer informatie fouten in resourceproviderregistratie oplossen.

az provider register -n Microsoft.KubernetesConfiguration

Volgende stap

Leer hoe u verschillende doelservices kunt integreren en lees meer over hun configuratie-instellingen en verbindingsmethoden.