From adc931eeccd14eabf97ce00081981e3c5be18af3 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Mon, 26 Aug 2024 12:19:00 -0500 Subject: [PATCH 1/4] [Kubernetes] Skip start without config Signed-off-by: Andre Wanlin --- plugins/kubernetes-backend/src/plugin.ts | 48 ++++++++++++++---------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/plugins/kubernetes-backend/src/plugin.ts b/plugins/kubernetes-backend/src/plugin.ts index 57221e377c..12a5a55698 100644 --- a/plugins/kubernetes-backend/src/plugin.ts +++ b/plugins/kubernetes-backend/src/plugin.ts @@ -40,6 +40,8 @@ import { type KubernetesServiceLocatorExtensionPoint, } from '@backstage/plugin-kubernetes-node'; +import Router from 'express-promise-router'; + class ObjectsProvider implements KubernetesObjectsProviderExtensionPoint { private objectsProvider: KubernetesObjectsProvider | undefined; @@ -193,27 +195,33 @@ export const kubernetesPlugin = createBackendPlugin({ auth, httpAuth, }) { - // TODO: expose all of the customization & extension points of the builder here - const builder: KubernetesBuilder = KubernetesBuilder.createBuilder({ - logger, - config, - catalogApi, - permissions, - discovery, - auth, - httpAuth, - }) - .setObjectsProvider(extPointObjectsProvider.getObjectsProvider()) - .setClusterSupplier(extPointClusterSuplier.getClusterSupplier()) - .setFetcher(extPointFetcher.getFetcher()) - .setServiceLocator(extPointServiceLocator.getServiceLocator()); + if (config.has('kubernetes')) { + // TODO: expose all of the customization & extension points of the builder here + const builder: KubernetesBuilder = KubernetesBuilder.createBuilder({ + logger, + config, + catalogApi, + permissions, + discovery, + auth, + httpAuth, + }) + .setObjectsProvider(extPointObjectsProvider.getObjectsProvider()) + .setClusterSupplier(extPointClusterSuplier.getClusterSupplier()) + .setFetcher(extPointFetcher.getFetcher()) + .setServiceLocator(extPointServiceLocator.getServiceLocator()); - AuthStrategy.addAuthStrategiesFromArray( - extPointAuthStrategy.getAuthenticationStrategies(), - builder, - ); - const { router } = await builder.build(); - http.use(router); + AuthStrategy.addAuthStrategiesFromArray( + extPointAuthStrategy.getAuthenticationStrategies(), + builder, + ); + const { router } = await builder.build(); + http.use(router); + } else { + logger.warn( + 'Failed to initialize kubernetes backend: valid kubernetes config is missing', + ); + } }, }); }, From ca96b661d7725aeb9278fffad9e486047f925bab Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Mon, 26 Aug 2024 12:20:58 -0500 Subject: [PATCH 2/4] Added changeset Signed-off-by: Andre Wanlin --- .changeset/serious-spies-knock.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/serious-spies-knock.md diff --git a/.changeset/serious-spies-knock.md b/.changeset/serious-spies-knock.md new file mode 100644 index 0000000000..1484753019 --- /dev/null +++ b/.changeset/serious-spies-knock.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Skip start without proper config From 796cad5ccd4296373ddfa91fc3a5a9782bd7f762 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Mon, 26 Aug 2024 12:28:34 -0500 Subject: [PATCH 3/4] Fix tsc error Signed-off-by: Andre Wanlin --- plugins/kubernetes-backend/src/plugin.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/kubernetes-backend/src/plugin.ts b/plugins/kubernetes-backend/src/plugin.ts index 12a5a55698..284fa2e5e2 100644 --- a/plugins/kubernetes-backend/src/plugin.ts +++ b/plugins/kubernetes-backend/src/plugin.ts @@ -40,8 +40,6 @@ import { type KubernetesServiceLocatorExtensionPoint, } from '@backstage/plugin-kubernetes-node'; -import Router from 'express-promise-router'; - class ObjectsProvider implements KubernetesObjectsProviderExtensionPoint { private objectsProvider: KubernetesObjectsProvider | undefined; From 47e924306887efdabc944a0a4aeecdd953f22ec1 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Mon, 26 Aug 2024 13:03:39 -0500 Subject: [PATCH 4/4] Fixed test Signed-off-by: Andre Wanlin --- .../src/service/KubernetesBuilder.test.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts index 60683a74f3..3299d11e5d 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts @@ -728,6 +728,19 @@ metadata: const throwError = () => startTestBackend({ features: [ + mockServices.rootConfig.factory({ + data: { + kubernetes: { + serviceLocatorMethod: { type: 'multiTenant' }, + clusterLocatorMethods: [ + { + type: 'config', + clusters: [], + }, + ], + }, + }, + }), import('@backstage/plugin-kubernetes-backend/alpha'), createBackendModule({ pluginId: 'kubernetes',