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.
- Questa guida presuppone che si conoscano già i concetti di base di Connettore di servizi.
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.
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.
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
.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Installare l'estensione dell'interfaccia della riga di comando di Azure
k8s-extension
.az extension add --name k8s-extension
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
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.
Connettersi al cluster del servizio Azure Kubernetes.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
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
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. Sesc-job
non esiste nello spazio deisc-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
Messaggio di errore:
Unable to get a response from the agent in time
.
Prevenzione:
Fare riferimento agli errori di creazione dell'estensione
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
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:
Assicurarsi che il cluster sia in uno stato "Succeeded" prima di ritentare la creazione.
Eseguire il comando seguente per assicurarsi che la sottoscrizione sia registrata con il
Microsoft.KubernetesConfiguration
provider di risorse.az provider register -n Microsoft.KubernetesConfiguration
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.
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
Informazioni su come integrare servizi di destinazione diversi e leggere le informazioni sulle impostazioni di configurazione e sui metodi di autenticazione.