Skip to content

RHIDP-7560 - Install and configure plugins from Extensions page #1281

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 42 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
9a45a7a
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Jul 23, 2025
0f0f1bf
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Jul 25, 2025
b301f27
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Jul 29, 2025
2b81b9b
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Jul 30, 2025
28c89b5
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Jul 30, 2025
f46871d
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Jul 30, 2025
1af13c9
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Jul 31, 2025
f1a3e6b
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 1, 2025
7830783
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 2, 2025
aaa24ed
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 2, 2025
5952f10
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 3, 2025
f563253
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 5, 2025
833f54a
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 5, 2025
eab1528
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 5, 2025
acba8c7
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 5, 2025
973d63c
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 5, 2025
3c7488d
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 5, 2025
ce7b59b
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 6, 2025
88ffca1
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 6, 2025
eadb251
Merge branch 'main' into RHIDP-7560
Gerry-Forde Aug 6, 2025
0a802e6
Update modules/dynamic-plugins/proc-extensions-enabling-plugins-insta…
Gerry-Forde Aug 6, 2025
413b32d
Update modules/dynamic-plugins/proc-extensions-installing-plugins.adoc
Gerry-Forde Aug 6, 2025
77b1997
RHIDP-8240 - Create a Quickstart guide to support first-time onboardi…
Gerry-Forde Jul 31, 2025
a235c5f
RHIDP-8240 - Create a Quickstart guide to support first-time onboardi…
Gerry-Forde Jul 31, 2025
bcee247
RHIDP-8240 - Create a Quickstart guide to support first-time onboardi…
Gerry-Forde Jul 31, 2025
a7beabd
RHIDP-8240 - Create a Quickstart guide to support first-time onboardi…
Gerry-Forde Aug 5, 2025
855eee8
RHIDP-8240 - Create a Quickstart guide to support first-time onboardi…
Gerry-Forde Aug 5, 2025
9572991
RHIDP-8240 - Create a Quickstart guide to support first-time onboardi…
Gerry-Forde Aug 6, 2025
f9e29bf
RHIDP-8240 - Create a Quickstart guide to support first-time onboardi…
Gerry-Forde Aug 6, 2025
e1e7ae5
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 10, 2025
2819eef
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 10, 2025
da8371f
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 10, 2025
298e27a
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 11, 2025
27dd5b4
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 11, 2025
7c42ba5
Update modules/dynamic-plugins/proc-extensions-enabling-plugins-insta…
Gerry-Forde Aug 12, 2025
aaf0d32
Update modules/dynamic-plugins/proc-extensions-configuring-rbac-role.…
Gerry-Forde Aug 12, 2025
c4e1d28
Update modules/dynamic-plugins/proc-extensions-installing-plugins.adoc
Gerry-Forde Aug 12, 2025
7465fb6
Update modules/dynamic-plugins/proc-extensions-enabling-plugins-insta…
Gerry-Forde Aug 12, 2025
ac54524
Merge branch 'redhat-developer:main' into RHIDP-7560
Gerry-Forde Aug 12, 2025
e5b3317
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 12, 2025
fae3409
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 12, 2025
a0c912d
RHIDP-7560 - Install and configure plugins from Extensions page (next…
Gerry-Forde Aug 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 35 additions & 3 deletions assemblies/dynamic-plugins/assembly-extensions-plugins.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,44 @@ include::../modules/dynamic-plugins/con-catalog-searching-and-filtering.adoc[lev
// Viewing a plugin - screenshots added post 1.5 GA, so this section is no longer necessary
// include::../modules/dynamic-plugins/ref-catalog-plugin.adoc[leveloffset=+2]

// Installing a plugin
include::../modules/dynamic-plugins/proc-extensions-installing.adoc[leveloffset=+1]

// Disabling Extensions
include::../modules/dynamic-plugins/proc-extensions-disabling.adoc[leveloffset=+1]

// START RHDH 1.7.0
// ==========
// Managing plugins installation by using Extensions
include::../modules/dynamic-plugins/con-extensions-managing-plugins.adoc[leveloffset=+1]

// Configuring an RBAC role to manage Extensions
include::../modules/dynamic-plugins/proc-extensions-configuring-rbac-role.adoc[leveloffset=+2]

// Enabling plugins installation by using Extensions
include::../modules/dynamic-plugins/proc-extensions-enabling-plugins-installation.adoc[leveloffset=+2]

// Installing plugins by using Extensions
include::../modules/dynamic-plugins/proc-extensions-installing-plugins.adoc[leveloffset=+2]

// Configuring plugins by using Extensions
include::../modules/dynamic-plugins/proc-extensions-configuring-plugins.adoc[leveloffset=+2]

// Troubleshooting plugins installation by using Extensions [Stretch]
// include::../modules/dynamic-plugins/con-extensions-troubleshooting-plugins-installation.adoc[leveloffset=+1]
// ==========

// Enabling plugins installation by using Extensions
// include::../modules/dynamic-plugins/proc-extensions-enabling.adoc[leveloffset=+1]

// Managing plugins [TBC]
//include::../modules/dynamic-plugins/proc-extensions-managing.adoc[leveloffset=+1]

// Installing a plugin [TBC]
//include::../modules/dynamic-plugins/proc-extensions-installing.adoc[leveloffset=+1]

// END RHDH 1.7.0

// Operator installation by using plugin extension
//include::../modules/dynamic-plugins/proc-operator-installing-a-plugin-using-extensions.adoc[leveloffset=+1]

// Managing the extensions plugin entries - For 1.6+
//include::../modules/dynamic-plugins/proc-extensions-managing.adoc[leveloffset=+1]

Expand Down
Binary file added images/rhdh/extensions-enable-plugin-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/rhdh/extensions-install-plugin-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/rhdh/extensions-install-plugin-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/rhdh/extensions-install-plugin-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/rhdh/extensions-rbac-role-create.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/rhdh/extensions-restart-plugin-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions modules/dynamic-plugins/con-extensions-managing-plugins.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[id="con-extensions-managing-plugins_{context}"]
= Managing plugins by using Extensions

You can install and configure plugins by using Extensions.

[WARNING]
Installation and configuration of plugins by using Extensions will only work in development environments. This feature is not supported in production environments.

In a production environment, users will be notified that plugin installation is not permitted.

image::rhdh/extensions-restart-plugin-1.png[]

In a development environment:

* Administrators can install a plugin using the default configuration preloaded in the editor, or modify the configuration before installing. Upon successful installation, users will be notified that a backend restart is required to complete the installation process.
* When a plugin is installed, administrators can access the Actions drop-down in the plugin’s side panel. Available actions include:
** Editing the configuration used during installation
** Disabling or enabling the plugin
** After performing any of these actions, users will be notified that a backend restart is required for the changes to take effect.
27 changes: 27 additions & 0 deletions modules/dynamic-plugins/proc-extensions-configuring-plugins.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[id="proc-extensions-configuring-plugins_{context}"]
= Enabling and disabling plugins by using Extensions

.Prerequisites
* You have configured {product-very-short} to allow plugins installation from *Extensions*.
* You have configured RBAC to allow the current user to access to manage plugin configuration.

.Procedure
. Navigate to *Extensions*.
. Select a plugin to enable or disable.
. Click on the Enable/Disable slider.
+
image::rhdh/extensions-enable-plugin-1.png[]
. To view the plugins that require a restart, click *View plugins* in the alert message.
+
image::rhdh/extensions-install-plugin-3.png[]
. Restart your {product-very-short} application.

.Verification
. After you restart your {product-very-short} application, navigate to *Extensions*.
. Select the plugin that you have installed.
. The Enable/Disable slider is updated.





48 changes: 48 additions & 0 deletions modules/dynamic-plugins/proc-extensions-configuring-rbac-role.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
[id="proc-extensions-configuring-rbac-role_{context}"]
= Configuring RBAC to manage Extensions

You can add Extensions permissions by creating or updating and existing RBAC role. For more information about using RBAC to manage role-based controls, see link:https://docs.redhat.com/en/documentation/red_hat_developer_hub/{product-version}/html-single/authorization_in_red_hat_developer_hub/managing-authorizations-by-using-the-web-ui[Managing role-based access controls (RBAC) using the {product} Web UI].

== Creating a role in the {product-short} UI to manage Extensions

.Prequisites
* You have enabled RBAC, have a policy administrator role in {product-short}, and have added plugins with permission.

.Procedure
. Go to Administration at the bottom of the sidebar in the {product-short}.
+
The *RBAC* tab appears, displaying all the created roles in the Developer Hub.
. Click *Create* to create a role.
. Enter the user name and description (optional) of role in the given fields and click *Next*.
. In *Add users and groups*, select the user name, and click *Next*.
. In *Add permission policies*, select *Extensions* from the plugins dropdown.
. Expand *Extensions*, select both the *Create* and *Read* permissions for the Extensions plugin and click *Next*.
. Click *Create* to create the role.
+
image::rhdh/extensions-rbac-role-create.png[]

.Verification
After you refresh the {product-very-short} application, when you select a plugin, the *Actions* dropdown will be active.
When you click on the *Active* dropdown, you can edit the the plugin configuration, and enable or disable the plugin.

// Not documented
// [source,yaml]
// ----
// p, role:default/team_a, extensions-plugin, read, allow
// p, role:default/team_a, extensions-plugin, create, allow
// g, user:default/<login-id/user-name>, role:default/team_a

// permission:
// enabled: true
// rbac:
// admin:
// users:
// - name: user:default/gerry-forde
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to document how to set up these extensions permissions using csv file? I would say yes. We don't have to add the instructions to this page but would add them here: https://redhat-developer.github.io/red-hat-developers-documentation-rhdh/release-1.7/authorization/#ref-rbac-permission-policies_title-authorization

If we will be adding them to this page, please remove your name as a user and fix intendation.

// pluginsWithPermission:
// - catalog
// - scaffolder
// - permission
// - extensions
// ----


Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
[id="proc-extensions-enabling-plugins-installation_{context}"]
= Configuring {product-very-short} to install plugins by using Extensions

When you install a plugin, the configuration that you use is saved to a dynamic plugins cache to ensure that the same configuration is available when you edit, or re-enable the plugin.

You must create a persistent volume cache (PVC) to ensure that the cache persists when you restart the {product-very-short} application. For more information about using the dynamic plugins cache, see link:https://docs.redhat.com/en/documentation/red_hat_developer_hub/{product-version}/html-single/configuring_red_hat_developer_hub/index#using-the-dynamic-plugins-cache_running-behind-a-proxy[Using the dynamic plugins cache].

.Prequisites
* You have created a persistent volume claim (PVC) for the dynamic plugins cache with the name *dynamic-plugins-root*.
* You have installed Red Hat Developer Hub using the Helm chart.
* You have installed the OpenShift CLI (`oc`).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would add to all Prerequisites links for the instructions on how to do this if we have them documented.


.Procedure
. Create the marketplace configuration file and save it as `dynamic-plugins.marketplace.yaml`. For example:
+
[source,yaml]
----
plugins:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is missing the frontend configuration, see: #1281 (review)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, okay I see we have it as a next step. I would suggest to simplify the setup and have it already in the default config file instead of updating it again.

Copy link
Member Author

@Gerry-Forde Gerry-Forde Aug 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dzemanov I've updated the code example in for creating the dynamic-plugins-root/dynamic-plugins.extensions.yaml file in Configuring RHDH to install plugins by using Extensions and also changed the marketplace references to extensions for naming this file, as you suggested.

Operator update instructions have also been added to this section.

Could you please review again and let me know if the content is technically accurate.

- package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic
disabled: false
pluginConfig:
extensions:
installation:
enabled: true
saveToSingleFile:
file: /opt/app-root/src/dynamic-plugins-root/dynamic-plugins.marketplace.yaml
----
. Copy the file to your cluster by running the following commands:
+
[source,yaml]
----
oc get pods -n <your-namespace>

oc cp ./dynamic-plugins.marketplace.yaml <your-namespace>/<pod-name>:/opt/app-root/src/dynamic-plugins-root/dynamic-plugins.marketplace.yaml
----
. Upgrade the Helm release to use this file and update environment variable to development:
+
[source,yaml]
----
global:
auth:
backend:
enabled: true
clusterRouterBase: apps.rosa.iuosa-vcqyd-ek4.jryo.p3.openshiftapps.com
dynamic:
includes:
- dynamic-plugins.default.yaml
- /dynamic-plugins-root/dynamic-plugins.marketplace.yaml
upstream:
backstage:
extraEnvVars:
- name: NODE_ENV
value: development
----
. Click *Upgrade*

. Add the following configuration for the Extensions UI package in your `redhat-developer-hub-dynamic-plugins` config map, to include the newly added mount point:
+
[source,yaml,subs="+attributes"]
----
data:
dynamic-plugins.yaml: |
includes:
- dynamic-plugins.default.yaml
- /dynamic-plugins-root/dynamic-plugins.marketplace.yaml
plugins:
- package: ./dynamic-plugins/dist/backstage-community-plugin-rbac
- package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace
disabled: false
pluginConfig:
dynamicPlugins:
frontend:
red-hat-developer-hub.backstage-plugin-marketplace:
appIcons:
- name: marketplace
importName: MarketplaceIcon
dynamicRoutes:
- path: /extensions/catalog
importName: DynamicMarketplacePluginRouter
mountPoints:
- mountPoint: application/provider
importName: InstallationContextProvider
- mountPoint: internal.plugins/tab
importName: DynamicMarketplacePluginContent
config:
path: marketplace
title: Catalog
----
. Click *Save*


// .Validation
51 changes: 51 additions & 0 deletions modules/dynamic-plugins/proc-extensions-enabling.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
[id="rhdh-extensions-plugins-enabling_{context}"]
= Enabling plugins installation by using Extensions
Using the extensions UI, the extensions backend now requires additional configuration in the app config, users must explicitly enable the installation and specify the file path from which the plug-in configuration should be read if the file path is missing or invalid installation will be disabled.

[NOTE]
When you visit *Extensions*, before you enable extensions plugin installation, you will see an information message saying that the plugin installation is disabled.

.Prerequisites
* You added a custom Developer Hub application configuration, and have sufficient permissions to modify it.
* You are in development mode.
* You have created the plugin configuration file and added the file path in your `app-config.yaml` file.
* You have the correct RBAC permissions.
// * You have installed the `oc` CLI [TBC].

////
ISSUES
I dont't see a warning message when I access RHDH in production mode - Is this the latest version?
Configure RBAC
Add PVC
////

.Procedure
. Switch to *development* mode by editing your app-config.yaml file as follows:
+
.`app-config.yaml` fragment
[source,yaml]
----
auth:
environment: development # Set to 'development' for development mode
providers:
# ... your providers configured for development mode ...
guest: # Example: Guest provider often has specific settings for dev
dangerouslyAllowOutsideDevelopment: true # Allows guest login outside of dev mode only if explicitly enabled
----
. Create a plugin configuration file to store plugin configuration data when you enable a plugin by using Extensions.
// dynamic-plugins-test.yaml as configmap

. To enable extensions plugin installation, you must update your `app-config.yaml` file as follows:
+
.`app-config.yaml` fragment
[source,yaml]
----
extensions:
installation:
enabled: true
saveToSingleFile:
file: /<path-to>/dynamic-plugins.yaml
----

[NOTE]
If a specific plug-in configuration is not found in the provided file, it will fall back to fetching it from the dynamic artifacts.
34 changes: 34 additions & 0 deletions modules/dynamic-plugins/proc-extensions-installing-plugins.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[id="proc-extensions-installing-plugins_{context}"]
= Installing plugins by using Extensions
You can install and configure plugins by using Extensions.

.Prequisites
* You have configured {product-very-short} to allow plugins installation from *Extensions*.
// * You have configured RBAC to allow the current user to manage plugin configuration.

.Procedure
. Navigate to *Extensions*.
. Select a plugin to install.
. Click on the *Install* button.
+
image::rhdh/extensions-install-plugin-1.png[]
The code editor is displayed which displays the plugin default configuration.
. Update the plugin configuration, if necessary.
+
image::rhdh/extensions-install-plugin-2.png[]
. Click *Install*
. To view the plugins that require a restart, click *View plugins* in the alert message.
+
image::rhdh/extensions-install-plugin-3.png[]
. Restart your {product-very-short} application.

.Verification
. After you restart your {product-very-short} application, navigate to *Extensions*.
. Select the plugin that you have installed.
. The *Actions* button is displayed.
// . Click on *Edit* to view the configuration that you used to install the plugin.





Loading