Skip to content

Instantly share code, notes, and snippets.

@rvennam
Created May 19, 2025 17:59
Show Gist options
  • Save rvennam/55da212c4b59fe55e7b297edf1244b7e to your computer and use it in GitHub Desktop.
Save rvennam/55da212c4b59fe55e7b297edf1244b7e to your computer and use it in GitHub Desktop.
apiVersion: apps/v1
kind: Deployment
metadata:
name: stream-server
namespace: streamtest
spec:
replicas: 1
selector:
matchLabels:
app: stream-server
template:
metadata:
labels:
app: stream-server
spec:
containers:
- name: server
image: node:18
command: ["node", "-e"]
args:
- |
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/events') {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
});
let count = 0;
const interval = setInterval(() => {
res.write(`data: Hello ${count++}\n\n`);
}, 1000);
req.on('close', () => clearInterval(interval));
} else {
res.writeHead(404);
res.end();
}
});
server.listen(8080);
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: stream-server
namespace: streamtest
spec:
selector:
app: stream-server
ports:
- name: http
port: 80
targetPort: 8080
type: ClusterIP
---
kind: Gateway
apiVersion: gateway.networking.k8s.io/v1
metadata:
name: http
namespace: streamtest
spec:
gatewayClassName: kgateway
listeners:
- protocol: HTTP
port: 80
name: http
allowedRoutes:
namespaces:
from: All
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: httpbin
namespace: streamtest
labels:
example: httpbin-route
spec:
parentRefs:
- name: http
namespace: streamtest
rules:
- matches:
- path:
type: PathPrefix
value: /events
backendRefs:
- name: stream-server
port: 80
- matches:
- path:
type: PathPrefix
value: /ws
backendRefs:
- name: stream-server
port: 80
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment