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:
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
Stellen Sie sicher, dass die Ports in Gateways und virtuellen Diensten ordnungsgemäß festgelegt sind. Für das Gateway sollte
80
der Port fürhttp
oder443
fürhttps
. Für den virtuellen Dienst sollte der Port auf den Port festgelegt werden, auf den der entsprechende Dienst für die Anwendung lauscht.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 demHost
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 diehosts
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:
Stellen Sie sicher, dass die Werte der
INGRESS_HOST_EXTERNAL
Variablen undSECURE_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
Überprüfen Sie in den Protokollen des Gatewaycontrollers nach Fehlermeldungen:
kubectl logs -n aks-istio-ingress <gateway-service-pod>
Ü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
Die Kontaktinformationen zu den in diesem Artikel erwähnten Drittanbietern sollen Ihnen helfen, zusätzliche Informationen zu diesem Thema zu finden. Diese Kontaktinformationen können ohne vorherige Ankündigung geändert werden. Sie werden von Microsoft ohne jede Gewähr weitergegeben.
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.