So definieren Sie Ingress in GKE mit Spring Cloud Netflix-Containern

Aug 16 2020

Ich habe eine Microservice-Architektur, die auf Spring Cloud Netflix aufbaut:

  • Business-Owner-Service verweist auf eine Spring Boot-App, die auf Port 8763 ausgeführt wird. Die Portweiterleitung erfolgt, Business-Owner-Service: 80 Weiterleitungen zu Port 8763.
  • Der Kundendienst verweist auf eine Spring Boot-App, die auf Port 8766 ausgeführt wird. Kundendienst: 80 -> 8766

Die Architektur wird korrekt ausgeführt, wenn ich sie über das Spring Cloud Zuul-Gateway aufrufe, aber einen Ingress einrichten möchte.

Meine genaue Konfiguration ist die folgende:

  • Eindringen

  • Konfiguration des Eingangspfads

Das Problem ist, dass der Ingress alle Backend-Dienste auf ungesund hat und ich nicht weiß, was ich falsch mache. Was muss ich tun, um einen funktionierenden Ingress zu haben?

Bearbeiten: Gemäß Kommentaren habe ich versucht, readinessProbe für den Kundendienst-Pod wie folgt zu definieren:

Dies funktioniert nicht und wenn ich versuche, die aktualisierte Konfiguration zu überprüfen, ist readinessProbe nicht sichtbar. Ich denke, dies ist ein Fehler, aber ich bin nicht sicher, wie ich überprüfen soll, ob die Sonde aktualisiert wurde oder nicht.

Außerdem läuft Aktuator / Gesundheits-GET über das Zuul-Gateway:

Antworten

1 TudorGrigoriu Aug 19 2020 at 17:49

Was in meinem Fall die Lösung war, war die Konfiguration des Gesundheitschecks, nicht ReadinessProbe. Ich habe die Integritätsprüfung aktualisiert, die automatisch für die Ingress-Backend-Dienste erstellt wurde, um auf / actuator / health zu verweisen. Das hat funktioniert

ArghyaSadhu Aug 16 2020 at 00:24

Der GKE Ingress Controller führt eine Integritätsprüfung mit dem in der Pod-Bereitstellung definierten Bereitschaftstest durch . Fügen Sie eine Bereitschaftssonde wie unten mit dem Federmanschettenantrieb hinzu

spec:
  containers:
    - name: name
      readinessProbe:
        httpGet:
          port: 8080
          path: /actuator/health
        initialDelaySeconds: 10