Skip to content

Commit a63707d

Browse files
jmagakGitHub Actions
andauthored
RHIDP-7556: Orchestrator flavor in RHDH Operator (#1305)
* Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Orchestrator flavor in RHDH Operator * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions * Apply suggestions --------- Co-authored-by: GitHub Actions <[email protected]>
1 parent 8415c9d commit a63707d

16 files changed

+480
-0
lines changed

artifacts/attributes.adoc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@
120120
:installing-on-gke-book-url: https://docs.redhat.com/en/documentation/red_hat_developer_hub/{product-version}/html-single/installing_red_hat_developer_hub_on_google_kubernetes_engine/index
121121
:installing-in-air-gap-book-title: Installing {product} in an air-gapped environment
122122
:installing-in-air-gap-book-url: https://docs.redhat.com/en/documentation/red_hat_developer_hub/{product-version}/html-single/installing_red_hat_developer_hub_in_an_air-gapped_environment/index
123+
:installing-rhdh-orch-on-ocp-book-title: Installing RHDH with the Orchestrator Plugin on {ocp-short} using the {product} Operator
124+
:installing-rhdh-orch-on-ocp-book-url: https://docs.redhat.com/en/documentation/red_hat_developer_hub/{product-version}/html-single/installing_rhdh_with_orchestrator_plugin_on_{ocp-short}_using_operator_in_an_air-gapped_environment/index
125+
123126

124127
:integrating-with-github-book-title: Integrating {product} with GitHub
125128
:integrating-with-github-book-url: https://docs.redhat.com/en/documentation/red_hat_developer_hub/{product-version}/html-single/integrating_red_hat_developer_hub_with_github/index
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
:_mod-docs-content-type: ASSEMBLY
2+
3+
ifndef::context[]
4+
[id="install-rhdh-orchestrator.adoc"]
5+
endif::[]
6+
ifdef::context[]
7+
[id="assembly-install-rhdh-orchestrator"]
8+
endif::[]
9+
:context: install-rhdh-orchestrator
10+
= Installing {product} with Orchestrator
11+
12+
To install {product}, use one of the following methods:
13+
14+
* The {product} Operator
15+
* The {product} Helm chart
16+
17+
// {product} Operator
18+
include::modules/orchestrator/proc-install-orchestrator-plugin.adoc[leveloffset=+1]
19+
20+
// {product} Helm chart
21+
include::modules/orchestrator/proc-install-rhdh-with-orchestrator-helm-cli.adoc[leveloffset=+1]
22+
23+
include::modules/orchestrator/proc-install-rhdh-with-orchestrator-helm-webui.adoc[leveloffset=+1]
24+
25+
include::modules/orchestrator/ref-orchestrator-resource-limits.adoc[leveloffset=+1]
26+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
:_mod-docs-content-type: ASSEMBLY
2+
3+
ifndef::context[]
4+
[id="assembly-orchestrator-rhdh.adoc"]
5+
endif::[]
6+
ifdef::context[]
7+
[id="assembly-orchestrator-rhdh"]
8+
endif::[]
9+
:context: orchestrator-rhdh
10+
= About Orchestrator in {product}
11+
12+
You can streamline and automate your work by using the Orchestrator in {product}. It enables you to:
13+
14+
* Design, run, and monitor workflows to simplify multi-step processes across applications and services.
15+
* Standardize onboarding, migration, and integration workflows to reduce manual effort and improve consistency.
16+
* Extend {product-very-short} with enterprise-grade Orchestration features to support collaboration and scalability.
17+
18+
[NOTE]
19+
====
20+
Orchestrator currently supports only {ocp-short}; it is not available on AKS, EKS, or GKE.
21+
====
22+
23+
To start using Orchestrator in {product-very-short}, you must:
24+
25+
* Install the required infrastructure components, such as Red Hat OpenShift Serverless Operator, Knative Serving, Knative Eventing, and OpenShift Serverless Logic Operator
26+
* Configure your {product-custom-resource-type} custom resource (CR) for Orchestrator
27+
* Import the Orchestrator software templates into the {product} catalog
28+
29+
// orchestrator architecture
30+
include::modules/orchestrator/con-supported-architecture-for-orchestrator.adoc[leveloffset=+1]
31+
32+
// provisioning plugin dependencies
33+
include::modules/orchestrator/con-orchestrator-plugin-dependencies.adoc[leveloffset=+1]
34+
35+
// installing the components for the orchestrator plugin
36+
include::modules/orchestrator/proc-install-components-for-orchestrator-plugin.adoc[leveloffset=+1]
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
:_mod-docs-content-type: CONCEPT
2+
[id="con-orchestrator-plugin-dependencies_{context}"]
3+
= Orchestrator Plugin dependencies
4+
5+
The Orchestrator plugin in {product-very-short} requires components such as SonataFlow and supporting network policies to run. When you enable the plugin in your {product-custom-resource-type} custom resource (CR), the Operator automatically provisions these dependencies for you:
6+
7+
* A `SonataflowPlatform` CR
8+
* `NetworkPolicies` that allow traffic between infrastructure resources (Knative, Serverless Logic Operator), monitoring traffic, and intra-namespace traffic
9+
10+
[NOTE]
11+
====
12+
Orchestrator currently supports only {ocp-short}; it is not available on AKS, EKS, or GKE.
13+
====
14+
15+
The `orchestrator-backend` plugin uses the `sonataflow-platform-data-index-service`, which the `SonataFlowPlatform` CR creates to communicate with the SonataFlow platform.
16+
17+
The Operator resolves the dependency reference SonataFlow against the `sonataflow.yaml` manifest included in its profile configuration (`config/profile/rhdh/plugin-deps/sonataflow.yaml`) and applies it to create the required resources.
18+
19+
The Operator automatically applies the `sonataflow.yaml` manifest, creating the `SonataFlowPlatform` CR and required `NetworkPolicy` resources in the {product-custom-resource-type} CR namespace.
20+
21+
[IMPORTANT]
22+
====
23+
The `SonataFlowPlatform` CR contains Data Index service that requires PostgreSQL database as shown in the following example:
24+
+
25+
[source,yaml,subs="+quotes,+attributes"]
26+
----
27+
persistence:
28+
postgresql:
29+
secretRef:
30+
name: backstage-psql-secret-{{backstage-name}}
31+
userKey: POSTGRES_USER
32+
passwordKey: POSTGRES_PASSWORD
33+
serviceRef:
34+
name: backstage-psql-{{backstage-name}} # # Namespace where the {product-custom-resource-type} CR is created
35+
namespace: {{backstage-ns}} # Namespace where the {product-custom-resource-type} (CR) is created
36+
databaseName: backstage_plugin_orchestrator
37+
----
38+
====
39+
40+
By default, the Orchestrator plugin dependencies use the following:
41+
42+
* The PostgreSQL database named `backstage_plugin_orchestrator` created by {product-custom-resource-type}
43+
* A Secret created by {product-custom-resource-type} Operator for the PostgreSQL with `POSTGRES_USER` and `POSTGRES_PASSWORD` keys as the database credentials in the {product-custom-resource-type} CR namespace.
44+
* A Service created by {product-custom-resource-type} Operator for the PostgreSQL database with the name `backstage-psql-{{backstage-name}}` in the {product-custom-resource-type} CR namespace.
45+
46+
For more information about automatic plugin dependency creation when the {product-custom-resource-type} CR is applied to the cluster, see link:https://github.com/redhat-developer/rhdh-operator/blob/release-1.7/docs/dynamic-plugins.md#dynamic-plugins-dependency-management[Dynamic plugins dependency management].
47+
48+
[NOTE]
49+
====
50+
To enable the {product-custom-resource-type} Operator to work with the SonataFlow platform, its `ServiceAccount` must have the appropriate permissions.
51+
52+
The Operator automatically creates the required Role and _RoleBinding_ resource in `profile/rhdh/plugin-rbac` directory.
53+
====
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
:_mod-docs-content-type: CONCEPT
2+
[id="con-supported-architecture-for-orchestrator_{context}"]
3+
= Supported architecture for Orchestrator
4+
5+
You can use Orchestrator to design, run, and monitor workflows that automate key tasks. It builds on components like SonataFlow and OpenShift Serverless, which provide the runtime environment and event-driven capabilities needed to power your workflows.
6+
7+
To help you get started quickly, the following Orchestrator plugin components are included by default in the `dynamic-plugins.default.yaml` file:
8+
9+
* `"@redhat/backstage-plugin-orchestrator"`
10+
* `"@redhat/backstage-plugin-orchestrator-backend-dynamic"`
11+
* `"@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic"`
12+
* `"@redhat/backstage-plugin-orchestrator-form-widgets"`
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
[id="proc-install-components-for-orchestrator-plugin_{context}"]
3+
= Installing the components for the Orchestrator plugin on {ocp-short}
4+
5+
To run the Orchestrator plugin successfully on {ocp-short}, you must install components that provide the runtime environment and the dependencies that the plugin requires.
6+
7+
.Prerequisites
8+
9+
* To install the Orchestrator plugin on {ocp-short}, you require the following components installed:
10+
11+
** OpenShift Serverless Operator
12+
** Knative Serving
13+
** Knative Eventing
14+
** OpenShift Serverless Logic Operator
15+
+
16+
[NOTE]
17+
====
18+
The {product} Operator provisions these components automatically. Alternatively, you can install them manually by using another Operator.
19+
====
20+
21+
.Procedure
22+
23+
To install components (Operators) that provide the dependencies required by the Orchestrator plugin on {ocp-short}, use the following methods:
24+
25+
* Manual installation
26+
* {product-very-short} helper script
27+
* {product-very-short} Orchestrator Infra Helm Chart
28+
+
29+
These components enable the creation of the `SonataFlowPlatform` custom resource and several supporting `NetworkPolicy` resources.
30+
31+
.Manual installation
32+
33+
Use manual installation for production environments. Choose this method when you have installed the required components versions, such as when other applications are using OpenShift Serverless.
34+
35+
For more information on preparing the required infrastructure, see link:https://docs.redhat.com/en/documentation/red_hat_openshift_serverless/1.36[Red Hat OpenShift Serverless] to do the following:
36+
37+
* Prepare for OpenShift Serverless installation
38+
39+
* Install the OpenShift Serverless Operator
40+
41+
* Install Knative Serving
42+
43+
* Install Knative Eventing
44+
45+
* Install the OpenShift Serverless Logic Operator
46+
47+
.{product-very-short} helper script
48+
49+
You can install the OpenShift Serverless infrastructure for the Orchestrator plugin using the {product-very-short} helper script. You can use the script in empty clusters, however, use with caution in production clusters because the script installs Operators with automatic upgrades and default settings, which can introduce unplanned changes, version conflicts, or policy misalignments.
50+
You can install the OpenShift Serverless infrastructure for the Orchestrator plugin in empty clusters by using the {product-very-short} helper script.
51+
52+
For more information on controlling the installation of the Operators, see link:https://olm.operatorframework.io/docs/tasks/install-operator-with-olm/[Install your Operator with OLM].
53+
54+
[WARNING]
55+
====
56+
This method of installation is not suitable for production clusters. The {product-very-short} helper script installs Operators with automatic upgrades and default settings, which can introduce unplanned changes, version conflicts, or policy misalignments.
57+
====
58+
59+
.Procedure
60+
. Download the `plugin-infra.sh` script as shown in the following example:
61+
+
62+
[code,terminal]
63+
----
64+
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-${PRODUCT_VERSION}/config/profile/rhdh/plugin-infra/plugin-infra.sh # Specify the {product} version in the URL or use main
65+
----
66+
. Run the script as shown in the following example:
67+
+
68+
[source,shell]
69+
----
70+
$ ./plugin-infra.sh
71+
----
72+
73+
.{product-very-short} Orchestrator Infra Helm Chart
74+
You can use {product-very-short} Orchestrator Infra Helm Chart to install components for the Orchestrator plugins in empty clusters.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
[id="proc-install-orchestrator-plugin_{context}"]
3+
= Installing the Orchestrator plugin using Operator
4+
5+
You can enable the Orchestrator plugin in {product-very-short} by configuring dynamic plugins in your {product-custom-resource-type} custom resource (CR).
6+
7+
.Prerequisites
8+
* You have installed {product-very-short} on {ocp-short}.
9+
* You have access to edit or create ConfigMaps in the namespace where the {product-custom-resource-type} CR is deployed.
10+
11+
.Procedure
12+
. Identify the Orchestrator plugin dynamic plugins that are included by default in the default `dynamic-plugins.yaml` file of the `install-dynamic-plugins` container:
13+
+
14+
* `@redhat/backstage-plugin-orchestrator` (frontend)
15+
* `@redhat/backstage-plugin-orchestrator-backend-dynamic` (backend)
16+
* `@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic`
17+
* `@redhat/backstage-plugin-orchestrator-form-widgets`
18+
19+
. To enable the Orchestrator plugin, update the ConfigMap file with the following data:
20+
+
21+
[source,yaml,subs="+attributes,+quotes"]
22+
+
23+
----
24+
includes:
25+
- dynamic-plugins.default.yaml
26+
plugins:
27+
- package: "@redhat/[email protected]"
28+
disabled: false
29+
- package: "@redhat/[email protected]"
30+
disabled: false
31+
dependencies:
32+
- ref: sonataflow
33+
- package: "@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic@1.6.0"
34+
disabled: false
35+
- package: "@redhat/backstage-plugin-orchestrator-form-widgets@${ORCHESTRATOR_PLUGIN_VERSION}"
36+
disabled: false
37+
----
38+
39+
.Example: Complete configuration of the Orchestrator plugin
40+
[source,yaml]
41+
----
42+
apiVersion: v1
43+
kind: ConfigMap
44+
metadata:
45+
name: orchestrator-plugin
46+
data:
47+
dynamic-plugins.yaml: |
48+
includes:
49+
- dynamic-plugins.default.yaml
50+
plugins:
51+
- package: "@redhat/[email protected]"
52+
disabled: false
53+
- package: "@redhat/[email protected]"
54+
disabled: false
55+
dependencies:
56+
- ref: sonataflow
57+
- package: "@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic@1.6.0"
58+
disabled: false
59+
- package: "@redhat/[email protected]"
60+
disabled: false
61+
---
62+
apiVersion: rhdh.redhat.com/v1alpha3
63+
kind: Backstage
64+
metadata:
65+
name: orchestrator
66+
spec:
67+
application:
68+
appConfig:
69+
configMaps:
70+
- name: app-config-rhdh
71+
dynamicPluginsConfigMapName: orchestrator-plugin
72+
----
73+
74+
.Verification
75+
* In the {product-very-short} console, confirm that the Orchestrator frontend and backend features are available.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
[id="proc-install-rhdh-with-orchestrator-helm-cli_{context}"]
3+
= Installing {product} ({product-very-short}) on {ocp-short} with the Orchestrator using the Helm CLI
4+
5+
You can install {product} ({product-very-short}) on {ocp-short} with the Orchestrator by using the Helm CLI. The installation automatically enables the required dynamic plugins and integrates workflow infrastructure.
6+
7+
.Prerequisites
8+
9+
* You are logged in as an administrator and have access to the {product} Helm chart repository.
10+
* You can install the necessary infrastructures resources, such as SonataFlow, alongside {product-very-short} in the same namespace.
11+
+
12+
This is a one-off requirement and must be completed before enabling the Orchestrator plugin.
13+
14+
.Procedure
15+
16+
. As an administrator, install relevant cluster-wide resources.
17+
+
18+
[source,yaml,subs="+quotes,+attributes"]
19+
----
20+
helm repo add openshift-helm-charts https://charts.openshift.io/
21+
helm install `<release_name>` openshift-helm-charts/redhat-developer-hub-orchestrator-infra
22+
----
23+
+
24+
[IMPORTANT]
25+
====
26+
You must be a cluster administrator to install the `redhat-developer-hub-orchestrator-infra` Helm chart because it deploys additional cluster-scoped OpenShift Serverless and OpenShift Serverless Logic Operators. As an administrator, you need to manually approve the install plans for OpenShift Serverless and Serverless Logic Operators.
27+
====
28+
29+
. Install the Backstage chart with the orchestrator enabled as shown in the following example:
30+
+
31+
[source,terminal,subs="attributes+"]
32+
----
33+
$ helm install <release_name> openshift-helm-charts/redhat-developer-hub --version {product-chart-version} \
34+
--set orchestrator.enabled=true
35+
----
36+
37+
. (Optional) Enable *Notifications* and *Signals* plugins by adding them to the `global.dynamic.plugins` list in your `values.yaml` file as shown in the following example:
38+
+
39+
[source,yaml]
40+
----
41+
global:
42+
dynamic:
43+
plugins:
44+
- disabled: false
45+
package: "./dynamic-plugins/dist/backstage-plugin-notifications"
46+
- disabled: false
47+
package: "./dynamic-plugins/dist/backstage-plugin-signals"
48+
- disabled: false
49+
package: "./dynamic-plugins/dist/backstage-plugin-notifications-backend-dynamic"
50+
- disabled: false
51+
package: "./dynamic-plugins/dist/backstage-plugin-signals-backend-dynamic"
52+
----
53+
54+
. (Optional) You can disable the Serverless Logic and Serverless Operators individually or together by setting their values to `false`, as shown in the following example:
55+
+
56+
[source,terminal,subs="attributes+"]
57+
----
58+
helm install <release_name> openshift-helm-charts/redhat-developer-hub \
59+
--version {product-chart-version} \
60+
--set orchestrator.enabled=true \
61+
--set orchestrator.serverlessOperator=false \
62+
--set orchestrator.serverlessLogicOperator=false
63+
----
64+
65+
. (Optional) If you are using an external database, add the following configuration under `orchestrator.sonataflowPlatform` in your `values.yaml` file:
66+
+
67+
[source,yaml]
68+
----
69+
orchestrator:
70+
sonataflowPlatform:
71+
externalDBsecretRef: "<cred-secret>"
72+
externalDBName: "<database_name>" # The name of the user-configured existing database (Not the database that the orchestrator and sonataflow resources use).
73+
externalDBHost: "<database_host>"
74+
externalDBPort: "<database_port>"
75+
----
76+
+
77+
[NOTE]
78+
====
79+
This step only configures the Orchestrators use of an external database. To configure {product} to use an external PostgreSQL instance, follow the steps in link:{configuring-book-url}#proc-configuring-postgresql-instance-using-helm_configuring-external-postgresql-databases[Configuring a PostgreSQL instance using Helm].
80+
====
81+
82+
.Verification
83+
84+
. Verify that the Orchestrator plugin is visible in the {product} UI.
85+
86+
. Create and run sample workflows to confirm the orchestration is functioning correctly.

0 commit comments

Comments
 (0)