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 >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: Ссылка
Tags und Links nginx ssl proxy kubernetes meteor