Chapter 5. Installing and configuring the Tekton plugin You can use the Tekton plugin to visualize the results of CI/CD pipeline runs on your Kubernetes or OpenShift clusters. The plugin allows users to visually see high level status of all associated tasks in the pipeline for their applications. 5.1. Installation Prerequsites You have installed and configured the @backstage/plugin-kubernetes and @backstage/plugin-kubernetes-backend dynamic plugins. For more information about installing dynamic plugins, see Installing and viewing dynamic plugins . You have configured the Kubernetes plugin to connect to the cluster using a ServiceAccount . The ClusterRole must be granted for custom resources (PipelineRuns and TaskRuns) to the ServiceAccount accessing the cluster. Note If you have the RHDH Kubernetes plugin configured, then the ClusterRole is already granted. To view the pod logs, you have granted permissions for pods/log . You can use the following code to grant the ClusterRole for custom resources and pod logs: kubernetes: ... customResources: - group: 'tekton.dev' apiVersion: 'v1' plural: 'pipelineruns' - group: 'tekton.dev' apiVersion: 'v1' ... apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: backstage-read-only rules: - apiGroups: - "" resources: - pods/log verbs: - get - list - watch ... - apiGroups: - tekton.dev resources: - pipelineruns - taskruns verbs: - get - list You can use the prepared manifest for a read-only ClusterRole , which provides access for both Kubernetes plugin and Tekton plugin. Add the following annotation to the entity's catalog-info.yaml file to identify whether an entity contains the Kubernetes resources: annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME> You can also add the backstage.io/kubernetes-namespace annotation to identify the Kubernetes resources using the defined namespace. annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NS> Add the following annotation to the catalog-info.yaml file of the entity to enable the Tekton related features in RHDH. The value of the annotation identifies the name of the RHDH entity: annotations: ... janus-idp.io/tekton : <BACKSTAGE_ENTITY_NAME> Add a custom label selector, 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' 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> Note When you use the label selector, the mentioned labels must be present on the resource. Procedure The Tekton plugin is pre-loaded in RHDH with basic configuration properties. To enable it, set the disabled property to false as follows: global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-tekton disabled: false

Commands:
kubernetes: customResources: - group: 'tekton.dev' apiVersion: 'v1' plural: 'pipelineruns' - group: 'tekton.dev' apiVersion: 'v1' apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: backstage-read-only rules: - apiGroups: - "" resources: - pods/log verbs: - get - list - watch - apiGroups: - tekton.dev resources: - pipelineruns - taskruns verbs: - get - list
annotations: backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
annotations: backstage.io/kubernetes-namespace: <RESOURCE_NS>
annotations: janus-idp.io/tekton : <BACKSTAGE_ENTITY_NAME>
annotations: backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
labels: backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-tekton disabled: false