Skip to main content
Version: v1

Kubernetes Plugin

Without this plugin, a service created through DevPortal has no connection to its own Kubernetes workloads — the developer still needs to context-switch to kubectl or a separate dashboard to check pod status, restart counts, or logs. The portal becomes a creation tool but not an operational one.

With the plugin enabled, the entity page becomes the operational view for the service: pods, deployment rollout status, and live logs visible in the same place the team already uses to understand the service.

The Kubernetes plugin displays the live state of Kubernetes resources — pods, deployments, services, and more — for a catalog entity. It appears as a Kubernetes tab on the entity page (not a sidebar item).

The plugin is preloaded in the DevPortal image and disabled by default. No image rebuild or support contact is needed to enable it.


Plugin package

PackageRole
backstage-plugin-kubernetes-dynamicFrontend — entity Kubernetes tab

The backend for Kubernetes is a static plugin compiled into the DevPortal base image. The frontend is a dynamic plugin that must be enabled in dynamic-plugins.yaml.


Enabling the plugin

Add the following to your dynamic-plugins.yaml:

plugins:
- package: ./dynamic-plugins/dist/backstage-plugin-kubernetes-dynamic
disabled: false
pluginConfig:
dynamicPlugins:
frontend:
backstage.plugin-kubernetes:
entityTabs:
- path: /kubernetes
title: Kubernetes
mountPoint: entity.page.kubernetes
config:
if:
allOf:
- hasAnnotation: backstage.io/kubernetes-label-selector
mountPoints:
- mountPoint: entity.page.kubernetes/cards
importName: EntityKubernetesContent
config:
layout:
gridColumn: "1 / -1"
if:
allOf:
- hasAnnotation: backstage.io/kubernetes-label-selector

Restart DevPortal after saving. Via the Marketplace UI you can click Enable instead of editing YAML manually.

The Kubernetes tab only appears on entities that have the backstage.io/kubernetes-label-selector annotation. Entities without the annotation will not show the tab.


App configuration

Configure the Kubernetes backend in app-config.yaml:

kubernetes:
serviceLocatorMethod:
type: 'multiTenant'
clusterLocatorMethods:
- type: 'config'
clusters:
- name: ${K8S_CLUSTER_NAME}
url: ${K8S_CLUSTER_URL}
authProvider: 'serviceAccount'
skipTLSVerify: true
serviceAccountToken: ${K8S_CLUSTER_TOKEN}

Multiple clusters are supported — add additional entries to the clusters array.


Required annotation

Add the backstage.io/kubernetes-label-selector annotation to the component's catalog-info.yaml. The value is a Kubernetes label selector that identifies the workloads belonging to this component:

metadata:
annotations:
backstage.io/kubernetes-label-selector: 'app=my-service,environment=production'

The Kubernetes tab and its content only render when this annotation is present on the entity.


What the plugin shows

The Kubernetes tab displays:

  • Running pods (with status, restarts, and age)
  • Deployments and their rollout status
  • ReplicaSets, StatefulSets, and DaemonSets
  • Services and Ingresses
  • Pod logs (click a pod for live log streaming)

The plugin does not add a top-level sidebar item — it is accessible only via the entity's Kubernetes tab.


References