From 361aad1a0ff1192a864683a7b0b501e1ae8b718c Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Fri, 19 Nov 2021 11:29:11 -0600 Subject: [PATCH 1/8] add cronjobs and jobs to k8s backend Signed-off-by: Andrew Tran --- .../src/service/KubernetesClientProvider.ts | 7 +++++++ .../src/service/KubernetesFanOutHandler.ts | 12 ++++++++++++ .../src/service/KubernetesFetcher.ts | 2 ++ plugins/kubernetes-backend/src/types/types.ts | 2 ++ plugins/kubernetes-common/src/types.ts | 14 ++++++++++++++ 5 files changed, 37 insertions(+) diff --git a/plugins/kubernetes-backend/src/service/KubernetesClientProvider.ts b/plugins/kubernetes-backend/src/service/KubernetesClientProvider.ts index 4b2848508e..5f6825ada9 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesClientProvider.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesClientProvider.ts @@ -16,6 +16,7 @@ import { AppsV1Api, + BatchV1Api, AutoscalingV1Api, CoreV1Api, KubeConfig, @@ -74,6 +75,12 @@ export class KubernetesClientProvider { return kc.makeApiClient(AutoscalingV1Api); } + getBatchClientByClusterDetails(clusterDetails: ClusterDetails) { + const kc = this.getKubeConfig(clusterDetails); + + return kc.makeApiClient(BatchV1Api); + } + getNetworkingBeta1Client(clusterDetails: ClusterDetails) { const kc = this.getKubeConfig(clusterDetails); diff --git a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts index 1f856e90a9..41d75a9835 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts @@ -68,6 +68,18 @@ export const DEFAULT_OBJECTS: ObjectToFetch[] = [ plural: 'horizontalpodautoscalers', objectType: 'horizontalpodautoscalers', }, + { + group: 'batch', + apiVersion: 'v1', + plural: 'jobs', + objectType: 'jobs', + }, + { + group: 'batch', + apiVersion: 'v1', + plural: 'cronjobs', + objectType: 'cronjobs', + }, { group: 'networking.k8s.io', apiVersion: 'v1', diff --git a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts index 308b7a10be..e845ebeaeb 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts @@ -17,6 +17,7 @@ import { AppsV1Api, AutoscalingV1Api, + BatchV1Api, CoreV1Api, NetworkingV1beta1Api, } from '@kubernetes/client-node'; @@ -41,6 +42,7 @@ export interface Clients { core: CoreV1Api; apps: AppsV1Api; autoscaling: AutoscalingV1Api; + batch: BatchV1Api; networkingBeta1: NetworkingV1beta1Api; } diff --git a/plugins/kubernetes-backend/src/types/types.ts b/plugins/kubernetes-backend/src/types/types.ts index 90485fcaee..b8aa482e47 100644 --- a/plugins/kubernetes-backend/src/types/types.ts +++ b/plugins/kubernetes-backend/src/types/types.ts @@ -67,6 +67,8 @@ export type KubernetesObjectTypes = | 'deployments' | 'replicasets' | 'horizontalpodautoscalers' + | 'jobs' + | 'cronjobs' | 'ingresses' | 'customresources'; diff --git a/plugins/kubernetes-common/src/types.ts b/plugins/kubernetes-common/src/types.ts index add661a5f8..8f4daa111b 100644 --- a/plugins/kubernetes-common/src/types.ts +++ b/plugins/kubernetes-common/src/types.ts @@ -17,8 +17,10 @@ import { ExtensionsV1beta1Ingress, V1ConfigMap, + V1CronJob, V1Deployment, V1HorizontalPodAutoscaler, + V1Job, V1Pod, V1ReplicaSet, V1Service, @@ -83,6 +85,8 @@ export type FetchResponse = | DeploymentFetchResponse | ReplicaSetsFetchResponse | HorizontalPodAutoscalersFetchResponse + | JobsFetchResponse + | CronJobsFetchResponse | IngressesFetchResponse | CustomResourceFetchResponse; @@ -116,6 +120,16 @@ export interface HorizontalPodAutoscalersFetchResponse { resources: Array; } +export interface JobsFetchResponse { + type: 'jobs'; + resources: Array; +} + +export interface CronJobsFetchResponse { + type: 'cronjobs'; + resources: Array; +} + export interface IngressesFetchResponse { type: 'ingresses'; resources: Array; From 37dc8447287eaf04ec6e66f7009b8dee42e689e9 Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Fri, 19 Nov 2021 17:11:11 -0600 Subject: [PATCH 2/8] add changeset Signed-off-by: Andrew Tran --- .changeset/big-phones-boil.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/big-phones-boil.md diff --git a/.changeset/big-phones-boil.md b/.changeset/big-phones-boil.md new file mode 100644 index 0000000000..7d1e63797f --- /dev/null +++ b/.changeset/big-phones-boil.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-common': patch +--- + +Include cronjobs and jobs as default objects returned by the kubernetes backend and add/update relevant types. From 1caf4c2d726543a12fa7383d52768fbdb81923bd Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Mon, 22 Nov 2021 08:52:00 -0600 Subject: [PATCH 3/8] update schema.d.ts Signed-off-by: Andrew Tran --- plugins/kubernetes-backend/schema.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/kubernetes-backend/schema.d.ts b/plugins/kubernetes-backend/schema.d.ts index 8b96d5ceca..e69ac052f1 100644 --- a/plugins/kubernetes-backend/schema.d.ts +++ b/plugins/kubernetes-backend/schema.d.ts @@ -23,6 +23,8 @@ export interface Config { | 'deployments' | 'replicasets' | 'horizontalpodautoscalers' + | 'jobs' + | 'cronjobs' | 'ingresses' >; serviceLocatorMethod: { From 5f864eceedbded76800c29ad6e7382fe81c3b2b2 Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Mon, 22 Nov 2021 09:26:19 -0600 Subject: [PATCH 4/8] add example cronjob Signed-off-by: Andrew Tran --- .../dice-roller/dice-roller-manifests.yaml | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml b/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml index 68ef489170..c02b30dc28 100644 --- a/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml +++ b/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml @@ -200,6 +200,35 @@ spec: maxReplicas: 15 targetCPUUtilizationPercentage: 50 +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: dice-roller-cronjob + labels: + 'backstage.io/kubernetes-id': dice-roller +spec: + schedule: "*/1 * * * *" + jobTemplate: + metadata: + labels: + 'backstage.io/kubernetes-id': dice-roller + spec: + template: + metadata: + labels: + 'backstage.io/kubernetes-id': dice-roller + spec: + containers: + - name: busybox + image: busybox + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - date; echo Rolling a die! + restartPolicy: OnFailure + --- apiVersion: networking.k8s.io/v1beta1 kind: Ingress From e72e908e3f5a0b1c6a87c0e381a3dce8e9426c14 Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Mon, 22 Nov 2021 09:32:52 -0600 Subject: [PATCH 5/8] update example readme Signed-off-by: Andrew Tran --- .../examples/dice-roller/README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/kubernetes-backend/examples/dice-roller/README.md b/plugins/kubernetes-backend/examples/dice-roller/README.md index 5f541bb61d..d4725e38c0 100644 --- a/plugins/kubernetes-backend/examples/dice-roller/README.md +++ b/plugins/kubernetes-backend/examples/dice-roller/README.md @@ -27,14 +27,15 @@ Add or update `app-config.local.yaml` with the following: ```yaml kubernetes: - serviceLocatorMethod: 'multiTenant' + serviceLocatorMethod: + type: 'multiTenant' clusterLocatorMethods: - - 'config' - clusters: - - url: - name: minikube - serviceAccountToken: - authProvider: 'serviceAccount' + - type: 'config' + clusters: + - url: + name: minikube + serviceAccountToken: + authProvider: 'serviceAccount' ``` ### Getting the service account token From da9ecc18e462c4f46161c01f6939a58ca59edbff Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Wed, 24 Nov 2021 09:24:07 -0600 Subject: [PATCH 6/8] prettier yaml Signed-off-by: Andrew Tran --- .../dice-roller/dice-roller-manifests.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml b/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml index c02b30dc28..fb71037129 100644 --- a/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml +++ b/plugins/kubernetes-backend/examples/dice-roller/dice-roller-manifests.yaml @@ -208,7 +208,7 @@ metadata: labels: 'backstage.io/kubernetes-id': dice-roller spec: - schedule: "*/1 * * * *" + schedule: '*/1 * * * *' jobTemplate: metadata: labels: @@ -220,13 +220,13 @@ spec: 'backstage.io/kubernetes-id': dice-roller spec: containers: - - name: busybox - image: busybox - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -c - - date; echo Rolling a die! + - name: busybox + image: busybox + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - date; echo Rolling a die! restartPolicy: OnFailure --- From c5d1baa1af3d72c9bad55e1b42d5c899e7c4ceb5 Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Wed, 24 Nov 2021 09:41:43 -0600 Subject: [PATCH 7/8] update changeset Signed-off-by: Andrew Tran --- .changeset/big-phones-boil.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.changeset/big-phones-boil.md b/.changeset/big-phones-boil.md index 7d1e63797f..a7eff4099d 100644 --- a/.changeset/big-phones-boil.md +++ b/.changeset/big-phones-boil.md @@ -1,6 +1,6 @@ --- -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-common': patch +'@backstage/plugin-kubernetes-backend': minor +'@backstage/plugin-kubernetes-common': minor --- -Include cronjobs and jobs as default objects returned by the kubernetes backend and add/update relevant types. +Include CronJobs and Jobs as default objects returned by the kubernetes backend and add/update relevant types. From 1731dad0dbc251ef8b8b1b85f23b2567f226a98c Mon Sep 17 00:00:00 2001 From: Andrew Tran Date: Wed, 24 Nov 2021 09:54:36 -0600 Subject: [PATCH 8/8] update api reports and changeset Signed-off-by: Andrew Tran --- .changeset/big-phones-boil.md | 4 ++-- plugins/kubernetes-backend/api-report.md | 2 ++ plugins/kubernetes-common/api-report.md | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/.changeset/big-phones-boil.md b/.changeset/big-phones-boil.md index a7eff4099d..0ee19f5100 100644 --- a/.changeset/big-phones-boil.md +++ b/.changeset/big-phones-boil.md @@ -1,6 +1,6 @@ --- -'@backstage/plugin-kubernetes-backend': minor -'@backstage/plugin-kubernetes-common': minor +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-common': patch --- Include CronJobs and Jobs as default objects returned by the kubernetes backend and add/update relevant types. diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md index f34815f328..e1236e61c5 100644 --- a/plugins/kubernetes-backend/api-report.md +++ b/plugins/kubernetes-backend/api-report.md @@ -202,6 +202,8 @@ export type KubernetesObjectTypes = | 'deployments' | 'replicasets' | 'horizontalpodautoscalers' + | 'jobs' + | 'cronjobs' | 'ingresses' | 'customresources'; diff --git a/plugins/kubernetes-common/api-report.md b/plugins/kubernetes-common/api-report.md index 9f9669275f..7db05a7513 100644 --- a/plugins/kubernetes-common/api-report.md +++ b/plugins/kubernetes-common/api-report.md @@ -6,8 +6,10 @@ import { Entity } from '@backstage/catalog-model'; import { ExtensionsV1beta1Ingress } from '@kubernetes/client-node'; import { V1ConfigMap } from '@kubernetes/client-node'; +import { V1CronJob } from '@kubernetes/client-node'; import { V1Deployment } from '@kubernetes/client-node'; import { V1HorizontalPodAutoscaler } from '@kubernetes/client-node'; +import { V1Job } from '@kubernetes/client-node'; import { V1Pod } from '@kubernetes/client-node'; import { V1ReplicaSet } from '@kubernetes/client-node'; import { V1Service } from '@kubernetes/client-node'; @@ -48,6 +50,16 @@ export interface ConfigMapFetchResponse { type: 'configmaps'; } +// Warning: (ae-missing-release-tag) "CronJobsFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface CronJobsFetchResponse { + // (undocumented) + resources: Array; + // (undocumented) + type: 'cronjobs'; +} + // Warning: (ae-missing-release-tag) "CustomResourceFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -78,6 +90,8 @@ export type FetchResponse = | DeploymentFetchResponse | ReplicaSetsFetchResponse | HorizontalPodAutoscalersFetchResponse + | JobsFetchResponse + | CronJobsFetchResponse | IngressesFetchResponse | CustomResourceFetchResponse; @@ -101,6 +115,16 @@ export interface IngressesFetchResponse { type: 'ingresses'; } +// Warning: (ae-missing-release-tag) "JobsFetchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface JobsFetchResponse { + // (undocumented) + resources: Array; + // (undocumented) + type: 'jobs'; +} + // Warning: (ae-missing-release-tag) "KubernetesErrorTypes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented)