I'm currently running a kubernetes ingress configured via the official Traefik helm chart for my k8s cluster. I have a node-red instance that I setup in rules to forward requests to the node-red container. Traefik is running as ingress on AWS Classic LB. I've configured HTTP/HTTPS rules for the LB with the right certs. It all works fine for my Caddy server serving an SPA and a GraphQL endpoint via HTTPS. In this SPA, I'm trying to load node-red in an iframe.
Now, node-red's static files loads just fine via HTTPS. However, the WSS handshake it tries to establish fails with 404. If I switch to HTTP, the handshake works and everything runs just fine but it just doesn't work for WSS. When I turn on debug, I'm seeing the following entry:
202.3.121.5 - - [28/Oct/2019:11:33:50 +0000] "GET /fabric-workflow/comms HTTP/1.1" 404 144 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" 478 "/fabric-workflow/" "http://10.2.2.45:1880" 1ms
My ingress configuration is as follows:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: df-ingress-external
namespace: custom
annotations:
kubernetes.io/ingress.class: traefik-external
traefik.frontend.rule.type: PathPrefixStrip
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: app-ui
servicePort: 80
- path: /api
backend:
serviceName: app-graphql-server
servicePort: 4000
- path: /workflows/
backend:
serviceName: node-red
servicePort: 1880
Could someone tell me what I'm doing wrong?