Chapter 7. Installing the Topology plugin
7.1. Installation Copy linkLink copied to clipboard!
The Topology plugin enables you to visualize the workloads such as Deployment, Job, Daemonset, Statefulset, CronJob, Pods and Virtual Machines powering any service on your Kubernetes cluster.
Prerequisites
- You have installed and configured the @backstage/plugin-kubernetes-backend dynamic plugins.
- You have configured the Kubernetes plugin to connect to the cluster using a ServiceAccount.
The
ClusterRole
must be granted to ServiceAccount accessing the cluster.NoteIf you have the Developer Hub Kubernetes plugin configured, then the
ClusterRole
is already granted.
Procedure
The Topology plugin is pre-loaded in Developer Hub with basic configuration properties. To enable it, set the disabled property to false as follows:
app-config.yaml
fragmentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2. Configuring the Topology plugin Copy linkLink copied to clipboard!
7.2.1. Viewing OpenShift routes Copy linkLink copied to clipboard!
Procedure
To view OpenShift routes, grant read access to the routes resource in the Cluster Role:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Also add the following in
kubernetes.customResources
property in yourapp-config.yaml
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.2. Viewing pod logs Copy linkLink copied to clipboard!
Procedure
To view pod logs, you must grant the following permission to the
ClusterRole
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.3. Viewing Tekton PipelineRuns Copy linkLink copied to clipboard!
Procedure
To view the Tekton PipelineRuns, grant read access to the
pipelines
,pipelinesruns
, andtaskruns
resources in theClusterRole
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow To view the Tekton PipelineRuns list in the side panel and the latest PipelineRuns status in the Topology node decorator, add the following code to the
kubernetes.customResources
property in yourapp-config.yaml
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.4. Viewing virtual machines Copy linkLink copied to clipboard!
Prerequisites
- The OpenShift Virtualization operator is installed and configured on a Kubernetes cluster. .Procedure
Grant read access to the
VirtualMachines
resource in theClusterRole
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow To view the virtual machine nodes on the topology plugin, add the following code to the
kubernetes.customResources
property in theapp-config.yaml
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.5. Enabling the source code editor Copy linkLink copied to clipboard!
To enable the source code editor, you must grant read access to the CheClusters resource in the ClusterRole
as shown in the following example code:
To use the source code editor, you must add the following configuration to the kubernetes.customResources
property in your app-config.yaml
file:
7.3. Managing labels and annotations for Topology plugins Copy linkLink copied to clipboard!
7.3.1. Linking to the source code editor or the source Copy linkLink copied to clipboard!
Add the following annotations to workload resources, such as Deployments to navigate to the Git repository of the associated application using the source code editor:
annotations: app.openshift.io/vcs-uri: <GIT_REPO_URL>
annotations:
app.openshift.io/vcs-uri: <GIT_REPO_URL>
Add the following annotation to navigate to a specific branch:
annotations: app.openshift.io/vcs-ref: <GIT_REPO_BRANCH>
annotations:
app.openshift.io/vcs-ref: <GIT_REPO_BRANCH>
If Red Hat OpenShift Dev Spaces is installed and configured and Git URL annotations are also added to the workload YAML file, then clicking on the edit code decorator redirects you to the Red Hat OpenShift Dev Spaces instance.
When you deploy your application using the OCP Git import flows, then you do not need to add the labels as import flows do that. Otherwise, you need to add the labels manually to the workload YAML file.
You can also add the app.openshift.io/edit-url
annotation with the edit URL that you want to access using the decorator.
7.3.2. Entity annotation/label Copy linkLink copied to clipboard!
For RHDH to detect that an entity has Kubernetes components, add the following annotation to the catalog-info.yaml
file of the entity:
annotations: backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
annotations:
backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
Add the following label to the resources so that the Kubernetes plugin gets the Kubernetes resources from the requested entity:
labels: backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>`
labels:
backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>`
When using the label selector, the mentioned labels must be present on the resource.
7.3.3. Namespace annotation Copy linkLink copied to clipboard!
Procedure
To identify the Kubernetes resources using the defined namespace, add the
backstage.io/kubernetes-namespace
annotation:annotations: backstage.io/kubernetes-namespace: <RESOURCE_NS>
annotations: backstage.io/kubernetes-namespace: <RESOURCE_NS>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The Red Hat OpenShift Dev Spaces instance is not accessible using the source code editor if the
backstage.io/kubernetes-namespace
annotation is added to thecatalog-info.yaml
file.To retrieve the instance URL, you require the CheCluster custom resource (CR). As the CheCluster CR is created in the openshift-devspaces namespace, the instance URL is not retrieved if the namespace annotation value is not openshift-devspaces.
7.3.4. Label selector query annotation Copy linkLink copied to clipboard!
You can write your own custom label, which RHDH uses to find the Kubernetes resources. The label selector takes precedence over the ID annotations:
annotations: backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
annotations:
backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
If you have multiple entities while Red Hat Dev Spaces is configured and want multiple entities to support the edit code decorator that redirects to the Red Hat Dev Spaces instance, you can add the backstage.io/kubernetes-label-selector annotation to the catalog-info.yaml file for each entity.
annotations: backstage.io/kubernetes-label-selector: 'component in (<BACKSTAGE_ENTITY_NAME>,che)'
annotations:
backstage.io/kubernetes-label-selector: 'component in (<BACKSTAGE_ENTITY_NAME>,che)'
If you are using the previous label selector, you must add the following labels to your resources so that the Kubernetes plugin gets the Kubernetes resources from the requested entity:
labels: component: che # add this label to your che cluster instance labels: component: <BACKSTAGE_ENTITY_NAME> # add this label to the other resources associated with your entity
labels:
component: che # add this label to your che cluster instance
labels:
component: <BACKSTAGE_ENTITY_NAME> # add this label to the other resources associated with your entity
You can also write your own custom query for the label selector with unique labels to differentiate your entities. However, you need to ensure that you add those labels to the resources associated with your entities including your CheCluster instance.
7.3.5. Icon displayed in the node Copy linkLink copied to clipboard!
To display a runtime icon in the topology nodes, add the following label to workload resources, such as Deployments:
labels: app.openshift.io/runtime: <RUNTIME_NAME>
labels:
app.openshift.io/runtime: <RUNTIME_NAME>
Alternatively, you can include the following label to display the runtime icon:
labels: app.kubernetes.io/name: <RUNTIME_NAME>
labels:
app.kubernetes.io/name: <RUNTIME_NAME>
Supported values of <RUNTIME_NAME>
include:
- django
- dotnet
- drupal
- go-gopher
- golang
- grails
- jboss
- jruby
- js
- nginx
- nodejs
- openjdk
- perl
- phalcon
- php
- python
- quarkus
- rails
- redis
- rh-spring-boot
- rust
- java
- rh-openjdk
- ruby
- spring
- spring-boot
Other values result in icons not being rendered for the node.
7.3.6. App grouping Copy linkLink copied to clipboard!
To display workload resources such as deployments or pods in a visual group, add the following label:
labels: app.kubernetes.io/part-of: <GROUP_NAME>
labels:
app.kubernetes.io/part-of: <GROUP_NAME>
7.3.7. Node connector Copy linkLink copied to clipboard!
Procedure
To display the workload resources such as deployments or pods with a visual connector, add the following annotation:
+
annotations: app.openshift.io/connects-to: '[{"apiVersion": <RESOURCE_APIVERSION>,"kind": <RESOURCE_KIND>,"name": <RESOURCE_NAME>}]'
annotations:
app.openshift.io/connects-to: '[{"apiVersion": <RESOURCE_APIVERSION>,"kind": <RESOURCE_KIND>,"name": <RESOURCE_NAME>}]'
For more information about the labels and annotations, see Guidelines for labels and annotations for OpenShift applications.