feat(kubernetes-backend): Add WebSocket support to kubernetes-backend proxy.
Signed-off-by: Carlos Esteban Lopez <lcarlosesteb@vmware.com>
This commit is contained in:
@@ -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`,
|
||||
|
||||
Reference in New Issue
Block a user