Utilisation due Service Connector dans Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) est l’un des services de calcul pris en charge par Service Connector. Cet article vise à vous aider à comprendre les points suivants :
- Quelles opérations sont effectuées sur le cluster lors de la création d’une connexion de service.
- Comment utiliser les ressources Kubernetes créés par Service Connector.
- Comment résoudre les problèmes et afficher les journaux d’activité de Service Connector dans un cluster AKS.
Prérequis
- Ce guide suppose que vous connaissez déjà les concepts de base de Service Connector.
Opérations effectuées par Service Connector sur le cluster
Selon les différents services cibles et types d’authentification sélectionnés lors de la création d’une connexion de service, Service Connector effectue différentes opérations sur le cluster AKS. L’exemple suivant répertorie les opérations possibles effectuées par Service Connector.
Ajouter l’extension Kubernetes de Service Connector
Une extension Kubernetes nommée sc-extension
est ajoutée au cluster la première fois qu’une connexion de service est créée. Plus tard, l’extension permet de créer des ressources Kubernetes dans le cluster de l’utilisateur, chaque fois qu’une demande de connexion de service est envoyée à Service Connector. Vous trouverez l’extension dans votre cluster AKS dans le portail Azure, dans le menu Extensions + applications.
L’extension est également l’emplacement où les métadonnées des connexions de cluster sont stockées. La désinstallation de l’extension rend toutes les connexions dans le cluster indisponibles. L’opérateur d’extension est hébergé dans l’espace de noms du cluster sc-system
.
Créer des ressources Kubernetes
Service Connector crée des ressources Kubernetes dans l’espace de noms spécifié par l’utilisateur lors de la création d’une connexion de service. Les ressources Kubernetes stockent les informations de connexion nécessaires aux définitions de charge de travail de l’utilisateur ou au code d’application pour communiquer avec les services cibles. En fonction des différents types d’authentification, différentes ressources Kubernetes sont créées. Pour les types d’authentification Connection String
et Service Principal
, un secret Kubernetes est créé. Pour le type d’authentification Workload Identity
, un compte de service Kubernetes est également créé en plus d’un secret Kubernetes.
Vous trouverez les ressources Kubernetes créées par Service Connector pour chaque connexion de service sur le portail Azure dans votre ressource Kubernetes, dans le menu Service Connector.
La suppression d’une connexion de service ne supprime pas la ressource Kubernetes associée. Si nécessaire, supprimez manuellement votre ressource en utilisant la commande kubectl delete.
Activer le module complémentaire azureKeyvaultSecretsProvider
Si le service cible est Azure Key Vault et que le pilote CSI du magasin de secrets est activé lors de la création d’une connexion de service, Service Connector active le module complémentaire azureKeyvaultSecretsProvider
pour le cluster.
Suivez le tutoriel Se connecter à Azure Key Vault à l’aide du pilote CSI pour configurer une connexion à Azure Key Vault à l’aide du pilote CSI du Magasin secret.
Activer l’identité de charge de travail et l’émetteur OIDC (OpenID Connect)
Si le type d’authentification est Workload Identity
lors de la création d’une connexion de service, Service Connector active l’identité de charge de travail et l’émetteur OIDC pour le cluster.
Lorsque le type d’authentification est Workload Identity
, une identité managée affectée par l’utilisateur est nécessaire pour créer les informations d’identification de l’identité fédérée. Apprenez-en davantage sur les identités de charge de travail ou suivez le tutoriel pour configurer une connexion au stockage Azure à l’aide de l’identité de charge de travail.
Comment utiliser les ressources Kubernetes créées par Service Connector
Différentes ressources Kubernetes sont créées lorsque le type de service cible et le type d’authentification sont différents. Les sections suivantes montrent comment utiliser les ressources Kubernetes créées par Service Connector dans les codes d’application et de définition des charges de travail de votre cluster.
Secret Kubernetes
Un secret Kubernetes est créé lorsque le type d’authentification est Connection String
ou Service Principal
. Votre définition de charge de travail de cluster peut référencer directement le secret. Le snippet suivant est un exemple.
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
Ensuite, vos codes d’application peuvent consommer la chaîne de connexion dans le secret à partir de la variable d’environnement. Vous pouvez vérifier l’exemple de code pour en savoir plus sur les noms des variables d’environnement et comment les utiliser dans vos codes d’application pour vous authentifier auprès de différents services cibles.
Compte de service Kubernetes
Un compte de service Kubernetes et un secret sont créés lorsque le type d’authentification est Workload Identity
. Votre définition de charge de travail de cluster peut référencer le compte de service et le secret pour s’authentifier via l’identité de la charge de travail. L’extrait suivant fournit un exemple.
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
Vous pouvez consulter le tutoriel pour découvrir comment vous connecter au stockage Azure avec l’identité de charge de travail.
Comment résoudre les problèmes et afficher les journaux
Si une erreur se produit et n’a pas pu être atténuée par une nouvelle tentative lors de la création d’une connexion de service, les méthodes suivantes peuvent vous aider à collecter plus d’informations pour la résolution des problèmes.
Vérifier l’extension Kubernetes du connecteur de service
L’extension Kubernetes du connecteur de service est basée sur les extensions de cluster Kubernetes compatibles avec Azure Arc. Utilisez les commandes suivantes pour examiner s’il existe des erreurs pendant l’installation ou la mise à jour de l’extension.
- Installez l’extension Azure CLI
k8s-extension
.
az extension add --name k8s-extension
- Obtenez l’état de l’extension Service Connector. Vérifiez la propriété
statuses
dans la sortie de commande pour voir s’il existe des erreurs.
az k8s-extension show \
--resource-group MyClusterResourceGroup \
--cluster-name MyCluster \
--cluster-type managedClusters \
--name sc-extension
Vérifier les journaux du cluster Kubernetes
S’il existe une erreur pendant l’installation de l’extension et que le message d’erreur dans la propriété statuses
ne fournit pas suffisamment d’informations sur ce qui s’est passé, vous pouvez vérifier davantage les journaux Kubernetes avec les étapes suivantes.
Connectez-vous à votre cluster AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
L’extension Service Connector est installée dans l’espace de noms
sc-system
via le graphique Helm, vérifiez l’espace de noms et la version Helm en suivant les commandes.- Vérifiez que l’espace de noms existe.
kubectl get ns
- Vérifiez l’état de la mise en production Helm.
helm list -n sc-system
Pendant l’installation ou la mise à jour de l’extension, un travail Kubernetes appelé
sc-job
crée les ressources Kubernetes pour la connexion de service. L’échec d’exécution du travail provoque généralement l’échec de l’extension. Vérifiez l’état du travail en exécutant les commandes suivantes. Sisc-job
n’existe pas dans l’espace de nomssc-system
, il doit avoir été exécuté avec succès. Ce travail est conçu pour être automatiquement supprimé après l’exécution réussie.- Vérifiez que le travail existe.
kubectl get job -n sc-system
- Obtenez l’état du travail.
kubectl describe job/sc-job -n sc-system
- Affichez les journaux des travaux.
kubectl logs job/sc-job -n sc-system
Erreurs courantes et mesures d’atténuation
Conflict
Message d’erreur :Operation returned an invalid status code: Conflict
.
Motif : Cette erreur se produit généralement lors d’une tentative de création d’une connexion de service alors que le cluster AKS (Azure Kubernetes Service) est dans un état de mise à jour. La mise à jour de la connexion de service est en conflit avec la mise à jour en cours. Cela peut également se produire lorsque votre abonnement n’est pas inscrit pour le fournisseur de ressources Microsoft.KubernetesConfiguration
.
Atténuation :
Exécutez la commande suivante pour vous assurer que votre abonnement est inscrit pour le fournisseur de ressources
Microsoft.KubernetesConfiguration
.az provider register -n Microsoft.KubernetesConfiguration
Vérifiez que votre cluster est dans un état « Opération réussie », puis réessayez la création.
Délai d'expiration
Message d’erreur :
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
Motif : Cette erreur se produit souvent lorsque la tâche Kubernetes utilisée pour créer ou mettre à jour l’extension de cluster Connecteur de services ne parvient pas à être planifiée en raison de limitations de ressources ou d’autres problèmes.
Atténuation : Reportez-vous à Vérifier les journaux de cluster Kubernetes pour identifier et résoudre les raisons détaillées. Un problème courant est qu’aucun nœud n’est disponible en raison de la préemption. Dans ce cas, envisagez d’ajouter des nœuds supplémentaires ou d’activer la mise à l’échelle automatique de vos nœuds.
Accès aux ressources non autorisé
Message d’erreur :You do not have permission to perform ... If access was recently granted, please refresh your credentials
.
Motif : Connecteur de services nécessite des autorisations pour utiliser les ressources Azure auxquelles vous souhaitez vous connecter, afin d’effectuer des opérations de connexion en votre nom. Cette erreur indique un manque d’autorisations nécessaires sur certaines ressources Azure.
Atténuation : Vérifier les autorisations sur les ressources Azure spécifiées dans le message d’erreur. Obtenez les autorisations nécessaires et réessayez la création.
Inscription de l'abonnement manquante
Message d’erreur :The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'
Raison : le connecteur de services exige que l’abonnement soit inscrit pour Microsoft.KubernetesConfiguration
, qui est le fournisseur de ressources pour les extensions de cluster Kubernetes avec Azure Arc.
Atténuation : inscrivez le fournisseur de ressources Microsoft.KubernetesConfiguration
en exécutant la commande suivante. Pour plus d’informations sur les erreurs d’inscription du fournisseur de ressources, reportez-vous à ce tutoriel.
az provider register -n Microsoft.KubernetesConfiguration
Autres problèmes
Si les mesures d’atténuation ci-dessus ne résolvent pas votre problème, essayez de réinitialiser l’extension de cluster du connecteur de service en la supprimant, puis en réessayant la création. Cette méthode devrait permettre de résoudre la plupart des problèmes liés à l’extension de cluster Connecteur de services.
Pour réinitialiser l’extension, utilisez les commandes CLI suivantes :
az extension add --name k8s-extension
az k8s-extension delete \
--resource-group <MyClusterResourceGroup> \
--cluster-name <MyCluster> \
--cluster-type managedClusters \
--name sc-extension
Étapes suivantes
Découvrez comment intégrer différents services cibles et en savoir plus sur leurs paramètres de configuration et leurs méthodes d’authentification.