Chapter 1. Provisioning and using your custom Red Hat Developer Hub configuration
To configure Red Hat Developer Hub, use these methods, which are widely used to configure a Red Hat OpenShift Container Platform application:
- Use config maps to mount files and directories.
- Use secrets to inject environment variables.
Learn to apply these methods to Developer Hub:
- Provision your custom config maps and secrets to OpenShift Container Platform.
Use your selected deployment method to mount the config maps and inject the secrets:
1.1. Provisioning your custom Red Hat Developer Hub configuration
To configure Red Hat Developer Hub, provision your custom Red Hat Developer Hub config maps and secrets to Red Hat OpenShift Container Platform before running Red Hat Developer Hub.
You can skip this step to run Developer Hub with the default config map and secret. Your changes on this configuration might get reverted on Developer Hub restart.
Prerequisites
-
By using the OpenShift CLI (
oc
), you have access, with developer permissions, to the OpenShift Container Platform cluster aimed at containing your Developer Hub instance.
Procedure
Author your custom
my-rhdh-secrets.txt
file to provision your secrets as environment variables values in an OpenShift Container Platform secret, rather than in clear text in your configuration files. It contains one secret per line inKEY=value
form.Author your custom
app-config.yaml
file. This is the main Developer Hub configuration file.You can start with an empty file to use the default configuration.
Optionally, enter your configuration such as:
Provision your custom configuration files to your OpenShift Container Platform cluster.
Create the <my-rhdh-project> project aimed at containing your Developer Hub instance.
$ oc create namespace my-rhdh-project
Alternatively, create the project by using the web console.
Provision your
app-config.yaml
file to themy-rhdh-app-config
config map in the <my-rhdh-project> project.$ oc create configmap my-rhdh-app-config --from-file=app-config.yaml --namespace=my-rhdh-project
Alternatively, create the config map by using the web console.
Provision your
my-rhdh-secrets.txt
file to themy-rhdh-secrets
secret in the <my-rhdh-project> project.$ oc create secret generic my-rhdh-secrets --from-file=my-rhdh-secrets.txt --namespace=my-rhdh-project
Alternatively, create the secret by using the web console.
Next steps
Consider provisioning additional config maps and secrets:
- To use an external PostgreSQL database, provision your PostgreSQL database secrets.
- To enable dynamic plugins, provision your dynamic plugins config map.
- To configure authorization by using external files, provision your RBAC policies config map.
1.2. Using the Red Hat Developer Hub operator to run Developer Hub with your custom configuration
To use the Developer Hub operator to run Red Hat Developer Hub with your custom configuration, create a Backstage custom resource that:
- Mounts files provisioned in your custom config maps.
- Injects environment variables provisioned in your custom secrets.
Prerequisites
-
By using the OpenShift CLI (
oc
), you have access, with developer permissions, to the OpenShift Container Platform cluster aimed at containing your Developer Hub instance. - Your OpenShift Container Platform administrator has installed the Red Hat Developer Hub Operator in OpenShift Container Platform.
-
You have provisioned your custom config maps and secrets in your
<my-rhdh-project>
project.
Procedure
Author your Backstage custom resource in a
my-rhdh-custom-resource.yaml
file to use your custom config maps and secrets.Example 1.1. Minimal
my-rhdh-custom-resource.yaml
custom resource exampleapiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: my-rhdh-custom-resource spec: application: appConfig: mountPath: /opt/app-root/src configMaps: - name: my-rhdh-app-config extraEnvs: secrets: - name: my-rhdh-secrets extraFiles: mountPath: /opt/app-root/src replicas: 1 route: enabled: true database: enableLocalDb: true
Example 1.2.
my-rhdh-custom-resource.yaml
custom resource example with dynamic plugins and RBAC policies config maps, and external PostgreSQL database secrets.apiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: <my-rhdh-custom-resource> spec: application: appConfig: mountPath: /opt/app-root/src configMaps: - name: my-rhdh-app-config - name: rbac-policies dynamicPluginsConfigMapName: dynamic-plugins-rhdh extraEnvs: secrets: - name: my-rhdh-secrets - name: my-rhdh-database-secrets extraFiles: mountPath: /opt/app-root/src secrets: - name: my-rhdh-database-certificates-secrets key: postgres-crt.pem, postgres-ca.pem, postgres-key.key replicas: 1 route: enabled: true database: enableLocalDb: false
- Mandatory fields
- No fields are mandatory. You can create an empty Backstage custom resource and run Developer Hub with the default configuration.
- Optional fields
spec.application.appConfig.configMaps
- Enter your config map name list.
.Mount files in the
my-rhdh-app-config
config map.spec: application: appConfig: mountPath: /opt/app-root/src configMaps: - name: my-rhdh-app-config
Example 1.3. Mount files in the
my-rhdh-app-config
andrbac-policies
config maps.spec: application: appConfig: mountPath: /opt/app-root/src configMaps: - name: my-rhdh-app-config - name: rbac-policies
spec.application.extraEnvs.envs
Optionally, enter your additional environment variables that are not secrets, such as your proxy environment variables.
Example 1.4. Inject your
HTTP_PROXY
,HTTPS_PROXY
andNO_PROXY
environment variables.spec: application: extraEnvs: envs: - name: HTTP_PROXY value: 'http://10.10.10.105:3128' - name: HTTPS_PROXY value: 'http://10.10.10.106:3128' - name: NO_PROXY value: 'localhost,example.org'
spec.application.extraEnvs.secrets
Enter your environment variables secret name list.
Example 1.5. Inject the environment variables in your
my-rhdh-secrets
secretspec: application: extraEnvs: secrets: - name: my-rhdh-secrets
Example 1.6. Inject the envvironment variables in the
my-rhdh-secrets
andmy-rhdh-database-secrets
secretsspec: application: extraEnvs: secrets: - name: my-rhdh-secrets - name: my-rhdh-database-secrets
spec.application.extraFiles.secrets
Enter your certificates files secret name and files list.
Mount the
postgres-crt.pem
,postgres-ca.pem
, andpostgres-key.key
files contained in themy-rhdh-database-certificates-secrets
secretspec: application: extraFiles: mountPath: /opt/app-root/src secrets: - name: my-rhdh-database-certificates-secrets key: postgres-crt.pem, postgres-ca.pem, postgres-key.key
spec.database.enableLocalDb
Enable or disable the local PostgreSQL database.
Disable the local PostgreSQL database generation to use an external postgreSQL database
spec: database: enableLocalDb: false
On a development environment, use the local PostgreSQL database
spec: database: enableLocalDb: true
spec.deployment
- Optionally, enter your deployment configuration.
Apply your Backstage custom resource to start or update your Developer Hub instance.
$ oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-project
1.2.1. Mounting additional files in your custom configuration using the Red Hat Developer Hub operator
You can use the Developer Hub Operator to mount extra files, such as a ConfigMap or Secret, to the container in a preferred location.
The mountPath
field specifies the location where a ConfigMap or Secret is mounted. The behavior of the mount, whether it includes or excludes a subPath
, depends on the specification of the key
or mountPath
fields.
-
If
key
andmountPath
are not specified: Each key or value is mounted as afilename
or content with asubPath
. -
If
key
is specified with or withoutmountPath
: The specified key or value is mounted with asubPath
. -
If only
mountPath
is specified: A directory containing all the keys or values is mounted without asubPath
.
-
OpenShift Container Platform does not automatically update a volume mounted with
subPath
. By default, the RHDH operator monitors these ConfigMaps or Secrets and refreshes the RHDH Pod when changes occur. - For security purposes, Red Hat Developer Hub does not give the Operator Service Account read access to Secrets. As a result, mounting files from Secrets without specifying both mountPath and key is not supported.
Prerequisites
-
You have developer permissions to access the OpenShift Container Platform cluster containing your Developer Hub instance using the OpenShift CLI (
oc
). - Your OpenShift Container Platform administrator has installed the Red Hat Developer Hub Operator in OpenShift Container Platform.
Procedure
In OpenShift Container Platform, create your ConfigMap or Secret with the following YAML codes:
Example 1.7. Minimal
my-project-configmap
ConfigMap exampleapiVersion: v1 kind: ConfigMap metadata: name: my-project-configmap data: file11.txt: | My file11 content file 12.txt: | My file12 content
Example 1.8. Minimal
my-rhdh-secrets
Secret exampleapiVersion: v1 kind: Secret metadata: name: my-rhdh-secrets StringData: secret11.txt: | secret-content
For more information, see Provisioning and using your custom Red Hat Developer Hub configuration.
Set the value of the
configMaps name
to the name of the ConfigMap orsecrets name
to the name of the Secret in yourBackstage
CR. For example:spec: application: extraFiles: mountPath: /my/path configMaps: - name: my-project-configmap key: file12.txt mountPath: /my/my-rhdh-config-map/path secrets: - name: my-rhdh-secrets key: secret11.txt mountPath: /my/my-rhdh-secret/path
1.3. Using the Red Hat Developer Hub Helm chart to run Developer Hub with your custom configuration
You can use the Red Hat Developer Hub Helm chart to add a custom application configuration file to your OpenShift Container Platform instance.
Prerequisites
- By using the OpenShift Container Platform web console, you have access with developer permissions, to an OpenShift Container Platform project named <my-rhdh-project>, aimed at containing your Developer Hub instance.
-
You have uploaded your custom configuration files and secrets in your
<my-rhdh-project>
project.
Procedure
Configure Helm to use your custom configuration files in Developer Hub.
- Go to the Helm tab to see the list of Helm releases.
- Click the overflow menu on the Helm release that you want to use and select Upgrade.
- Use the YAML view to edit the Helm configuration.
Set the value of the
upstream.backstage.extraAppConfig.configMapRef
andupstream.backstage.extraAppConfig.filename
parameters as follows:Helm configuration excerpt
upstream: backstage: extraAppConfig: - configMapRef: my-rhdh-app-config filename: app-config.yaml
- Click Upgrade.
Next steps
- Install Developer Hub by using Helm.