Condividi tramite


Usare Service Connector in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) è uno dei servizi di calcolo supportati da Service Connector.

Questo articolo tratta:

  • Differenze tra Service Connector per AKS e altri servizi di calcolo.
  • Operazioni eseguite nel cluster durante la creazione di una connessione al servizio.
  • Le operazioni eseguite sui servizi di destinazione durante la creazione di una connessione al servizio.
  • Uso delle risorse Kubernetes create da Service Connector.
  • Risoluzione dei problemi e visualizzazione dei log di Service Connector in un cluster AKS.

Prerequisiti

Differenze tra Service Connector per Azure Kubernetes Service e altri servizi di calcolo

Il connettore di servizi per AKS si differenzia da come opera con altri servizi di calcolo supportati da Service Connector in diversi modi. Di seguito sono illustrate le opzioni e i comportamenti specifici del servizio Azure Kubernetes per ogni operazione API.

Creazione

Di seguito sono elencate le opzioni di creazione specifiche di AKS. Consulta le guide rapide nel portale di Azure o utilizzando il CLI di Azure per scoprire come creare una nuova connessione in AKS (Azure Kubernetes Service).

  • Service Connector per AKS richiede il Kubernetes namespace parametro per specificare dove creare le risorse Kubernetes. Per impostazione predefinita, usa lo spazio dei nomi default.
  • ** Service Connector per AKS supporta Workload Identity come opzione di autenticazione sicura delle credenziali, mentre altri servizi di calcolo offrono le opzioni System Managed Identity e User Managed Identity.
  • Quando si usa Azure Key Vault come servizio di destinazione con il driver CSI dell'archivio segreto abilitato, Service Connector usa l'identità gestita assegnata dall'utente dal componente aggiuntivo AKS azure-keyvault-secrets-provider per l'autenticazione, senza richiedere agli utenti di specificare il tipo di autenticazione.
  • Service Connector per Azure Kubernetes Service (AKS) supporta solo l'opzione di rete Firewall Rules, mentre altri servizi di calcolo possono supportare le opzioni Private Link e Virtual Network.

Elencare le configurazioni

Service Connector per AKS visualizza solo le configurazioni non credenziali nelle visualizzazioni di configurazione della lista. Se necessario, gli utenti devono controllare manualmente le credenziali nella risorsa Kubernetes associata .

Usando il comando Azure CLI az aks connection list-configuration, il valore di una configurazione delle credenziali è una stringa vuota. Nel portale di Azure il valore di una configurazione delle credenziali è nascosto, come illustrato di seguito.

Screenshot della configurazione dell'elenco delle connessioni di AKS.

Validazione

Service Connector per AKS non convalida le modifiche apportate al valore di configurazione all'interno del cluster dell'utente, sia che si tratti di configurazioni di credenziali o non di credenziali. Tuttavia, Service Connector esegue le convalide seguenti, come per altri servizi di calcolo:

  • Verifica dell'esistenza del servizio di destinazione
  • Controllo delle regole del firewall IP per l'accesso al servizio di destinazione
  • Verifica dell'assegnazione di ruolo per l'identità del carico di lavoro per accedere al servizio di destinazione

L'output del comando Azure CLI az aks connection validate è sempre success. Lo stesso vale per il portale di Azure, come illustrato di seguito.

Screenshot della convalida della connessione AKS.

Operazioni eseguite da Connettore di servizi nel cluster del servizio Azure Kubernetes

Le operazioni eseguite da Service Connector nel cluster del servizio Azure Kubernetes variano a seconda dei servizi di destinazione e dei tipi di autenticazione selezionati durante la creazione di una connessione al servizio. Di seguito sono elencate le possibili operazioni eseguite da Connettore di servizi.

Aggiunta dell'estensione Kubernetes del connettore di servizi

Un'estensione Kubernetes denominata sc-extension viene aggiunta al cluster la prima volta che viene creata una connessione al servizio. Più avanti, l'estensione consente di creare risorse Kubernetes nel cluster dell'utente, ogni volta che arriva una richiesta di connessione del servizio a Service Connector. L'estensione si trova nel cluster AKS dell'utente nel portale di Azure, nel menu Estensioni + applicazioni.

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

I metadati della connessione del cluster vengono archiviati anche nell'estensione. La disinstallazione dell'estensione rende tutte le connessioni nel cluster non disponibili. L'operatore di estensione è ospitato nello spazio dei nomi sc-systemdel cluster .

Creazione delle risorse Kubernetes

Service Connector crea risorse Kubernetes nello spazio dei nomi specificato dall'utente durante la creazione della connessione al servizio. Le risorse Kubernetes archiviano le informazioni di connessione necessarie per le definizioni del carico di lavoro o il codice dell'applicazione dell'utente per comunicare con i servizi di destinazione. A seconda del tipo 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 nel portale di Azure nella risorsa Kubernetes nel menu del connettore di servizi.

Screenshot del portale di Azure che mostra 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 la risorsa manualmente, usando ad esempio il kubectl delete comando .

Abilitazione del azureKeyvaultSecretsProvider componente aggiuntivo

Se il servizio di destinazione è Azure Key Vault e il driver CSI del Secret Store è abilitato, Service Connector abilita il componente aggiuntivo azureKeyvaultSecretsProvider per il cluster.

Screenshot del portale di Azure, che abilita il driver CSI per Key Vault nella creazione di una connessione.

Seguire l'esercitazione Connessione ad Azure Key Vault tramite driver CSI per configurare una connessione ad Azure Key Vault utilizzando il driver CSI dell'archivio di segreti.

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

Se il tipo di autenticazione è Workload Identity, Service Connector 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.

Se il tipo di autenticazione è Workload Identity, è necessaria un'identità gestita assegnata dall'utente per creare le credenziali dell'identità federata. Altre informazioni su workload identityes o fare riferimento a il seguente tutorial per configurare una connessione a Azure Storage usando un'identità del carico di lavoro.

Operazioni eseguite da Service Connector nei servizi di destinazione

Connettore di servizi per servizio Azure Kubernetes esegue le stesse operazioni sui servizi di destinazione di altri servizi di calcolo. Tuttavia, le operazioni variano a seconda dei tipi di servizio di destinazione e dei metodi di autenticazione. Di seguito sono elencate alcune possibili operazioni.

Ottenere le configurazioni di connessione

Service Connector recupera le configurazioni di connessione necessarie dal servizio di destinazione e le imposta come segreto Kubernetes nel cluster dell'utente. Le configurazioni di connessione variano in base al tipo di servizio di destinazione e al metodo di autenticazione:

  • Per il tipo di autenticazione Connection String, la configurazione include in genere un segreto del servizio o un connection string.
  • Per il Workload Identity tipo di autenticazione, in genere contiene l'endpoint del servizio.
  • Per il tipo di autenticazione Service Principal, contiene l'ID tenant, l'ID client e il segreto del client dell'entità servizio.

Per informazioni dettagliate sui servizi di destinazione specifici, consultare la documentazione corrispondente, come la guida agli Strumenti Foundry.

Creare regole del firewall basate su IP

Service Connector recupera l'indirizzo IP pubblico in uscita dal cluster AKS e crea regole del firewall per IP nel servizio di destinazione per consentire l'accesso alla rete dal cluster.

Creare le assegnazioni di ruolo di Microsoft Entra ID

Quando si usa il Workload Identity tipo di autenticazione, Service Connector crea automaticamente un'assegnazione di ruolo per l'identità. Il ruolo assegnato varia in base al servizio di destinazione per garantire l'accesso appropriato. Gli utenti possono anche personalizzare le assegnazioni di ruolo in base alle esigenze. Per altre informazioni, vedere Personalizzazione dei ruoli.

Usare le risorse Kubernetes create dal connettore di servizi

Service Connector crea varie risorse Kubernetes a seconda del tipo di servizio di destinazione e del tipo di autenticazione selezionato. Le sezioni seguenti illustrano come usare le risorse Kubernetes create da Connettore di servizi 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ò usare la 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

Consulta il tutorial seguente per imparare come connettersi ad Azure Storage usando 'workload identity'.

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 Connettore di servizi

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 durante l'installazione dell'estensione o il processo di aggiornamento.

  1. Installare l'estensione k8s-extension Azure CLI.

    az extension add --name k8s-extension
    
  2. Recuperare lo stato dell'estensione Connettore di servizi. 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 nomi sc-system, 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.
  • Extension pods can't be scheduled if all the node pools in the cluster are "CriticalAddonsOnly" tainted

Soluzione:

Fare riferimento agli errori di creazione dell'estensione

Errori Helm

Messaggi di errore:

  • Unable to download the Helm chart from the repo URL

Questo errore è causato da problemi di connettività che si verificano tra il cluster e il firewall oltre a problemi di blocco in uscita. Per risolvere questo problema, vedere Regole di rete in uscita e FQDN per i cluster di Azure Kubernetes Service (AKS) e aggiungere il FQDN richiesto per scaricare il chart Helm del Service Connector: mcr.microsoft.com

Messaggi di errore:

  • 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

Soluzione:

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 Azure Kubernetes Service (AKS) 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.

Soluzione:

  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 Azure a cui connettersi, per eseguire operazioni di connessione per conto dell'utente. Questo errore indica la mancanza di autorizzazioni necessarie per alcune risorse Azure.

Soluzione:

Controllare le autorizzazioni per le risorse 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, cioè il provider delle risorse per le estensioni del cluster Kubernetes abilitate da Azure Arc.

Soluzione:

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.