@backstage/plugin-kubernetes-backend 0.4.8 → 0.4.9

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @backstage/plugin-kubernetes-backend
2
2
 
3
+ ## 0.4.9
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix for the previous release with missing type declarations.
8
+ - Updated dependencies
9
+ - @backstage/backend-common@0.10.9
10
+ - @backstage/catalog-model@0.10.1
11
+ - @backstage/config@0.1.15
12
+ - @backstage/errors@0.2.2
13
+ - @backstage/plugin-kubernetes-common@0.2.4
14
+
3
15
  ## 0.4.8
4
16
 
5
17
  ### Patch Changes
@@ -0,0 +1,168 @@
1
+ import { Config } from '@backstage/config';
2
+ import { Logger } from 'winston';
3
+ import { JsonObject } from '@backstage/types';
4
+ import { KubernetesFetchError, FetchResponse, KubernetesRequestBody, ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common';
5
+ import { PodStatus } from '@kubernetes/client-node/dist/top';
6
+ import express from 'express';
7
+
8
+ interface ObjectFetchParams {
9
+ serviceId: string;
10
+ clusterDetails: AWSClusterDetails | GKEClusterDetails | ServiceAccountClusterDetails | ClusterDetails;
11
+ objectTypesToFetch: Set<ObjectToFetch>;
12
+ labelSelector: string;
13
+ customResources: CustomResource[];
14
+ }
15
+ interface KubernetesFetcher {
16
+ fetchObjectsForService(params: ObjectFetchParams): Promise<FetchResponseWrapper>;
17
+ fetchPodMetricsByNamespace(clusterDetails: ClusterDetails, namespace: string): Promise<PodStatus[]>;
18
+ }
19
+ interface FetchResponseWrapper {
20
+ errors: KubernetesFetchError[];
21
+ responses: FetchResponse[];
22
+ }
23
+ interface ObjectToFetch {
24
+ objectType: KubernetesObjectTypes;
25
+ group: string;
26
+ apiVersion: string;
27
+ plural: string;
28
+ }
29
+ interface CustomResource extends ObjectToFetch {
30
+ objectType: 'customresources';
31
+ }
32
+ declare type KubernetesObjectTypes = 'pods' | 'services' | 'configmaps' | 'deployments' | 'replicasets' | 'horizontalpodautoscalers' | 'jobs' | 'cronjobs' | 'ingresses' | 'customresources';
33
+ interface KubernetesClustersSupplier {
34
+ getClusters(): Promise<ClusterDetails[]>;
35
+ }
36
+ interface KubernetesServiceLocator {
37
+ getClustersByServiceId(serviceId: string): Promise<ClusterDetails[]>;
38
+ }
39
+ declare type ServiceLocatorMethod = 'multiTenant' | 'http';
40
+ interface ClusterDetails {
41
+ /**
42
+ * Specifies the name of the Kubernetes cluster.
43
+ */
44
+ name: string;
45
+ url: string;
46
+ authProvider: string;
47
+ serviceAccountToken?: string | undefined;
48
+ skipTLSVerify?: boolean;
49
+ /**
50
+ * Whether to skip the lookup to the metrics server to retrieve pod resource usage.
51
+ * It is not guaranteed that the Kubernetes distro has the metrics server installed.
52
+ */
53
+ skipMetricsLookup?: boolean;
54
+ caData?: string | undefined;
55
+ /**
56
+ * Specifies the link to the Kubernetes dashboard managing this cluster.
57
+ * @remarks
58
+ * Note that you should specify the app used for the dashboard
59
+ * using the dashboardApp property, in order to properly format
60
+ * links to kubernetes resources, otherwise it will assume that you're running the standard one.
61
+ * @see dashboardApp
62
+ * @see dashboardParameters
63
+ */
64
+ dashboardUrl?: string;
65
+ /**
66
+ * Specifies the app that provides the Kubernetes dashboard.
67
+ * This will be used for formatting links to kubernetes objects inside the dashboard.
68
+ * @remarks
69
+ * The existing apps are: standard, rancher, openshift, gke, aks, eks
70
+ * Note that it will default to the regular dashboard provided by the Kubernetes project (standard).
71
+ * Note that you can add your own formatter by registering it to the clusterLinksFormatters dictionary.
72
+ * @defaultValue standard
73
+ * @see dashboardUrl
74
+ * @example
75
+ * ```ts
76
+ * import { clusterLinksFormatters } from '@backstage/plugin-kubernetes';
77
+ * clusterLinksFormatters.myDashboard = (options) => ...;
78
+ * ```
79
+ */
80
+ dashboardApp?: string;
81
+ /**
82
+ * Specifies specific parameters used by some dashboard URL formatters.
83
+ * This is used by the GKE formatter which requires the project, region and cluster name.
84
+ * @see dashboardApp
85
+ */
86
+ dashboardParameters?: JsonObject;
87
+ }
88
+ interface GKEClusterDetails extends ClusterDetails {
89
+ }
90
+ interface ServiceAccountClusterDetails extends ClusterDetails {
91
+ }
92
+ interface AWSClusterDetails extends ClusterDetails {
93
+ assumeRole?: string;
94
+ externalId?: string;
95
+ }
96
+ interface KubernetesObjectsProviderOptions {
97
+ logger: Logger;
98
+ fetcher: KubernetesFetcher;
99
+ serviceLocator: KubernetesServiceLocator;
100
+ customResources: CustomResource[];
101
+ objectTypesToFetch?: ObjectToFetch[];
102
+ }
103
+ declare type ObjectsByEntityRequest = KubernetesRequestBody;
104
+ interface KubernetesObjectsProvider {
105
+ getKubernetesObjectsByEntity(request: ObjectsByEntityRequest): Promise<ObjectsByEntityResponse>;
106
+ }
107
+
108
+ interface RouterOptions {
109
+ logger: Logger;
110
+ config: Config;
111
+ clusterSupplier?: KubernetesClustersSupplier;
112
+ }
113
+ /**
114
+ * creates and configure a new router for handling the kubernetes backend APIs
115
+ * @param options - specifies the options required by this plugin
116
+ * @returns a new router
117
+ * @deprecated Please use the new KubernetesBuilder instead like this
118
+ * ```
119
+ * import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend';
120
+ * const { router } = await KubernetesBuilder.createBuilder({
121
+ * logger,
122
+ * config,
123
+ * }).build();
124
+ * ```
125
+ */
126
+ declare function createRouter(options: RouterOptions): Promise<express.Router>;
127
+
128
+ interface KubernetesEnvironment {
129
+ logger: Logger;
130
+ config: Config;
131
+ }
132
+ declare class KubernetesBuilder {
133
+ protected readonly env: KubernetesEnvironment;
134
+ private clusterSupplier?;
135
+ private objectsProvider?;
136
+ private fetcher?;
137
+ private serviceLocator?;
138
+ static createBuilder(env: KubernetesEnvironment): KubernetesBuilder;
139
+ constructor(env: KubernetesEnvironment);
140
+ build(): Promise<{
141
+ clusterDetails: ClusterDetails[];
142
+ clusterSupplier: KubernetesClustersSupplier;
143
+ customResources: CustomResource[];
144
+ fetcher: KubernetesFetcher;
145
+ objectsProvider: KubernetesObjectsProvider;
146
+ router: express.Router;
147
+ serviceLocator: KubernetesServiceLocator;
148
+ }>;
149
+ setClusterSupplier(clusterSupplier?: KubernetesClustersSupplier): this;
150
+ setObjectsProvider(objectsProvider?: KubernetesObjectsProvider): this;
151
+ setFetcher(fetcher?: KubernetesFetcher): this;
152
+ setServiceLocator(serviceLocator?: KubernetesServiceLocator): this;
153
+ protected buildCustomResources(): CustomResource[];
154
+ protected buildClusterSupplier(): KubernetesClustersSupplier;
155
+ protected buildObjectsProvider(options: KubernetesObjectsProviderOptions): KubernetesObjectsProvider;
156
+ protected buildFetcher(): KubernetesFetcher;
157
+ protected buildServiceLocator(method: ServiceLocatorMethod, clusterDetails: ClusterDetails[]): KubernetesServiceLocator;
158
+ protected buildMultiTenantServiceLocator(clusterDetails: ClusterDetails[]): KubernetesServiceLocator;
159
+ protected buildHttpServiceLocator(_clusterDetails: ClusterDetails[]): KubernetesServiceLocator;
160
+ protected buildRouter(objectsProvider: KubernetesObjectsProvider, clusterDetails: ClusterDetails[]): express.Router;
161
+ protected fetchClusterDetails(clusterSupplier: KubernetesClustersSupplier): Promise<ClusterDetails[]>;
162
+ protected getServiceLocatorMethod(): ServiceLocatorMethod;
163
+ protected getObjectTypesToFetch(): ObjectToFetch[] | undefined;
164
+ }
165
+
166
+ declare const DEFAULT_OBJECTS: ObjectToFetch[];
167
+
168
+ export { AWSClusterDetails, ClusterDetails, CustomResource, DEFAULT_OBJECTS, FetchResponseWrapper, GKEClusterDetails, KubernetesBuilder, KubernetesClustersSupplier, KubernetesEnvironment, KubernetesFetcher, KubernetesObjectTypes, KubernetesObjectsProvider, KubernetesObjectsProviderOptions, KubernetesServiceLocator, ObjectFetchParams, ObjectToFetch, ObjectsByEntityRequest, RouterOptions, ServiceAccountClusterDetails, ServiceLocatorMethod, createRouter };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/plugin-kubernetes-backend",
3
3
  "description": "A Backstage backend plugin that integrates towards Kubernetes",
4
- "version": "0.4.8",
4
+ "version": "0.4.9",
5
5
  "main": "dist/index.cjs.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -35,11 +35,11 @@
35
35
  "clean": "backstage-cli package clean"
36
36
  },
37
37
  "dependencies": {
38
- "@backstage/backend-common": "^0.10.8",
39
- "@backstage/catalog-model": "^0.10.0",
40
- "@backstage/config": "^0.1.14",
41
- "@backstage/errors": "^0.2.1",
42
- "@backstage/plugin-kubernetes-common": "^0.2.3",
38
+ "@backstage/backend-common": "^0.10.9",
39
+ "@backstage/catalog-model": "^0.10.1",
40
+ "@backstage/config": "^0.1.15",
41
+ "@backstage/errors": "^0.2.2",
42
+ "@backstage/plugin-kubernetes-common": "^0.2.4",
43
43
  "@google-cloud/container": "^2.2.0",
44
44
  "@kubernetes/client-node": "^0.16.0",
45
45
  "@types/express": "^4.17.6",
@@ -68,5 +68,5 @@
68
68
  "dist",
69
69
  "schema.d.ts"
70
70
  ],
71
- "gitHead": "4805c3d13ce9bfc369e53c271b1b95e722b3b4dc"
71
+ "gitHead": "e244b348c473700e7d5e5fbcef38bd9f9fd1d0ba"
72
72
  }