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 Copy linkLink copied to clipboard!
To configure Red Hat Developer Hub, provision your custom Red Hat Developer Hub config maps and secrets to Red Hat OpenShift Container Platform (RHOCP) before running Red Hat Developer Hub.
On Red Hat OpenShift Container Platform, 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 cluster aimed at containing your Developer Hub instance.
Procedure
For security, store your secrets as environment variables values in an OpenShift Container Platform secret, rather than in clear text in your configuration files. Collect all your secrets in the
secrets.txtfile, with one secret per line inKEY=valueform.Author your custom
app-config.yamlfile. This is the main Developer Hub configuration file. You need a customapp-config.yamlfile to avoid the Developer Hub installer to revert user edits during upgrades. When your customapp-config.yamlfile is empty, Developer Hub is using default values.- To prepare a deployment with the Red Hat Developer Hub Operator on OpenShift Container Platform, you can start with an empty file.
To prepare a deployment with the Red Hat Developer Hub Helm chart, or on Kubernetes, enter the Developer Hub base URL in the relevant fields in your
app-config.yamlfile to ensure proper functionality of Developer Hub. The base URL is what a Developer Hub user sees in their browser when accessing Developer Hub. The relevant fields arebaseUrlin theappandbackendsections, andoriginin thebackend.corssubsection:Example 1.1. Configuring the
baseUrlinapp-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Optionally, enter your configuration such as:
Author your custom
dynamic-plugins.yamlfile to enable plugins. By default, Developer Hub enables a minimal plugin set, and disables plugins that require configuration or secrets, such as the GitHub repository discovery plugin and the Role-based access control (RBAC) plugin.Enable the GitHub repository discovery and the RBAC features:
dynamic.plugins.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Provision your custom configuration files to your OpenShift Container Platform cluster.
Create the <my-rhdh-project> {namespace} aimed at containing your Developer Hub instance.
oc create namespace my-rhdh-project
$ oc create namespace my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow Provision your
app-config.yamlanddynamic-plugins.yamlfiles respectively to themy-rhdh-app-config, anddynamic-plugins-rhdhconfig maps in the <my-rhdh-project> project.oc create configmap my-rhdh-app-config --from-file=app-config.yaml --namespace=my-rhdh-project oc create configmap dynamic-plugins-rhdh --from-file=dynamic-plugins.yaml --namespace=my-rhdh-project
$ oc create configmap my-rhdh-app-config --from-file=app-config.yaml --namespace=my-rhdh-project $ oc create configmap dynamic-plugins-rhdh --from-file=dynamic-plugins.yaml --namespace=my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow Alternatively, create the config maps by using the web console.
Provision your
secrets.txtfile to themy-rhdh-secretssecret in the <my-rhdh-project> project.oc create secret generic my-rhdh-secrets --from-file=secrets.txt --namespace=my-rhdh-project
$ oc create secret generic my-rhdh-secrets --from-file=secrets.txt --namespace=my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow Alternatively, create the secret by using the web console.
1.2. Using the Red Hat Developer Hub Operator to run Developer Hub with your custom configuration Copy linkLink copied to clipboard!
To use the Developer Hub Operator to run Red Hat Developer Hub with your custom configuration, create your Backstage custom resource (CR) 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 administrator has installed the Red Hat Developer Hub Operator in the cluster.
-
You have provisioned your custom config maps and secrets in your
<my-rhdh-project>project.
Procedure
Author your Backstage CR in a
my-rhdh-custom-resource.yamlfile to use your custom config maps and secrets.Minimal
my-rhdh-custom-resource.yamlcustom resource example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-rhdh-custom-resource.yamlcustom resource example with dynamic plugins and RBAC policies config maps, and external PostgreSQL database secrets:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Mandatory fields
- No fields are mandatory. You can create an empty Backstage CR 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-configconfig map:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mount files in the
my-rhdh-app-configandrbac-policiesconfig maps:Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.application.extraEnvs.envsOptionally, enter your additional environment variables that are not secrets, such as your proxy environment variables.
Inject your
HTTP_PROXY,HTTPS_PROXYandNO_PROXYenvironment variables:Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.application.extraEnvs.secretsEnter your environment variables secret name list.
Inject the environment variables in your Red Hat Developer Hub secret:
spec: application: extraEnvs: secrets: - name: <my_product_secrets>spec: application: extraEnvs: secrets: - name: <my_product_secrets>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Inject the environment variables in the Red Hat Developer Hub and
my-rhdh-database-secretssecrets:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Note<my_product_secrets>is your preferred Developer Hub secret name, specifying the identifier for your secret configuration within Developer Hub.spec.application.extraFiles.secretsEnter your certificates files secret name and files list.
Mount the
postgres-crt.pem,postgres-ca.pem, andpostgres-key.keyfiles contained in themy-rhdh-database-certificates-secretssecret:Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.database.enableLocalDbEnable or disable the local PostgreSQL database.
Disable the local PostgreSQL database generation to use an external postgreSQL database:
spec: database: enableLocalDb: falsespec: database: enableLocalDb: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow On a development environment, use the local PostgreSQL database:
spec: database: enableLocalDb: truespec: database: enableLocalDb: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow spec.deployment- Optionally, enter your deployment configuration.
Apply your Backstage CR to start or update your Developer Hub instance:
oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-project
$ oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. Injecting extra files and environment variables into Backstage containers Copy linkLink copied to clipboard!
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
keyandmountPathare not specified: Each key or value is mounted as afilenameor content with asubPath. -
If
keyis specified with or withoutmountPath: The specified key or value is mounted with asubPath. -
If only
mountPathis specified: A directory containing all the keys or values is mounted without asubPath. -
If the
containersfield is not specified: The volume mounts only to thebackstage-backendcontainer. By default, files mount only to thebackstage-backendcontainer. You can also specify other targets, including a list of containers by name (such asdynamic-plugin-installorselectcustomsidecars) or select all containers in the Backstage Pod.
-
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.
Procedure
Apply the configuration to your
Backstage custom resource (CR). The following code block is an example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow where:
spec.application.extraFiles.mountPath-
Specifies the default base mount path for files if no specific
mountPathis set for a resource (for example,/<default_mount_path>). spec.application.extraFiles.configMaps.name-
Mounts all entries from
<configmap_name_all_entries>to the default mount path. spec.application.extraFiles.configMaps.key-
Mounts **only the specified key (for example,
<specific_file_key>.txt) from the ConfigMap. spec.application.extraFiles.configMaps.containers-
Targets all containers (
"*") for mounting. spec.application.extraFiles.configMaps.mountPath-
Overrides the default and mounts all ConfigMap entries as a directory at the specified path (for example,
/<custom_cm_mount_path>). spec.application.extraFiles.secrets.key- Mounts only a specific key from the Secret.
spec.application.extraFiles.secrets.mountPath-
Overrides the default and mounts all Secret entries as a directory at the specified path (for example,
/<custom_secret_mount_path>). spec.application.extraFiles.pvcs.name-
Mounts the PVC to the default mount path, appending the PVC name (for example,
/<default_mount_path>/<pvc_name_default_path>). spec.application.extraFiles.pvcs.mountPath-
Overrides the default and mounts the PVC to the specified path (for example,
/<custom_pvc_mount_path>). spec.application.extraEnvs.configMaps.containers-
Injects the specified ConfigMap key as an environment variable into all containers (
"*"). spec.application.extraEnvs.secrets.name- Injects all keys from the Secret as environment variables into the default container.
spec.application.envs.containers- Targets only the listed container for the static environment variable injection.
The following explicit options are supported:
-
No or an empty field: Mounts only to the
backstage-backendcontainer. -
*(asterisk) as the first and only array element: Mounts to all containers. -
Explicit container names, for example,
install-dynamic-plugins: Mounts only to the listed containers.
Verification
The files are mounted with the following correct paths and container targets:
| Resource | Target type | Path(s) or name(s) | Container(s) |
|---|---|---|---|
|
ConfigMap ( | File |
|
|
|
ConfigMap ( | File |
| All |
|
ConfigMap ( | Directory |
|
|
|
Secret ( | File |
|
|
|
Secret ( | Directory |
|
|
|
PVC ( | Directory |
|
|
|
ConfigMap ( | Env Var |
| All |
|
Secret ( | Env Var |
|
|
|
CRD ( | Env Var |
|
|
1.3. Using the Red Hat Developer Hub Helm chart to run Developer Hub with your custom configuration Copy linkLink copied to clipboard!
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.configMapRefandupstream.backstage.extraAppConfig.filenameparameters as follows:Helm configuration excerpt
upstream: backstage: extraAppConfig: - configMapRef: my-rhdh-app-config filename: app-config.yamlupstream: backstage: extraAppConfig: - configMapRef: my-rhdh-app-config filename: app-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Click Upgrade.
Next steps
- Install Developer Hub by using Helm.
!:previouscontext: