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:
126.96.36.199 - - [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?