feat(kubernetes-backend): Add WebSocket support to kubernetes-backend proxy.

Signed-off-by: Carlos Esteban Lopez <lcarlosesteb@vmware.com>
This commit is contained in:
Carlos Esteban Lopez
2023-06-15 18:40:37 -05:00
parent 2a1caca3d6
commit c2e5306535
2 changed files with 15 additions and 4 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes-backend': patch
---
Add WebSocket support to `kubernetes-backend` proxy.
@@ -135,20 +135,26 @@ export class KubernetesProxy {
const logger = this.logger.child({ cluster: originalCluster.name });
middleware = createProxyMiddleware({
logProvider: () => logger,
ws: true,
secure: !originalCluster.skipTLSVerify,
changeOrigin: true,
pathRewrite: { [`^${originalReq.baseUrl}`]: '' },
router: async req => {
// Re-evaluate the cluster on each request, in case it has changed
const cluster = await this.getClusterForRequest(req);
const isWS = req.headers.upgrade === 'websocket';
const cluster = isWS
? originalCluster
: await this.getClusterForRequest(req);
const url = new URL(cluster.url);
const ca = bufferFromFileOrString('', cluster.caData)?.toString();
// Re-evaluate the cluster on each request, in case it has changed
return {
protocol: url.protocol,
host: url.hostname,
port: url.port,
ca: bufferFromFileOrString('', cluster.caData)?.toString(),
ca,
};
},
pathRewrite: { [`^${originalReq.baseUrl}`]: '' },
onError: (error, req, res) => {
const wrappedError = new ForwardedError(
`Cluster '${originalCluster.name}' request error`,