By Shoeb Patel
I have an application API that works on Server-Sent Events (SSE, https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events).
It’s hosted in Managed kubernetes and exposed directly through Managed loadbalancer.
The Requests fail with “502 Bad Gateway”, “upstream connect error or disconnect/reset before headers. reset reason: protocol error”, although backend API shows 200 OK in logs.
As server-sent events are nothing but long-standing HTTP requests, there are ways to achieve it via increasing LoadBalancer <-> BackEnd SSE API HTTP connection timeout period.
I don’t see this option in DO LB though.
Ex. A workaround on GCP: https://stackoverflow.com/questions/44729212/running-a-https-sse-server-over-kubernetes-ingress-and-google-cloud-platform
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Accepted Answer
Personally Solved by using Nginx Controller.
LoadBalance <- TCP -> Nginx Controller <- HTTP with timeout -> SSE API
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sse-api
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-read-timeout: "21600"
nginx.ingress.kubernetes.io/eventsource: "true"
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.