Freigeben über


Problembehandlung beim Istio-Dienst-Gitter-Add-On-Eingangsgateway

In diesem Artikel wird erläutert, wie Sie Gatewayprobleme im Istio-Dienst-Gitter-Add-On für Azure Kubernetes Service (AKS) behandeln. Das Istio-Eingangsgateway ist ein Envoy-basierter Reverseproxy, den Sie verwenden können, um eingehenden Datenverkehr an Workloads im Gitter weiterzuleiten.

Für das Istio-basierte Dienstgitter-Add-On bieten wir die folgenden Eingangsgatewayoptionen:

  • Ein internes Eingangsgateway, das eine private IP-Adresse verwendet.

  • Ein externes Eingangsgateway, das eine öffentlich zugängliche IP-Adresse verwendet.

Notiz

Microsoft unterstützt nicht das Anpassen der IP-Adresse für die internen oder externen Eingangsgateways. Alle Änderungen an der IP-Anpassung des Istio-Dienstgitter-Add-Ons werden wiederhergestellt.

Das Add-On stellt Istio-Gateway-Pods und Bereitstellungen pro Revision bereit. Wenn Sie ein Canaryupgrade durchführen und zwei Überarbeitungen der Steuerebene in Ihrem Cluster installiert haben, müssen Sie möglicherweise mehrere Eingangsgateway-Pods in beiden Überarbeitungen behandeln.

Checkliste zur Problembehandlung

Schritt 1: Stellen Sie sicher, dass keine Firewall- oder NSG-Regeln das Eingangsgateway blockieren

Stellen Sie sicher, dass keine Firewall- oder Netzwerksicherheitsgruppenregeln (Network Security Group, NSG) vorhanden sind, die den Datenverkehr an das Eingangsgateway blockieren. Sie müssen explizit eine DNAT-Regel (Destination Network Address Translation) hinzufügen, um eingehenden Datenverkehr über die Azure Firewall zum Eingangsgateway zuzulassen.

Schritt 2: Ordnungsgemäßes Konfigurieren von Gateways, virtuellen Diensten und Zielregeln

Wenn Sie Gateways, virtuelle Dienste und Zielregeln für das Datenverkehrsrouting über das Eingangsgateway konfigurieren, führen Sie die folgenden Schritte aus:

  1. Stellen Sie sicher, dass die Eingangsgatewayauswahl in der Gatewayressource auf einen der folgenden Textwerte festgelegt ist, wenn Sie ein externes oder internes Gateway verwenden:

    • istio: aks-istio-ingressgateway-external
    • istio: aks-istio-ingressgateway-internal
  2. Stellen Sie sicher, dass die Ports in Gateways und virtuellen Diensten ordnungsgemäß festgelegt sind. Für das Gateway sollte 80 der Port für http oder 443 für https. Für den virtuellen Dienst sollte der Port auf den Port festgelegt werden, auf den der entsprechende Dienst für die Anwendung lauscht.

  3. Stellen Sie sicher, dass der Dienst innerhalb der hosts Spezifikation sowohl für das Gateway als auch für den virtuellen Dienst verfügbar gemacht wird. Wenn Probleme auftreten, die mit dem Host Header in den Anforderungen zusammenhängen, versuchen Sie, alle Hosts, die ein Sternchen (*) enthalten, zur Zulassungsliste hinzuzufügen, z. B. in dieser Beispielgatewaykonfiguration. Es wird jedoch empfohlen, die Zulassungsliste nicht als Produktionspraxis zu ändern. Außerdem sollte die hosts Spezifikation explizit konfiguriert werden.

Schritt 3: Beheben der Integrität des Eingangsgateway-Pods

Wenn der Eingangsgateway-Pod abstürzt oder nicht im bereiten Zustand angezeigt wird, vergewissern Sie sich, dass sich der Istio-Daemon (istiod)-Kontrollebenen-Pod im bereiten Zustand befindet. Das Eingangsgateway hängt davon ab, dass die istiod Freigabe bereit ist.

Wenn der istiod Pod nicht im Zustand "Bereit" angezeigt wird, stellen Sie sicher, dass die benutzerdefinierten Istio-Ressourcendefinitionen (CRDs) und das base Helm-Diagramm ordnungsgemäß installiert sind. Führen Sie zu diesem Zweck den folgenden Befehl aus:

helm ls --all --all-namespaces

Möglicherweise wird ein umfassenderer Fehler angezeigt, bei dem die Add-On-Installation nicht speziell für das Eingangsgateway konfiguriert ist.

Wenn der istiod Pod fehlerfrei ist, aber die Eingangsgateway-Pods nicht reagieren, überprüfen Sie die folgenden Eingangsgatewayressourcen im aks-istio-ingress Namespace, um weitere Informationen zu sammeln:

  • Helm-Releases
  • Bereitstellung
  • Dienst

Darüber hinaus finden Sie weitere Informationen zum Gateway- und Sidecar-Debugging in der Allgemeinen Istio-Dienst-Gitter-Add-On-Problembehandlung.

Schritt 4: Konfigurieren der Ressourcenauslastung

Hohe Ressourcenauslastung tritt auf, wenn die Standardeinstellungen für Min/Max-Replikate für Istiod und die Gateways nicht ausreichen. Ändern Sie in diesem Fall die konfigurationen für die automatische Skalierung horizontaler Pods .

Schritt 5: Problembehandlung für das sichere Eingangsgateway

Wenn ein externes Eingangsgateway so konfiguriert ist, dass ein sicherer HTTPS-Dienst mit einfachem oder gegenseitigem TLS verfügbar gemacht wird, führen Sie die folgenden Schritte zur Problembehandlung aus:

  1. Stellen Sie sicher, dass die Werte der INGRESS_HOST_EXTERNAL Variablen und SECURE_INGRESS_PORT_EXTERNAL der Umgebung basierend auf der Ausgabe des folgenden Befehls gültig sind:

    kubectl -n aks-istio-ingress get service aks-istio-ingressgateway-external
    
  2. Überprüfen Sie in den Protokollen des Gatewaycontrollers nach Fehlermeldungen:

    kubectl logs -n aks-istio-ingress <gateway-service-pod>
    
  3. Überprüfen Sie, ob die geheimen Schlüssel im aks-istio-ingress Namespace erstellt werden:

    kubectl -n aks-istio-ingress get secrets
    

Für das Beispiel in secure ingress gateway for Istio service mesh add-on for Azure Kubernetes Service, the productpage-credential secret should be listed.

Nachdem Sie das Azure Key Vault-Anbieter-Add-On aktiviert haben, müssen Sie zugriff auf die vom Benutzer zugewiesene verwaltete Identität des Add-Ons im Azure Key Vault gewähren. Durch das falsche Einrichten des Zugriffs auf Azure Key Vault wird verhindert, dass der productpage-credential geheime Schlüssel erstellt wird.

Nachdem Sie die SecretProviderClass Ressource erstellt haben, stellen Sie sicher, dass geheime Schlüssel aus Azure Key Vault mit dem Cluster synchronisiert werden, und stellen Sie sicher, dass der Beispiel-Pod secrets-store-sync-productpage , der auf diese Ressource verweist, erfolgreich bereitgestellt wird.

References

Informationen zum Haftungsausschluss von Drittanbietern

Die in diesem Artikel genannten Drittanbieterprodukte stammen von Herstellern, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.

Haftungsausschluss für Kontaktinformationen von Drittanbietern

Microsoft stellt Kontaktinformationen von Drittanbietern bereit, damit Sie weitere Informationen zu diesem Thema einholen können. Diese Kontaktinformationen können ohne vorherige Ankündigung geändert werden. Microsoft übernimmt keine Garantie für die Richtigkeit dieser Kontaktinformationen von Drittanbietern.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.