Leggere in inglese

Condividi tramite


Usare Service Connector in servizio Azure Kubernetes (servizio Azure Kubernetes)

Il servizio Azure Kubernetes è uno dei servizi di calcolo supportati da Connettore di servizi. Questo articolo si propone di aiutare a comprendere:

  • Operazioni eseguite nel cluster durante la creazione di una connessione al servizio.
  • Come usare le risorse Kubernetes create da Service Connector.
  • Come risolvere i problemi e visualizzare i log di Service Connector in un cluster del servizio Azure Kubernetes.

Prerequisiti

Operazioni eseguite da Service Connector nel cluster del servizio Azure Kubernetes

A seconda dei diversi servizi di destinazione e dei tipi di autenticazione selezionati durante la creazione di una connessione al servizio, Connettore di servizi esegue operazioni diverse nel cluster del servizio Azure Kubernetes. Di seguito sono elencate le possibili operazioni eseguite da Connettore di servizi.

Aggiunta dell'estensione Kubernetes di Service Connector

Un'estensione Kubernetes denominata sc-extension viene aggiunta al cluster la prima volta che viene creata una connessione al servizio. In un secondo momento, l'estensione consente di creare risorse Kubernetes nel cluster dell'utente, ogni volta che viene inviata una richiesta di connessione del servizio a Service Connector. È possibile trovare l'estensione nel cluster del servizio Azure Kubernetes nel portale di Azure, nel menu Estensioni e applicazioni.

Screenshot del portale di Azure, visualizzare l'estensione del servizio Azure Kubernetes.

L'estensione è anche la posizione in cui vengono archiviati i metadati delle connessioni del cluster. La disinstallazione dell'estensione rende non disponibili tutte le connessioni nel cluster. L'operatore di estensione è ospitato nello spazio dei nomi del cluster sc-system.

Creazione delle risorse Kubernetes

Service Connector crea alcune risorse Kubernetes nello spazio dei nomi specificato dall'utente durante la creazione di una connessione al servizio. Le risorse Kubernetes archiviano le informazioni di connessione necessarie per le definizioni del carico di lavoro dell'utente o il codice dell'applicazione per comunicare con i servizi di destinazione. A seconda dei diversi tipi di autenticazione, vengono create risorse Kubernetes diverse. Per i Connection String tipi di autenticazione e Service Principal viene creato un segreto Kubernetes. Per il Workload Identity tipo di autenticazione, viene creato anche un account del servizio Kubernetes oltre a un segreto Kubernetes.

È possibile trovare le risorse Kubernetes create da Service Connector per ogni connessione al servizio nella portale di Azure nella risorsa Kubernetes nel menu Del connettore di servizi.

Screenshot del portale di Azure, visualizzare le risorse kubernetes create da Service Connector.

L'eliminazione di una connessione al servizio non comporta l'eliminazione della risorsa Kubernetes associata. Se necessario, rimuovere manualmente la risorsa usando ad esempio il comando kubectl delete.

Abilitazione del azureKeyvaultSecretsProvider componente aggiuntivo

Se il servizio di destinazione è Azure Key Vault e il driver CSI dell'archivio segreti è abilitato durante la creazione di una connessione al servizio, Connettore di servizi abilita il componente aggiuntivo azureKeyvaultSecretsProvider per il cluster.

Screenshot del portale di Azure, abilitazione del driver CSI per keyvault durante la creazione di una connessione.

Seguire l'esercitazione Connettersi ad Azure Key Vault usando il driver CSI per configurare una connessione ad Azure Key Vault usando il driver CSI dell'archivio segreti.

Abilitazione dell'identità del carico di lavoro e dell'autorità di certificazione OIDC (OpenID Connect)

Se il tipo di autenticazione è Workload Identity durante la creazione di una connessione al servizio, Connettore di servizi abilita l'identità del carico di lavoro e l'autorità emittente OIDC per il cluster.

Screenshot del portale di Azure, usando l'identità del carico di lavoro per creare una connessione.

Quando il tipo di autenticazione è Workload Identity, è necessaria un'identità gestita assegnata dall'utente per creare le credenziali dell'identità federata. Per altre informazioni, vedere che cosa sono le identità del carico di lavoro oppure seguire l'esercitazioneper configurare una connessione ad Archiviazione di Azure usando l'identità del carico di lavoro.

Usare le risorse Kubernetes create da Service Connector

Diverse risorse Kubernetes vengono create da Service Connector a seconda del tipo di servizio di destinazione e del tipo di autenticazione. Le sezioni seguenti illustrano come usare le risorse Kubernetes create da Service Connector nella definizione e nel codice dell'applicazione dei carichi di lavoro del cluster.

Segreto Kubernetes

Un segreto Kubernetes viene creato quando il tipo di autenticazione è impostato su Connection String o Service Principal. La definizione del carico di lavoro del cluster può fare riferimento direttamente al segreto. Il frammento di codice seguente fornisce un esempio.

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

Il codice dell'applicazione può utilizzare il stringa di connessione nel segreto da una variabile di ambiente. Controllare il codice di esempio seguente per altre informazioni sui nomi delle variabili di ambiente e su come usarli nel codice dell'applicazione per eseguire l'autenticazione a servizi di destinazione diversi.

Account del servizio Kubernetes

Un account del servizio Kubernetes e un segreto vengono creati quando il tipo di autenticazione è impostato su Workload Identity. La definizione del carico di lavoro del cluster può fare riferimento all'account del servizio e al segreto per l'autenticazione tramite l'identità del carico di lavoro. Il frammento di codice seguente fornisce un esempio.

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

Vedere l'esercitazione seguente per informazioni su come connettersi a Archiviazione di Azure usando l'identità del carico di lavoro.

Risolvere i problemi e visualizzare i log

Se si verifica un errore e non è possibile risolverlo riprovando durante la creazione di una connessione al servizio, i metodi seguenti consentono di raccogliere altre informazioni per la risoluzione dei problemi.

Controllare l'estensione Kubernetes di Service Connector

L'estensione Kubernetes del connettore di servizi si basa sulle estensioni del cluster Kubernetes abilitate per Azure Arc. Usare i comandi seguenti per verificare la presenza di errori che si sono verificati durante l'installazione dell'estensione o il processo di aggiornamento.

  1. Installare l'estensione dell'interfaccia della riga di comando di Azure k8s-extension.

    az extension add --name k8s-extension
    
  2. Recuperare lo stato dell'estensione service connector. Controllare la statuses proprietà nell'output del comando per identificare eventuali errori.

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

Controllare i log del cluster Kubernetes

Se si verifica un errore durante l'installazione dell'estensione e il messaggio di errore nella statuses proprietà non fornisce informazioni sufficienti, è possibile esaminare ulteriormente i log di Kubernetes seguendo questa procedura.

  1. Connettersi al cluster del servizio Azure Kubernetes.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. L'estensione Service Connector viene installata nello sc-system spazio dei nomi usando un grafico Helm. Controllare lo spazio dei nomi e la versione Helm usando i comandi seguenti.

    • Controllare l'esistenza dello spazio dei nomi.

      kubectl get ns
      
    • Controllare lo stato di rilascio helm.

      helm list -n sc-system
      
  3. Durante l'installazione o l'aggiornamento dell'estensione, un processo Kubernetes denominato sc-job crea le risorse Kubernetes per la connessione al servizio. Un errore di esecuzione del processo causa in genere un errore dell'estensione. Controllare lo stato del processo eseguendo i comandi seguenti. Se sc-job non esiste nello spazio dei sc-system nomi, dovrebbe essere stato eseguito correttamente. Questo processo è progettato per essere eliminato automaticamente dopo l'esecuzione corretta.

    • Controllare l'esistenza del processo.

      kubectl get job -n sc-system
      
    • Ottenere lo stato del processo.

      kubectl describe job/sc-job -n sc-system
      
    • Visualizzare i log del processo.

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

Errori e mitigazioni comuni

Errore di creazione dell'estensione

Messaggio di errore:

Unable to get a response from the agent in time.

Prevenzione:

Fare riferimento agli errori di creazione dell'estensione

Errori Helm

Messaggi di errore:

  • Timed out waiting for resource readiness
  • Unable to download the Helm chart from the repo URL
  • Helm chart rendering failed with given values
  • Resource already exists in your cluster
  • Operation is already in progress for Helm

Prevenzione:

Fare riferimento agli errori Helm

Conflitto

Messaggio di errore:

Operation returned an invalid status code: Conflict.

Motivo:

Questo errore si verifica in genere quando si tenta di creare una connessione al servizio mentre il cluster servizio Azure Kubernetes (servizio Azure Kubernetes) si trova in uno stato di aggiornamento. L'aggiornamento della connessione al servizio è in conflitto con l'aggiornamento in corso. Questo errore si verifica anche quando la sottoscrizione non è registrata con il Microsoft.KubernetesConfiguration provider di risorse.

Prevenzione:

  1. Assicurarsi che il cluster sia in uno stato "Succeeded" prima di ritentare la creazione.

  2. Eseguire il comando seguente per assicurarsi che la sottoscrizione sia registrata con il Microsoft.KubernetesConfiguration provider di risorse.

    az provider register -n Microsoft.KubernetesConfiguration
    

Accesso non autorizzato alle risorse

Messaggio di errore:

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

Motivo:

Service Connector richiede autorizzazioni per gestire le risorse di Azure a cui connettersi, per eseguire operazioni di connessione per conto dell'utente. Questo errore indica la mancanza di autorizzazioni necessarie per alcune risorse di Azure.

Prevenzione:

Controllare le autorizzazioni per le risorse di Azure specificate nel messaggio di errore. Ottenere le autorizzazioni necessarie e ripetere la creazione.

Registrazione della sottoscrizione mancante

Messaggio di errore:

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

Motivo:

Service Connector richiede che la sottoscrizione sia registrata con Microsoft.KubernetesConfiguration, ovvero il provider di risorse per le estensioni del cluster Kubernetes abilitate per Azure Arc.

Prevenzione:

Registrare il Microsoft.KubernetesConfiguration provider di risorse eseguendo il comando seguente. Per altre informazioni sugli errori di registrazione del provider di risorse, vedere Risolvere gli errori per la registrazione del provider di risorse.

az provider register -n Microsoft.KubernetesConfiguration

Passaggio successivo

Informazioni su come integrare servizi di destinazione diversi e leggere le informazioni sulle impostazioni di configurazione e sui metodi di autenticazione.