From ad2728f0139c257091a7f9d2abbb1e83295909dc Mon Sep 17 00:00:00 2001 From: ricoberger Date: Sun, 4 Apr 2021 00:09:09 +0200 Subject: [PATCH] Add support for all Kubernetes resources We are supporting all Kubernetes resources. This means a user can also view ConfigMaps, Secrets, ClusterRoles, ClusterRoleBindings, etc. within kobs. We also adjusted the icons for applications and plugins on the homepage. We fixed the header high in the compare traces component of the Jaeger plugin. Last but not least we fixed the handling of external links in the LinkWrapper component. --- CHANGELOG.md | 1 + app/public/img/plugins/applications.png | Bin 0 -> 57699 bytes app/public/img/plugins/kobs.png | Bin 33006 -> 0 bytes app/public/img/plugins/plugins.png | Bin 25274 -> 62648 bytes .../plugins/{kubernetes.png => resources.png} | Bin app/src/components/Home.tsx | 9 +- app/src/components/LinkWrapper.tsx | 10 +- .../ElasticsearchPreviewChart.tsx | 2 +- .../plugins/jaeger/JaegerPageCompareTrace.tsx | 2 +- app/src/utils/helpers.ts | 24 + app/src/utils/resources.tsx | 834 +++++++++++++++++- docs/resources/applications.md | 5 + 12 files changed, 872 insertions(+), 15 deletions(-) create mode 100644 app/public/img/plugins/applications.png delete mode 100644 app/public/img/plugins/kobs.png rename app/public/img/plugins/{kubernetes.png => resources.png} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bed6d986..a7917bec7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ NOTE: As semantic versioning states all 0.y.z releases can contain breaking chan - [#22](https://github.com/kobsio/kobs/pull/22): Add Helm chart. - [#23](https://github.com/kobsio/kobs/pull/23): Add Kustomize files and demo. - [#24](https://github.com/kobsio/kobs/pull/24): Add documentation. +- [#26](https://github.com/kobsio/kobs/pull/26): Add support for all Kubernetes resources. ### Fixed diff --git a/app/public/img/plugins/applications.png b/app/public/img/plugins/applications.png new file mode 100644 index 0000000000000000000000000000000000000000..b8328741bb0650fe29b1e6bf1b67161c93256436 GIT binary patch literal 57699 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 literal 0 HcmV?d00001 diff --git a/app/public/img/plugins/kobs.png b/app/public/img/plugins/kobs.png deleted file mode 100644 index 3a6ff484cc41f7dc549443e5a7f393232f07bc8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33006 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 diff --git a/app/public/img/plugins/plugins.png b/app/public/img/plugins/plugins.png index 137c36f3c3df6484a0a21997fe24e56baa530942..b1fd3568504b58289e9a1bbde2d1eda4eccc3cc2 100644 GIT binary patch literal 62648 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 z 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 Ke_9z3z3sn5j_-2- literal 25274 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

T~Xc;%W?5|{z!ue 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%0AFvjCwXUmc-W35J7%>bI=(*%>d}zC<_YLLsuD{l! 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 { title="Applications" body={applicationsDescription} link="/applications" - icon="/img/plugins/kobs.png" + icon="/img/plugins/applications.png" /> - + {pluginsContext.plugins.length === 0 ? ( diff --git a/app/src/components/LinkWrapper.tsx b/app/src/components/LinkWrapper.tsx index b263deaa3..9e9e7866d 100644 --- a/app/src/components/LinkWrapper.tsx +++ b/app/src/components/LinkWrapper.tsx @@ -10,12 +10,12 @@ interface ILinkWrapperProps { // which should navigate the user to another location. This is to prefer over an onClick handler, so that the user can // decide if he wants the link in a new tab or not. const LinkWrapper: React.FunctionComponent = ({ children, link }: ILinkWrapperProps) => { + if (link.startsWith('http')) { + return

window.open(link, '_blank')}>{children}
; + } + return ( - + {children} ); diff --git a/app/src/plugins/elasticsearch/ElasticsearchPreviewChart.tsx b/app/src/plugins/elasticsearch/ElasticsearchPreviewChart.tsx index 428decb4b..685154431 100644 --- a/app/src/plugins/elasticsearch/ElasticsearchPreviewChart.tsx +++ b/app/src/plugins/elasticsearch/ElasticsearchPreviewChart.tsx @@ -78,7 +78,7 @@ const ElasticsearchPreviewChart: React.FunctionComponent
{data.hits} Hits
{query.name ? ( -
{query.name}
+
{query.name}
) : null}
diff --git a/app/src/plugins/jaeger/JaegerPageCompareTrace.tsx b/app/src/plugins/jaeger/JaegerPageCompareTrace.tsx index 4e7404a98..e4cece618 100644 --- a/app/src/plugins/jaeger/JaegerPageCompareTrace.tsx +++ b/app/src/plugins/jaeger/JaegerPageCompareTrace.tsx @@ -93,7 +93,7 @@ const JaegerPageCompareTrace: React.FunctionComponent - + <Title className="pf-u-text-nowrap pf-u-text-truncate" headingLevel="h6" size="xl"> {data.trace.processes[data.trace.spans[0].processID].serviceName}: {data.trace.spans[0].operationName}{' '} <span className="pf-u-pl-sm pf-u-font-size-sm pf-u-color-400">{data.trace.traceID}</span> diff --git a/app/src/utils/helpers.ts b/app/src/utils/helpers.ts index f6d1461cc..ab6afdd4e 100644 --- a/app/src/utils/helpers.ts +++ b/app/src/utils/helpers.ts @@ -1,3 +1,5 @@ +import { V1LabelSelector } from '@kubernetes/client-node'; + // timeDifference calculates the difference of two given timestamps and returns a human readable string for the // difference. It is used to get the same style for the age of resources like it is displayed by kubectl. export const timeDifference = (current: number, previous: number): string => { @@ -28,3 +30,25 @@ export const formatTime = (timestamp: number): string => { '0' + d.getHours() ).slice(-2)}:${('0' + d.getMinutes()).slice(-2)}:${('0' + d.getSeconds()).slice(-2)}`; }; + +// getLabelSelector returns the given label selector as string, so that it can be used within the React UI. +export const getLabelSelector = (labelSelector: V1LabelSelector | undefined): string => { + if (!labelSelector) { + return ''; + } + + if (labelSelector.matchLabels) { + return Object.keys(labelSelector.matchLabels) + .map( + (key) => + `${key}=${ + labelSelector.matchLabels && labelSelector.matchLabels.hasOwnProperty(key) + ? labelSelector.matchLabels[key] + : '' + }`, + ) + .join(', '); + } + + return ''; +}; diff --git a/app/src/utils/resources.tsx b/app/src/utils/resources.tsx index 94b79576e..d675008e3 100644 --- a/app/src/utils/resources.tsx +++ b/app/src/utils/resources.tsx @@ -1,12 +1,31 @@ import { Bullseye, EmptyState, EmptyStateBody, EmptyStateIcon, EmptyStateVariant, Title } from '@patternfly/react-core'; import { + CoreV1EventList, + V1ClusterRoleBindingList, + V1ClusterRoleList, + V1ConfigMapList, V1DaemonSetList, V1DeploymentList, + V1EndpointsList, + V1IngressList, V1JobList, + V1NetworkPolicyList, + V1NodeList, + V1PersistentVolumeClaimList, + V1PersistentVolumeList, V1PodList, V1ReplicaSetList, + V1RoleBindingList, + V1RoleList, + V1SecretList, + V1ServiceAccountList, + V1ServiceList, V1StatefulSetList, + V1StorageClassList, V1beta1CronJobList, + V1beta1PodDisruptionBudgetList, + V1beta1PodSecurityPolicyList, + V2beta1HorizontalPodAutoscalerList, } from '@kubernetes/client-node'; import { IRow } from '@patternfly/react-table'; import { JSONPath } from 'jsonpath-plus'; @@ -14,11 +33,20 @@ import React from 'react'; import { SearchIcon } from '@patternfly/react-icons'; import { CRD, Resources as ProtoResources } from 'proto/clusters_grpc_web_pb'; -import { timeDifference } from 'utils/helpers'; +import { getLabelSelector, timeDifference } from 'utils/helpers'; // TScope is the scope of a resource, which can be namespaced or cluster. export type TScope = 'Namespaced' | 'Cluster'; +export interface IResourceGroups { + [key: string]: IResourceGroup; +} + +export interface IResourceGroup { + name: string; + resources: IResources; +} + // The IResources is a list of resources, which is supported by kobs. export interface IResources { [key: string]: IResource; @@ -43,6 +71,7 @@ export interface IResource { // result from the gRPC API call to the rows function. The returned rows are mostly the same as they are also retunred // by kubectl. const resources: IResources = { + // eslint-disable-next-line sort-keys cronjobs: { columns: ['Name', 'Namespace', 'Cluster', 'Schedule', 'Suspend', 'Active', 'Last Schedule', 'Age'], description: 'A CronJob creates Jobs on a repeating schedule.', @@ -390,6 +419,809 @@ const resources: IResources = { scope: 'Namespaced', title: 'Stateful Sets', }, + // eslint-disable-next-line sort-keys + endpoints: { + columns: ['Name', 'Namespace', 'Cluster', 'Endpoints', 'Age'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'endpoints', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const enpointList: V1EndpointsList = JSON.parse(result.getResourcelist()); + for (const endpoint of enpointList.items) { + const age = + endpoint.metadata && endpoint.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(endpoint.metadata.creationTimestamp.toString()).getTime()) + : '-'; + const ep: string[] = []; + if (endpoint.subsets) { + for (const subset of endpoint.subsets) { + const ips = subset.addresses?.map((address) => address.ip); + if (ips) { + ep.push(...ips); + } + } + } + + rows.push({ + cells: [endpoint.metadata?.name, result.getNamespace(), result.getCluster(), ep.join(', '), age], + props: endpoint, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Endpoints', + }, + horizontalpodautoscalers: { + columns: ['Name', 'Namespace', 'Cluster', 'Reference', 'Min. Pods', 'Max. Pods', 'Replicas', 'Age'], + description: '', + isCRD: false, + path: '/apis/autoscaling/v2beta1', + resource: 'horizontalpodautoscalers', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const hpaList: V2beta1HorizontalPodAutoscalerList = JSON.parse(result.getResourcelist()); + for (const hpa of hpaList.items) { + const reference = + hpa.spec && hpa.spec.scaleTargetRef + ? `${hpa.spec.scaleTargetRef.kind}/${hpa.spec.scaleTargetRef.name}` + : ''; + const minPods = hpa.spec && hpa.spec.minReplicas ? hpa.spec.minReplicas : ''; + const maxPods = hpa.spec && hpa.spec.maxReplicas ? hpa.spec.maxReplicas : ''; + const replicas = + hpa.status && hpa.status.currentReplicas + ? `${hpa.status.currentReplicas}${hpa.status.desiredReplicas ? `/${hpa.status.desiredReplicas}` : ''}` + : ''; + const age = + hpa.metadata && hpa.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(hpa.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [ + hpa.metadata?.name, + result.getNamespace(), + result.getCluster(), + reference, + minPods, + maxPods, + replicas, + age, + ], + props: hpa, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Horizontal Pod Autoscalers', + }, + ingresses: { + columns: ['Name', 'Namespace', 'Cluster', 'Hosts', 'Adress', 'Age'], + description: '', + isCRD: false, + path: '/apis/extensions/v1beta1', + resource: 'ingresses', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const ingressList: V1IngressList = JSON.parse(result.getResourcelist()); + for (const ingress of ingressList.items) { + const hosts = ingress.spec?.rules?.map((rule) => rule.host); + const address = + ingress.status && + ingress.status.loadBalancer && + ingress.status.loadBalancer.ingress && + ingress.status.loadBalancer.ingress.length > 0 && + ingress.status.loadBalancer.ingress[0].ip + ? ingress.status.loadBalancer.ingress[0].ip + : ''; + const age = + ingress.metadata && ingress.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(ingress.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [ + ingress.metadata?.name, + result.getNamespace(), + result.getCluster(), + hosts ? hosts.join(', ') : '', + address, + age, + ], + props: ingress, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Ingresses', + }, + networkpolicies: { + columns: ['Name', 'Namespace', 'Cluster', 'Pod Selector', 'Age'], + description: '', + isCRD: false, + path: '/apis/networking.k8s.io/v1', + resource: 'networkpolicies', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const networkPolicyList: V1NetworkPolicyList = JSON.parse(result.getResourcelist()); + for (const networkPolicy of networkPolicyList.items) { + const podSelector = getLabelSelector(networkPolicy.spec?.podSelector); + const age = + networkPolicy.metadata && networkPolicy.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(networkPolicy.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [networkPolicy.metadata?.name, result.getNamespace(), result.getCluster(), podSelector, age], + props: networkPolicy, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Network Policies', + }, + services: { + columns: ['Name', 'Namespace', 'Cluster', 'Type', 'Cluster IP', 'External IP', 'Port(s)', 'Age'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'services', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const serviceList: V1ServiceList = JSON.parse(result.getResourcelist()); + for (const service of serviceList.items) { + const type = service.spec ? service.spec.type : ''; + const clusterIP = service.spec && service.spec.clusterIP ? service.spec.clusterIP : ''; + const externalIPs = + service.status && service.status.loadBalancer && service.status.loadBalancer.ingress + ? service.status.loadBalancer.ingress.map((ingress) => (ingress.ip ? ingress.ip : '')).join(', ') + : ''; + const ports = + service.spec && service.spec.ports + ? service.spec.ports + .map( + (port) => + `${port.port}${port.protocol ? `/${port.protocol}` : ''} (${port.name}${ + port.appProtocol ? `/${port.appProtocol}` : '' + })`, + ) + .join(', ') + : ''; + const age = + service.metadata && service.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(service.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [ + service.metadata?.name, + result.getNamespace(), + result.getCluster(), + type, + clusterIP, + externalIPs, + ports, + age, + ], + props: service, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Services', + }, + // eslint-disable-next-line sort-keys + configmaps: { + columns: ['Name', 'Namespace', 'Cluster', 'Data', 'Age'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'configmaps', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const configMapList: V1ConfigMapList = JSON.parse(result.getResourcelist()); + for (const configMap of configMapList.items) { + const age = + configMap.metadata && configMap.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(configMap.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [ + configMap.metadata?.name, + result.getNamespace(), + result.getCluster(), + configMap.data ? Object.keys(configMap.data).length : 0, + age, + ], + props: configMap, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Config Maps', + }, + persistentvolumeclaims: { + columns: ['Name', 'Namespace', 'Cluster', 'Status', 'Volume', 'Capacity', 'Access Modes', 'Storage Class', 'Age'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'persistentvolumeclaims', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const pvcList: V1PersistentVolumeClaimList = JSON.parse(result.getResourcelist()); + for (const pvc of pvcList.items) { + const status = pvc.status && pvc.status.phase ? pvc.status.phase : ''; + const volume = pvc.spec && pvc.spec.volumeName ? pvc.spec.volumeName : ''; + const capacity = + pvc.status && pvc.status.capacity && pvc.status.capacity.storage ? pvc.status.capacity.storage : ''; + const accessMode = pvc.spec && pvc.spec.accessModes ? pvc.spec.accessModes.join(', ') : ''; + const storageClass = pvc.spec && pvc.spec.storageClassName ? pvc.spec.storageClassName : ''; + const age = + pvc.metadata && pvc.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(pvc.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [ + pvc.metadata?.name, + result.getNamespace(), + result.getCluster(), + status, + volume, + capacity, + accessMode, + storageClass, + age, + ], + props: pvc, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Persistent Volume Claims', + }, + persistentvolumes: { + columns: [ + 'Name', + 'Cluster', + 'Capacity', + 'Access Modes', + 'Reclaim Policy', + 'Status', + 'Claim', + 'Storage Class', + 'Reason', + 'Age', + ], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'persistentvolumes', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const persistentVolumeList: V1PersistentVolumeList = JSON.parse(result.getResourcelist()); + for (const persistentVolume of persistentVolumeList.items) { + const capacity = + persistentVolume.spec && persistentVolume.spec.capacity ? persistentVolume.spec.capacity : ''; + const accessMode = + persistentVolume.spec && persistentVolume.spec.accessModes + ? persistentVolume.spec.accessModes.join(', ') + : ''; + const reclaimPolicy = + persistentVolume.spec && persistentVolume.spec.persistentVolumeReclaimPolicy + ? persistentVolume.spec.persistentVolumeReclaimPolicy + : ''; + const status = persistentVolume.status && persistentVolume.status.phase ? persistentVolume.status.phase : ''; + const claim = + persistentVolume.spec && persistentVolume.spec.claimRef + ? `${persistentVolume.spec.claimRef.namespace}/${persistentVolume.spec.claimRef.name}` + : ''; + const storageClass = + persistentVolume.spec && persistentVolume.spec.storageClassName + ? persistentVolume.spec.storageClassName + : ''; + const reason = + persistentVolume.status && persistentVolume.status.reason ? persistentVolume.status.reason : ''; + const age = + persistentVolume.metadata && persistentVolume.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(persistentVolume.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [ + persistentVolume.metadata?.name, + result.getCluster(), + capacity, + accessMode, + reclaimPolicy, + status, + claim, + storageClass, + reason, + age, + ], + props: persistentVolume, + }); + } + } + + return rows; + }, + scope: 'Cluster', + title: 'Persistent Volumes', + }, + poddisruptionbudgets: { + columns: ['Name', 'Namespace', 'Cluster', 'Min. Available', 'Max. Unavailable', 'Allowed Disruptions', 'Age'], + description: '', + isCRD: false, + path: '/apis/policy/v1beta1', + resource: 'poddisruptionbudgets', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const pdbList: V1beta1PodDisruptionBudgetList = JSON.parse(result.getResourcelist()); + for (const pdb of pdbList.items) { + const minAvailable = pdb.spec && pdb.spec.minAvailable ? pdb.spec.minAvailable : ''; + const maxUnavailable = pdb.spec && pdb.spec.maxUnavailable ? pdb.spec.maxUnavailable : ''; + const allowedDisruptions = pdb.status && pdb.status.disruptionsAllowed ? pdb.status.disruptionsAllowed : ''; + const age = + pdb.metadata && pdb.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(pdb.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [ + pdb.metadata?.name, + result.getNamespace(), + result.getCluster(), + minAvailable, + maxUnavailable, + allowedDisruptions, + age, + ], + props: pdb, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Pod Disruption Budgets', + }, + secrets: { + columns: ['Name', 'Namespace', 'Cluster', 'Type', 'Data', 'Age'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'secrets', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const secretList: V1SecretList = JSON.parse(result.getResourcelist()); + for (const secret of secretList.items) { + const type = secret.type ? secret.type : ''; + const data = secret.data ? Object.keys(secret.data).length : ''; + const age = + secret.metadata && secret.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(secret.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [secret.metadata?.name, result.getNamespace(), result.getCluster(), type, data, age], + props: secret, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Secrets', + }, + serviceaccounts: { + columns: ['Name', 'Namespace', 'Cluster', 'Secrets', 'Age'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'serviceaccounts', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const serviceAccountList: V1ServiceAccountList = JSON.parse(result.getResourcelist()); + for (const serviceAccount of serviceAccountList.items) { + const secrets = serviceAccount.secrets ? serviceAccount.secrets.length : ''; + const age = + serviceAccount.metadata && serviceAccount.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(serviceAccount.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [serviceAccount.metadata?.name, result.getNamespace(), result.getCluster(), secrets, age], + props: serviceAccount, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Service Accounts', + }, + storageclasses: { + columns: [ + 'Name', + 'Cluster', + 'Provisioner', + 'Reclaim Policy', + 'Volume Binding Mode', + 'Allow Volume Expansion', + 'Age', + ], + description: '', + isCRD: false, + path: '/apis/storage.k8s.io/v1', + resource: 'storageclasses', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const storageClassList: V1StorageClassList = JSON.parse(result.getResourcelist()); + for (const storageClass of storageClassList.items) { + const provisioner = storageClass.provisioner; + const reclaimPolicy = storageClass.reclaimPolicy ? storageClass.reclaimPolicy : ''; + const volumeBindingMode = storageClass.volumeBindingMode ? storageClass.volumeBindingMode : ''; + const allowVolumeExpansion = storageClass.allowVolumeExpansion ? 'true' : 'false'; + const age = + storageClass.metadata && storageClass.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(storageClass.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [ + storageClass.metadata?.name, + result.getCluster(), + provisioner, + reclaimPolicy, + volumeBindingMode, + allowVolumeExpansion, + age, + ], + props: storageClass, + }); + } + } + + return rows; + }, + scope: 'Cluster', + title: 'Storage Classes', + }, + // eslint-disable-next-line sort-keys + clusterrolebindings: { + columns: ['Name', 'Cluster', 'Age'], + description: '', + isCRD: false, + path: '/apis/rbac.authorization.k8s.io/v1', + resource: 'clusterrolebindings', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const clusterRoleBindingsList: V1ClusterRoleBindingList = JSON.parse(result.getResourcelist()); + for (const clusterRoleBindings of clusterRoleBindingsList.items) { + const age = + clusterRoleBindings.metadata && clusterRoleBindings.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(clusterRoleBindings.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [clusterRoleBindings.metadata?.name, result.getCluster(), age], + props: clusterRoleBindings, + }); + } + } + + return rows; + }, + scope: 'Cluster', + title: 'Cluster Role Bindings', + }, + clusterroles: { + columns: ['Name', 'Cluster', 'Age'], + description: '', + isCRD: false, + path: '/apis/rbac.authorization.k8s.io/v1', + resource: 'clusterroles', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const clusterRoleList: V1ClusterRoleList = JSON.parse(result.getResourcelist()); + for (const clusterRole of clusterRoleList.items) { + const age = + clusterRole.metadata && clusterRole.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(clusterRole.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [clusterRole.metadata?.name, result.getCluster(), age], + props: clusterRole, + }); + } + } + + return rows; + }, + scope: 'Cluster', + title: 'Cluster Roles', + }, + rolebindings: { + columns: ['Name', 'Namespace', 'Cluster', 'Age'], + description: '', + isCRD: false, + path: '/apis/rbac.authorization.k8s.io/v1', + resource: 'rolebindings', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const roleBindingList: V1RoleBindingList = JSON.parse(result.getResourcelist()); + for (const roleBinding of roleBindingList.items) { + const age = + roleBinding.metadata && roleBinding.metadata.creationTimestamp + ? timeDifference( + new Date().getTime(), + new Date(roleBinding.metadata.creationTimestamp.toString()).getTime(), + ) + : '-'; + + rows.push({ + cells: [roleBinding.metadata?.name, result.getNamespace(), result.getCluster(), age], + props: roleBinding, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Role Bindings', + }, + roles: { + columns: ['Name', 'Namespace', 'Cluster', 'Age'], + description: '', + isCRD: false, + path: '/apis/rbac.authorization.k8s.io/v1', + resource: 'roles', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const roleList: V1RoleList = JSON.parse(result.getResourcelist()); + for (const role of roleList.items) { + const age = + role.metadata && role.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(role.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [role.metadata?.name, result.getNamespace(), result.getCluster(), age], + props: role, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Roles', + }, + // eslint-disable-next-line sort-keys + events: { + columns: ['Name', 'Namespace', 'Cluster', 'Last Seen', 'Type', 'Reason', 'Object', 'Message'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'events', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const eventList: CoreV1EventList = JSON.parse(result.getResourcelist()); + for (const event of eventList.items) { + rows.push({ + cells: [ + event.metadata?.name, + result.getNamespace(), + result.getCluster(), + event.lastTimestamp + ? timeDifference(new Date().getTime(), new Date(event.lastTimestamp.toString()).getTime()) + : '-', + event.type, + event.reason, + `${event.involvedObject.kind}/${event.involvedObject.name}`, + event.message, + ], + props: event, + }); + } + } + + return rows; + }, + scope: 'Namespaced', + title: 'Events', + }, + nodes: { + columns: ['Name', 'Cluster', 'Status', 'Version', 'Age'], + description: '', + isCRD: false, + path: '/api/v1', + resource: 'nodes', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const nodeList: V1NodeList = JSON.parse(result.getResourcelist()); + for (const node of nodeList.items) { + const status: string[] = []; + if (node.status && node.status.conditions) { + for (const condition of node.status.conditions) { + if (condition.status === 'True') { + status.push(condition.type); + } + } + } + + const version = + node.status && node.status.nodeInfo && node.status.nodeInfo.kubeletVersion + ? node.status.nodeInfo.kubeletVersion + : ''; + const age = + node.metadata && node.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(node.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [node.metadata?.name, result.getCluster(), status.join(', '), version, age], + props: node, + }); + } + } + + return rows; + }, + scope: 'Cluster', + title: 'Nodes', + }, + podsecuritypolicies: { + columns: [ + 'Name', + 'Cluster', + 'Privileged', + 'Capabilities', + 'SELinux', + 'Run As User', + 'FS Group', + 'Supplemental Groups', + 'Read Only Root FS', + 'Volumes', + 'Age', + ], + description: '', + isCRD: false, + path: '/apis/policy/v1beta1', + resource: 'podsecuritypolicies', + rows: (results: ProtoResources[]): IRow[] => { + const rows: IRow[] = []; + + for (const result of results) { + const pspList: V1beta1PodSecurityPolicyList = JSON.parse(result.getResourcelist()); + for (const psp of pspList.items) { + const privileged = psp.spec && psp.spec.privileged ? 'true' : 'false'; + const capabilities = psp.spec && psp.spec.allowedCapabilities ? psp.spec.allowedCapabilities.join(', ') : ''; + const seLinux = psp.spec && psp.spec.seLinux && psp.spec.seLinux.rule ? psp.spec.seLinux.rule : ''; + const runAsUser = psp.spec && psp.spec.runAsUser && psp.spec.runAsUser.rule ? psp.spec.runAsUser.rule : ''; + const fsGroup = psp.spec && psp.spec.fsGroup && psp.spec.fsGroup.rule ? psp.spec.fsGroup.rule : ''; + const supplementalGroups = + psp.spec && psp.spec.supplementalGroups && psp.spec.supplementalGroups.rule + ? psp.spec.supplementalGroups.rule + : ''; + const readOnlyRootFS = psp.spec && psp.spec.readOnlyRootFilesystem ? 'true' : 'false'; + const volumes = psp.spec && psp.spec.volumes ? psp.spec.volumes.join(', ') : ''; + const age = + psp.metadata && psp.metadata.creationTimestamp + ? timeDifference(new Date().getTime(), new Date(psp.metadata.creationTimestamp.toString()).getTime()) + : '-'; + + rows.push({ + cells: [ + psp.metadata?.name, + result.getCluster(), + privileged, + capabilities, + seLinux, + runAsUser, + fsGroup, + supplementalGroups, + readOnlyRootFS, + volumes, + age, + ], + props: psp, + }); + } + } + + return rows; + }, + scope: 'Cluster', + title: 'Pod Security Policies', + }, }; // customResourceDefinition merges the standard Kubernetes resources with a list of Custom Resource Definitions. The diff --git a/docs/resources/applications.md b/docs/resources/applications.md index a4713c322..9fe0b89dd 100644 --- a/docs/resources/applications.md +++ b/docs/resources/applications.md @@ -80,6 +80,11 @@ spec: | kinds | []string | A list of the resource types, which should be loaded by the specified selector. | Yes | | selector | string | A label selector, which is used to load the correct resources (e.g. `app=reviews`). | Yes | +!!! note + The following strings can be used as kinds: *cronjobs*, *daemonsets*, *deployments*, *jobs*, *pods*, *replicasets*, *statefulsets*, *endpoints*, *horizontalpodautoscalers*, *ingresses*, *networkpolicies*, *services*, *configmaps*, *persistentvolumeclaims*, *persistentvolumes*, *poddisruptionbudgets*, *secrets*, *serviceaccounts*, *storageclasses*, *clusterrolebindings*, *clusterroles*, *rolebindings*, *roles*, *events*, *nodes*, *podsecuritypolicies*. + + A Custom Resource can be specified in the following form `./` (e.g. `vaultsecrets.ricoberger.de/v1alpha1`). + ## Example The following Application CR is used in the [demo](../installation/demo.md) to display the resources, metrics, logs and traces for the reviews service of the Bookinfo Application.