Skip to content

Commit 2ace147

Browse files
GitHub Actionsjmagak
authored andcommitted
Orchestrator flavor in RHDH Operator
1 parent 4c2910c commit 2ace147

13 files changed

+304
-0
lines changed

artifacts/attributes.adoc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@
115115
: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
116116
:installing-in-air-gap-book-title: Installing {product} in an air-gapped environment
117117
: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
118+
:installing-rhdh-orch-on-ocp-book-title: Installing RHDH with the Orchestrator Plugin on {ocp-short} using the {product} Operator
119+
: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
120+
118121

119122
:integrating-with-github-book-title: Integrating {product} with GitHub
120123
: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: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[id='con-infrastructure-components.adoc_{context}']
2+
= Infrastructure components
3+
4+
To install {product} with the Orchestrator plugin on {ocp-short}, you need the following components to support the plugin and its runtime infrastructure:
5+
6+
* OpenShift Serverless Operator
7+
* Knative Serving
8+
* Knative Eventing
9+
* OpenShift Serverless Logic Operator
10+
11+
The {product} Operator provisions these automatically or you can install them manually using another Operator.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[id='con-orchestrator-plugin-components.adoc_{context}']
2+
= Orchestrator plugin components
3+
4+
The following Orchestrator plugin components are included by default in `dynamic-plugins.default.yaml`:
5+
6+
* `@redhat/backstage-plugin-orchestrator`
7+
* `@redhat/backstage-plugin-orchestrator-backend-dynamic`
8+
* `@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic`
9+
* `@redhat/backstage-plugin-orchestrator-form-widgets`
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[id='con-plugin-dependencies.adoc_{context}']
2+
= Plugin dependencies
3+
4+
To run the Orchestrator plugin instance, you need to install the following dependencies:
5+
6+
* A SonataflowPlatform custom resource created in the namespace of the Backstage CR.
7+
* A set of NetworkPolicies to allow traffic between infra resources, such as knative and serverless logic Operator, created in the namespace of Backstage CR, traffic for monitoring, and intra-namespace traffic.
8+
9+
The orchestrator-backend plugin uses the service `sonataflow-platform-data-index-service`, which is created by the _SonataFlowPlatform_ CR. The service communicates with the SonataFlow platform.
10+
11+
[IMPORTANT]
12+
====
13+
The _sonataflowplatform_ CR contains dataIndex service that requires PostgreSQL database as shown in the following example:
14+
15+
[source,bash]
16+
----
17+
persistence:
18+
postgresql:
19+
secretRef:
20+
name: backstage-psql-secret-{{backstage-name}}
21+
userKey: POSTGRES_USER
22+
passwordKey: POSTGRES_PASSWORD
23+
serviceRef:
24+
name: backstage-psql-{{backstage-name}} # Name of the Backstage Custom Resource (CR)
25+
namespace: {{backstage-ns}} # Namespace where the Backstage CR is created
26+
databaseName: backstage_plugin_orchestrator
27+
----
28+
====
29+
30+
The default implementation of the Orchestrator plugin dependencies uses the following:
31+
32+
* The PostgreSQL database named _backstage_plugin_orchestrator_ created by Backstage for Orchestrator plugin.
33+
* The Secret created by Backstage Operator for the PostgreSQL with *POSTGRES_USER* and *POSTGRES_PASSWORD* keys as the database credentials in the Backstage CR namespace.
34+
* The Service created by Backstage Operator for the PostgreSQL database with the name `backstage-psql-{{backstage-name}}` in the Backstage CR namespace.
35+
36+
For more information about automatically creating 'plugin dependencies' resources when the Backstage 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].
37+
38+
To enable the Backstage Operator to work with the SonataFlow platform, you must grant the appropriate permissions to its ServiceAccount. The Backstage Operator automatically creates the required Role and RoleBinding resource in the `profile/rhdh/plugin-rbac directory` directory when creating the SonataFlowPlatform CR in the Backstage CR namespace.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
3+
[id="proc-install-components-for-orchestrator-plugin.adoc_{context}"]
4+
= Installing the components for the Orchestrator plugin on {ocp-short}
5+
6+
You can install the required components for the Orchestrator plugin on {ocp-short} using the following methods:
7+
8+
.Manual installation
9+
10+
The manual installation is suitable for production environments particularly when you have installed the versions of required components such as when OpenShift Serverless is already in use by other applications.
11+
12+
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] and carry out the following steps to:
13+
14+
* Prepare for OpenShift Serverless installation.
15+
16+
* Install the OpenShift Serverless Operator.
17+
18+
* Install Knative Serving.
19+
20+
* Install Knative Eventing.
21+
22+
* Install the OpenShift Serverless Logic Operator.
23+
24+
.{product-very-short} helper script
25+
26+
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.
27+
28+
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].
29+
30+
.Procedure
31+
. Download the `plugin-infra.sh` script as shown in the following example:
32+
+
33+
[source,bash]
34+
----
35+
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.7/config/profile/rhdh/plugin-infra/plugin-infra.sh # Specify the {product} version in the URL or use main
36+
----
37+
. Run the script as shown in the following example:
38+
+
39+
[source,bash]
40+
----
41+
bash plugin-infra.sh
42+
----
43+
44+
.{product-very-short} Orchestrator Infra Helm Chart
45+
{product-very-short} Orchestrator Infra Helm Chart has the same usage and cautions as the {product-very-short} helper script.
46+
47+
.Procedure
48+
. Install the required components using the Orchestrator infrastructure helm chart.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
3+
[id="proc-install-orchestrator-plugin.adoc_{context}"]
4+
= Installing the Orchestrator plugin
5+
6+
The Orchestrator plugin has the following dynamic plugins:
7+
8+
* Orchestrator-backend
9+
* Orchestrator-frontend
10+
* Orchestrator-scaffolder-backend-module
11+
* Orchestrator-form-widgets
12+
13+
These plugins are included in the default `dynamic-plugins.yaml` file of the `install-dynamic-plugins` container and are disabled by default. You can enable the Orchestrator plugin by referring the `dynamic-plugins-rhdh` ConfigMap file with the following data:
14+
15+
[source,bash]
16+
----
17+
includes:
18+
- dynamic-plugins.default.yaml
19+
plugins:
20+
- package: "@redhat/[email protected]"
21+
disabled: false
22+
- package: "@redhat/[email protected]"
23+
disabled: false
24+
dependencies:
25+
- ref: sonataflow
26+
- package: "@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic@1.6.0"
27+
disabled: false
28+
- package: "@redhat/[email protected]"
29+
disabled: false
30+
----
31+
32+
The following is an example of the complete configuration of the Orchestrator plugin:
33+
34+
[source,bash]
35+
----
36+
apiVersion: v1
37+
kind: ConfigMap
38+
metadata:
39+
name: orchestrator-plugin
40+
data:
41+
dynamic-plugins.yaml: |
42+
includes:
43+
- dynamic-plugins.default.yaml
44+
plugins:
45+
- package: "@redhat/[email protected]"
46+
disabled: false
47+
- package: "@redhat/[email protected]"
48+
disabled: false
49+
dependencies:
50+
- ref: sonataflow
51+
- package: "@redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic@1.6.0"
52+
disabled: false
53+
- package: "@redhat/[email protected]"
54+
disabled: false
55+
56+
apiVersion: v1
57+
kind: ConfigMap
58+
metadata:
59+
name: app-config-rhdh
60+
data:
61+
app-config-rhdh.yaml: |-
62+
auth:
63+
environment: development
64+
providers:
65+
guest:
66+
# using the guest user to query the '/api/dynamic-plugins-info/loaded-plugins' endpoint.
67+
dangerouslyAllowOutsideDevelopment: true
68+
69+
apiVersion: rhdh.redhat.com/v1alpha3
70+
kind: Backstage
71+
metadata:
72+
name: orchestrator
73+
spec:
74+
application:
75+
appConfig:
76+
configMaps:
77+
- name: app-config-rhdh
78+
dynamicPluginsConfigMapName: orchestrator-plugin
79+
----
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+
3+
[id="proc-install-in-air-gapped-environment.adoc_{context}"]
4+
= Installing {product} with the Orchestrator in an air-gapped environment
5+
6+
You can install {product} with the Orchestrator in an air-gapped environment by mirroring required container images, Helm charts, and NPM packages to internal registries.
7+
8+
.Prerequisites
9+
10+
* You have administrative access to the {ocp-short} cluster and mirroring tools such as `oc`, `podman`, or `skopeo`.
11+
* You have access to `npm.registry.redhat.com` from a connected network to pull and mirror Orchestrator plugin tarballs.
12+
* You have mirroring permissions and credentials for all required sources.
13+
14+
.Procedure
15+
16+
. From a connected network, log in to the external registries:
17+
+
18+
[source,bash]
19+
----
20+
podman login registry.redhat.io
21+
podman login registry.access.redhat.com
22+
podman login npm.registry.redhat.com
23+
----
24+
25+
. Identify and mirror all required container images to your internal registry:
26+
+
27+
[source,bash]
28+
----
29+
oc image mirror \
30+
registry.redhat.io/openshift-serverless/*=internal-registry.example.com/openshift-serverless/* \
31+
registry.redhat.io/openshift-knative/*=internal-registry.example.com/openshift-knative/* \
32+
registry.redhat.io/sonataflow/*=internal-registry.example.com/sonataflow/* \
33+
registry.redhat.io/rhdh/*=internal-registry.example.com/rhdh/* \
34+
registry.redhat.io/postgresql/*=internal-registry.example.com/postgresql/*
35+
----
36+
37+
. Mirror the Orchestrator plugin NPM packages to your internal NPM registry:
38+
+
39+
[source,bash]
40+
----
41+
npm pack @redhat/backstage-plugin-orchestrator@<version>
42+
npm pack @redhat/backstage-plugin-orchestrator-backend-dynamic@<version>
43+
npm pack @redhat/backstage-plugin-scaffolder-backend-module-orchestrator-dynamic@<version>
44+
npm pack @redhat/backstage-plugin-orchestrator-form-widgets@<version>
45+
46+
npm publish <package>.tgz --registry https://internal-npm.example.com
47+
----
48+
49+
. Update the `dynamic-plugins` configuration to reference the internal NPM registry:
50+
+
51+
[source,yaml]
52+
----
53+
plugins:
54+
- package: "@redhat/backstage-plugin-orchestrator@<version>"
55+
disabled: false
56+
registry: https://internal-npm.example.com
57+
----
58+
59+
. If using Helm charts, download them from a connected environment and push them to your internal chart repository:
60+
+
61+
[source,bash]
62+
----
63+
helm pull <chart> --version <version>
64+
helm push <chart>.tgz oci://internal-chart-repo.example.com/rhdh
65+
----
66+
67+
. Ensure NetworkPolicies, Role, and RoleBinding resources for the SonataFlow platform are included in your deployment configuration. The {product-short} Operator applies these automatically when the `SonataFlowPlatform` CR is created.
68+
69+
[NOTE]
70+
====
71+
For the connected environment resource requirements, see link:{installing-orch-on-ocp-book-url}[Resource requirements for the Operator-based Orchestrator].
72+
====
73+
74+
.Verification
75+
* Ensure all pods for OpenShift Serverless, Knative Serving/Eventing, SonataFlow, and PostgreSQL start successfully.

titles/orchestrator/artifacts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../artifacts

titles/orchestrator/assemblies

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../assemblies

titles/orchestrator/docinfo.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<title>{title}</title>
2+
<productname>{product}</productname>
3+
<productnumber>{product-version}</productnumber>
4+
<subtitle>{subtitle}</subtitle>
5+
<abstract>
6+
<para>{abstract}</para>
7+
</abstract>
8+
<authorgroup>
9+
<orgname>{company-name} Customer Content Services</orgname>
10+
</authorgroup>
11+
<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

0 commit comments

Comments
 (0)