Skip to content

[release-1.9] fix: switch Orchestrator plugins to OCI [RHDHBUGS-2527]#2282

Merged
openshift-merge-bot[bot] merged 1 commit intoredhat-developer:release-1.9from
rm3l:rhdhbugs-2527-rhdh-with-orchestrator-won-t-start-with-1.9-helm-or-operator--1.9
Feb 8, 2026
Merged

[release-1.9] fix: switch Orchestrator plugins to OCI [RHDHBUGS-2527]#2282
openshift-merge-bot[bot] merged 1 commit intoredhat-developer:release-1.9from
rm3l:rhdhbugs-2527-rhdh-with-orchestrator-won-t-start-with-1.9-helm-or-operator--1.9

Conversation

@rm3l
Copy link
Copy Markdown
Member

@rm3l rm3l commented Feb 8, 2026

Manual cherry-pick of #2231

Fixes RHDHBUGS-2527

…eveloper#2231)

* Updating orchestrator npm packages to OCI artifacts

Signed-off-by: Leanne Ahern <lahern@redhat.com>

* Simplify the configuration by leveraging the {{inherit}} option

This option is supported as of RHDH 1.9 and allows inheriting
the version from the dynamic-plugins.default.yaml (coming from
the plugin catalog index image).
This way, we are sure to use the default plugin version.

NOTE: For this to work properly, the plugin refs should match.
So if the orchestrator plugins refs are changed later to quay.io
or registry.access.redhat.com in the DPDY, we should update them
here as well.

* Updating orchestrator packages from ghcr.io to quay.io

Signed-off-by: Leanne Ahern <lahern@redhat.com>

* Correcting quay.io path

Signed-off-by: Leanne Ahern <lahern@redhat.com>

* Regenerate bundle/installer manifests

Co-authored-by: OpinionatedHeron <OpinionatedHeron@users.noreply.github.com>

* Updating quay.io paths to use registry.access.redhat

Signed-off-by: Leanne Ahern <lahern@redhat.com>

---------

Signed-off-by: Leanne Ahern <lahern@redhat.com>
Co-authored-by: Armel Soro <asoro@redhat.com>
Co-authored-by: Gennady Azarenkov <gazarenkov@gmail.com>
Co-authored-by: Nick Boldt <nboldt@redhat.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: OpinionatedHeron <OpinionatedHeron@users.noreply.github.com>
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Feb 8, 2026

@rhdh-qodo-merge
Copy link
Copy Markdown

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

RHDHBUGS-2527 - Partially compliant

Compliant requirements:

  • Update Orchestrator plugin versions/references to be compatible with the Backstage version used in RHDH 1.9.
  • Update the default dynamic plugins configuration locations used by the Operator default dynamic-plugins.yaml.
  • Switch Orchestrator plugins to OCI-based plugin references.
  • Update docs/examples to reflect the correct way to enable Orchestrator plugins.

Non-compliant requirements:

  • Update the default dynamic plugins configuration locations used by Helm chart values.

Requires further human verification:

  • Ensure RHDH 1.9 starts correctly when deployed via Helm or Operator with Orchestrator plugins enabled (readiness probe should pass).
⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
🔒 No security concerns identified
⚡ Recommended focus areas for review

YAML validity

The newly added # TODO comment and the subsequent Argo CD plugin entry appear to have inconsistent indentation within the plugins: list, which can easily render the YAML invalid or change the structure (e.g., making the Argo CD entry no longer part of plugins). Validate the produced YAML parses correctly and that the Argo CD plugin remains a list item under plugins.

  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator:{{inherit}}'
    disabled: false
  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-backend:{{inherit}}'
    disabled: false
    dependencies:
      - ref: sonataflow
  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator:{{inherit}}'
    disabled: false
  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-form-widgets:{{inherit}}'
    disabled: false
# TODO These should be changed to the OCI references
  - package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd
    disabled: false
    dependencies:
Missing config

The change switches Orchestrator plugins from npm dynamic packages (which previously included pluginConfig such as orchestrator.dataIndexService.url and frontend dynamicPlugins wiring) to OCI references without any accompanying configuration. Confirm that these OCI plugins either embed the needed defaults or that configuration is provided elsewhere; otherwise Orchestrator may still fail at runtime or not expose expected routes/tabs.

- package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator:{{inherit}}'
  disabled: true
- package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-backend:{{inherit}}'
  disabled: true
  dependencies:
    - ref: sonataflow
- package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator:{{inherit}}'
  disabled: true
- package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-form-widgets:{{inherit}}'
  disabled: true
📚 Focus areas based on broader codebase context

Incomplete Migration

The orchestrator plugins were switched to OCI, but the Argo CD dynamic plugin entry is still a local ./dynamic-plugins/dist/... path and is explicitly called out with a TODO to move to OCI. This risks the example (and any consumers copying it) diverging from the OCI-based flow and failing in environments that rely on pulling plugins from registries rather than pre-baked local artifacts. (Ref 1)

  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator:{{inherit}}'
    disabled: false
  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-backend:{{inherit}}'
    disabled: false
    dependencies:
      - ref: sonataflow
  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator:{{inherit}}'
    disabled: false
  - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-form-widgets:{{inherit}}'
    disabled: false
# TODO These should be changed to the OCI references
  - package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd
    disabled: false

Reference reasoning: The reference configuration shows Argo CD being provided via an oci://... package (including the overlay naming pattern and plugin configuration), indicating the expected approach is to consume Argo CD from an OCI registry rather than a local dist path. Aligning this example with that OCI pattern removes the TODO gap and matches how related plugins are configured elsewhere.

📄 References
  1. redhat-developer/rhdh/dynamic-plugins.default.yaml [1388-1408]
  2. redhat-developer/rhdh/dynamic-plugins.default.yaml [1346-1351]
  3. redhat-developer/rhdh/dynamic-plugins.default.yaml [1352-1359]
  4. redhat-developer/rhdh/default.packages.yaml [77-87]
  5. redhat-developer/rhdh-chart/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml [1-24]
  6. redhat-developer/rhdh-chart/charts/backstage/ci/with-orchestrator-values.yaml [1-21]
  7. redhat-developer/rhdh-operator/examples/orchestrator-cicd.yaml [1-6]
  8. redhat-developer/rhdh-operator/pkg/model/testdata/rhdh-deployment.yaml [36-58]

@rhdh-qodo-merge rhdh-qodo-merge Bot added enhancement New feature or request Bug fix labels Feb 8, 2026
@rhdh-qodo-merge
Copy link
Copy Markdown

PR Type

Bug fix, Enhancement


Description

  • Switch orchestrator plugins from npm packages to OCI container image references

  • Simplify configuration by using {{inherit}} to inherit versions from dynamic-plugins.default.yaml

  • Update plugin package references to use registry.access.redhat.com OCI registry

  • Remove hardcoded integrity hashes and plugin configuration details


File Walkthrough

Relevant files
Configuration changes
backstage-operator.clusterserviceversion.yaml
Update operator manifest timestamp                                             

bundle/backstage.io/manifests/backstage-operator.clusterserviceversion.yaml

  • Update createdAt timestamp from 2026-01-21 to 2026-02-08
+1/-1     
backstage-operator.clusterserviceversion.yaml
Update RHDH operator manifest timestamp                                   

bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml

  • Update createdAt timestamp from 2026-01-21 to 2026-02-08
+1/-1     
Enhancement
rhdh-default-config_v1_configmap.yaml
Migrate orchestrator plugins to OCI references                     

bundle/rhdh/manifests/rhdh-default-config_v1_configmap.yaml

  • Replace npm package references with OCI container image URIs using
    registry.access.redhat.com
  • Remove hardcoded integrity hashes and detailed pluginConfig sections
  • Use {{inherit}} placeholder to inherit versions from
    dynamic-plugins.default.yaml
  • Simplify plugin configuration to only package name and disabled status
+42/-40 
dynamic-plugins.yaml
Simplify orchestrator plugin configuration                             

config/profile/rhdh/default-config/dynamic-plugins.yaml

  • Replace npm package references with OCI container image URIs
  • Remove integrity hashes and complex pluginConfig definitions
  • Use {{inherit}} for version inheritance from default catalog
  • Reduce configuration from 59 lines to 17 lines
+8/-50   
install.yaml
Update installer manifest with OCI references                       

dist/rhdh/install.yaml

  • Replace npm package references with OCI container image URIs
  • Remove hardcoded integrity hashes and detailed plugin configurations
  • Use {{inherit}} placeholder for version inheritance
  • Simplify plugin definitions in ConfigMap data
+42/-40 
Documentation
orchestrator.md
Update orchestrator documentation examples                             

docs/orchestrator.md

  • Update example plugin configuration to use OCI container image
    references
  • Replace npm package names with registry.access.redhat.com URIs
  • Use {{inherit}} for version inheritance
  • Maintain disabled/enabled status in examples
+10/-10 
orchestrator-cicd.yaml
Update CI/CD orchestrator example configuration                   

examples/orchestrator-cicd.yaml

  • Update plugin package references to OCI container images
  • Use registry.access.redhat.com registry with {{inherit}} version
    placeholder
  • Add TODO comment about updating remaining ArgoCD plugin reference
+7/-6     
orchestrator.yaml
Update orchestrator example to use OCI references               

examples/orchestrator.yaml

  • Replace npm package references with OCI container image URIs
  • Use {{inherit}} for automatic version inheritance
  • Remove commented-out bulk import plugin examples
  • Simplify plugin configuration structure
+4/-9     

@rhdh-qodo-merge
Copy link
Copy Markdown

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Restore missing critical plugin configuration

Restore the pluginConfig section for the orchestrator backend plugins. This
configuration is critical for the plugins to connect to the SonataFlow data
index service and was removed during the update.

config/profile/rhdh/default-config/dynamic-plugins.yaml [31-41]

 plugins:
   - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator:{{inherit}}'
     disabled: true
   - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-backend:{{inherit}}'
     disabled: true
     dependencies:
       - ref: sonataflow
+    pluginConfig:
+      orchestrator:
+        dataIndexService:
+          url: http://sonataflow-platform-data-index-service
   - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator:{{inherit}}'
     disabled: true
+    pluginConfig:
+      orchestrator:
+        dataIndexService:
+          url: http://sonataflow-platform-data-index-service
   - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-form-widgets:{{inherit}}'
     disabled: true
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies that the pluginConfig, which is critical for the orchestrator backend plugins to function, was removed in the migration to OCI references. Restoring it is essential to prevent breaking functionality.

High
Organization
best practice
Add missing dependent Secret

Include a Secret manifest with a safe placeholder BACKEND_SECRET so the example
can be applied out-of-the-box without additional manual steps.

examples/orchestrator.yaml [1-17]

+apiVersion: v1
+kind: Secret
+metadata:
+  name: backend-auth-secret
+stringData:
+  BACKEND_SECRET: "dummy-not-secret"
+---
 apiVersion: v1
 kind: ConfigMap
 metadata:
   name: orchestrator-plugin
 data:
   dynamic-plugins.yaml: |
     plugins:
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator:{{inherit}}'
         disabled: false
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-backend:{{inherit}}'
         disabled: false
         dependencies:
           - ref: sonataflow
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator:{{inherit}}'
         disabled: false
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-form-widgets:{{inherit}}'
         disabled: false

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Add complete, runnable examples by including required dependent resources (e.g., Secrets) with safe placeholder values.

Low
Document placeholder version semantics

Explain what {{inherit}} resolves to (and the default behavior/version source)
so users know how plugin versions are selected and how to override them
explicitly.

docs/orchestrator.md [79-93]

 ```yaml
     includes:
       - dynamic-plugins.default.yaml
     plugins:
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator:{{inherit}}'
         disabled: false
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-backend:{{inherit}}'
         disabled: false
         dependencies:
           - ref: sonataflow
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-scaffolder-backend-module-orchestrator:{{inherit}}'
         disabled: false
       - package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-orchestrator-form-widgets:{{inherit}}'
         disabled: false

+{{inherit}} means the plugin image tag is inherited from the RHDH default dynamic plugin catalog shipped with the Operator/RHDH release. To pin a specific version, replace {{inherit}} with an explicit tag (for example, :1.9.x).
+




`[To ensure code accuracy, apply this suggestion manually]`


<details><summary>Suggestion importance[1-10]: 5</summary>

__

Why: 
Relevant best practice - Keep documentation synchronized with implementation changes by documenting defaults and semantics (e.g., placeholders like version inheritance).

</details></details></td><td align=center>Low

</td></tr><tr><td rowspan=1>General</td>
<td>



<details><summary>Use OCI reference for argocd plugin</summary>

___

**In the <code>orchestrator-cicd.yaml</code> example, replace the local path and <code>TODO</code> for the <br><code>argocd</code> plugin with a proper OCI registry reference.**

[examples/orchestrator-cicd.yaml [20-24]](https://github.com/redhat-developer/rhdh-operator/pull/2282/files#diff-ac5411f4dfc66d64309aa5138c6bb41fe70d1171beeffbd39dcce123eae2e1f8R20-R24)

```diff
-# TODO These should be changed to the OCI references
-- package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd
+- package: 'oci://registry.access.redhat.com/rhdh/red-hat-developer-hub-backstage-plugin-redhat-argocd:{{inherit}}'
   disabled: false
   dependencies:
     - ref: argocd
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why: The suggestion correctly addresses a TODO comment by replacing a local plugin path with a standardized OCI reference, which improves the clarity and usability of the example file.

Low
  • More

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 8, 2026

@rm3l
Copy link
Copy Markdown
Member Author

rm3l commented Feb 8, 2026

Merging as a manual cherry-pick of #2231

/lgtm

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Feb 8, 2026

@rm3l: you cannot LGTM your own PR.

Details

In response to this:

Merging as a manual cherry-pick of #2231

/lgtm

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Feb 8, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: rm3l

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved label Feb 8, 2026
@rm3l rm3l added the lgtm label Feb 8, 2026
@openshift-merge-bot openshift-merge-bot Bot merged commit 87cdfd5 into redhat-developer:release-1.9 Feb 8, 2026
9 checks passed
@rm3l rm3l deleted the rhdhbugs-2527-rhdh-with-orchestrator-won-t-start-with-1.9-helm-or-operator--1.9 branch February 8, 2026 13:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants