【Developer Hub 実践|第1回】Developer Hubをインストールしてみよう

こんにちは、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

  • GitHub
    • github.com アカウント1つ

  • 作業端末
    • Macbook
      • oc : 4.16.19
        • user-role: cluster-admin

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のデプロイにフォーカスしましたが、単なるポータルのガワができただけなので、このままではポータルとしての価値はほとんどありません。

次回以降の記事では、ここでインストールした環境をベースにどんどんカスタマイズしていきます。乞うご期待!

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。