Partager via


Résolution des problèmes de passerelle d’entrée du module complémentaire Istio Service Mesh

Cet article explique comment résoudre les problèmes de passerelle d’entrée sur le module complémentaire Istio Service Mesh pour Azure Kubernetes Service (AKS). La passerelle d’entrée Istio est un proxy inverse basé sur Envoy que vous pouvez utiliser pour router le trafic entrant vers les charges de travail dans le maillage.

Pour le module complémentaire Istio Service Mesh, nous proposons les options de passerelle d’entrée suivantes :

  • Passerelle d’entrée interne qui utilise une adresse IP privée.

  • Passerelle d’entrée externe qui utilise une adresse IP accessible publiquement.

Note

Microsoft ne prend pas en charge la personnalisation de l’adresse IP pour les passerelles d’entrée internes ou externes. Toutes les modifications de personnalisation IP apportées au module complémentaire Istio Service Mesh seront rétablies.

Le module complémentaire déploie des pods de passerelle d’entrée Istio et des déploiements par révision. Si vous effectuez une mise à niveau canary et que deux révisions de plan de contrôle sont installées dans votre cluster, vous devrez peut-être résoudre plusieurs pods de passerelle d’entrée entre les deux révisions.

Liste de contrôle pour la résolution des problèmes

Étape 1 : Vérifier qu’aucune règle de pare-feu ou de groupe de sécurité réseau ne bloque la passerelle d’entrée

Vérifiez que vous n’avez pas de règles de pare-feu ou de groupe de sécurité réseau (NSG) qui bloquent le trafic vers la passerelle d’entrée. Vous devez ajouter explicitement une règle de traduction d’adresses réseau de destination (DNAT) pour autoriser le trafic entrant via Pare-feu Azure à la passerelle d’entrée.

Étape 2 : Configurer correctement les passerelles, les services virtuels et les règles de destination

Lorsque vous configurez des passerelles, des services virtuels et des règles de destination pour le routage du trafic via la passerelle d’entrée, procédez comme suit :

  1. Vérifiez que le sélecteur de passerelle d’entrée dans la ressource de passerelle est défini sur l’une des valeurs de texte suivantes si vous utilisez une passerelle externe ou interne, respectivement :

    • istio: aks-istio-ingressgateway-external
    • istio: aks-istio-ingressgateway-internal
  2. Vérifiez que les ports sont correctement définis dans les passerelles et les services virtuels. Pour la passerelle, le port doit être défini 80 pour http ou 443 pour https. Pour le service virtuel, le port doit être défini sur le port sur lequel le service correspondant de l’application écoute.

  3. Vérifiez que le service est exposé dans la spécification de la hosts passerelle et du service virtuel. Si vous rencontrez des problèmes liés à l’en-tête Host dans les requêtes, essayez d’ajouter à la liste verte tous les hôtes qui contiennent un caractère générique astérisque (« * »), comme dans cet exemple de configuration de passerelle. Toutefois, nous vous recommandons de ne pas modifier la liste verte en tant que pratique de production. En outre, la hosts spécification doit être configurée explicitement.

Étape 3 : Corriger l’intégrité du pod de passerelle d’entrée

Si le pod de passerelle d’entrée plante ou n’apparaît pas dans l’état prêt, vérifiez que le pod de plan de contrôle Istioistiod est dans l’état prêt. La passerelle d’entrée dépend de la préparation de la istiod mise en production.

Si le istiod pod n’apparaît pas dans l’état prêt, vérifiez que les définitions de ressources personnalisées Istio (CRD) et le base graphique Helm sont installés correctement. Pour ce faire, exécutez la commande suivante :

helm ls --all --all-namespaces

Vous pouvez voir une erreur plus large dans laquelle l’installation du module complémentaire n’est pas configurée spécifiquement pour la passerelle d’entrée.

Si le istiod pod est sain, mais que les pods de passerelle d’entrée ne répondent pas, inspectez les ressources de passerelle d’entrée suivantes dans l’espace aks-istio-ingress de noms pour collecter plus d’informations :

  • Version de Helm
  • Déploiement
  • Service

En outre, vous trouverez plus d’informations sur le débogage de passerelle et de side-car dans la résolution des problèmes généraux du module complémentaire istio service mesh.

Étape 4 : Configurer l’utilisation des ressources

Une utilisation élevée des ressources se produit lorsque les paramètres de réplica min/max par défaut pour Istiod et les passerelles ne sont pas suffisants. Dans ce cas, modifiez les configurations de mise à l’échelle automatique des pods horizontaux.

Étape 5 : Résoudre les problèmes de la passerelle d’entrée sécurisée

Lorsqu’une passerelle d’entrée externe est configurée pour exposer un service HTTPS sécurisé à l’aide de TLS simple ou mutuelle, procédez comme suit :

  1. Vérifiez que les valeurs des variables d’environnement et SECURE_INGRESS_PORT_EXTERNAL les INGRESS_HOST_EXTERNAL variables d’environnement sont valides en fonction de la sortie de la commande suivante :

    kubectl -n aks-istio-ingress get service aks-istio-ingressgateway-external
    
  2. Recherchez les messages d’erreur dans les journaux du contrôleur de passerelle :

    kubectl logs -n aks-istio-ingress <gateway-service-pod>
    
  3. Vérifiez que les secrets sont créés dans l’espace aks-istio-ingress de noms :

    kubectl -n aks-istio-ingress get secrets
    

Pour l’exemple de passerelle d’entrée sécurisée pour le module complémentaire Istio Service Mesh pour Azure Kubernetes Service, le productpage-credential secret doit être répertorié.

Après avoir activé le module complémentaire du fournisseur de secrets Azure Key Vault, vous devez accorder l’accès à l’identité managée affectée par l’utilisateur du module complémentaire à Azure Key Vault. La configuration incorrecte de l’accès à Azure Key Vault empêche la création du productpage-credential secret.

Après avoir créé la SecretProviderClass ressource, pour vous assurer que les secrets sont synchronisés entre Azure Key Vault et le cluster, vérifiez que l’exemple de pod secrets-store-sync-productpage qui référence cette ressource est correctement déployé.

References

Exclusion de responsabilité de tiers

Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.

Exclusion de responsabilité sur les coordonnées externes

Microsoft fournit des informations de contacts externes afin de vous aider à obtenir un support technique sur ce sujet. Ces informations de contact peuvent changer sans préavis. Microsoft ne garantit pas l’exactitude des informations concernant les sociétés externes.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.