2.2. Operator を使用した OpenShift Container Platform への Red Hat Developer Hub のデプロイ
開発者は、Red Hat OpenShift Container Platform Web コンソールの Developer Catalog を使用して、OpenShift Container Platform に Red Hat Developer Hub インスタンスをデプロイできます。このデプロイメント方法では、Red Hat Developer Hub Operator を使用します。
前提条件
- クラスター管理者が Red Hat Developer Hub Operator をインストールしている。詳細は、Red Hat Developer Hub Operator のインストール を参照してください。
手順
Red Hat Developer Hub インスタンス用に OpenShift Container Platform でプロジェクトを作成するか、既存のプロジェクトを選択します。
ヒントOpenShift Container Platform でプロジェクトを作成する方法の詳細は、Red Hat OpenShift Container Platform ドキュメントの Web コンソールを使用したプロジェクトの作成 を参照してください。
- OpenShift Container Platform Web コンソールの Developer 視点で、+Add をクリックします。
- Developer Catalog パネルから、Operator Backed をクリックします。
- Filter by keyword ボックスに Developer Hub と入力し、Red Hat Developer Hub カードをクリックします。
- Create をクリックします。
- Red Hat Developer Hub インスタンスの カスタム設定 を追加します。
- Create Backstage ページで、Create をクリックします。
検証
Pod の準備ができたら、URL を開いて Red Hat Developer Hub プラットフォームにアクセスできます。
- Topology ビューで Pod をクリックし、Details パネルで Status を確認して、Pod の準備ができていることを確認します。Pod の準備が完了すると、Pod のステータスは Active になります。
Topology ビューから、Developer Hub Pod の Open URL アイコンをクリックします。
2.2.1. Developer Hub カスタムリソースの設定
Backstage カスタムリソース (CR) の更新は、Red Hat Developer Hub Operator によって自動的に処理されます。ただし、ConfigMap や Secret など、CR が参照するリソースは、CR 自体が更新されない限り、自動的には更新されません。CR が参照するリソースを更新する場合は、Operator が更新後のリソースで Backstage デプロイメントを再作成できるように、Backstage デプロイメントを手動で削除する必要があります。
2.2.1.1. OpenShift Container Platform にカスタムアプリケーション設定ファイルを追加する
Red Hat Developer Hub インスタンスの設定を変更するには、次の手順を実行する必要があります。
OpenShift Container Platform にカスタムアプリケーション設定ファイルを追加し、カスタムリソース (CR) で参照します。OpenShift Container Platform では、次の例をベーステンプレートとして使用して、
app-config-rhdh.yaml
などの ConfigMap を作成できます。kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh data: "app-config-rhdh.yaml": | app: title: Red Hat Developer Hub baseUrl: https://backstage-developer-hub-my-ns.apps.ci-ln-vtkzr22-72292.origin-ci-int-gce.dev.rhcloud.com backend: auth: keys: - secret: "${BACKEND_SECRET}" baseUrl: https://backstage-backstage-sample-my-ns.apps.ci-ln-vtkzr22-72292.origin-ci-int-gce.dev.rhcloud.com cors: origin: https://backstage-backstage-sample-my-ns.apps.ci-ln-vtkzr22-72292.origin-ci-int-gce.dev.rhcloud.com
- OpenShift Container Platform シークレットで定義された環境変数を参照するには、Red Hat Developer Hub の必須のバックエンド認証キーを使用します。
アプリケーション設定の
app.baseUrl
、backend.baseUrl
、backend.cors.origin
フィールドに Red Hat Developer Hub インスタンスの外部 URL を設定します。デフォルトでは、URL はhttps://backstage-<CUSTOM_RESOURCE_NAME>-<NAMESPACE_NAME>.<OPENSHIFT_INGRESS_DOMAIN>;
のようになります。-
oc get ingresses.config/cluster -o jsonpath='{.spec.domain}'
コマンドを使用して、Ingress ドメインを表示できます。別のホストまたはサブドメインを使用する場合は、Custom Resource spec.application.route field
をカスタマイズし、それに応じてアプリケーション設定を調整します。
-
Red Hat Developer Hub インストールは、ユーザー自身で外部および不正アクセスから保護する必要があります。バックエンド認証キーを他のシークレットと同様に管理します。強力なパスワード要件を満たし、パスワードを設定ファイルで公開せず、環境変数としてのみ設定ファイルに挿入します。
前提条件
- アクティブな Red Hat OpenShift Container Platform アカウントがある。
手順
- Developer パースペクティブから、ConfigMaps タブを選択します。
- Create ConfigMap をクリックします。
- Configure via で YAML view オプションを選択し、必要に応じてファイルに変更を加えます。
- Create をクリックします。
- Secrets タブを選択します。
- Create Key/value Secret をクリックします。
-
シークレットに
secrets-rhdh
という名前を指定します。 BACKEND_SECRET
という名前のキーと、base64 でエンコードされた文字列を値として追加します。Red Hat Developer Hub インスタンスごとに一意の値を使用します。たとえば、次のコマンドを使用してターミナルからキーを生成できます。node -p 'require("crypto").randomBytes(24).toString("base64")'
- Create をクリックします。
- Topology ビューを選択します。
使用する Red Hat Developer Hub インスタンスのオーバーフローメニューをクリックし、Edit Backstage を選択して、Red Hat Developer Hub インスタンスの YAML ビューを読み込みます。
spec.application.appConfig.configMaps
フィールドとspec.application.extraEnvs.secrets
フィールドをカスタムリソースに追加します。以下に例を示します。spec: application: appConfig: mountPath: /opt/app-root/src configMaps: - name: app-config-rhdh extraEnvs: secrets: - name: secrets-rhdh extraFiles: mountPath: /opt/app-root/src replicas: 1 route: enabled: true database: enableLocalDb: true
- Save をクリックします。
- Topology ビューに戻り、Red Hat Developer Hub Pod が起動するまで待ちます。
- Open URL アイコンをクリックして、新しい設定変更を適用した Red Hat Developer Hub プラットフォームの使用を開始します。
関連情報
- Developer Hub のロールと責任の詳細は、Red Hat Developer Hub 管理ガイドの Red Hat Developer Hub のロールベースアクセス制御 (RBAC) を参照してください。
2.2.2. Red Hat Developer Hub Operator を使用した動的プラグインの設定
動的プラグインの設定は、Backstage
カスタムリソース (CR) が参照できる ConfigMap
オブジェクトに保存できます。
pluginConfig
フィールドが環境変数を参照する場合は、secrets-rhdh
シークレットで変数を定義する必要があります。
手順
- OpenShift Container Platform Web コンソールから、ConfigMaps タブを選択します。
- Create ConfigMap をクリックします。
Create ConfigMap ページで、Configure via の YAML view オプションを選択し、必要に応じてファイルを編集します。
GitHub 動的プラグインを使用した
ConfigMap
オブジェクトの例kind: ConfigMap apiVersion: v1 metadata: name: dynamic-plugins-rhdh data: dynamic-plugins.yaml: | includes: - dynamic-plugins.default.yaml plugins: - package: './dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic' disabled: false pluginConfig: {}
- Create をクリックします。
- Topology タブに移動します。
使用する Red Hat Developer Hub インスタンスのオーバーフローメニューをクリックし、Edit Backstage を選択して、Red Hat Developer Hub インスタンスの YAML ビューを読み込みます。
dynamicPluginsConfigMapName
フィールドをBackstage
CR に追加します。以下に例を示します。apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: name: my-rhdh spec: application: # ... dynamicPluginsConfigMapName: dynamic-plugins-rhdh # ...
- Save をクリックします。
- Topology ビューに戻り、Red Hat Developer Hub Pod が起動するまで待ちます。
- Open URL アイコンをクリックして、新しい設定変更を適用した Red Hat Developer Hub プラットフォームの使用を開始します。
検証
Red Hat Developer Hub のルート URL に
/api/dynamic-plugins-info/loaded-plugins
を追加し、プラグインのリストをチェックして、動的プラグイン設定がロードされていることを確認します。プラグインの例リスト
[ { "name": "backstage-plugin-catalog-backend-module-github-dynamic", "version": "0.5.2", "platform": "node", "role": "backend-plugin-module" }, { "name": "backstage-plugin-techdocs", "version": "1.10.0", "role": "frontend-plugin", "platform": "web" }, { "name": "backstage-plugin-techdocs-backend-dynamic", "version": "1.9.5", "platform": "node", "role": "backend-plugin" }, ]
2.2.3. Operator を使用した Red Hat Developer Hub のエアギャップ環境へのインストール
制限されたネットワーク上で動作する OpenShift Container Platform クラスターでは、パブリックリソースは使用できません。ただし、Red Hat Developer Hub Operator をデプロイして Developer Hub を実行するには、次のパブリックリソースが必要です。
- Operator イメージ (バンドル、Operator、カタログ)
- オペランドイメージ (RHDH、PostgreSQL)
これらのリソースを使用できるようにするには、これらのリソースを、OpenShift Container Platform クラスターにアクセスできるミラーレジストリー内の同等のリソースに置き換えます。
必要なイメージをミラーリングし、Red Hat Developer Hub Operator のインストール時や Developer Hub インスタンスの作成時にそれらのイメージを使用するために必要な設定を提供する、ヘルパースクリプトを使用できます。
このスクリプトにはターゲットミラーレジストリーが必要です。OpenShift Container Platform クラスターが制限されたネットワークで動作する準備ができている場合は、このレジストリーがすでにインストールされているはずです。ただし、クラスターを非接続で使用できるように準備している場合は、スクリプトを使用してクラスターにミラーレジストリーをデプロイし、それをミラーリングプロセスに使用できます。
前提条件
-
OpenShift Container Platform クラスターの管理権限を持つアクティブな
oc
セッションがある。OpenShift CLI の使用を開始 を参照してください。 -
registry.redhat.io
Red Hat エコシステムカタログへのアクティブなoc
レジストリーセッションがある。Red Hat コンテナーレジストリーの認証 を参照してください。 -
opm
CLI ツールがインストールされている。opm CLI のインストール を参照してください。 - jq パッケージがインストールされている。Download jq を参照してください。
- Podman がインストールされている。Podman Installation Instructions を参照してください。
- Skopeo バージョン 1.14 以降がインストールされている。Installing Skopeo を参照してください。
- クラスターのミラーレジストリーがすでにある場合は、当該レジストリーへの管理アクセスを持つアクティブな Skopeo セッション。レジストリーへの認証 および 非接続インストールのイメージのミラーリング を参照してください。
内部 OpenShift Container Platform クラスターイメージレジストリーは、ターゲットミラーレジストリーとして使用できません。ミラーレジストリーについて を参照してください。
- 独自のミラーレジストリーを作成する場合は、Red Hat Openshift 導入用のミラーレジストリーを使用したミラーレジストリーの作成 を参照してください。
ミラーレジストリーをまだ持っていない場合は、ヘルパースクリプトを使用してミラーレジストリーを作成できます。また、次の追加の前提条件が必要です。
- cURL パッケージがインストールされている。Red Hat Enterprise Linux の場合、curl パッケージをインストールすると、curl コマンドが使用可能になります。他のプラットフォームで curl を使用するには、cURL の Web サイト を参照してください。
-
htpasswd
コマンドが利用可能である。Red Hat Enterprise Linux の場合、httpd-tools
パッケージをインストールすると、htpasswd
コマンドが使用可能になります。
手順
ミラーリングスクリプトをダウンロードして実行し、カスタム Operator カタログをインストールし、関連するイメージをミラーリングします (
prepare-restricted-environment.sh
(source))。curl -sSLO https://raw.githubusercontent.com/janus-idp/operator/1.1.x/.rhdh/scripts/prepare-restricted-environment.sh # if you do not already have a target mirror registry # and want the script to create one for you # use the following example: bash prepare-restricted-environment.sh \ --prod_operator_index "registry.redhat.io/redhat/redhat-operator-index:v4.14" \ --prod_operator_package_name "rhdh" \ --prod_operator_bundle_name "rhdh-operator" \ --prod_operator_version "v1.1.1" # if you already have a target mirror registry # use the following example: bash prepare-restricted-environment.sh \ --prod_operator_index "registry.redhat.io/redhat/redhat-operator-index:v4.14" \ --prod_operator_package_name "rhdh" \ --prod_operator_bundle_name "rhdh-operator" \ --prod_operator_version "v1.1.1" \ --use_existing_mirror_registry "my_registry"
注記このスクリプトは複数のイメージをミラーレジストリーにコピーするため、完了までに数分かかる場合があります。