こんにちは、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のインストール方法です。
(本題の前に)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年11月現在では、バージョン1.3が最新になります。
そもそも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をデプロイします。こちらも一旦は最低限の値のみを設定します。
kind: ConfigMap apiVersion: v1 metadata: name: dynamic-plugins-rhdh namespace: rhdh annotations: rhdh.redhat.com/backstage-name: rhdh 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のデプロイにフォーカスしましたが、単なるポータルのガワができただけなので、このままではポータルとしての価値はほとんどありません。
次回以降の記事では、ここでインストールした環境をベースにどんどんカスタマイズしていきます。乞うご期待!