Getting started with Red Hat Developer Hub on Red Hat OpenShift Container Platform for the platform engineer
As a platform engineer, prepare your IT infrastructure including Red Hat OpenShift Container Platform and required external components, and run your first Red Hat Developer Hub (RHDH) instance in production.
Abstract
- 1. Installing the Red Hat Developer Hub Operator
- 2. Preparing your external services
- 3. Provisioning your custom Red Hat Developer Hub configuration
- 4. Using the Red Hat Developer Hub Operator to run Developer Hub with your custom configuration
- 5. Customizing the theme mode for your Developer Hub instance
- 6. Managing role-based access controls (RBAC) using the Red Hat Developer Hub Web UI
As a platform engineer, prepare your IT infrastructure including Red Hat OpenShift Container Platform and required external components, and run your first Red Hat Developer Hub (RHDH) instance in production with an adapted secure, efficient, and resilient configuration.
With the default configuration, Developer Hub runs with a minimal feature set that does not require to securely connect to external services such as an identity provider, a Git provider, and external PostgreSQL and Redis databases. Therefore using critical features require configuration:
- For resiliency
- Use an external PostgreSQL database.
- Enable high-availability.
- For performance
- Enable assets caching to an external Redis database.
- For security
- Use secure connections to your external services.
- Provision users and enable authentication.
- Enable role-based access control, and configure the permission policy by using the Web UI.
- For your environment
- Enable GitHub repository discovery.
- Customize Developer Hub appearance with your logo.
1. Installing the Red Hat Developer Hub Operator
As an administrator, you can install the Red Hat Developer Hub Operator. Authorized users can use the Operator to install Red Hat Developer Hub on Red Hat OpenShift Container Platform (OpenShift Container Platform) and supported Kubernetes platforms. For more information on supported platforms and versions, see the Red Hat Developer Hub Life Cycle page.
Containers are available for the following CPU architectures:
-
AMD64 and Intel 64 (
x86_64
)
Prerequisites
- You are logged in as an administrator on the OpenShift Container Platform web console.
- You have configured the appropriate roles and permissions within your project to create or access an application. For more information, see the Red Hat OpenShift Container Platform documentation on Building applications.
- You have installed Red Hat OpenShift Container Platform 4.17 or later.
Procedure
- In the navigation menu of the OpenShift Container Platform console, click Operators > OperatorHub.
- In the Filter by keyword box, enter Developer Hub and click the Red Hat Developer Hub Operator card.
- On the Red Hat Developer Hub Operator page, read the information about the Operator and click Install to open the Install Operator page.
After the Operator is successfully installed, provision your custom configuration:
Before you create a Developer Hub instance, you must create the required config map and Secret resources in your project. These include the
baseUrl
and service-to-service authentication secrets.For detailed steps, see Provisioning your custom Red Hat Developer Hub configuration.
From the Update channel drop-down menu, select the update channel that you want to use, for example, fast or fast-1.7.
ImportantThe `fast channel includes all of the updates available for a particular version. Any update might introduce unexpected changes in your Red Hat Developer Hub deployment. Check the release notes for details about any potentially breaking changes.
The fast-1.7 channel only provides z-stream updates, for example, updating from version 1.7.1 to 1.7.2. If you want to update the Red Hat Developer Hub y-version in the future, for example, updating from 1.7 to 1.7, you must switch to the fast-1.7 channel manually.
- From the Version drop-down menu, select the version of the Red Hat Developer Hub Operator that you want to install. The default version is the latest version available in the selected channel.
Select the Operator Installation mode.
NoteThe All namespaces on the cluster (default) option is selected by default. The Specific namespace on the cluster option is not currently supported.
In the Installed Namespace field, do one of the following actions:
- Select Operator recommended Namespace to create and use the rhdh-operator namespace. This option is selected by default.
Select Select a Namespace to use an alternative namespace.
From the Select Project drop-down menu, do one of the following actions:
- Select an existing project.
Select Create Project to create a new project for the Operator.
On the Create Project dialog, enter text into the required fields and click Create.
ImportantFor enhanced security, better control over the Operator lifecycle, and preventing potential privilege escalation, install the Red Hat Developer Hub Operator in a dedicated default
rhdh-operator
namespace. You can restrict other users' access to the Operator resources through role bindings or cluster role bindings.You can also install the Operator in another namespace by creating the necessary resources, such as an Operator group. For more information, see Installing global Operators in custom namespaces.
However, if the Red Hat Developer Hub Operator shares a namespace with other Operators, then it shares the same update policy as well, preventing the customization of the update policy. For example, if one Operator is set to manual updates, the Red Hat Developer Hub Operator update policy is also set to manual. For more information, see Colocation of Operators in a namespace.
Select the Update approval method for the Operator.
- If you select the Automatic option, the Operator is updated without requiring manual confirmation.
- If you select the Manual option, a notification opens when a new update is released in the update channel. The update must be manually approved by an administrator before installation can begin.
Click Install.
NoteIf you selected a Manual approval strategy, the upgrade status of the subscription remains Upgrading until you review and approve the install plan. After you click Approve on the Install Plan page, the subscription upgrade status changes to Up to date.
If you selected an Automatic approval strategy, the upgrade status should resolve to Up to date without intervention.
Verification
- Immediately after the Operator is installed, the dialog box on the OperatorHub page displays the Installed operator: ready for use message.
From the dialog box, do one of the following actions:
- Click View Operator to open the Operator details page for the Red Hat Developer Hub Operator.
Click View all installed operators to open the Installed Operators page.
- From the list of installed Operators, locate the Red Hat Developer Hub Operator name and details.
- Click Red Hat Developer Hub Operator to open the Operator details page for the Red Hat Developer Hub Operator.
2. Preparing your external services
Red Hat Developer Hub relies on external services. Prepare the required external services.
- PostgreSQL database
- Developer Hub stores data in a PostgreSQL database. For resiliency, use an external database and include it in your disaster recovery plan.
- Redis cache
- For efficiency, Developer Hub caches plugin and Techdocs assets when your provide a Redis cache server.
- GitHub API access
- Provide credentials to a GitHub app to enable access to the GitHub API for repository discovery.
- Connection to your identity provider
- Provide credentials to your identity provider to enable user provisioning and authentication.
Procedure
Get your external PostgreSQL database connection strings and certificates.
- postgres-host
- Your PostgreSQL instance Domain Name System (DNS) or IP address.
- postgres-port
- Your PostgreSQL instance port number, such as 5432.
- postres-username
- The user name to connect to your PostgreSQL instance.
- postgres-password
- The password to connect to your PostgreSQL instance.
- postgres-ca.pem, postgres-key.key, postgres-crt.pem
For security, use TLS certificates to secure the connection to the database.
-
Get your Redis cache server connection string, such as
rediss://user:pass@cache.example.com:6379
. For security, consider using arediss
secure server connection. To allow Developer Hub to access the GitHub API for repository, create a GitHub App. Opt for a GitHub App instead of an OAuth app to use fine-grained permissions, gain more control over which repositories the application can access, and use short-lived tokens.
Register a GitHub App with the following configuration:
- GitHub App name
-
Enter a unique name identifying your GitHub App, such as
integrating-with-rhdh-<GUID>
. - Homepage URL
-
Enter your Developer Hub URL:
https://<my_developer_hub_url>
. - Authorization callback URL
-
Enter your Developer Hub authentication backend URL:
https://<my_developer_hub_url>/api/auth/github/handler/frame
. - Webhook
- Clear "Active", as this is not needed for authentication and catalog providers.
- App permissions
- Select permissions to define the level of access for the app. Adapt permissions to your needs:
-
Get your Redis cache server connection string, such as
- Reading software components
- Contents
-
Read-only
- Commit statuses
-
Read-only
- Reading organization data
- Members
-
Read-only
- Publishing software templates
Set permissions if you intend to use the same GitHub App for software templates.
- Administration
-
Read & write
(for creating repositories) - Contents
-
Read & write
- Metadata
-
Read-only
- Pull requests
-
Read & write
- Issues
-
Read & write
- Workflows
-
Read & write
(if templates include GitHub workflows) - Variables
-
Read & write
(if templates include GitHub Action Repository Variables) - Secrets
-
Read & write
(if templates include GitHub Action Repository Secrets) - Environments
Read & write
(if templates include GitHub Environments)- Organization permissions
- Members
Read-only
- Where can this GitHub App be installed?
Select
Only on this account
.- In the General → Clients secrets section, click Generate a new client secret.
- In the General → Private keys section, click Generate a private key.
- In the Install App tab, choose an account to install your GitHub App on.
- Save the following values for the next step:
- App ID
- Client ID
- Client secret
- Private key
3. 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. -
You have the connection string to an active Redis server, such as
rediss://user:pass@cache.example.com:6379
. For security, consider using arediss
secure server connection. See Section 2, “Preparing your external services”. You have an external PostgreSQL database, with the following details. See See Section 2, “Preparing your external services”.
- postgres-host
- Your PostgreSQL instance Domain Name System (DNS) or IP address.
- postgres-port
- Your PostgreSQL instance port number, such as 5432.
- postres-username
- The user name to connect to your PostgreSQL instance.
- postgres-password
- The password to connect to your PostgreSQL instance.
- postgres-ca.pem, postgres-key.key, postgres-crt.pem
- TLS certificates to secure the connection to the database.
You have a GitHub App enabling access to the GitHub API for repository discovery, with the following details. See See Section 2, “Preparing your external services”.
- GITHUB_INTEGRATION_APP_ID
- Your GitHub integration App ID.
- GITHUB_INTEGRATION_CLIENT_ID
- Your GitHub integration App client ID.
- GITHUB_INTEGRATION_CLIENT_SECRET
- Your GitHub integration App client secret.
- GITHUB_INTEGRATION_PRIVATE_KEY_FILE
- Your GitHub integration App private key.
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.txt
file, with one secret per line inKEY=value
form.Enter your custom logo.
BASE64_EMBEDDED_FULL_LOGO="data:image/svg+xml;base64,<base64_full_logo_data>" BASE64_EMBEDDED_ICON_LOGO="data:image/svg+xml;base64,<base64_icon_logo_data>"
BASE64_EMBEDDED_FULL_LOGO
Enter your logo for the expanded (pinned) sidebar as a base64 encoded SVG image.
To encode your logo in base64, run:
$ base64 -i logo.svg
BASE64_EMBEDDED_ICON_LOGO
- Enter your logo for the collapsed (unpinned) sidebar as a base64 encoded SVG image.
Enter the connection string to your Redis server that caches plugin assets.
REDIS_CONNECTION=rediss://user:pass@cache.example.com:6379
Enter your GitHub integration credentials:
GITHUB_INTEGRATION_APP_ID=_<Enter_the_saved_App_ID> GITHUB_INTEGRATION_CLIENT_ID=<Enter_the_saved_Client_ID> GITHUB_INTEGRATION_CLIENT_SECRET=<Enter_the_saved_Client_Secret> GITHUB_INTEGRATION_HOST_DOMAIN=github.com GITHUB_INTEGRATION_ORGANIZATION=<Enter_your_github_organization_name> GITHUB_INTEGRATION_PRIVATE_KEY_FILE= <Enter_the_saved_Private_key>
Enter your PosgreSQL database secrets:
POSTGRES_PASSWORD: <postgres-password> POSTGRES_PORT: "<postgres-port>" POSTGRES_USER: <postgres-username> POSTGRES_HOST: <postgres-host> PGSSLMODE: verify-full NODE_EXTRA_CA_CERTS: /opt/app-root/src/postgres-crt.pem
- Enter your authentication secrets.
Author your custom
app-config.yaml
file. This is the main Developer Hub configuration file. You need a customapp-config.yaml
file to avoid the Developer Hub installer to revert user edits during upgrades. When your customapp-config.yaml
file is empty, Developer Hub is using default values.For a production environment start with:
app-config.yaml
app: title: <Red Hat Developer Hub> branding: fullLogo: ${BASE64_EMBEDDED_FULL_LOGO} fullLogoWidth: 110px iconLogo: ${BASE64_EMBEDDED_ICON_LOGO} backend: cache: store: redis connection: ${REDIS_CONNECTION} techdocs: cache: ttl: 3600000 catalog: providers: github: providerId: organization: "${GITHUB_INTEGRATION_ORGANIZATION}" schedule: frequency: minutes: 30 initialDelay: seconds: 15 timeout: minutes: 15 integrations: github: - host: ${GITHUB_INTEGRATION_HOST_DOMAIN} apps: - appId: ${GITHUB_INTEGRATION_APP_ID} clientId: ${GITHUB_INTEGRATION_CLIENT_ID} clientSecret: ${GITHUB_INTEGRATION_CLIENT_SECRET} privateKey: | ${GITHUB_INTEGRATION_PRIVATE_KEY_FILE} permission: enabled: true rbac: admin: users: - name: user:default/<your_policy_administrator_name> pluginsWithPermission: - catalog - scaffolder - permission
Most fields use environment variables that you defined in secrets in the previous step.
app
title
- Enter your Developer Hub instance display name, such as <Red Hat Developer Hub>.
branding
Set your custom logo.
Optionally, customize the width of the branding logo by changing value for the
fullLogoWidth
field. The following units are supported: integer, px, em, rem, percentage.
backend
cache
- Enable the plugins assets cache.
techdocs
cache
- Enable the Techdocs cache.
catalog
provider
github
- Enable GitHub repository discovery.
integrations
github
- Enable GitHub repository discovery.
permissions
- Enable Role-based access control. Enter your policy administrator name.
- Additionally, provision users and enabling authentication with your external identity provider.
Author your custom
dynamic-plugins.yaml
file 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.yaml
includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github disabled: false - package: ./dynamic-plugins/dist/backstage-community-plugin-rbac disabled: false
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
anddynamic-plugins.yaml
files respectively to themy-rhdh-app-config
anddynamic-plugins-rhdh
config 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
Alternatively, create the config maps by using the web console.
Provision your
secrets.txt
file to themy-rhdh-secrets
secret in the <my-rhdh-project> project.$ oc create secret generic my-rhdh-secrets --from-file=secrets.txt --namespace=my-rhdh-project
Alternatively, create the secret by using the web console.
Provision your PosgreSQL TLS certificates to the
my-rhdh-database-secrets
secret in the <my-rhdh-project> project.$ oc create secret generic my-rhdh-secrets --from-file=postgres-ca.pem --from-file=postgres-crt.pem --from-file=postgres-key.key --namespace=my-rhdh-project
4. 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 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. - Section 1, “Installing the Red Hat Developer Hub Operator”
- Section 3, “Provisioning your custom Red Hat Developer Hub configuration”
Procedure
Author your Backstage CR in a
my-rhdh-custom-resource.yaml
file to use your custom config maps and secrets.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: 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' secrets: - name: my-rhdh-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: 2 database: enableLocalDb: false
application
appConfig
-
Register your
my-rhdh-app-config
andrbac-policies
config maps. dynamicPluginsConfigMapName
-
Register your
dynamic-plugins-rhdh
config map. extraEnvs
env
- Enter your proxy environment variables.
secrets
-
Register your
<my_product_secrets>
andmy-rhdh-database-secrets
secrets.
extraFiles
secrets
-
Register the
postgres-crt.pem
,postgres-ca.pem
, andpostgres-key.key
files contained in themy-rhdh-database-certificates-secrets
secret.
replicas
- Enable high availability (HA) by increasing the replicas count to a value higher or equal to 2.
database
enableLocalDb
- Use your external PostgreSQL database rather than the internal PostgreSQL database.
Apply your Backstage CR to start or update your Developer Hub instance.
$ oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-project
5. Customizing the theme mode for your Developer Hub instance
In Developer Hub, theme configurations are used to change the look and feel of different UI components. So, you might notice changes in different UI components, such as buttons, tabs, sidebars, cards, and tables along with some changes in background color and font used on the RHDH pages.
You can choose one of the following theme modes for your Developer Hub instance:
- Light theme
- Dark theme
- Auto
The default theme mode is Auto, which automatically sets the light or dark theme based on your system preferences.
Prerequisites
- You are logged in to the Developer Hub web console.
Procedure
- From the Developer Hub web console, click Settings.
From the Appearance panel, click LIGHT THEME, DARK THEME, or AUTO to change the theme mode.
6. Managing role-based access controls (RBAC) using the Red Hat Developer Hub Web UI
Policy administrators can use the Developer Hub web interface (Web UI) to allocate specific roles and permissions to individual users or groups. Allocating roles ensures that access to resources and functionalities is regulated across the Developer Hub.
With the policy administrator role in Developer Hub, you can assign permissions to users and groups. This role allows you to view, create, modify, and delete the roles using Developer Hub Web UI.
6.1. Creating a role in the Red Hat Developer Hub Web UI
You can create a role in the Red Hat Developer Hub using the Web UI.
Prerequisites
Procedure
Go to Administration at the bottom of the sidebar in the Developer Hub.
The RBAC tab appears, displaying all the created roles in the Developer Hub.
- (Optional) Click any role to view the role information on the OVERVIEW page.
- Click CREATE to create a role.
- Enter the name and description of the role in the given fields and click NEXT.
- Add users and groups using the search field, and click NEXT.
- Select Plugin and Permission from the drop-downs in the Add permission policies section.
- Select or clear the Policy that you want to set in the Add permission policies section, and click NEXT.
- Review the added information in the Review and create section.
- Click CREATE.
Verification
The created role appears in the list available in the RBAC tab.
6.2. Editing a role in the Red Hat Developer Hub Web UI
You can edit a role in the Red Hat Developer Hub using the Web UI.
The policies generated from a policy.csv
or ConfigMap file cannot be edited or deleted using the Developer Hub Web UI.
Prerequisites
- You have enabled RBAC, have a policy administrator role in Developer Hub, and have added plugins with permission.
- The role that you want to edit is created in the Developer Hub.
Procedure
Go to Administration at the bottom of the sidebar in the Developer Hub.
The RBAC tab appears, displaying all the created roles in the Developer Hub.
- (Optional) Click any role to view the role information on the OVERVIEW page.
- Select the edit icon for the role that you want to edit.
- Edit the details of the role, such as name, description, users and groups, and permission policies, and click NEXT.
- Review the edited details of the role and click SAVE.
After editing a role, you can view the edited details of a role on the OVERVIEW page of a role. You can also edit a role’s users and groups or permissions by using the edit icon on the respective cards on the OVERVIEW page.
6.3. Deleting a role in the Red Hat Developer Hub Web UI
You can delete a role in the Red Hat Developer Hub using the Web UI.
The policies generated from a policy.csv
or ConfigMap file cannot be edited or deleted using the Developer Hub Web UI.
Prerequisites
- You have enabled RBAC and have a policy administrator role in Developer Hub.
- The role that you want to delete is created in the Developer Hub.
Procedure
Go to Administration at the bottom of the sidebar in the Developer Hub.
The RBAC tab appears, displaying all the created roles in the Developer Hub.
- (Optional) Click any role to view the role information on the OVERVIEW page.
Select the delete icon from the Actions column for the role that you want to delete.
Delete this role? pop-up appears on the screen.
- Click DELETE.