Running Meteor App mit Nginx SSL-Proxy auf Kubernetes

8

Ich habe eine Meteor-App mit Kubernetes in Google Cloud bereitgestellt, die mit Nginx als SSL-Terminierung konfiguriert wurde. Alles funktioniert gut.

Wenn jedoch zwei verschiedene Clients eine Verbindung zu zwei verschiedenen SSL-Containern herstellen, werden Aktualisierungen in den jeweiligen Apps für bis zu 10 Sekunden nicht angezeigt. Dies lässt den Eindruck entstehen, dass WebSockets nicht funktioniert, die Abfrage jedoch ausgeführt wird bewirken. Ich habe bestätigt, dass alle Clients mit Websockets verbunden sind, aber da sich die Updates nicht sofort verbreiten, ist Nginx möglicherweise nicht so konfiguriert, dass er mit der Meteor App richtig kommuniziert.

Hier ist mein SSL / Nginx-Service:

apiVersion: v1 kind: Service metadata: name: frontend-ssl labels: name: frontend-ssl spec: ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 selector: name: frontend-ssl type: LoadBalancer loadBalancerIP: 123.456.123.456 sessionAffinity: ClientIP

Und hier ist der Meteor-Service:

apiVersion: v1 kind: Service metadata: name: frontend labels: name: frontend spec: ports: - port: 3000 targetPort: 3000 selector: name: flow-frontend type: LoadBalancer loadBalancerIP: 123.456.123.456 sessionAffinity: ClientIP

Für die SSL-Terminierung verwende ich das von Kubernetes vorgeschlagene SSL-Setup, das mit den Additionen von WebSockets, Ссылка

, gepoolt wurde >     
Mark Shust 10.02.2016, 17:50
quelle

2 Antworten

0

Haben Sie in Ihrer NginX-Konfiguration sichergestellt, dass Sie das ip_hash -Flag verwenden, um WebSockets jedes Mal auf denselben Server zu leiten? Außerdem müssen Sie sicherstellen, dass die Websocket-Upgrade-Header weitergeleitet werden:

%Vor%     
MrE 02.04.2016 17:00
quelle
0

Der einfachste Weg, um Ihre App zu starten, wäre die Verwendung von Nginx-basierten Ingress-Controller anstelle von Nginx-Service.

Meiner Meinung nach ist der einfachste Weg, Ingress-Controller zu implementieren, mit Helm: Ссылка Ссылка

Wenn Sie jedoch kein anderes Tool zu Ihrem Stack hinzufügen möchten, können Sie den offiziellen Installationsleitfaden verwenden: Ссылка .

Beispiel für die Konfiguration von Ingress-Objekten mit Web-Sockets-Unterstützung finden Sie hier: Ссылка

    
Maciek Sawicki 02.11.2017 00:08
quelle

Tags und Links