Partager via


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

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.

Capture d’écran du portail Azure, afficher l’extension AKS.

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.

Capture d’écran du portail Azure, affichez les ressources Kubernetes créées par 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.

Capture d’écran du portail Azure, activation du pilote CSI pour le coffre de clés lors de la création d’une connexion.

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.

Capture d’écran du portail Azure, à l’aide de l’identité de charge de travail pour créer une connexion.

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 snipet 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. Le snipet 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.

  1. Installez l’extension Azure CLI k8s-extension.
az extension add --name k8s-extension
  1. 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.

  1. Connectez-vous à votre cluster AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. 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
    
  3. 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. Si sc-job n’existe pas dans l’espace de noms sc-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.