@backstage/plugin-kubernetes-react 0.1.0-next.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/index.d.ts +14 -2
- package/dist/index.esm.js +34 -8
- package/dist/index.esm.js.map +1 -1
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# @backstage/plugin-kubernetes-react
|
|
2
2
|
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 2d8151061c: Refactor Kubernetes plugins in line with ADR 11, no breaking changes yet
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 4262e12921: Handle mixed decimals and bigint when calculating k8s resource usage
|
|
12
|
+
- 9a1fce352e: Updated dependency `@testing-library/jest-dom` to `^6.0.0`.
|
|
13
|
+
- 95518765ee: Add Kubernetes cluster plugin. Viewing Kubernetes clusters as an Admin from Backstage
|
|
14
|
+
- 5dac12e435: The kubernetes APIs invokes Authentication Strategies when Backstage-Kubernetes-Authorization-X-X headers are provided, this enable the possibility to invoke strategies that executes additional steps to get a kubernetes token like on pinniped or custom strategies
|
|
15
|
+
- Updated dependencies
|
|
16
|
+
- @backstage/core-plugin-api@1.7.0
|
|
17
|
+
- @backstage/core-components@0.13.6
|
|
18
|
+
- @backstage/catalog-model@1.4.3
|
|
19
|
+
- @backstage/errors@1.2.3
|
|
20
|
+
- @backstage/plugin-kubernetes-common@0.7.0
|
|
21
|
+
- @backstage/types@1.1.1
|
|
22
|
+
|
|
23
|
+
## 0.1.0-next.1
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- 95518765ee: Add Kubernetes cluster plugin. Viewing Kubernetes clusters as an Admin from Backstage
|
|
28
|
+
- 5dac12e435: The kubernetes APIs invokes Authentication Strategies when Backstage-Kubernetes-Authorization-X-X headers are provided, this enable the possibility to invoke strategies that executes additional steps to get a kubernetes token like on pinniped or custom strategies
|
|
29
|
+
- Updated dependencies
|
|
30
|
+
- @backstage/core-components@0.13.6-next.2
|
|
31
|
+
- @backstage/core-plugin-api@1.7.0-next.1
|
|
32
|
+
- @backstage/catalog-model@1.4.3-next.0
|
|
33
|
+
- @backstage/errors@1.2.3-next.0
|
|
34
|
+
- @backstage/plugin-kubernetes-common@0.7.0-next.1
|
|
35
|
+
- @backstage/types@1.1.1
|
|
36
|
+
|
|
3
37
|
## 0.1.0-next.0
|
|
4
38
|
|
|
5
39
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -105,8 +105,14 @@ interface KubernetesApi {
|
|
|
105
105
|
getClusters(): Promise<{
|
|
106
106
|
name: string;
|
|
107
107
|
authProvider: string;
|
|
108
|
-
oidcTokenProvider?: string
|
|
108
|
+
oidcTokenProvider?: string;
|
|
109
109
|
}[]>;
|
|
110
|
+
getCluster(clusterName: string): Promise<{
|
|
111
|
+
name: string;
|
|
112
|
+
authProvider: string;
|
|
113
|
+
oidcTokenProvider?: string;
|
|
114
|
+
dashboardUrl?: string;
|
|
115
|
+
} | undefined>;
|
|
110
116
|
getWorkloadsByEntity(request: WorkloadsByEntityRequest): Promise<ObjectsByEntityResponse>;
|
|
111
117
|
getCustomObjectsByEntity(request: CustomObjectsByEntityRequest): Promise<ObjectsByEntityResponse>;
|
|
112
118
|
proxy(options: {
|
|
@@ -219,7 +225,11 @@ declare class KubernetesBackendClient implements KubernetesApi {
|
|
|
219
225
|
});
|
|
220
226
|
private handleResponse;
|
|
221
227
|
private postRequired;
|
|
222
|
-
|
|
228
|
+
getCluster(clusterName: string): Promise<{
|
|
229
|
+
name: string;
|
|
230
|
+
authProvider: string;
|
|
231
|
+
oidcTokenProvider?: string;
|
|
232
|
+
}>;
|
|
223
233
|
private getCredentials;
|
|
224
234
|
getObjectsByEntity(requestBody: KubernetesRequestBody): Promise<ObjectsByEntityResponse>;
|
|
225
235
|
getWorkloadsByEntity(request: WorkloadsByEntityRequest): Promise<ObjectsByEntityResponse>;
|
|
@@ -233,6 +243,8 @@ declare class KubernetesBackendClient implements KubernetesApi {
|
|
|
233
243
|
path: string;
|
|
234
244
|
init?: RequestInit;
|
|
235
245
|
}): Promise<Response>;
|
|
246
|
+
private static getKubernetesHeaders;
|
|
247
|
+
private static getKubernetesAuthHeaderByAuthProvider;
|
|
236
248
|
}
|
|
237
249
|
|
|
238
250
|
/**
|
package/dist/index.esm.js
CHANGED
|
@@ -453,22 +453,44 @@ class KubernetesBackendClient {
|
|
|
453
453
|
return (await this.handleResponse(response)).items;
|
|
454
454
|
}
|
|
455
455
|
async proxy(options) {
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
456
|
+
const { authProvider, oidcTokenProvider } = await this.getCluster(
|
|
457
|
+
options.clusterName
|
|
458
|
+
);
|
|
459
|
+
const kubernetesCredentials = await this.getCredentials(authProvider);
|
|
459
460
|
const url = `${await this.discoveryApi.getBaseUrl("kubernetes")}/proxy${options.path}`;
|
|
460
461
|
const identityResponse = await this.identityApi.getCredentials();
|
|
461
|
-
const headers =
|
|
462
|
+
const headers = KubernetesBackendClient.getKubernetesHeaders(
|
|
463
|
+
options,
|
|
464
|
+
kubernetesCredentials == null ? void 0 : kubernetesCredentials.token,
|
|
465
|
+
identityResponse,
|
|
466
|
+
authProvider,
|
|
467
|
+
oidcTokenProvider
|
|
468
|
+
);
|
|
469
|
+
return await fetch(url, { ...options.init, headers });
|
|
470
|
+
}
|
|
471
|
+
static getKubernetesHeaders(options, k8sToken, identityResponse, authProvider, oidcTokenProvider) {
|
|
472
|
+
var _a;
|
|
473
|
+
const kubernetesAuthHeader = KubernetesBackendClient.getKubernetesAuthHeaderByAuthProvider(
|
|
474
|
+
authProvider,
|
|
475
|
+
oidcTokenProvider
|
|
476
|
+
);
|
|
477
|
+
return {
|
|
462
478
|
...(_a = options.init) == null ? void 0 : _a.headers,
|
|
463
479
|
[`Backstage-Kubernetes-Cluster`]: options.clusterName,
|
|
464
480
|
...k8sToken && {
|
|
465
|
-
[
|
|
481
|
+
[kubernetesAuthHeader]: k8sToken
|
|
466
482
|
},
|
|
467
483
|
...identityResponse.token && {
|
|
468
484
|
Authorization: `Bearer ${identityResponse.token}`
|
|
469
485
|
}
|
|
470
486
|
};
|
|
471
|
-
|
|
487
|
+
}
|
|
488
|
+
static getKubernetesAuthHeaderByAuthProvider(authProvider, oidcTokenProvider) {
|
|
489
|
+
let header = "Backstage-Kubernetes-Authorization";
|
|
490
|
+
header = header.concat("-", authProvider);
|
|
491
|
+
if (oidcTokenProvider)
|
|
492
|
+
header = header.concat("-", oidcTokenProvider);
|
|
493
|
+
return header;
|
|
472
494
|
}
|
|
473
495
|
}
|
|
474
496
|
|
|
@@ -1892,8 +1914,12 @@ const currentToDeclaredResourceToPerc = (current, resource) => {
|
|
|
1892
1914
|
if (typeof current === "number" && typeof resource === "number") {
|
|
1893
1915
|
return `${Math.round(current / resource * 100)}%`;
|
|
1894
1916
|
}
|
|
1895
|
-
const numerator = BigInt(
|
|
1896
|
-
|
|
1917
|
+
const numerator = BigInt(
|
|
1918
|
+
typeof current === "number" ? Math.round(current) : current
|
|
1919
|
+
);
|
|
1920
|
+
const denominator = BigInt(
|
|
1921
|
+
typeof resource === "number" ? Math.round(resource) : resource
|
|
1922
|
+
);
|
|
1897
1923
|
return `${numerator * BigInt(100) / denominator}%`;
|
|
1898
1924
|
};
|
|
1899
1925
|
const podStatusToCpuUtil = (podStatus) => {
|