Chapter 6. Dynamic plugin installation
The dynamic plugin support is based on the backend plugin manager package, which is a service that scans a configured root directory (dynamicPlugins.rootDirectory
in the app config) for dynamic plugin packages and loads them dynamically.
You can use the dynamic plugins that come preinstalled with Red Hat Developer Hub or install external dynamic plugins from a public NPM registry.
6.1. Viewing installed plugins
Using the Dynamic Plugins Info front-end plugin, you can view plugins that are currently installed in your Red Hat Developer Hub application. This plugin is enabled by default.
Procedure
- Open your Developer Hub application and click Administration.
- Go to the Plugins tab to view a list of installed plugins and related information.
6.2. Preinstalled dynamic plugins
Red Hat Developer Hub is preinstalled with a selection of dynamic plugins. The dynamic plugins that require custom configuration are disabled by default.
For a complete list of dynamic plugins that are preinstalled in this release of Developer Hub, see the Dynamic plugins support matrix.
Upon application startup, for each plugin that is disabled by default, the install-dynamic-plugins init container
within the Developer Hub pod log displays a message similar to the following:
======= Skipping disabled dynamic plugin ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
To enable this plugin, add a package with the same name to the Helm chart and change the value in the disabled
field to ‘false’. For example:
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic disabled: false
The default configuration for a plugin is extracted from the dynamic-plugins.default.yaml`
file, however, you can use a pluginConfig
entry to override the default configuration.
6.2.1. Preinstalled dynamic plugin descriptions and details
Technology Preview features are not supported with Red Hat production service level agreements (SLAs), might not be functionally complete, and Red Hat does not recommend using them for production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
For more information on Red Hat Technology Preview features, see Technology Preview Features Scope.
Additional detail on how Red Hat provides support for bundled community dynamic plugins is available on the Red Hat Developer Support Policy page.
There are 56 plugins available in Red Hat Developer Hub. See the following table for more information:
Name | Role | Plugin | Description | Version | Support Level | Path | Required Variables | Default |
---|---|---|---|---|---|---|---|---|
3scale | Backend | @janus-idp/backstage-plugin-3scale-backend | The 3scale Backstage provider plugin synchronizes the 3scale content into the Backstage catalog. | 1.4.7 | Red Hat Tech Preview | ./dynamic-plugins/dist/janus-idp-backstage-plugin-3scale-backend-dynamic |
| Disabled |
AAP | Backend | @janus-idp/backstage-plugin-aap-backend | 1.5.5 | Red Hat Tech Preview | ./dynamic-plugins/dist/janus-idp-backstage-plugin-aap-backend-dynamic |
| Disabled | |
ACR | Frontend | @janus-idp/backstage-plugin-acr | 1.2.28 | Red Hat Tech Preview | ./dynamic-plugins/dist/janus-idp-backstage-plugin-acr | Disabled | ||
Analytics Provider Segment | Frontend | @janus-idp/backstage-plugin-analytics-provider-segment | This plugin provides an implementation of the Backstage Analytics API for Segment. Once installed and configured, analytics events will be sent to Segment as your users navigate and use your Backstage instance. | 1.2.11 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment |
| Disabled |
Argo CD | Frontend | @roadiehq/backstage-plugin-argo-cd | Backstage plugin to view and interact with Argo CD. | 2.4.1 | Production | ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd | Disabled | |
Argo CD | Backend | @roadiehq/backstage-plugin-argo-cd-backend | Backstage plugin Argo CD backend | 2.14.5 | Production | ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic |
| Disabled |
Argo CD | Backend | @roadiehq/scaffolder-backend-argocd | 1.1.23 | Community Support | ./dynamic-plugins/dist/roadiehq-scaffolder-backend-argocd-dynamic |
| Disabled | |
Azure Devops | Frontend | @backstage/plugin-azure-devops | 0.3.12 | Community Support | ./dynamic-plugins/dist/backstage-plugin-azure-devops | Disabled | ||
Azure Devops | Backend | @backstage/plugin-azure-devops-backend | Azure DevOps backend plugin that contains the API for retrieving builds, pull requests, etc. which is used by the Azure DevOps frontend plugin. | 0.5.5 | Community Support | ./dynamic-plugins/dist/backstage-plugin-azure-devops-backend-dynamic |
| Disabled |
Azure Devops | Backend | @backstage/plugin-scaffolder-backend-module-azure | The azure module for @backstage/plugin-scaffolder-backend | 0.1.5 | Community Support | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-azure-dynamic | Enabled | |
Bitbucket | Backend | @backstage/plugin-catalog-backend-module-bitbucket-cloud | A Backstage catalog backend module that helps integrate towards Bitbucket Cloud. | 0.1.28 | Community Support | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-cloud-dynamic |
| Disabled |
Bitbucket | Backend | @backstage/plugin-catalog-backend-module-bitbucket-server | A Backstage catalog backend module that helps integrate towards Bitbucket Server. | 0.1.26 | Community Support | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-server-dynamic |
| Disabled |
Bitbucket | Backend | @backstage/plugin-scaffolder-backend-module-bitbucket-cloud | The Bitbucket Cloud module for @backstage/plugin-scaffolder-backend | 0.1.3 | Community Support | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-cloud-dynamic | Enabled | |
Bitbucket | Backend | @backstage/plugin-scaffolder-backend-module-bitbucket-server | The Bitbucket Server module for @backstage/plugin-scaffolder-backend. | 0.1.3 | Community Support | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-server-dynamic | Enabled | |
Datadog | Frontend | @roadiehq/backstage-plugin-datadog | Embed Datadog graphs and dashboards into Backstage. | 2.2.6 | Community Support | ./dynamic-plugins/dist/roadiehq-backstage-plugin-datadog | Disabled | |
Dynatrace | Frontend | @backstage/plugin-dynatrace | A Backstage plugin that integrates towards Dynatrace. | 9.0.0 | Community Support | ./dynamic-plugins/dist/backstage-plugin-dynatrace | Disabled | |
Dynamic Plugins | Frontend | @janus-idp/backstage-plugin-dynamic-plugins-info | Dynamic Plugins Info plugin for Backstage. | 1.0.2 | Production | @janus-idp/backstage-plugin-dynamic-plugins-info | Enabled | |
Gerrit | Backend | @backstage/plugin-scaffolder-backend-module-gerrit | The gerrit module for @backstage/plugin-scaffolder-backend. | 0.1.5 | Community Support | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gerrit-dynamic | Enabled | |
Github | Backend | @backstage/plugin-catalog-backend-module-github | A Backstage catalog backend module that helps integrate towards Github | 0.5.3 | Community Support | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic |
| Disabled |
Github | Backend | @backstage/plugin-catalog-backend-module-github-org | The github-org backend module for the catalog plugin. | 0.1.0 | Community Support | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic |
| Disabled |
Github | Frontend | @backstage/plugin-github-actions | A Backstage plugin that integrates towards GitHub Actions | 0.6.11 | Community Support | ./dynamic-plugins/dist/backstage-plugin-github-actions | Disabled | |
Github | Frontend | @backstage/plugin-github-issues | A Backstage plugin that integrates towards GitHub Issues | 0.2.19 | Community Support | ./dynamic-plugins/dist/backstage-plugin-github-issues | Disabled | |
Github | Backend | @backstage/plugin-scaffolder-backend-module-github | The github module for @backstage/plugin-scaffolder-backend. | 0.2.3 | Community Support | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-github-dynamic | Enabled | |
Github | Frontend | @roadiehq/backstage-plugin-github-insights | Backstage plugin to provide Readmes, Top Contributors and other widgets. | 2.3.27 | Community Support | ./dynamic-plugins/dist/roadiehq-backstage-plugin-github-insights | Disabled | |
Github | Frontend | @roadiehq/backstage-plugin-github-pull-requests | Backstage plugin to view and interact with GitHub pull requests. | 2.5.24 | Community Support | ./dynamic-plugins/dist/roadiehq-backstage-plugin-github-pull-requests | Disabled | |
Github | Frontend | @roadiehq/backstage-plugin-security-insights | Backstage plugin to add security insights for GitHub repos. | 2.3.15 | Community Support | ./dynamic-plugins/dist/roadiehq-backstage-plugin-security-insights | Disabled | |
Gitlab | Backend | @backstage/plugin-catalog-backend-module-gitlab | Extracts repositories out of an GitLab instance. | 0.3.10 | Community Support | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-dynamic | Disabled | |
Gitlab | Backend | @backstage/plugin-scaffolder-backend-module-gitlab | A module for the scaffolder backend that lets you interact with gitlab | 0.2.16 | Community Support | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gitlab-dynamic | Disabled | |
Gitlab | Frontend | @immobiliarelabs/backstage-plugin-gitlab | Backstage plugin to interact with GitLab | 6.4.0 | Community Support | ./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab | Disabled | |
Gitlab | Backend | @immobiliarelabs/backstage-plugin-gitlab-backend | Backstage plugin to interact with GitLab | 6.4.0 | Community Support | ./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab-backend-dynamic |
| Disabled |
Jenkins | Frontend | @backstage/plugin-jenkins | A Backstage plugin that integrates towards Jenkins | 0.9.5 | Community Support | ./dynamic-plugins/dist/backstage-plugin-jenkins | Disabled | |
Jenkins | Backend | @backstage/plugin-jenkins-backend | A Backstage backend plugin that integrates towards Jenkins | 0.3.7 | Community Support | ./dynamic-plugins/dist/backstage-plugin-jenkins-backend-dynamic |
| Disabled |
Jfrog Artifactory | Frontend | @janus-idp/backstage-plugin-jfrog-artifactory | The Jfrog Artifactory plugin displays information about your container images within the Jfrog Artifactory registry. | 1.2.28 | Red Hat Tech Preview | ./dynamic-plugins/dist/janus-idp-backstage-plugin-jfrog-artifactory |
| Disabled |
Jira | Frontend | @roadiehq/backstage-plugin-jira | Backstage plugin to view and interact with Jira | 2.5.4 | Community Support | ./dynamic-plugins/dist/roadiehq-backstage-plugin-jira | Disabled | |
Keycloak | Backend | The Keycloak backend plugin integrates Keycloak into Backstage. | 1.8.6 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-keycloak-backend-dynamic |
| Disabled | |
Kubernetes | Frontend | @backstage/plugin-kubernetes | A Backstage plugin that integrates towards Kubernetes | 0.11.5 | Community Support | ./dynamic-plugins/dist/backstage-plugin-kubernetes | Enabled | |
Kubernetes | Backend | @backstage/plugin-kubernetes-backend | A Backstage backend plugin that integrates towards Kubernetes | 0.15.3 | Production | ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic |
| Enabled |
Kubernetes | Frontend | @janus-idp/backstage-plugin-topology | The Topology plugin enables you to visualize the workloads such as Deployment, Job, Daemonset, Statefulset, CronJob, and Pods powering any service on the Kubernetes cluster. | 1.18.8 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-topology | Enabled | |
Lighthouse | Frontend | @backstage/plugin-lighthouse | A Backstage plugin that integrates towards Lighthouse | 0.4.15 | Community Support | ./dynamic-plugins/dist/backstage-plugin-lighthouse | Disabled | |
Nexus Repository Manager | Frontend | @janus-idp/backstage-plugin-nexus-repository-manager | The Nexus Repository Manager plugin displays the information about your build artifacts that are available in the Nexus Repository Manager in your Backstage application. | 1.4.28 | Red Hat Tech Preview | ./dynamic-plugins/dist/janus-idp-backstage-plugin-nexus-repository-manager | Disabled | |
OCM | Frontend | @janus-idp/backstage-plugin-ocm |
The Open Cluster Management (OCM) plugin integrates your Backstage instance with the | 3.7.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-ocm | Disabled | |
OCM | Backend | @janus-idp/backstage-plugin-ocm-backend | 3.5.7 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-ocm-backend-dynamic |
| Disabled | |
Pagerduty | Frontend | @pagerduty/backstage-plugin | A Backstage plugin that integrates towards PagerDuty | 0.9.3 | Community Support | ././dynamic-plugins/dist/pagerduty-backstage-plugin | Disabled | |
Quay | Frontend | @janus-idp/backstage-plugin-quay | The Quay plugin displays the information about your container images within the Quay registry in your Backstage application. | 1.5.10 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-quay | Disabled | |
Quay | Backend | @janus-idp/backstage-scaffolder-backend-module-quay | This module provides Backstage template actions for Quay. | 1.3.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-quay-dynamic | Enabled | |
RBAC | Frontend | @janus-idp/backstage-plugin-rbac | RBAC frontend plugin for Backstage. | 1.15.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-rbac | Disabled | |
Regex | Backend | @janus-idp/backstage-scaffolder-backend-module-regex | This plugin provides Backstage template actions for RegExp. | 1.3.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-regex-dynamic | Enabled | |
Scaffolder | Backend | @roadiehq/scaffolder-backend-module-utils | This contains a collection of actions to use in scaffolder templates. | 1.13.6 | Community Support | ./dynamic-plugins/dist/roadiehq-scaffolder-backend-module-utils-dynamic | Enabled | |
ServiceNow | Backend | @janus-idp/backstage-scaffolder-backend-module-servicenow | This plugin provides Backstage template actions for ServiceNow. | 1.3.5 | Red Hat Tech Preview | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-servicenow-dynamic |
| Disabled |
SonarQube | Frontend | @backstage/plugin-sonarqube | A Backstage plugin to display SonarQube code quality and security results. | 0.7.12 | Community Support | ./dynamic-plugins/dist/backstage-plugin-sonarqube | Disabled | |
SonarQube | Backend | @backstage/plugin-sonarqube-backend | 0.2.15 | Community Support | ./dynamic-plugins/dist/backstage-plugin-sonarqube-backend-dynamic |
| Disabled | |
SonarQube | Backend | @janus-idp/backstage-scaffolder-backend-module-sonarqube | This module provides Backstage template actions for SonarQube. | 1.3.5 | Red Hat Tech Preview | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-sonarqube-dynamic | Disabled | |
Tech Radar | Frontend | @backstage/plugin-tech-radar | A Backstage plugin that lets you display a Tech Radar for your organization | 0.6.13 | Community Support | ./dynamic-plugins/dist/backstage-plugin-tech-radar | Disabled | |
Techdocs | Frontend | @backstage/plugin-techdocs | The Backstage plugin that renders technical documentation for your components | 1.10.0 | Production | ./dynamic-plugins/dist/backstage-plugin-techdocs | Enabled | |
Techdocs | Backend | @backstage/plugin-techdocs-backend | The Backstage backend plugin that renders technical documentation for your components | 1.9.6 | Production | ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic |
| Enabled |
Tekton | Frontend | @janus-idp/backstage-plugin-tekton | The Tekton plugin enables you to visualize the PipelineRun resources available on the Kubernetes cluster. | 3.5.12 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-tekton | Disabled |
6.3. Installation of dynamic plugins using the Helm chart
You can deploy a Developer Hub instance using a Helm chart, which is a flexible installation method. With the Helm chart, you can sideload dynamic plugins into your Developer Hub instance without having to recompile your code or rebuild the container.
To install dynamic plugins in Developer Hub using Helm, add the following global.dynamic
parameters in your Helm chart:
plugins
: the dynamic plugins list intended for installation. By default, the list is empty. You can populate the plugins list with the following fields:-
package
: a package specification for the dynamic plugin package that you want to install. You can use a package for either a local or an external dynamic plugin installation. For a local installation, use a path to the local folder containing the dynamic plugin. For an external installation, use a package specification from a public NPM repository. -
integrity
(required for external packages): an integrity checksum in the form of<alg>-<digest>
specific to the package. Supported algorithms includesha256
,sha384
andsha512
. -
pluginConfig
: an optional plugin-specificapp-config
YAML fragment. See plugin configuration for more information. -
disabled
: disables the dynamic plugin if set totrue
. Default:false
.
-
-
includes
: a list of YAML files utilizing the same syntax.
The plugins
list in the includes
file is merged with the plugins
list in the main Helm values. If a plugin package is mentioned in both plugins
lists, the plugins
fields in the main Helm values override the plugins
fields in the includes
file. The default configuration includes the dynamic-plugins.default.yaml
file, which contains all of the dynamic plugins preinstalled in Developer Hub, whether enabled or disabled by default.
6.3.1. Obtaining the integrity checksum
To obtain the integrity checksum, enter the following command:
npm view <package name>@<version> dist.integrity
6.3.2. Example Helm chart configurations for dynamic plugin installations
The following examples demonstrate how to configure the Helm chart for specific types of dynamic plugin installations.
Configuring a local plugin and an external plugin when the external plugin requires a specific app-config
global: dynamic: plugins: - package: <alocal package-spec used by npm pack> - package: <external package-spec used by npm pack> integrity: sha512-<some hash> pluginConfig: ...
Disabling a plugin from an included file
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.default.yaml> disabled: true
Enabling a plugin from an included file
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.custom.yaml> disabled: false
Enabling a plugin that is disabled in an included file
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.custom.yaml> disabled: false
6.3.3. Installing external dynamic plugins using a Helm chart
The NPM registry contains external dynamic plugins that you can use for demonstration purposes. For example, the following community plugins are available in the janus-idp
organization in the NPMJS repository:
- Notifications (frontend and backend)
- Kubernetes actions (scaffolder actions)
To install the Notifications and Kubernetes actions plugins, include them in the Helm chart values in the global.dynamic.plugins
list as shown in the following example:
global: dynamic: plugins: - package: '@janus-idp/plugin-notifications-backend-dynamic@1.3.6' # Integrity can be found at https://registry.npmjs.org/@janus-idp/plugin-notifications-backend-dynamic integrity: 'sha512-Qd8pniy1yRx+x7LnwjzQ6k9zP+C1yex24MaCcx7dGDPT/XbTokwoSZr4baSSn8jUA6P45NUUevu1d629mG4JGQ==' - package: '@janus-idp/plugin-notifications@1.1.12 ' # https://registry.npmjs.org/@janus-idp/plugin-notifications integrity: 'sha512-GCdEuHRQek3ay428C8C4wWgxjNpNwCXgIdFbUUFGCLLkBFSaOEw+XaBvWaBGtQ5BLgE3jQEUxa+422uzSYC5oQ==' pluginConfig: dynamicPlugins: frontend: janus-idp.backstage-plugin-notifications: appIcons: - name: notificationsIcon module: NotificationsPlugin importName: NotificationsActiveIcon dynamicRoutes: - path: /notifications importName: NotificationsPage module: NotificationsPlugin menuItem: icon: notificationsIcon text: Notifications config: pollingIntervalMs: 5000 - package: '@janus-idp/backstage-scaffolder-backend-module-kubernetes-dynamic@1.3.5' # https://registry.npmjs.org/@janus-idp/backstage-scaffolder-backend-module-kubernetes-dynamic integrity: 'sha512-19ie+FM3QHxWYPyYzE0uNdI5K8M4vGZ0SPeeTw85XPROY1DrIY7rMm2G0XT85L0ZmntHVwc9qW+SbHolPg/qRA==' proxy: endpoints: /explore-backend-completed: target: 'http://localhost:7017' - package: '@dfatwork-pkgs/search-backend-module-explore-wrapped-dynamic@0.1.3-next.1' # https://registry.npmjs.org/@dfatwork-pkgs/search-backend-module-explore-wrapped-dynamic integrity: 'sha512-mv6LS8UOve+eumoMCVypGcd7b/L36lH2z11tGKVrt+m65VzQI4FgAJr9kNCrjUZPMyh36KVGIjYqsu9+kgzH5A==' - package: '@dfatwork-pkgs/plugin-catalog-backend-module-test-dynamic@0.0.0' # https://registry.npmjs.org/@dfatwork-pkgs/plugin-catalog-backend-module-test-dynamic integrity: 'sha512-YsrZMThxJk7cYJU9FtAcsTCx9lCChpytK254TfGb3iMAYQyVcZnr5AA/AU+hezFnXLsr6gj8PP7z/mCZieuuDA=='
6.4. Installing external plugins in an air-gapped environment
You can install external plugins in an air-gapped environment by setting up a custom NPM registry. To configure the NPM registry URL and authentication information for dynamic plugin packages, see Using a custom NPM registry for dynamic plugin packages.
6.5. Using a custom NPM registry for dynamic plugin packages
You can configure the NPM registry URL and authentication information for dynamic plugin packages using a Helm chart. For dynamic plugin packages obtained through npm pack
, you can use a .npmrc
file.
Using the Helm chart, add the .npmrc
file to the NPM registry by creating a secret named dynamic-plugins-npmrc
with the following content:
apiVersion: v1 kind: Secret metadata: name: dynamic-plugins-npmrc type: Opaque stringData: .npmrc: | registry=<registry-url> //<registry-url>:_authToken=<auth-token> ...
6.6. Basic configuration of dynamic plugins
Some dynamic plugins require environment variables to be set. If a mandatory environment variable is not set, and the plugin is enabled, then the application might fail at startup.
The mandatory environment variables for each plugin are listed in the Dynamic plugins support matrix.
Zib-bomb detection When installing some dynamic plugin containing large files, if the installation script considers the package archive to be a Zib-Bomb, the installation fails.
To increase the maximum permitted size of a file inside a package archive, you can increase the MAX_ENTRY_SIZE
environment value of the deployment install-dynamic-plugins initContainer
from the default size of 20000000
bytes.
6.7. Installation and configuration of Ansible Automation Platform
The Ansible Automation Platform (AAP) plugin synchronizes the accessible templates including job templates and workflow job templates from AAP into your Developer Hub catalog.
The Ansible Automation Platform plugin is a Technology Preview feature only.
Technology Preview features are not supported with Red Hat production service level agreements (SLAs), might not be functionally complete, and Red Hat does not recommend using them for production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
For more information on Red Hat Technology Preview features, see Technology Preview Features Scope.
Additional detail on how Red Hat provides support for bundled community dynamic plugins is available on the Red Hat Developer Support Policy page.
6.7.1. For administrators
6.7.1.1. Installing and configuring the AAP Backend plugin
The AAP backend plugin allows you to configure one or multiple providers using your app-config.yaml
configuration file in Developer Hub.
Prerequisites
- Your Developer Hub application is installed and running.
- You have created an account in Ansible Automation Platform.
Installation
The AAP backend plugin is pre-loaded in Developer Hub 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-aap-backend-dynamic disabled: false
Basic configuration
To enable the AAP plugin, you must set the following environment variables:
-
AAP_BASE_URL
: Base URL of the service -
AAP AUTH TOKEN
: Authentication token for the service
Advanced configuration
You can use the
aap
marker to configure theapp-config.yaml
file of Developer Hub as follows:catalog: providers: aap: dev: baseUrl: $(AAP_BASE_URL) authorization: 'Bearer ${AAP_AUTH_TOKEN}' owner: <owner> system: <system> schedule: # optional; same options as in TaskScheduleDefinition # supports cron, ISO duration, "human duration" as used in code frequency: { minutes: 1 } # supports ISO duration, "human duration" as used in code timeout: { minutes: 1 }
6.7.1.2. Log lines for AAP Backend plugin troubleshoot
When you start your Developer Hub application, you can see the following log lines:
[1] 2023-02-13T15:26:09.356Z catalog info Discovered ResourceEntity API type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.423Z catalog info Discovered ResourceEntity Red Hat Event (DEV, v1.2.0) type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.620Z catalog info Discovered ResourceEntity Red Hat Event (TEST, v1.1.1) type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.819Z catalog info Discovered ResourceEntity Red Hat Event (PROD, v1.1.1) type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.819Z catalog info Applying the mutation with 3 entities type=plugin target=AapResourceEntityProvider:dev
6.7.2. For users
6.7.2.1. Accessing templates from AAP in Developer Hub
When you have configured the AAP backend plugin successfully, it synchronizes the templates including job templates and workflow job templates from AAP and displays them on the Developer Hub Catalog page as Resources.
Prerequisites
- Your Developer Hub application is installed and running.
- You have installed the AAP backend plugin. For installation and configuration instructions, see Section 6.7.1.1, “Installing and configuring the AAP Backend plugin”.
Procedure
- Open your Developer Hub application and Go to the Catalog page.
Select Resource from the Kind drop-down and job template or workflow job template from the Type drop-down on the left side of the page.
A list of all the available templates from AAP appears on the page.
Select a template from the list.
The OVERVIEW tab appears containing different cards, such as:
- About: Provides detailed information about the template.
- Relations: Displays the visual representation of the template and associated aspects.
- Links: Contains links to the AAP dashboard and the details page of the template.
- Has subcomponents: Displays a list of associated subcomponents.
6.8. Installation and configuration of Keycloak
The Keycloak backend plugin, which integrates Keycloak into Developer Hub, has the following capabilities:
- Synchronization of Keycloak users in a realm.
- Synchronization of Keycloak groups and their users in a realm.
6.8.1. For administrators
6.8.1.1. Installation
The Keycloak plugin is pre-loaded in Developer Hub 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-keycloak-backend-dynamic disabled: false
6.8.1.2. Basic configuration
To enable the Keycloak plugin, you must set the following environment variables:
-
KEYCLOAK_BASE_URL
-
KEYCLOAK_LOGIN_REALM
-
KEYCLOAK_REALM
-
KEYCLOAK_CLIENT_ID
-
KEYCLOAK_CLIENT_SECRET
6.8.1.3. Advanced configuration
Schedule configuration
You can configure a schedule in the app-config.yaml
file, as follows:
catalog: providers: keycloakOrg: default: # ... # highlight-add-start schedule: # optional; same options as in TaskScheduleDefinition # supports cron, ISO duration, "human duration" as used in code frequency: { minutes: 1 } # supports ISO duration, "human duration" as used in code timeout: { minutes: 1 } initialDelay: { seconds: 15 } # highlight-add-end
If you have made any changes to the schedule in the app-config.yaml
file, then restart to apply the changes.
Keycloak query parameters
You can override the default Keycloak query parameters in the app-config.yaml
file, as follows:
catalog: providers: keycloakOrg: default: # ... # highlight-add-start userQuerySize: 500 # Optional groupQuerySize: 250 # Optional # highlight-add-end
Communication between Developer Hub and Keycloak is enabled by using the Keycloak API. Username and password, or client credentials are supported authentication methods.
The following table describes the parameters that you can configure to enable the plugin under catalog.providers.keycloakOrg.<ENVIRONMENT_NAME>
object in the app-config.yaml
file:
Name | Description | Default Value | Required |
---|---|---|---|
|
Location of the Keycloak server, such as | "" | Yes |
| Realm to synchronize |
| No |
| Realm used to authenticate |
| No |
| Username to authenticate | "" | Yes if using password based authentication |
| Password to authenticate | "" | Yes if using password based authentication |
| Client ID to authenticate | "" | Yes if using client credentials based authentication |
| Client Secret to authenticate | "" | Yes if using client credentials based authentication |
| Number of users to query at a time |
| No |
| Number of groups to query at a time |
| No |
When using client credentials, the access type must be set to confidential
and service accounts must be enabled. You must also add the following roles from the realm-management
client role:
-
query-groups
-
query-users
-
view-users
6.8.1.4. Limitations
If you have self-signed or corporate certificate issues, you can set the following environment variable before starting Developer Hub:
NODE_TLS_REJECT_UNAUTHORIZED=0
The solution of setting the environment variable is not recommended.
6.8.2. For users
6.8.2.1. Import of users and groups in Developer Hub using the Keycloak plugin
After configuring the plugin successfully, the plugin imports the users and groups each time when started.
If you set up a schedule, users and groups will also be imported.
After the first import is complete, you can select User to list the users from the catalog page:
You can see the list of users on the page:
When you select a user, you can see the information imported from Keycloak:
You can also select a group, view the list, and select or view the information imported from Keycloak for a group:
6.9. Installation and configuration of Nexus Repository Manager
The Nexus Repository Manager plugin displays the information about your build artifacts in your Developer Hub application. The build artifacts are available in the Nexus Repository Manager.
The Nexus Repository Manager plugin is a Technology Preview feature only.
Technology Preview features are not supported with Red Hat production service level agreements (SLAs), might not be functionally complete, and Red Hat does not recommend using them for production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
For more information on Red Hat Technology Preview features, see Technology Preview Features Scope.
Additional detail on how Red Hat provides support for bundled community dynamic plugins is available on the Red Hat Developer Support Policy page.
6.9.1. For administrators
6.9.1.1. Installing and configuring the Nexus Repository Manager plugin
Installation
The Nexus Repository Manager plugin is pre-loaded in Developer Hub 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-nexus-repository-manager disabled: false
Configuration
Set the proxy to the desired Nexus Repository Manager server in the
app-config.yaml
file as follows:proxy: '/nexus-repository-manager': target: 'https://<NEXUS_REPOSITORY_MANAGER_URL>' headers: X-Requested-With: 'XMLHttpRequest' # Uncomment the following line to access a private Nexus Repository Manager using a token # Authorization: 'Bearer <YOUR TOKEN>' changeOrigin: true # Change to "false" in case of using self hosted Nexus Repository Manager instance with a self-signed certificate secure: true
Optional: Change the base URL of Nexus Repository Manager proxy as follows:
nexusRepositoryManager: # default path is `/nexus-repository-manager` proxyPath: /custom-path
Optional: Enable the following experimental annotations:
nexusRepositoryManager: experimentalAnnotations: true
Annotate your entity using the following annotations:
metadata: annotations: # insert the chosen annotations here # example nexus-repository-manager/docker.image-name: `<ORGANIZATION>/<REPOSITORY>`,
For additional information about installing and configuring dynamic plugins, see the Chapter 6, Dynamic plugin installation section.
6.9.2. For users
6.9.2.1. Using the Nexus Repository Manager plugin in Developer Hub
The Nexus Repository Manager is a front-end plugin that enables you to view the information about build artifacts.
Prerequisites
- Your Developer Hub application is installed and running.
- You have installed the Nexus Repository Manager plugin. For the installation process, see Section 6.9.1.1, “Installing and configuring the Nexus Repository Manager plugin”.
Procedure
- Open your Developer Hub application and select a component from the Catalog page.
Go to the BUILD ARTIFACTS tab.
The BUILD ARTIFACTS tab contains a list of build artifacts and related information, such as VERSION, REPOSITORY, REPOSITORY TYPE, MANIFEST, MODIFIED, and SIZE.
6.10. Installation and configuration of Tekton
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.
6.10.1. For administrators
6.10.1.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 Chapter 6, Dynamic plugin installation. -
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 theServiceAccount
accessing the cluster.NoteIf 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>
NoteWhen 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
6.10.2. For users
6.10.2.1. Using the Tekton plugin in RHDH
You can use the Tekton front-end plugin to view PipelineRun
resources.
Prerequisites
- You have installed the Red Hat Developer Hub (RHDH).
- You have installed the Tekton plugin. For the installation process, see Installing and configuring the Tekton plugin.
Procedure
- Open your RHDH application and select a component from the Catalog page.
Go to the CI tab.
The CI tab displays the list of PipelineRun resources associated with a Kubernetes cluster. The list contains pipeline run details, such as NAME, VULNERABILITIES, STATUS, TASK STATUS, STARTED, and DURATION.
Click the expand row button besides PipelineRun name in the list to view the PipelineRun visualization. The pipeline run resource includes tasks to complete. When you hover the mouse pointer on a task card, you can view the steps to complete that particular task.