こんにちは、Red HatでOpenShift関連のプリセールスをしている北村です。
今回から "Developer Hub 実践" と題して、不定期にRed Hat Developer Hub (以下Developer Hub)関連の記事をアップしていこうと思います。
記事の内容はDeveloper Hubの具体的な設定方法など、 Developer Hubのツールとしての使い方を掘り下げていくものを想定しています。
以前「Red Hat Developer Hub (Backstage) でGolden Pathを作ろう」というタイトルでQiitaに記事をあげていますが、Developer Hubのバージョンも上がりいくつか変更が必要な箇所があるので、改めてここで実装方法を紹介していきます。
第1回はDeveloper Hubのインストール方法です。
- 【第1回】Developer Hubをインストールしてみよう ←この記事
- 【第2回】GitHubを使用した認証を実装しよう
- 【第3回】GitLabを使用した認証を実装しよう
- 【第4回】Componentを作成・登録しよう
- 【第5回】Software Templateを使ってアプリのデプロイをセルフサービス化しよう
- 【第6回】TechDocsを作成・登録しよう
- 【第7回】Golden Pathの実装をマスターしよう - 前編
- 【第8回】Golden Pathの実装をマスターしよう - 後編
なお、Developer Hubは別途Subscriptionが必要ですが、Red Hat 製品トライアルセンターで60日間の無償トライアルを利用することができます。 気になる方はぜひこちら↓にアクセスして試してみてください。
(本題の前に)Developer Hubとは?
Developer HubはOSSであるBackstageをベースとした開発者ポータルです。
Backstageが持つ機能に加え、以下のような独自の機能・サービスを提供しています。
- Red Hatが作成したサンプルのGolden Path Template
- 様々なツール(GitHubやGitLab、ArgoCDなど)と連携するためのプリセットプラグイン
- ポータル活用のための便利な機能を追加する独自プラグイン
- 継続的なUI改善
- Backstageのコア機能とプラグインに対するエンタープライズレベルのサポート
Developer HubはOpenShiftだけでなく、EKSやAKS上にもデプロイすることができます。(GKEはDev Preview) 2024年12/23現在では、バージョン1.4が最新になります。
そもそもBackstageってなんなの?という方は以下のスライドを参考にしてみてください。Backstageの基本的なコンセプトや機能が紹介されています。 最近Red HatにJoinしたたなやん(@tanayan299)が書いた渾身のスライドです! www.docswell.com
前提条件
- クラスター環境
- Red Hat OpenShift on AWS(ROSA): 4.16.19
- Cluster API Endpoint: Public
- Cluster API Endpoint: Public
- Red Hat OpenShift on AWS(ROSA): 4.16.19
- GitHub
- github.com アカウント1つ
- github.com アカウント1つ
- 作業端末
- Macbook
- oc : 4.16.19
- user-role: cluster-admin
- oc : 4.16.19
- Macbook
Developer Hub インストール手順
Operatorのインストール
まずはOperatorをインストールしていきます。ここは全部デフォルトのままでOKです。

Developer Hubのデプロイ
Operatorをインストールできたら、まずDeveloper Hubをデプロイするrhdh Namespaceを作成します。
oc new-project rhdh
次にDeveloper Hubをデプロイしていきます。Developer Hubのデプロイには以下のyamlファイルを使います。
developer-hub.yaml
apiVersion: rhdh.redhat.com/v1alpha2 kind: Backstage metadata: name: developer-hub namespace: rhdh spec: application: appConfig: configMaps: - name: app-config-rhdh mountPath: /opt/app-root/src extraEnvs: secrets: - name: secrets-rhdh replicas: 1 route: enabled: true dynamicPluginsConfigMapName: dynamic-plugins-rhdh database: enableLocalDb: true
yamlをデプロイします。
oc apply -f developer-hub.yaml
このyamlでは、Developer Hubに対して以下の3つのConfigmap/Secretを設定しています。
app-config-rhdh: Developer Hub 内のさまざまな設定を管理するための yaml ファイルsecrets-rhdh:app-config-rhdhなどで参照する環境変数をこの Secret を使って設定するdynamic-plugins-rhdh: Dynamic Plugins のインストール設定用 yaml ファイル
このカスタムリソースの作成によってDeveloper Hub用のPodやService,Routeが作成されますが、app-config-rhdh/dynamic-plugins-rhdhのConfigmapやsecrets-rhdhの SecretがないためPodが起動しません。そのため、この3つのリソースをデプロイしていきます。

app-config Configmapのデプロイ
ここでは最低限のConfig内容を記載しています。
app-config-rhdh.yaml
kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh namesapce: rhdh annotations: rhdh.redhat.com/backstage-name: developer-hub data: app-config-rhdh.yaml: | app: title: Red Hat Developer Hub baseUrl: ${BASE_URL} backend: auth: externalAccess: - type: legacy options: secret: “${BACKEND_SECRET}” subject: legacy-default-config baseUrl: ${BASE_URL} cors: origin: ${BASE_URL}
yamlをデプロイします。
oc apply -f app-config-rhdh.yaml
secrets-rhdh Secretのデプロイ
次に各種変数を渡すためのSecretを作成します。ここでの変数はDeveloper HubのPod内で環境変数として設定され、app-configなどに反映することができます。
secrets-rhdh.yaml
apiVersion: v1 kind: Secret metadata: name: secrets-rhdh namespace: rhdh stringData: BASE_URL: "https://backstage-developer-hub-rhdh.apps.<ROSAドメイン>" BACKEND_SECRET: "<バックエンド認証キー>"
BACKEND_SECRETにはbase64でエンコードされた任意の文字列を使用します。例えば以下のコマンドの出力結果などを使いましょう。
node -p 'require("crypto").randomBytes(24).toString("base64")'
yamlをデプロイします。
oc apply -f secrets-rhdh.yaml
dynamic-plugins-rhdh Configmapのデプロイ
最後にdynamic-pluginのインストール要否を設定するConfigmapをデプロイします。こちらも一旦は最低限の値のみを設定します。
dynamic-plugins-rhdh.yaml
kind: ConfigMap apiVersion: v1 metadata: name: dynamic-plugins-rhdh namespace: rhdh annotations: rhdh.redhat.com/backstage-name: developer-hub data: dynamic-plugins.yaml: | includes: - 'dynamic-plugins.default.yaml'
yamlをデプロイします。
oc apply -f dynamic-plugins-rhdh.yaml
設定の反映
すべてのConfigmapとSecretのデプロイが完了すると、Podがデプロイされます。
しばらくするとPodがrunningになるので、以下のコマンドでRouteのURLを取得し、ログインします。
oc get route -n rhdh backstage-developer-hub -o jsonpath={.status.ingress[0].host}
ログイン画面が表示されれば、ひとまずインストール完了です。

おわりに
今回はひとまずDeveloper Hubのデプロイにフォーカスしましたが、単なるポータルのガワができただけなので、このままではポータルとしての価値はほとんどありません。
次回以降の記事では、ここでインストールした環境をベースにどんどんカスタマイズしていきます。乞うご期待!