Dela via


Använda Service Connector i Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) är en av de beräkningstjänster som stöds av Service Connector. Den här artikeln syftar till att hjälpa dig att förstå:

  • Vilka åtgärder som utförs i klustret när du skapar en tjänstanslutning.
  • Så här använder du kubernetes-resurserna som Service Connector skapar.
  • Så här felsöker och visar du loggar för Service Connector i ett AKS-kluster.

Förutsättningar

  • Den här guiden förutsätter att du redan känner till de grundläggande begreppen i Service Connector.

Vilka åtgärder Service Connector gör i klustret

Beroende på de olika måltjänster och autentiseringstyper som valts när du skapar en tjänstanslutning gör Service Connector olika åtgärder i AKS-klustret. Följande listar de möjliga åtgärder som utförs av Service Connector.

Lägg till kubernetes-tillägget för Service Connector

Ett kubernetes-tillägg med namnet sc-extension läggs till i klustret första gången en tjänstanslutning skapas. Senare hjälper tillägget till att skapa kubernetes-resurser i användarens kluster, när en tjänstanslutningsbegäran kommer till Service Connector. Du hittar tillägget i ditt AKS-kluster i Azure-portalen i menyn Tillägg + program .

Skärmbild av Azure-portalen och visa AKS-tillägget.

Tillägget är också där metadata för klusteranslutningar lagras. Om du avinstallerar tillägget blir alla anslutningar i klustret otillgängliga. Tilläggsoperatorn finns i klusternamnområdet sc-system.

Skapa kubernetes-resurser

Service Connector skapar vissa kubernetes-resurser till det namnområde som användaren angav när en tjänstanslutning skapades. Kubernetes-resurserna lagrar anslutningsinformationen, som krävs av användarens arbetsbelastningsdefinitioner eller programkod för att kommunicera med måltjänster. Beroende på olika autentiseringstyper skapas olika kubernetes-resurser. För autentiseringstyperna Connection String och Service Principal skapas en kubernetes-hemlighet. För autentiseringstypen Workload Identity skapas även ett kubernetes-tjänstkonto utöver en kubernetes-hemlighet.

Du hittar kubernetes-resurserna som skapats av Service Connector för varje tjänstanslutning på Azure-portalen i kubernetes-resursen på menyn Service Connector.

Skärmbild av Azure-portalen och visa Kubernetes-resurser som skapats av Service Connector.

Om du tar bort en tjänstanslutning tas inte den associerade Kubernetes-resursen bort. Om det behövs tar du bort resursen manuellt med till exempel kommandot kubectl delete.

azureKeyvaultSecretsProvider Aktivera tillägget

Om måltjänsten är Azure Key Vault och CSI-drivrutinen för Secret Store är aktiverad när du skapar en tjänstanslutning aktiverar azureKeyvaultSecretsProvider Service Connector tillägget för klustret.

Skärmbild av Azure-portalen som aktiverar CSI-drivrutin för keyvault när du skapar en anslutning.

Följ självstudien Anslut till Azure Key Vault med CSI-drivrutin för att konfigurera en anslutning till Azure Key Vault med hjälp av CSI-drivrutinen för Secret Store.

Aktivera arbetsbelastningsidentitet och OpenID Connect-utfärdare (OIDC)

Om autentiseringstypen är Workload Identity när du skapar en tjänstanslutning aktiverar Service Connector arbetsbelastningsidentitet och OIDC-utfärdare för klustret.

Skärmbild av Azure-portalen med hjälp av arbetsbelastningsidentitet för att skapa en anslutning.

När autentiseringstypen är Workload Identitybehövs en användartilldelad hanterad identitet för att skapa den federerade identitetsautentiseringsuppgiften. Läs mer om vad som är arbetsbelastningsidentiteter eller följ självstudien för att konfigurera en anslutning till Azure Storage med hjälp av arbetsbelastningsidentitet.

Så här använder du kubernetes-resurser som skapats av Service Connector

Olika kubernetes-resurser skapas när måltjänsttypen och autentiseringstypen skiljer sig. I följande avsnitt visas hur du använder kubernetes-resurser som skapats av Service Connector i definitionen och programkoderna för klusterarbetsbelastningar.

Kubernetes-hemlighet

En kubernetes-hemlighet skapas när autentiseringstypen är Connection String eller Service Principal. Klustrets arbetsbelastningsdefinition kan referera till hemligheten direkt. Följande snnipet är ett exempel.

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

Sedan kan dina programkoder använda niska veze i hemligheten från miljövariabeln. Du kan kontrollera exempelkoden för att lära dig mer om miljövariabelnamnen och hur du använder dem i dina programkoder för att autentisera till olika måltjänster.

Kubernetes-tjänstkonto

Både ett kubernetes-tjänstkonto och en hemlighet skapas när autentiseringstypen är Workload Identity. Klustrets arbetsbelastningsdefinition kan referera till tjänstkontot och hemligheten för att autentisera via arbetsbelastningsidentitet. Följande kodfragment innehåller ett exempel.

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

Du kan läsa självstudien för att lära dig hur du ansluter till Azure Storage med hjälp av arbetsbelastningsidentitet.

Felsöka och visa loggar

Om ett fel inträffar och inte kan åtgärdas genom att försöka igen när du skapar en tjänstanslutning kan följande metoder hjälpa dig att samla in mer information för felsökning.

Kontrollera kubernetes-tillägget för Service Connector

Kubernetes-tillägget för Service Connector bygger på Azure Arc-aktiverade Kubernetes-klustertillägg. Använd följande kommandon för att undersöka om det finns några fel under tilläggsinstallationen eller uppdateringen.

  1. Installera Azure CLI-tillägget k8s-extension .
az extension add --name k8s-extension
  1. Hämta status för tjänstanslutningstillägget. Kontrollera egenskapen statuses i kommandoutdata för att se om det finns några fel.
az k8s-extension show \
    --resource-group MyClusterResourceGroup \
    --cluster-name MyCluster \
    --cluster-type managedClusters \
    --name sc-extension

Kontrollera kubernetes-klusterloggar

Om det uppstår ett fel under tilläggsinstallationen och felmeddelandet i statuses egenskapen inte ger tillräckligt med information om vad som hände, kan du kontrollera kubernetes-loggarna ytterligare med följande steg.

  1. Anslut till ditt AKS-kluster.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. Service Connector-tillägget installeras i namnområdet sc-system via helm-diagrammet, kontrollera namnområdet och helm-versionen genom att följa kommandona.

    • Kontrollera att namnområdet finns.
    kubectl get ns
    
    • Kontrollera helm-versionsstatusen.
    helm list -n sc-system
    
  3. Under tilläggsinstallationen eller uppdateringen skapar ett kubernetes-jobb med namnet sc-job kubernetes-resurserna för tjänstanslutningen. Jobbkörningsfelet orsakar vanligtvis tilläggsfelet. Kontrollera jobbstatusen genom att köra följande kommandon. Om sc-job det inte finns i sc-system namnområdet bör det ha körts korrekt. Det här jobbet är utformat för att tas bort automatiskt efter att körningen har slutförts.

    • Kontrollera att jobbet finns.
    kubectl get job -n sc-system
    
    • Hämta jobbstatusen.
    kubectl describe job/sc-job -n sc-system
    
    • Visa jobbloggarna.
    kubectl logs job/sc-job -n sc-system
    

Vanliga fel och åtgärder

Konflikt

Felmeddelande:Operation returned an invalid status code: Conflict.

Orsak: Det här felet uppstår vanligtvis när du försöker skapa en tjänstanslutning medan AKS-klustret (Azure Kubernetes Service) är i uppdateringstillstånd. Uppdateringen av tjänstanslutningen står i konflikt med den pågående uppdateringen.

Åtgärd: Kontrollera att klustret är i tillståndet "Lyckades" innan du försöker skapa det igen. Det löser de flesta fel som rör konflikter.

Timeout

Felmeddelande:

  • Long running operation failed with status 'Failed'. Unable to get a response from the Agent in time.
  • Timed out waiting for the resource to come to a ready/completed state

Orsak: Det här felet inträffar ofta när Kubernetes-jobbet som används för att skapa eller uppdatera Service Connector-klustertillägget inte schemaläggs på grund av resursbegränsningar eller andra problem.

Åtgärd: Se Kontrollera Kubernetes-klusterloggar för att identifiera och lösa de detaljerade orsakerna. Ett vanligt problem är att inga noder är tillgängliga på grund av preemption. I det här fallet bör du överväga att lägga till fler noder eller aktivera automatisk skalning för dina noder.

Obehörig resursåtkomst

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

Orsak: Service Connector kräver behörighet att använda de Azure-resurser som du vill ansluta till för att kunna utföra anslutningsåtgärder åt dig. Det här felet anger att vissa Azure-resurser saknar nödvändiga behörigheter.

Åtgärd: Kontrollera behörigheterna för de Azure-resurser som anges i felmeddelandet. Hämta de behörigheter som krävs och försök att skapa igen.

Prenumerationsregistrering saknas

FelmeddelandeThe subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration':

Orsak: Service Connector kräver att prenumerationen registreras för Microsoft.KubernetesConfiguration, vilket är resursprovidern för Azure Arc-aktiverade Kubernetes-klustertillägg.

Åtgärd: Följ den här självstudien om du vill lösa fel som rör registrering av resursprovider.

Andra problem

Om ovanstående åtgärder inte löser problemet kan du försöka återställa klustertillägget för tjänstanslutningen genom att ta bort det och sedan försöka skapa det igen. Den här metoden förväntas lösa de flesta problem som rör klustertillägget för Service Connector.

Använd följande CLI-kommandon för att återställa tillägget:

az extension add --name k8s-extension

az k8s-extension delete \
    --resource-group <MyClusterResourceGroup> \
    --cluster-name <MyCluster> \
    --cluster-type managedClusters \
    --name sc-extension

Nästa steg

Lär dig hur du integrerar olika måltjänster och läser om deras konfigurationsinställningar och autentiseringsmetoder.