Utiliser le connecteur de service 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éées par Connecteur de services.
- Comment résoudre les problèmes et afficher les journaux Connecteur de services 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 Connecteur de services sur le cluster AKS
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.
Ajout de l’extension Kubernetes du connecteur de service
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 à Connecteur de services. 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éation des ressources Kubernetes
Connecteur de services 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 Connecteur de services pour chaque connexion de service sur le portail Azure dans votre ressource Kubernetes, dans le menu Connecteur de services.
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.
Activation du 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.
Activation de l’identité de charge de travail et de 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.
Utiliser les ressources Kubernetes créées par Connecteur de services
Différentes ressources Kubernetes sont créées par Connecteur de services en fonction du type de service cible et du type d’authentification. Les sections suivantes montrent comment utiliser les ressources Kubernetes créées par Connecteur de services dans la définition de vos charges de travail de cluster et le code d’application.
Secret Kubernetes
Un secret Kubernetes est créé lorsque le type d’authentification est défini sur Connection String
ou Service Principal
. Votre définition de charge de travail de cluster peut référencer directement le secret. L’extrait suivant fournit 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
Votre code d’application peut consommer la chaîne de connexion dans le secret à partir d’une variable d’environnement. Consultez l’exemple de code suivant pour en savoir plus sur les noms des variables d’environnement et comment les utiliser dans votre code d’application pour s’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 défini sur 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
Consultez le tutoriel suivant pour découvrir comment se connecter à Stockage Azure à l’aide de l’identité de charge de travail.
Résoudre les problèmes et afficher les journaux
Si une erreur se produit et ne peut pas être résolue en réessayant lors de la création d’une connexion de service, les méthodes suivantes vous aident à collecter plus d’informations pour la résolution des problèmes.
Vérifier l’extension Kubernetes du connecteur de services
L’extension Kubernetes du connecteur de services est basée sur extensions de cluster Kubernetes compatibles avec Azure Arc. Utilisez les commandes suivantes pour rechercher les erreurs qui se sont produites pendant le processus d’installation ou de mise à jour de l’extension.
Installez l’extension Azure CLI
k8s-extension
.az extension add --name k8s-extension
Récupérez l’état de l’extension Connecteur de services. Vérifiez la propriété
statuses
dans la sortie de commande pour identifier les erreurs.az k8s-extension show \ --resource-group MyClusterResourceGroup \ --cluster-name MyCluster \ --cluster-type managedClusters \ --name sc-extension
Vérifier les journaux du cluster Kubernetes
Si une erreur se produit pendant l’installation de l’extension et que le message d’erreur dans la propriété statuses
ne fournit pas suffisamment d’informations, vous pouvez examiner plus en détail les journaux Kubernetes avec les étapes suivantes.
Connectez-vous à votre cluster AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
L’extension Connecteur de services est installée dans l’espace de noms
sc-system
à l’aide d’un graphique Helm. Vérifiez l’espace de noms et la version Helm à l’aide des commandes suivantes.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. Un échec d’exécution de 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
, elle doit avoir été exécutée correctement. 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
Erreur de création d’extension
Message d’erreur :
Unable to get a response from the agent in time
.
Atténuation :
Reportez-vous aux erreurs de création d’extension
Erreurs Helm
Messages d’erreur :
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
Atténuation :
Reportez-vous aux erreurs Helm
Conflit
Message d’erreur :
Operation returned an invalid status code: Conflict
.
Raison :
Cette erreur se produit généralement lors de la tentative de création d’une connexion de service alors que le cluster Azure Kubernetes Service (AKS) est dans un état de mise à jour. La mise à jour de la connexion de service est en conflit avec la mise à jour en cours. Cette erreur se produit également lorsque votre abonnement n’est pas inscrit auprès du fournisseur de ressources Microsoft.KubernetesConfiguration
.
Atténuation :
Vérifiez que votre cluster est dans un état « Opération réussie », puis réessayez la création.
Exécutez la commande suivante pour vous assurer que votre abonnement est inscrit auprès du fournisseur de ressources
Microsoft.KubernetesConfiguration
.az provider register -n Microsoft.KubernetesConfiguration
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
.
Raison :
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érifiez 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 :
Connecteur de services nécessite que l’abonnement soit inscrit auprès de Microsoft.KubernetesConfiguration
, qui est le fournisseur de ressources pour extensions de cluster Kubernetes compatibles 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 à Résoudre les erreurs pour l’inscription du fournisseur de ressources.
az provider register -n Microsoft.KubernetesConfiguration
Étape suivante
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.