Red Hat Developer Hub 管理ガイド
概要
はじめに
Red Hat Developer Hub は、開発者ポータルの構築に使用できるエンタープライズグレードのオープンな開発者プラットフォームです。このプラットフォームには、開発者の生産性を高めつつ、衝突やフラストレーションの軽減に役立つ、サポート対象の独自フレームワークが含まれています。
Red Hat Developer Hub のサポート
このマニュアルに記載されている手順で問題が発生した場合は、Red Hat カスタマーポータル を参照してください。Red Hat カスタマーポータルは次の目的に使用できます。
- Red Hat 製品に関する技術サポート記事の Red Hat ナレッジベースの検索または閲覧。
- Red Hat Global Support Services (GSS) の サポートケース の作成。サポートケースを作成するには、製品として Red Hat Developer Hub を選択し、適切な製品バージョンを選択してください。
第1章 Red Hat Developer Hub Operator のインストール
管理者として、Red Hat Developer Hub Operator をインストールできます。承認されたユーザーは Operator を使用して、次のプラットフォームに Red Hat Developer Hub をインストールできます。
- Red Hat OpenShift Container Platform (RHOCP)
- Amazon Elastic Kubernetes Service (EKS)
- Microsoft Azure Kubernetes Service (AKS)
前提条件
- OpenShift Container Platform Web コンソールに管理者としてログインしている。
- アプリケーションを作成するために、プロジェクト内で適切なロールと権限を設定している。詳細は、アプリケーションの構築に関する Red Hat OpenShift のドキュメント を参照してください。
セキュリティーを強化するには、Red Hat Developer Hub Operator を専用のデフォルト namespace (rhdh-operator
など) にデプロイします。クラスター管理者は、ロールバインディングまたはクラスターのロールバインディングを使用して、他のユーザーの Operator リソースへのアクセスを制限できます。
手順
- OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Operators > OperatorHub に移動します。
- Filter by keyword ボックスに Developer Hub と入力し、Red Hat Developer Hub Operator カードをクリックします。
- Red Hat Developer Hub Operator ページで、Install をクリックします。
Install Operator ページで、Update channel ドロップダウンメニューを使用して、使用する更新チャネルを選択します。
fast チャネルは、y-stream (x.y)および z-stream (x.y.z)の更新(たとえば、バージョン 1.1 から 1.2 への更新、または 1.1.0 から 1.1.1 への更新)を提供します。
重要fast
チャネルには、特定のバージョンで利用可能な更新がすべて含まれます。更新により、Red Hat Developer Hub デプロイメントに予期しない変更が加えられる可能性があります。互換性を失わせる可能性のある変更の詳細は、リリースノート を参照してください。- fast-1.1 チャネルは、バージョン 1.1.1 から 1.1.2 への更新など、z-stream 更新のみを提供します。今後、1.1 から 1.2 に更新など、Red Hat Developer Hub y-version を更新する場合は、fast チャネルに手動で切り替える必要があります。
Install Operator ページで、Operator の Update approval ストラテジーを選択します。
- Automatic オプションを選択すると、Operator は手動で確認せずに更新されます。
- Manual オプションを選択すると、更新チャネルで新しい更新がリリースされると通知が開きます。インストールを開始する前に、管理者が更新を手動で承認する必要があります。
- Install をクリックします。
検証
- インストールされている Red Hat Developer Hub Operator を表示するには、View Operator をクリックします。
第2章 OpenShift Container Platform への Red Hat Developer Hub のデプロイ
次のいずれかの方法を使用して、OpenShift Container Platform に Red Hat Developer Hub をインストールできます。
- Helm チャート
- Red Hat Developer Hub Operator
2.1. Helm Chart を使用した OpenShift Container Platform への Red Hat Developer Hub のデプロイ
柔軟なインストール方法である Red Hat OpenShift Container Platform の Helm チャートを使用して Developer Hub をインストールできます。
Helm は、OpenShift Container Platform 上のパッケージマネージャーであり、次の機能を提供します。
- カスタムフックを使用して定期的なアプリケーション更新を適用します。
- 複雑なアプリケーションのインストールを管理します。
- パブリックおよびプライベートサーバーでホストできるチャートを提供します。
- アプリケーションの以前のバージョンへのロールバックをサポートします。
Red Hat Developer Hub の Helm チャートは、OpenShift Dedicated、OpenShift Container Platform の Helm カタログで入手できます。
前提条件
- OpenShift Container Platform アカウントにログインしている。
-
OpenShift Container Platform
admin
ロールを持つユーザーが、アプリケーションを作成するためにプロジェクト内で適切なロールと権限を設定している。OpenShift Container Platform のロールの詳細は、RBAC を使用して権限を定義および適用する を参照してください。 - OpenShift Container Platform でプロジェクトを作成している。OpenShift Container Platform でプロジェクトを作成する方法の詳細は、Red Hat OpenShift Container Platform のドキュメント を参照してください。
手順
- Developer Hub Web コンソールの Developer パースペクティブから、+Add をクリックします。
- Developer Catalog パネルから、Helm Chart をクリックします。
- Filter by keyword ボックスに Developer Hub と入力し、Red Hat Developer Hub カードをクリックします。
- Red Hat Developer Hub ページで、Create をクリックします。
-
クラスターから、OpenShift Container Platform ルーターホスト (例:
apps.<clusterName>.com
) をコピーします。 ラジオボタンを選択して、Form ビューまたは YAML ビューのいずれかを使用して Developer Hub インスタンスを設定します。デフォルトでは Form ビューが選択されています。
Form ビュー の使用
- Form ビューを使用してインスタンスを設定するにはRoot Schema → global → Enable service authentication within Backstage instance に移動し、OpenShift Container Platform ルーターホストをフォームのフィールドに貼り付けます。
YAML ビュー の使用
YAML ビューを使用してインスタンスを設定するには、次の例に示すように、
global.clusterRouterBase
パラメーター値に OpenShift Container Platform ルーターのホスト名を貼り付けます。global: auth: backend: enabled: true clusterRouterBase: apps.<clusterName>.com # other Red Hat Developer Hub Helm Chart configurations
必要に応じて他の値を編集します。
注記ホストに関する情報がコピーされ、Developer Hub バックエンドからアクセスできるようになります。
OpenShift Container Platform ルートが自動的に生成されると、ルートのホスト値が推測され、同じホスト情報が Developer Hub に送信されます。また、値を使用してホストを手動で設定することで Developer Hub がカスタムドメイン上に存在する場合は、カスタムホストが優先されます。
- Create をクリックし、データベースと Developer Hub が起動するまで待ちます。
Developer Hub プラットフォームの使用を開始するには、Open URL アイコンをクリックします。
Developer Hub コンテナーが設定ファイルにアクセスできない場合、developer-hub
Pod は CrashLoopBackOff
状態になる可能性があります。このエラーは次のログで示されます。
Loaded config from app-config-from-configmap.yaml, env ... 2023-07-24T19:44:46.223Z auth info Configuring "database" as KeyStore provider type=plugin Backend failed to start up Error: Missing required config value at 'backend.database.client'
エラーを解決するには、設定ファイルを確認してください。
2.1.1. エアギャップ環境での Helm Chart を使用した Red Hat Developer Hub のインストール
エアギャップ環境は、エアギャップネットワークまたは分離ネットワークとも呼ばれ、システムまたはネットワークを物理的に分離することでセキュリティーを確保します。この分離は、エアギャップシステムと外部ソース間の不正なアクセス、データ転送、または通信を防止するために確立されます。
Red Hat Developer Hub は、セキュリティーを確保し、特定の規制要件を満たすために、エアギャップ環境にインストールできます。
Developer Hub をエアギャップ環境にインストールするには、registry.redhat.io
とエアギャップ環境のレジストリーにアクセスできる必要があります。
前提条件
- Red Hat OpenShift Container Platform 4.12 以降がインストールされている。
-
registry.redhat.io
にアクセスできる。 - クラスターの Red Hat OpenShift Container Platform イメージレジストリーにアクセスできる。イメージレジストリーの公開の詳細は、Red Hat OpenShift Container Platform のドキュメントの レジストリーの公開 を参照してください。
-
ワークステーションに
oc
コマンドラインツールをインストールしている。 -
ワークステーションに
podman
コマンドラインツールをインストールしている。 - Red Hat Developer ポータルのアカウントがある。
手順
次のコマンドを実行し、
oc
コマンドラインツールを使用して OpenShift Container Platform アカウントにログインします。oc login -u <user> -p <password> https://api.<hostname>:6443
以下のコマンドを実行し、
podman
コマンドラインツールを使用して OpenShift Container Platform イメージレジストリーにログインします。podman login -u kubeadmin -p $(oc whoami -t) default-route-openshift-image-registry.<hostname>
注記次のコマンドを実行して OpenShift Container Platform イメージレジストリーの完全なホスト名を取得し、そのホスト名をコマンドで使用してログインできます。
REGISTRY_HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
podman login -u kubeadmin -p $(oc whoami -t) $REGISTRY_HOST
以下のコマンドを実行して、
podman
のregistry.redhat.io
にログインします。podman login registry.redhat.io
レジストリー認証の詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。
次のコマンドを実行して、Red Hat Image registry から Developer Hub および PostgreSQL イメージをワークステーションにプルします。
podman pull registry.redhat.io/rhdh/rhdh-hub-rhel9:{product-chart-version}
podman pull registry.redhat.io/rhel9/postgresql-15:latest
次のコマンドを実行して、両方のイメージを内部 OpenShift Container Platform イメージレジストリーにプッシュします。
podman push --remove-signatures registry.redhat.io/rhdh/rhdh-hub-rhel9:{product-chart-version} default-route-openshift-image-registry.<hostname>/<project_name>/rhdh-hub-rhel9:{product-chart-version}
podman push --remove-signatures registry.redhat.io/rhel9/postgresql-15:latest default-route-openshift-image-registry.<hostname>/<project_name>/postgresql-15:latest
イメージを OpenShift Container Platform イメージレジストリーに直接プッシュする方法の詳細は、How do I push an Image directly into the OpenShift 4 registry を参照してください。
重要x509 エラーが発生した場合は、OpenShift Container Platform ルートに使用される CA 証明書がシステムにインストール されていることを確認してください。
次のコマンドを使用して、両方のイメージが OpenShift Container Platform の内部レジストリーに存在することを確認します。
oc get imagestream -n <project_name>
次のコマンドを実行して、両方のイメージのローカルイメージ検索を有効にします。
oc set image-lookup postgresql-15
oc set image-lookup rhdh-hub-rhel9
YAML view に移動し、次の値を使用して
backstage
とpostgresql
のimage
セクションを更新します。Developer Hub イメージの値の例
upstream: backstage: image: registry: "" repository: rhdh-hub-rhel9 tag: latest
PostgreSQL イメージの値の例
upstream: postgresql: image: registry: "" repository: postgresql-15 tag: latest
- Helm Chart を使用して Red Hat Developer Hub をインストールします。Developer Hub のインストールの詳細は、「Helm Chart を使用した OpenShift Container Platform への Red Hat Developer Hub のデプロイ」 を参照してください。
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"
注記このスクリプトは複数のイメージをミラーレジストリーにコピーするため、完了までに数分かかる場合があります。
第3章 Red Hat Developer Hub と Amazon Web Services (AWS) の統合
Red Hat Developer Hub アプリケーションを Amazon Web Services (AWS) と統合すると、AWS エコシステム内のワークフローを合理化できます。Developer Hub リソースを AWS と統合することで、ツール、サービス、ソリューションの包括的なスイートにアクセスできるようになります。
AWS との統合には、次のいずれかの方法を使用して Elastic Kubernetes Service (EKS) の Developer Hub のデプロイメントが必要です。
- Helm チャート
- Red Hat Developer Hub Operator
3.1. Helm Chart を使用した Elastic Kubernetes Service (EKS) への Red Hat Developer Hub のデプロイ
Helm Chart を使用して Elastic Kubernetes Service (EKS) に Developer Hub をデプロイすると、AWS エコシステム内で堅牢な開発環境がオーケストレーションされます。
前提条件
- AWS Application Load Balancer (ALB) アドオンがインストールされた EKS クラスターがある。詳細は、Application load balancing on Amazon Developer Hub および Installing the AWS Load Balancer Controller add-on を参照してください。
- Developer Hub インスタンスのドメイン名が設定されている。ドメイン名は、Route 53 上のホストゾーンエントリーにすることも、AWS の外部で管理することもできます。詳細は、Configuring Amazon Route 53 as your DNS service ドキュメントを参照してください。
- AWS Certificate Manager (ACM) に、希望するドメイン名のエントリーがある。証明書 ARN の記録は必ず保管してください。
-
registry.redhat.io
にサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 -
現在の
kubeconfig
で、EKS クラスターにコンテキストが設定されている。詳細は、Creating or updating a kubeconfig file for an Amazon EKS cluster を参照してください。 -
kubectl
がインストールされている。詳細は、Installing or updating kubectl を参照してください。 - Helm 3 以降がインストールされている。詳細は、Using Helm with Amazon EKS を参照してください。
手順
ターミナルに移動し、次のコマンドを実行して、Developer Hub チャートを含む Helm チャートリポジトリーを、ローカルの Helm レジストリーに追加します。
helm repo add openshift-helm-charts https://charts.openshift.io/
次のコマンドを使用してプルシークレットを作成します。
kubectl create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<user_name> \ 1 --docker-password=<password> \ 2 --docker-email=<email> 3
作成されたプルシークレットは、Red Hat エコシステムから Developer Hub イメージをプルするために使用されます。
次のテンプレートを使用して、
values.yaml
という名前のファイルを作成します。global: # TODO: Set your application domain name. host: <your Developer Hub domain name> route: enabled: false upstream: service: # NodePort is required for the ALB to route to the Service type: NodePort ingress: enabled: true annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing # TODO: Using an ALB HTTPS Listener requires a certificate for your own domain. Fill in the ARN of your certificate, e.g.: alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:xxx:xxxx:certificate/xxxxxx alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' alb.ingress.kubernetes.io/ssl-redirect: '443' # TODO: Set your application domain name. external-dns.alpha.kubernetes.io/hostname: <your rhdh domain name> backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: # you can assign any random value as fsGroup fsGroup: 2000 postgresql: image: pullSecrets: - rhdh-pull-secret primary: podSecurityContext: enabled: true # you can assign any random value as fsGroup fsGroup: 3000 volumePermissions: enabled: true
ターミナルで次のコマンドを実行し、最新バージョンの Helm Chart と前の手順で作成した value.yaml ファイルを使用して Developer Hub をデプロイします。
helm install rhdh \ openshift-helm-charts/redhat-developer-hub \ [--version 1.1.4] \ --values /path/to/values.yaml
注記最新のチャートバージョンについては、https://github.com/openshift-helm-charts/charts/tree/main/charts/redhat/redhat/redhat-developer-hub を参照してください。
検証
DNS 名が応答し、Developer Hub インスタンスが使用できる状態になったことを示すまで待ちます。
3.2. Operator を使用して Elastic Kubernetes Service (EKS) に Red Hat Developer Hub をデプロイする
Operator Lifecycle Manager (OLM) フレームワーク の有無にかかわらず、Red Hat Developer Hub Operator を使用して EKS に Developer Hub をデプロイできます。その後、EKS への Developer Hub インスタンスのインストールに進むことができます。
3.2.1. OLM フレームワークを使用した Red Hat Developer Hub Operator のインストール
前提条件
-
現在の
kubeconfig
で、EKS クラスターにコンテキストが設定されている。詳細は、Creating or updating a kubeconfig file for an Amazon EKS cluster を参照してください。 -
kubectl
がインストールされている。詳細は、Installing or updating kubectl を参照してください。 -
registry.redhat.io
にサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 - Operator Lifecycle Manager (OLM) がインストールされている。インストールとトラブルシューティングの詳細は、How do I get Operator Lifecycle Manager? を参照してください。
手順
ターミナルで次のコマンドを実行して、Operator がインストールされている
rhdh-operator
namespace を作成します。kubectl create namespace rhdh-operator
次のコマンドを使用してプルシークレットを作成します。
kubectl -n rhdh-operator create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<user_name> \ 1 --docker-password=<password> \ 2 --docker-email=<email> 3
作成されたプルシークレットは、Red Hat エコシステムから Developer Hub イメージをプルするために使用されます。
Red Hat エコシステムからの Operators を含む
CatalogSource
リソースを作成します。cat <<EOF | kubectl -n rhdh-operator apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: redhat-catalog spec: sourceType: grpc image: registry.redhat.io/redhat/redhat-operator-index:v4.15 secrets: - "rhdh-pull-secret" displayName: Red Hat Operators EOF
次のように
OperatorGroup
リソースを作成します。cat <<EOF | kubectl apply -n rhdh-operator -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: rhdh-operator-group EOF
次のコードを使用して
Subscription
リソースを作成します。cat <<EOF | kubectl apply -n rhdh-operator -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: rhdh namespace: rhdh-operator spec: channel: fast installPlanApproval: Automatic name: rhdh source: redhat-catalog sourceNamespace: rhdh-operator startingCSV: rhdh-operator.v1.1.2 EOF
次のコマンドを実行して、作成した Operator が実行されていることを確認します。
kubectl -n rhdh-operator get pods -w
Operator Pod に
ImagePullBackOff
ステータスが表示される場合は、Operator デプロイメントのマニフェスト内でイメージを直接プルする権限が必要な可能性があります。ヒント必要なシークレット名を
deployment.spec.template.spec.imagePullSecrets
リストに含め、kubectl get deployment -n rhdh-operator
コマンドを使用してデプロイメント名を確認できます。kubectl -n rhdh-operator patch deployment \ rhdh.fast --patch '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"rhdh-pull-secret"}]}}}}' \ --type=merge
次の手順を使用して Operator のデフォルト設定を更新して、Developer Hub リソースが EKS で正常に起動できるようにします。
次のコマンドを使用して、
rhdh-operator
namespace のbackstage-default-config
ConfigMap を編集します。kubectl -n rhdh-operator edit configmap backstage-default-config
次の例に示すように、
db-statefulset.yaml
文字列を見つけて、そのspec.template.spec.securityContext
にfsGroup
を追加します。db-statefulset.yaml: | apiVersion: apps/v1 kind: StatefulSet --- TRUNCATED --- spec: --- TRUNCATED --- restartPolicy: Always securityContext: # You can assign any random value as fsGroup fsGroup: 2000 serviceAccount: default serviceAccountName: default --- TRUNCATED ---
次の例に示すように、
deployment.yaml
文字列を見つけて、その仕様にfsGroup
を追加します。deployment.yaml: | apiVersion: apps/v1 kind: Deployment --- TRUNCATED --- spec: securityContext: # You can assign any random value as fsGroup fsGroup: 3000 automountServiceAccountToken: false --- TRUNCATED ---
次のように、
service.yaml
文字列を見つけて、type
をNodePort
に変更します。service.yaml: | apiVersion: v1 kind: Service spec: # NodePort is required for the ALB to route to the Service type: NodePort --- TRUNCATED ---
保存して終了します。
変更が Operator Pod に自動的に適用されるまで、数分間待ちます。
3.2.2. OLM フレームワークなしで Red Hat Developer Hub Operator をインストールする
前提条件
次のコマンドがインストールされている。
-
git
-
make
-
sed
-
手順
次のコマンドを使用して、Operator リポジトリーのクローンをローカルマシンに作成します。
git clone --depth=1 https://github.com/janus-idp/operator.git rhdh-operator && cd rhdh-operator
次のコマンドを実行して、デプロイメントマニフェストを生成します。
make deployment-manifest
前のコマンドは
rhdh-operator-<VERSION>.yaml
という名前のファイルを生成します。これは手動で更新されます。次のコマンドを実行して、生成したデプロイメントマニフェストに置換を適用します。
sed -i "s/backstage-operator/rhdh-operator/g" rhdh-operator-*.yaml sed -i "s/backstage-system/rhdh-operator/g" rhdh-operator-*.yaml sed -i "s/backstage-controller-manager/rhdh-controller-manager/g" rhdh-operator-*.yaml
生成したデプロイメントマニフェストファイルをエディターで開き、次の手順を実行します。
次の例に示すように、
db-statefulset.yaml
文字列を見つけて、そのspec.template.spec.securityContext
にfsGroup
を追加します。db-statefulset.yaml: | apiVersion: apps/v1 kind: StatefulSet --- TRUNCATED --- spec: --- TRUNCATED --- restartPolicy: Always securityContext: # You can assign any random value as fsGroup fsGroup: 2000 serviceAccount: default serviceAccountName: default --- TRUNCATED ---
次の例に示すように、
deployment.yaml
文字列を見つけて、その仕様にfsGroup
を追加します。deployment.yaml: | apiVersion: apps/v1 kind: Deployment --- TRUNCATED --- spec: securityContext: # You can assign any random value as fsGroup fsGroup: 3000 automountServiceAccountToken: false --- TRUNCATED ---
次のように、
service.yaml
文字列を見つけて、type
をNodePort
に変更します。service.yaml: | apiVersion: v1 kind: Service spec: # NodePort is required for the ALB to route to the Service type: NodePort --- TRUNCATED ---
デフォルトのイメージを Red Hat エコシステムからプルしたイメージに置き換えます。
sed -i "s#gcr.io/kubebuilder/kube-rbac-proxy:.*#registry.redhat.io/openshift4/ose-kube-rbac-proxy:v4.15#g" rhdh-operator-*.yaml sed -i "s#quay.io/janus-idp/operator:.*#registry.redhat.io/rhdh/rhdh-rhel9-operator:1.1#g" rhdh-operator-*.yaml sed -i "s#quay.io/janus-idp/backstage-showcase:.*#registry.redhat.io/rhdh/rhdh-hub-rhel9:1.1#g" rhdh-operator-*.yaml sed -i "s#quay.io/fedora/postgresql-15:.*#registry.redhat.io/rhel9/postgresql-15:latest#g" rhdh-operator-*.yaml
次のように、イメージプルシークレットを Deployment リソースのマニフェストに追加します。
--- TRUNCATED --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/component: manager app.kubernetes.io/created-by: rhdh-operator app.kubernetes.io/instance: controller-manager app.kubernetes.io/managed-by: kustomize app.kubernetes.io/name: deployment app.kubernetes.io/part-of: rhdh-operator control-plane: controller-manager name: rhdh-controller-manager namespace: rhdh-operator spec: replicas: 1 selector: matchLabels: control-plane: controller-manager template: metadata: annotations: kubectl.kubernetes.io/default-container: manager labels: control-plane: controller-manager spec: imagePullSecrets: - name: rhdh-pull-secret --- TRUNCATED ---
次のコマンドを使用してマニフェストを適用し、Operator をデプロイします。
kubectl apply -f rhdh-operator-VERSION.yaml
以下のコマンドを実行して、Operator が実行されていることを確認します。
kubectl -n rhdh-operator get pods -w
3.2.3. EKS への Developer Hub インスタンスのインストール
Red Hat Developer Hub Operator がインストールされ、実行されたら、EKS で Developer Hub インスタンスを作成できます。
前提条件
- AWS Application Load Balancer (ALB) アドオンがインストールされた EKS クラスターがある。詳細は、Amazon Elastic Kubernetes Service でのアプリケーションの負荷分散 および AWS Load Balancer Controller アドオンのインストール を参照してください。
- Developer Hub インスタンスのドメイン名が設定されている。ドメイン名は、Route 53 上のホストゾーンエントリーにすることも、AWS の外部で管理することもできます。詳細は、Configuring Amazon Route 53 as your DNS service ドキュメントを参照してください。
- AWS Certificate Manager (ACM) に、希望するドメイン名のエントリーがある。証明書 ARN の記録は必ず保管してください。
-
registry.redhat.io
にサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 -
現在の
kubeconfig
で、EKS クラスターにコンテキストが設定されている。詳細は、Creating or updating a kubeconfig file for an Amazon {eks} cluster を参照してください。 -
kubectl
がインストールされている。詳細は、Installing or updating kubectl を参照してください。
手順
次のテンプレートを使用して、Developer Hub 設定を含む
app-config-rhdh
という名前の ConfigMap を作成します。apiVersion: v1 kind: ConfigMap metadata: name: app-config-rhdh data: "app-config-rhdh.yaml": | app: title: Red Hat Developer Hub baseUrl: https://<rhdh_dns_name> backend: auth: keys: - secret: "${BACKEND_SECRET}" baseUrl: https://<rhdh_dns_name> cors: origin: https://<rhdh_dns_name>
secrets-rhdh
という名前の Secret を作成し、値としてBase64-encoded
文字列を持つBACKEND_SECRET
という名前のキーを追加します。apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: # TODO: See https://backstage.io/docs/auth/service-to-service-auth/#setup BACKEND_SECRET: "xxx"
重要各 Developer Hub インスタンスには、必ず一意の値の
BACKEND_SECRET
を使用してください。次のコマンドを使用してキーを生成できます。
node-p'require("crypto").randomBytes(24).toString("base64")'
Red Hat エコシステムカタログから PostgreSQL イメージをプルできるようにするには、Developer Hub インスタンスがデプロイされている namespace 内のデフォルトのサービスアカウントにイメージプルシークレットを追加します。
kubectl patch serviceaccount default \ -p '{"imagePullSecrets": [{"name": "rhdh-pull-secret"}]}' \ -n <your_namespace>
次のテンプレートを使用してカスタムリソースファイルを作成します。
apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: # TODO: this the name of your Developer Hub instance name: my-rhdh spec: application: imagePullSecrets: - "rhdh-pull-secret" route: enabled: false appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "secrets-rhdh"
次のテンプレートを使用して Ingress リソースを作成し、必要に応じて名前をカスタマイズします。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: # TODO: this the name of your Developer Hub Ingress name: my-rhdh annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip # TODO: Using an ALB HTTPS Listener requires a certificate for your own domain. Fill in the ARN of your certificate, e.g.: alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-xxx:xxxx:certificate/xxxxxx alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' alb.ingress.kubernetes.io/ssl-redirect: '443' # TODO: Set your application domain name. external-dns.alpha.kubernetes.io/hostname: <rhdh_dns_name> spec: ingressClassName: alb rules: # TODO: Set your application domain name. - host: <rhdh_dns_name> http: paths: - path: / pathType: Prefix backend: service: # TODO: my-rhdh is the name of your Backstage Custom Resource. # Adjust if you changed it! name: backstage-my-rhdh port: name: http-backend
前のテンプレートで、` <rhdh_dns_name>` を Developer Hub ドメイン名に置き換え、
alb.ingress.kubernetes.io/certificate-arn
の値を証明書 ARN で更新します。
検証
DNS 名が応答し、Developer Hub インスタンスが使用できる状態になったことを示すまで待ちます。
3.3. Red Hat Developer Hub の Amazon Web Services (AWS) による監視およびロギング
Red Hat Developer Hub では、Amazon Web Services (AWS) の統合により、監視およびロギングが容易になります。リアルタイム監視のための Amazon CloudWatch や、包括的なログ記録のための Amazon Prometheus などの機能を使用すると、AWS インフラストラクチャーでホストされている Developer Hub アプリケーションの信頼性、スケーラビリティー、およびコンプライアンスを確保できます。
この統合により、Red Hat エコシステム内でアプリケーションを監視、診断、改良できるようになり、開発と運用のプロセスが改善されます。
3.3.1. Amazon Prometheus による監視
Red Hat Developer Hub は、実行中のアプリケーションに関連する Prometheus メトリクスを提供します。EKS クラスターで Prometheus を有効化またはデプロイする方法の詳細は、Amazon ドキュメントの Prometheus metrics を参照してください。
Amazon Prometheus を使用して Developer Hub を監視するには、Prometheus ワークスペース用の Amazon マネージドサービスを作成し、Developer Hub Prometheus メトリクスの取り込みを設定する必要があります。詳細は、Amazon ドキュメントの Create a workspace セクションおよび Ingest Prometheus metrics to the workspace セクションを参照してください。
作成したワークスペースに Prometheus メトリクスを取り込んだら、特定の Pod アノテーションに基づいて、Pod からデータを抽出するためのメトリクススクレイピングを設定できます。
3.3.1.1. 監視用のアノテーションの設定
Helm デプロイメントと Operator がサポートするデプロイメントの両方で監視用のアノテーションを設定できます。
- Helm のデプロイメント
backstage Pod に監視用のアノテーションを付けるには、
values.yaml
ファイルを次のように更新します。upstream: backstage: # --- TRUNCATED --- podAnnotations: prometheus.io/scrape: 'true' prometheus.io/path: '/metrics' prometheus.io/port: '7007' prometheus.io/scheme: 'http'
- Operator がサポートするデプロイメント
手順
Operator の管理者として、デフォルト設定を編集して、次のように Prometheus アノテーションを追加します。
# Update OPERATOR_NS accordingly OPERATOR_NS=rhdh-operator kubectl edit configmap backstage-default-config -n "${OPERATOR_NS}"
ConfigMap で
deployment.yaml
キーを見つけて、次のようにアノテーションをspec.template.metadata.annotations
フィールドに追加します。deployment.yaml: |- apiVersion: apps/v1 kind: Deployment # --- truncated --- spec: template: # --- truncated --- metadata: labels: rhdh.redhat.com/app: # placeholder for 'backstage-<cr-name>' # --- truncated --- annotations: prometheus.io/scrape: 'true' prometheus.io/path: '/metrics' prometheus.io/port: '7007' prometheus.io/scheme: 'http' # --- truncated ---
- 変更を保存します。
検証
スクレイピングが機能するかどうかを確認するには、以下の手順を実行します。
次のように、
kubectl
を使用して Prometheus コンソールをローカルマシンにポート転送します。kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
-
Web ブラウザーを開いて
http://localhost:9090
に移動し、Prometheus コンソールにアクセスします。 -
process_cpu_user_seconds_total
などの関連メトリクスを監視します。
3.3.2. Amazon CloudWatch ログを使用したロギング
Red Hat Developer Hub 内のロギングは、winston ライブラリー に依存します。デフォルトでは、デバッグレベルのログは記録されません。デバッグログをアクティブにするには、Red Hat Developer Hub インスタンスで環境変数 LOG_LEVEL
を debug に設定する必要があります。
3.3.2.1. アプリケーションログレベルの設定
Helm デプロイメントと Operator がサポートするデプロイメントの両方で、アプリケーションログレベルを設定できます。
- Helm のデプロイメント
ロギングレベルを更新するには、Helm チャートの
values.yaml
ファイルに環境変数LOG_LEVEL
を追加します。upstream: backstage: # --- Truncated --- extraEnvVars: - name: LOG_LEVEL value: debug
- Operator がサポートするデプロイメント
次のように、カスタムリソースに環境変数
LOG_LEVEL
を含めることで、ロギングレベルを変更できます。spec: # Other fields omitted application: extraEnvs: envs: - name: LOG_LEVEL value: debug
3.3.2.2. Amazon CloudWatch からログを取得する
CloudWatch Container Insights は、Amazon EKS のログとメトリクスをキャプチャーするために使用されます。詳細は、Logging for Amazon EKS ドキュメントを参照してください。
ログとメトリクスをキャプチャーするには、Amazon CloudWatch Observability EKS アドオンをクラスターにインストールします。Container Insights のセットアップ後、Logs Insights または Live Tail ビューを使用してコンテナーログにアクセスできます。
CloudWatch は、すべてのコンテナーログが統合されるロググループに、次のように名前を付けます。
/aws/containerinsights/<ClusterName>/application
以下は、Developer Hub インスタンスからログを取得するためのクエリーの例です。
fields @timestamp, @message, kubernetes.container_name | filter kubernetes.container_name in ["install-dynamic-plugins", "backstage-backend"]
3.4. Red Hat Developer Hub の認証プロバイダーとして Amazon Cognito を使用する
Amazon Cognito は、Developer Hub に認証層を追加するための AWS サービスです。ユーザープールを使用して Developer Hub に直接サインインすることも、サードパーティーのアイデンティティープロバイダーを介してフェデレーションすることもできます。
Amazon Cognito は、Developer Hub のコア認証プロバイダーには含まれませんが、汎用の OpenID Connect (OIDC) プロバイダーを使用して統合できます。
Helm Chart と Operator がサポートするデプロイメントの両方で Developer Hub を設定できます。
前提条件
ユーザープールがあるか、新しいユーザープールを作成した。ユーザープールの詳細は、Amazon Cognito user pools ドキュメントを参照してください。
注記ユーザープールが配置されている AWS リージョンとユーザープール ID を必ず書き留めてください。
ホストされた UI を統合するために、ユーザープール内にアプリケーションクライアントを作成した。詳細は、Setting up the hosted UI with the Amazon Cognito console を参照してください。
Amazon Cognito コンソールを使用してホストされた UI をセットアップするときは、必ず次の調整を行ってください。
-
Allowed callback URL(s) セクションに、URL
https://<rhdh_url>/api/auth/oidc/handler/frame
を含めます。<rhdh_url>
は Developer Hub アプリケーションの URL (my.rhdh.example.com
など) に置き換えてください。 -
同様に、Allowed sign-out URL(s) セクションに
https://<rhdh_url>
を追加します。<rhdh_url>
は Developer Hub アプリケーションの URL (my.rhdh.example.com
など) に置き換えます。 - OAuth 2.0 grant types で、Authorization code grant を選択して認証コードを返します。
OpenID Connect scopes で、少なくとも次のスコープを選択してください。
- OpenID
- プロファイル
- メール
- Helm のデプロイメント
手順
次のようにして、カスタム
app-config-rhdh
ConfigMap を編集または作成します。apiVersion: v1 kind: ConfigMap metadata: name: app-config-rhdh data: "app-config-rhdh.yaml": | # --- Truncated --- app: title: Red Hat Developer Hub signInPage: oidc auth: environment: production session: secret: ${AUTH_SESSION_SECRET} providers: oidc: production: clientId: ${AWS_COGNITO_APP_CLIENT_ID} clientSecret: ${AWS_COGNITO_APP_CLIENT_SECRET} metadataUrl: ${AWS_COGNITO_APP_METADATA_URL} callbackUrl: ${AWS_COGNITO_APP_CALLBACK_URL} scope: 'openid profile email' prompt: auto
次のテンプレートを使用して、カスタム
secrets-rhdh
Secret を編集または作成します。apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: AUTH_SESSION_SECRET: "my super auth session secret - change me!!!" AWS_COGNITO_APP_CLIENT_ID: "my-aws-cognito-app-client-id" AWS_COGNITO_APP_CLIENT_SECRET: "my-aws-cognito-app-client-secret" AWS_COGNITO_APP_METADATA_URL: "https://cognito-idp.[region].amazonaws.com/[userPoolId]/.well-known/openid-configuration" AWS_COGNITO_APP_CALLBACK_URL: "https://[rhdh_dns]/api/auth/oidc/handler/frame"
values.yaml
ファイルに、ConfigMap リソースと Secret リソースの両方の参照を追加します。upstream: backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: fsGroup: 2000 extraAppConfig: - filename: app-config-rhdh.yaml configMapRef: app-config-rhdh extraEnvVarsSecrets: - secrets-rhdh
Helm デプロイメントをアップグレードします。
helm upgrade rhdh \ openshift-helm-charts/redhat-developer-hub \ [--version 1.1.4] \ --values /path/to/values.yaml
- Operator がサポートするデプロイメント
次のコードを
app-config-rhdh
ConfigMap に追加します。apiVersion: v1 kind: ConfigMap metadata: name: app-config-rhdh data: "app-config-rhdh.yaml": | # --- Truncated --- signInPage: oidc auth: # Production to disable guest user login environment: production # Providing an auth.session.secret is needed because the oidc provider requires session support. session: secret: ${AUTH_SESSION_SECRET} providers: oidc: production: # See https://github.com/backstage/backstage/blob/master/plugins/auth-backend-module-oidc-provider/config.d.ts clientId: ${AWS_COGNITO_APP_CLIENT_ID} clientSecret: ${AWS_COGNITO_APP_CLIENT_SECRET} metadataUrl: ${AWS_COGNITO_APP_METADATA_URL} callbackUrl: ${AWS_COGNITO_APP_CALLBACK_URL} # Minimal set of scopes needed. Feel free to add more if needed. scope: 'openid profile email' # Note that by default, this provider will use the 'none' prompt which assumes that your are already logged on in the IDP. # You should set prompt to: # - auto: will let the IDP decide if you need to log on or if you can skip login when you have an active SSO session # - login: will force the IDP to always present a login form to the user prompt: auto
secrets-rhdh
Secret に次のコードを追加します。apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: # --- Truncated --- # TODO: Change auth session secret. AUTH_SESSION_SECRET: "my super auth session secret - change me!!!" # TODO: user pool app client ID AWS_COGNITO_APP_CLIENT_ID: "my-aws-cognito-app-client-id" # TODO: user pool app client Secret AWS_COGNITO_APP_CLIENT_SECRET: "my-aws-cognito-app-client-secret" # TODO: Replace region and user pool ID AWS_COGNITO_APP_METADATA_URL: "https://cognito-idp.[region].amazonaws.com/[userPoolId]/.well-known/openid-configuration" # TODO: Replace <rhdh_dns> AWS_COGNITO_APP_CALLBACK_URL: "https://[rhdh_dns]/api/auth/oidc/handler/frame"
カスタムリソースに
app-config-rhdh
ConfigMap とsecrets-rhdh
Secret の両方への参照が含まれていることを確認します。apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: # TODO: this the name of your Developer Hub instance name: my-rhdh spec: application: imagePullSecrets: - "rhdh-pull-secret" route: enabled: false appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "secrets-rhdh"
オプション: カスタムリソースがサポートする既存の Developer Hub インスタンスがあり、それを編集していない場合は、Developer Hub デプロイメントを手動で削除し、Operator を使用して再作成できます。次のコマンドを実行して、Developer Hub デプロイメントを削除します。
kubectl delete deployment -l app.kubernetes.io/instance=<CR_NAME>
-
Allowed callback URL(s) セクションに、URL
検証
- Developer Hub の Web URL に移動し、OIDC 認証を使用してサインインします。これにより、設定した AWS Cognito ユーザープールを介して認証するよう求められます。
- ログインしたら、Settings にアクセスしてユーザーの詳細を確認します。
第4章 Red Hat Developer Hub と Microsoft Azure Kubernetes Service (AKS) の統合
Developer Hub を Microsoft Azure Kubernetes Service と統合すると、開発が大幅に進歩し、アプリケーションをビルド、デプロイ、および管理するための合理化された環境が提供されます。
この統合には、次のいずれかの方法を使用した AKS 上の Developer Hub のデプロイメントが必要です。
- Helm チャート
- Red Hat Developer Hub Operator
4.1. Azure Kubernetes Service (AKS) への Red Hat Developer Hub のデプロイ
Developer Hub アプリケーションを Azure Kubernetes Services (AKS) にデプロイすると、アプリケーションのビルド、テスト、デプロイのための包括的なソリューションにアクセスできます。
前提条件
- アクティブなサブスクリプションを持つ Azure アカウントがある。
マシンに Azure CLI をインストールし、リソースグループとクラスターを設定した。詳細は、How to install the Azure CLI を参照してください。
次の手順を実行して、リソースグループとクラスターを設定できます。
Azure にアクセスするには、次のコマンドを使用して、指定されたテナントにログインしていることを確認します。
az login [--tenant=<optional-directory-name>]
リソースグループを作成するには、次のコマンドを実行します。
az group create --name <your_ResourceGroup> --location <location>
ヒントaz account list-locations -o table
を使用して、利用可能なリージョンを取得できます。AKS クラスターを作成します。
az aks create \ --resource-group <your_ResourceGroup> \ --name <your_ClusterName> \ --enable-managed-identity \ --generate-ssh-keys
追加オプションについては
--help
を参照してください。クラスターに接続します。
az aks get-credentials --resource-group <your_ResourceGroup> --name <your_ClusterName>
上記のコマンドは、Kubernetes クライアントを設定し、AKS クラスターを指すように
kubeconfig
の現在のコンテキストを設定します。
-
kubectl
がインストールされている。詳細は、Installing or updating kubectl を参照してください。 Helm 3 以降がインストールされている。
- AKS の詳細と基本的な Developer Hub デプロイメントの比較
-
権限の問題: Developer Hub コンテナーでは、特定の操作を試行したときに権限関連のエラー (
Permission denied
など) が発生する可能性があります。このエラーは、PodSpec.securityContext
のfsGroup
を調整することで解決できます。 Ingress 設定: AKS では、インストールした Developer Hub インスタンスにアクセスするために、Ingress を設定することが不可欠です。Developer Hub インスタンスにアクセスするには、次のコマンドを使用して、NGINX ベースの Ingress コントローラーであるルーティングアドオンを有効にする必要があります。
az aks approuting enable --resource-group <your_ResourceGroup> --name <your_ClusterName>
ヒントAzure CLI 拡張機能
aks-preview
のインストールが必要な場合があります。拡張機能が自動的にインストールされない場合は、次のコマンドを使用して手動でインストールする必要があります。az extension add --upgrade -n aks-preview --allow-preview true
注記Ingress コントローラーをインストールすると、Ingress コントローラーを含む 'app-routing-system' namespace がクラスターにデプロイされます。後で Developer Hub アプリケーションにアクセスできるように、インストールした Ingress コントローラーからの Developer Hub アプリケーションのアドレス (たとえば、108.141.70.228) をメモしておきます。これは、後で
<app_address>
として参照されます。kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
namespace の管理: 次のコマンドを使用して、AKS で Developer Hub デプロイメントの専用 namespace を作成できます。
kubectl create namespace <your_namespace>
-
権限の問題: Developer Hub コンテナーでは、特定の操作を試行したときに権限関連のエラー (
4.1.1. Helm チャートを使用して Azure Kubernetes Service (AKS) に Red Hat Developer Hub をデプロイする
Helm を使用して Developer Hub を AKS にデプロイできます。
手順
ターミナルを開き、次のコマンドを実行して Helm チャートリポジトリーを追加します。
helm repo add openshift-helm-charts https://charts.openshift.io/
ImagePull Secret
を作成するには、次のコマンドを実行します。kubectl -n <your_namespace> create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<redhat_user_name> \ --docker-password=<redhat_password> \ --docker-email=<email>
次のテンプレートを使用して、
values.yaml
という名前のファイルを作成します。global: host: <app_address> route: enabled: false upstream: ingress: enabled: true className: webapprouting.kubernetes.azure.com host: backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: fsGroup: 3000 postgresql: image: pullSecrets: - rhdh-pull-secret primary: podSecurityContext: enabled: true fsGroup: 3000 volumePermissions: enabled: true
Helm Chart をインストールするには、次のコマンドを実行します。
helm -n <your_namespace> install -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
デプロイメントのステータスを確認します。
kubectl get deploy <your_deploy_name>-developer-hub -n <your_namespace>
-
URL:
https://<app_address>
を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228
) です。 デプロイメントをアップグレードまたは削除するには、次のコマンドを実行します。
アップグレードコマンド
helm -n <your_namespace> upgrade -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
削除コマンド
helm -n <your_namespace> delete <your_deploy_name>
4.1.2. Operator を使用して Azure Kubernetes Service (AKS) に Red Hat Developer Hub をデプロイする
Red Hat Developer Hub Operator を使用して、AKS に Developer Hub をデプロイできます。
手順
rhdh-operator-<VERSION>.yaml
という名前の Red Hat Developer Hub Operator マニフェストファイルを取得し、次のフラグメントを追加してdb-statefulset.yaml
とdeployment.yaml
のデフォルト設定を変更します。securityContext: fsGroup: 300
マニフェストで指定された場所は次のとおりです。
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.spec
変更した Operator マニフェストを Kubernetes クラスターに適用します。
kubectl apply -f rhdh-operator-<VERSION>.yaml
注記前のコマンドの実行はクラスター範囲であり、適切なクラスター権限が必要です。
次の例に示すように、Red Hat 認証情報を使用して
rhdh-pull-secret
という名前のImagePull Secret
を作成し、保護されたregistry.redhat.io
からイメージにアクセスします。kubectl -n <your_namespace> create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<redhat_user_name> \ --docker-password=<redhat_password> \ --docker-email=<email>
rhdh-ingress.yaml
という名前の Ingress マニフェストファイルを作成し、次のように Developer Hub サービス名を指定します。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rhdh-ingress namespace: <your_namespace> spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - path: / pathType: Prefix backend: service: name: backstage-<your-CR-name> port: name: http-backend
作成した Ingress をデプロイするには、次のコマンドを実行します。
kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
次の例を使用して、Developer Hub 設定を含む
app-config-rhdh
という名前の ConfigMap を作成します。apiVersion: v1 kind: ConfigMap metadata: name: app-config-rhdh data: "app-config-rhdh.yaml": | app: title: Red Hat Developer Hub baseUrl: https://<app_address> backend: auth: keys: - secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
secrets-rhdh
という名前のシークレットを作成し、次の例に示すように、Base64-encoded
文字列値のBACKEND_SECRET
という名前のキーを追加します。apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: BACKEND_SECRET: "xxx"
rhdh.yaml
という名前のカスタムリソース (CR) マニフェストファイルを作成し、次のように以前に作成したrhdh-pull-secret
を追加します。apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "secrets-rhdh"
CR マニフェストを namespace に適用します。
kubectl -n <your_namespace> apply -f rhdh.yaml
-
URL:
https://<app_address>
を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228
) です。 オプション: CR を削除するには、次のコマンドを実行します。
kubectl -n <your_namespace> delete -f rhdh.yaml
4.2. Red Hat Developer Hub の Azure Kubernetes Services (AKS) による監視およびロギング
監視およびロギングは、Red Hat Developer Hub での Azure Kubernetes Services (AKS) の管理および保守に不可欠な要素です。Managed Prometheus Monitoring や Azure Monitor 統合などの機能により、管理者はリソース使用率を効率的に監視し、問題を診断し、コンテナー化されたワークロードの信頼性を確保できます。
Managed Prometheus Monitoring を有効にするには、次のように、新しいクラスターの作成か既存のクラスターの更新かに応じて、az aks create
または az aks update
コマンドで -enable-azure-monitor-metrics
オプションを使用します。
az aks create/update --resource-group <your-ResourceGroup> --name <your-Cluster> --enable-azure-monitor-metrics
上記のコマンドは、Prometheus メトリクス を収集するメトリクスアドオンをインストールします。上記のコマンドを使用すると、ネイティブ Azure Monitor メトリクスと Prometheus メトリクスの両方による Azure リソースの監視を有効にできます。ポータルの Monitoring → Insights で結果を表示することもできます。詳細は、Monitor Azure resources with Azure Monitor を参照してください。
さらに、Managed Prometheus サービスと Azure Monitor の両方のメトリクスには、Azure Managed Grafana サービスからアクセスできます。詳細は、Link a Grafana workspace セクションを参照してください。
デフォルトでは、Prometheus は最小取り込みプロファイルを使用します。これにより、取り込み量が最適化され、スクレイピング頻度、ターゲット、および収集するメトリクスのデフォルト設定が指定されます。デフォルト設定は、カスタム設定を使用してカスタマイズできます。Azure では、スクレイピング設定やその他のメトリクスアドオン設定を提供するために、さまざまな ConfigMap の使用を含むさまざまな方法が提供されています。デフォルトの設定の詳細は、Default Prometheus metrics configuration in Azure Monitor および Customize scraping of Prometheus metrics in Azure Monitor managed service for Prometheus ドキュメントを参照してください。
4.2.1. Azure Kubernetes Services (AKS) を使用したログの表示
Kubernetes オブジェクトによって生成されたライブデータログにアクセスし、AKS 内の Container Insights でログデータを収集できます。
前提条件
- Developer Hub が AKS にデプロイされている。詳細は、「Azure Kubernetes Service (AKS) への Red Hat Developer Hub のデプロイ」 を参照してください。
手順
- Developer Hub インスタンスからのライブログの表示
- Azure Portal に移動します。
-
リソースグループ
<your-ResourceGroup>
を検索し、AKS クラスター<your-Cluster>
を見つけます。 - メニューから Kubernetes resources → Workloads を選択します。
-
<your-rhdh-cr>-developer-hub
デプロイメント (Helm Chart インストールの場合) または<your-rhdh-cr>-backstage
デプロイメント (Operator がサポートするインストールの場合) を選択します。 - 左側のメニューで Live Logs をクリックします。
Pod を選択します。
注記Pod は 1 つだけである必要があります。
ライブログデータが収集され、表示されます。
- Container Engine からのリアルタイムログデータの表示
- Azure Portal に移動します。
-
リソースグループ
<your-ResourceGroup>
を検索し、AKS クラスター<your-Cluster>
を見つけます。 - メニューから Monitoring → Insights を選択します。
- Containers タブに移動します。
- backend-backstage コンテナーを見つけてクリックすると、Container Engine によって生成されるリアルタイムログデータが表示されます。
4.3. Red Hat Developer Hub の認証プロバイダーとして Microsoft Azure を使用する
Developer Hub の core-plugin-api
パッケージは Microsoft Azure 認証プロバイダーと統合しており、Azure OAuth を使用してサインインを認証します。
前提条件
- Developer Hub が AKS にデプロイされている。詳細は、「Azure Kubernetes Service (AKS) への Red Hat Developer Hub のデプロイ」 を参照してください。
- アプリケーションを作成して Azure ポータルに登録した。詳細は、Register an application with the Microsoft identity platform を参照してください。
4.3.1. Helm デプロイメントの認証プロバイダーとして Microsoft Azure を使用する
Helm Chart を使用してインストールすると、Microsoft Azure を Red Hat Developer Hub の 認証プロバイダーとして使用できます。詳細は、「Helm チャートを使用して Azure Kubernetes Service (AKS) に Red Hat Developer Hub をデプロイする」 を参照してください。
手順
アプリケーションが登録されたら、次の点を書き留めます。
-
clientId
: アプリケーション (クライアント) ID。App Registration → Overview にあります。 -
clientSecret
: シークレット。*App Registration → Certificates & secrets にあります (必要に応じて新規作成します)。 -
tenantId
: ディレクトリー (テナント) ID。App Registration → Overview にあります。
-
次のフラグメントが Developer Hub ConfigMap に含まれていることを確認します。
auth: environment: production providers: microsoft: production: clientId: ${AZURE_CLIENT_ID} clientSecret: ${AZURE_CLIENT_SECRET} tenantId: ${AZURE_TENANT_ID} domainHint: ${AZURE_TENANT_ID} additionalScopes: - Mail.Send
新しいファイルを作成することも、既存のファイルに追加することもできます。
ConfigMap を Kubernetes クラスターに適用します。
kubectl -n <your_namespace> apply -f <app-config>.yaml
Azure 認証情報を含む既存の Secret を作成または再利用し、次のフラグメントを追加します。
stringData: AZURE_CLIENT_ID: <value-of-clientId> AZURE_CLIENT_SECRET: <value-of-clientSecret> AZURE_TENANT_ID: <value-of-tenantId>
シークレットを Kubernetes クラスターに適用します。
kubectl -n <your_namespace> apply -f <azure-secrets>.yaml
value.yaml
ファイルが、以前に作成した ConfigMap と Secret を参照していることを確認します。upstream: backstage: ... extraAppConfig: - filename: ... configMapRef: <app-config-containing-azure> extraEnvVarsSecrets: - <secret-containing-azure>
オプション: Helm Chart がすでにインストールされている場合は、アップグレードします。
helm -n <your_namespace> upgrade -f <your-values.yaml> <your_deploy_name> redhat-developer/backstage --version 1.1.4
オプション:
rhdh.yaml
ファイルが変更されていない場合 (たとえば、そこから参照される ConfigMap と Secret のみを更新した場合)、対応する Pod を削除して Developer Hub デプロイメントを更新します。kubectl -n <your_namespace> delete pods -l backstage.io/app=backstage-<your-rhdh-cr>
4.3.2. Operator がサポートするデプロイメントの認証プロバイダーとして Microsoft Azure を使用する
Operator を使用してインストールすると、Microsoft Azure を Red Hat Developer Hub の認証プロバイダーとして使用できます。詳細は、「Operator を使用した OpenShift Container Platform への Red Hat Developer Hub のデプロイ」 を参照してください。
手順
アプリケーションが登録されたら、次の点を書き留めます。
-
clientId
: アプリケーション (クライアント) ID。App Registration → Overview にあります。 -
clientSecret
: シークレット。*App Registration → Certificates & secrets にあります (必要に応じて新規作成します)。 -
tenantId
: ディレクトリー (テナント) ID。App Registration → Overview にあります。
-
次のフラグメントが Developer Hub ConfigMap に含まれていることを確認します。
auth: environment: production providers: microsoft: production: clientId: ${AZURE_CLIENT_ID} clientSecret: ${AZURE_CLIENT_SECRET} tenantId: ${AZURE_TENANT_ID} domainHint: ${AZURE_TENANT_ID} additionalScopes: - Mail.Send
新しいファイルを作成することも、既存のファイルに追加することもできます。
ConfigMap を Kubernetes クラスターに適用します。
kubectl -n <your_namespace> apply -f <app-config>.yaml
Azure 認証情報を含む既存の Secret を作成または再利用し、次のフラグメントを追加します。
stringData: AZURE_CLIENT_ID: <value-of-clientId> AZURE_CLIENT_SECRET: <value-of-clientSecret> AZURE_TENANT_ID: <value-of-tenantId>
シークレットを Kubernetes クラスターに適用します。
kubectl -n <your_namespace> apply -f <azure-secrets>.yaml
カスタムリソースマニフェストが、以前に作成した ConfigMap と Secret への参照を含むことを確認します。
apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret route: enabled: false appConfig: configMaps: - name: <app-config-containing-azure> extraEnvs: secrets: - name: <secret-containing-azure>
カスタムリソースマニフェストを適用します。
kubectl -n <your_namespace> apply -f rhdh.yaml
オプション:
rhdh.yaml
ファイルが変更されていない場合 (たとえば、そこから参照される ConfigMap と Secret のみを更新した場合)、対応する Pod を削除して Developer Hub デプロイメントを更新します。kubectl -n <your_namespace> delete pods -l backstage.io/app=backstage-<your-rhdh-cr>
第5章 Red Hat Developer Hub のロールベースアクセス制御 (RBAC)
ロールベースアクセス制御は、認可済みユーザーへのアクセスを制限するセキュリティーパラダイムです。この機能を使用すると、特定の権限を持つロールが定義され、それらのロールがユーザーに割り当てられます。
Red Hat Developer Hub は RBAC を使用して、プラットフォーム内の権限システムを改善します。Developer Hub の RBAC 機能は、管理者ロールを導入し、効率的なアクセス制御を促進して、チーム、グループ、ユーザーを含む組織構造を活用します。
5.1. 権限ポリシーの設定
Red Hat Developer Hub では、2 つの方法で権限ポリシーを設定できます。
- 権限ポリシー管理者の設定
- 外部ファイルで定義された権限ポリシーの設定
5.1.1. 権限ポリシー管理者の設定
Developer Hub のユーザーとグループの権限ポリシーは、権限ポリシー管理者が管理します。ロールベースアクセス制御 REST API には、権限ポリシー管理者のみアクセスできます。
ポリシー管理者を設定する目的は、特定の制限された数の認証済みユーザーが RBAC REST API にアクセスできるようにすることです。権限ポリシーは、app-config-rhdh
ConfigMap で参照される policy.csv
ファイルで定義されます。OpenShift プラットフォーム管理者またはクラスター管理者は、Red Hat Developer Hub がデプロイされている名前空間にアクセスしてこのタスクを実行できます。
次のように、app-config.yaml
ファイルで権限ポリシー管理者の認証情報を設定できます。
permission: enabled: true rbac: admin: users: - name: user:default/joeuser
5.1.2. 外部ファイルで定義された権限ポリシーの設定
Red Hat Developer Hub を起動する前に、このアプローチを使用して権限ポリシーを設定できます。権限ポリシーが外部ファイルで定義されている場合は、同じファイルを Developer Hub にインポートできます。権限ポリシーは、Casbin ルール形式で定義する必要があります。Casbin ルールの形式の詳細は、Casbin ルールの基本 を参照してください。
以下は、権限ポリシーの設定例です。
p, role:default/guests, catalog-entity, read, deny
p, role:default/guests, catalog.entity.create, create, deny
g, user:default/<USER_TO_ROLE>, role:default/guests
定義された権限に関連付けられたアクションが含まれていない場合は、ポリシーとして use
を追加します。以下の例を参照してください。
p, role:default/guests, kubernetes.proxy, use, deny
app-config.yaml
ファイルで、policy.csv
ファイルのパスを定義できます。
permission: enabled: true rbac: policies-csv-file: /some/path/rbac-policy.csv
5.1.2.1. Developer Hub Helm Chart に policy.csv
ファイルをマウントする
Red Hat Developer Hub が Helm Chart を使用してデプロイされている場合は、policy.csv
ファイルを Developer Hub Helm Chart にマウントすることで、それを定義する必要があります。
configMap
を作成してマウントすることで、policy.csv
ファイルを Developer Hub Helm Chart に追加できます。
前提条件
- OpenShift Container Platform Web コンソールを使用して OpenShift Container Platform アカウントにログインしています。
Red Hat Developer Hub が、Helm Chart を使用してインストールおよびデプロイされている。
Helm Chart を使用して OpenShift Container Platform に Red Hat Developer Hub をインストールする方法の詳細は、「Helm Chart を使用した OpenShift Container Platform への Red Hat Developer Hub のデプロイ」 を参照してください。
手順
OpenShift Container Platform で、次の例に示すように、ポリシーを保持する ConfigMap を作成します。
ConfigMap
の例kind: ConfigMap apiVersion: v1 metadata: name: rbac-policy namespace: rhdh data: rbac-policy.csv: | p, role:default/guests, catalog-entity, read, allow p, role:default/guests, catalog.entity.create, create, allow g, user:default/<YOUR_USER>, role:default/guests
- Developer Hub Helm Chart で、Root Schema → Backstage chart schema → Backstage parameters → Backstage container additional volume mounts に移動します。
Add Backstage container additional volume mounts を選択し、次の値を追加します。
-
mountPath:
opt/app-root/src/rbac
-
Name:
rbac-policy
-
mountPath:
RBAC ポリシーを、Developer Hub Helm Chart の Backstage container additional volumes に追加します。
-
name:
rbac-policy
configMap
-
defaultMode:
420
-
name:
rbac-policy
-
defaultMode:
-
name:
app-config.yaml
ファイル内のポリシーパスを、次のように更新します。app-config.yaml
ファイルの例permission: enabled: true rbac: policies-csv-file: ./rbac/rbac-policy.csv
5.1.3. Red Hat Developer Hub の権限ポリシー
Red Hat Developer Hub の権限ポリシーは、リソースまたは機能へのアクセスを管理する一連のルールです。これらのポリシーは、ユーザーのロールに基づいてユーザーに付与される認可レベルを示します。権限ポリシーは、特定の環境内でセキュリティーと機密性を維持するために実装されます。
Developer Hub では、次の権限ポリシーがサポートされます。
- Catalog 権限
名前 | リソースタイプ | ポリシー | 説明 |
---|---|---|---|
|
| read | ユーザーまたはロールがカタログから読み取ることを許可します。 |
| create | ユーザーまたはロールによるカタログエンティティーの作成 (既存のコンポーネントをカタログに登録することを含む) を許可します。 | |
|
| update | ユーザーまたはロールがカタログから単一または複数のエンティティーを更新することを許可します。 |
|
| delete | ユーザーまたはロールがカタログから単一または複数のエンティティーを削除することを許可します。 |
| read | ユーザーまたはロールがカタログから単一または複数の場所を読み取ることを許可します。 | |
| create | ユーザーまたはロールがカタログ内に場所を作成することを許可します。 | |
| delete | ユーザーまたはロールがカタログから場所を削除することを許可します。 |
- Scaffolder 権限
名前 | リソースタイプ | ポリシー | 説明 |
---|---|---|---|
|
| テンプレートからのアクションの実行を許可します。 | |
|
| read | ユーザーまたはロールがテンプレートから単一または複数のパラメーターを読み取ることを許可します。 |
|
| read | ユーザーまたはロールがテンプレートから単一または複数のステップを読み取ることを許可します。 |
- RBAC 権限
名前 | リソースタイプ | ポリシー | 説明 |
---|---|---|---|
|
| read | ユーザーまたはロールに権限ポリシーとロールの読み取りを許可します。 |
|
| create | ユーザーまたはロールが単一または複数の権限ポリシーとロールを作成することを許可します。 |
|
| update | ユーザーまたはロールが単一または複数の権限ポリシーとロールを更新することを許可します。 |
|
| delete | ユーザーまたはロールが単一または複数の権限ポリシーとロールを削除することを許可します。 |
- Kubernetes 権限
名前 | リソースタイプ | ポリシー | 説明 |
---|---|---|---|
| ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可します。 |
5.2. Red Hat Developer Hub Web UI を使用したロールベースアクセス制御 (RBAC) の管理
管理者は、Developer Hub Web インターフェイス (Web UI) を使用して、特定のロールと権限を個々のユーザーまたはグループに割り当てることができます。ロールを割り当てると、リソースと機能へのアクセスが Developer Hub 全体で確実に規制されます。
Developer Hub の管理者ロールを使用すると、ユーザーとグループに権限を割り当てることができます。これにより、ユーザーまたはグループは、Developer Hub Web UI を使用してロールを表示、作成、変更、および削除できます。
Web UI で RBAC 機能にアクセスするには、@janus-idp/backstage-plugin-rbac
プラグインを動的プラグインとしてインストールおよび設定する必要があります。動的プラグインのインストールの詳細は、6章動的プラグインのインストール を参照してください。
@janus-idp/backstage-plugin-rbac
プラグインをインストールすると、サイドバーの下部に Administration オプションが表示されます。Administration をクリックすると、デフォルトで RBAC タブが表示され、Developer Hub で作成された既存のロールがすべて表示されます。RBAC タブでは、ユーザー、グループの合計数、およびロールに関連付けられた権限ポリシーの合計数も表示できます。Actions 列を使用してロールを編集または削除することもできます。
5.2.1. Red Hat Developer Hub Web UI でのロールの作成
Web UI を使用して、Red Hat Developer Hub でロールを作成できます。
前提条件
- Developer Hub の管理者ロールがある。
-
Developer Hub に
@janus-idp/backstage-plugin-rbac
プラグインをインストールした。詳細は、6章動的プラグインのインストール を参照してください。 - 必要な権限ポリシーが設定されている。詳細は、「権限ポリシーの設定」 を参照してください。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、 Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
- CREATE をクリックしてロールを作成します。
- 所定のフィールドにロールの名前と説明を入力し、NEXT をクリックします。
- 検索フィールドを使用してユーザーとグループを追加し、NEXT をクリックします。
- Add permission policies セクションのドロップダウンから Plugin と Permission を選択します。
- Add permission policies セクションで、設定する Policy を選択または選択解除し、NEXT をクリックします。
- Review and create セクションで追加された情報を確認します。
- CREATE をクリックします。
検証
作成したロールは、RBAC タブのリストに表示されます。
5.2.2. Red Hat Developer Hub Web UI でのロールの編集
Web UI を使用して、Red Hat Developer Hub でロールを編集できます。
policy.csv
または ConfigMap ファイルから生成されたポリシーは、Developer Hub Web UI を使用して編集または削除することはできません。
前提条件
- Developer Hub の管理者ロールがある。
-
Developer Hub に
@janus-idp/backstage-plugin-rbac
プラグインをインストールした。詳細は、6章動的プラグインのインストール を参照してください。 - 必要な権限ポリシーが設定されている。詳細は、「権限ポリシーの設定」 を参照してください。
- 編集するロールが Developer Hub で作成されている。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、 Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
- 編集するロールの編集アイコンを選択します。
- 名前、説明、ユーザーとグループ、権限ポリシーなどのロールの詳細を編集し、NEXT をクリックします。
- 編集したロールの詳細を確認し、SAVE をクリックします。
ロールを編集した後、ロールの OVERVIEW ページで編集したロールの詳細を表示できます。OVERVIEW ページの各カードにある編集アイコンを使用して、ロールのユーザーとグループ、または権限を編集することもできます。
5.2.3. Red Hat Developer Hub Web UI でのロールの削除
Web UI を使用して、Red Hat Developer Hub でロールを削除できます。
policy.csv
または ConfigMap ファイルから生成されたポリシーは、Developer Hub Web UI を使用して編集または削除することはできません。
前提条件
- Developer Hub の管理者ロールがある。
-
Developer Hub に
@janus-idp/backstage-plugin-rbac
プラグインをインストールした。詳細は、6章動的プラグインのインストール を参照してください。 - 必要な権限ポリシーが設定されている。詳細は、「権限ポリシーの設定」 を参照してください。
- 削除するロールが Developer Hub で作成されている。
手順
Developer Hub のサイドバーの下部にある Administration に移動します。
RBAC タブが表示され、 Developer Hub で作成されたすべてのロールが表示されます。
- (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
削除するロールの Actions 列から削除アイコンを選択します。
Delete this role? というポップアップが画面に表示されます。
- DELETE をクリックします。
5.3. ロールベースアクセス制御 (RBAC) REST API
Red Hat Developer Hub は、Developer Hub で権限とロールを管理するために使用できる RBAC REST API を提供します。この API は、Developer Hub の権限ポリシーとロールのメンテナンスを容易にし、自動化します。
RBAC REST API を使用すると、次のアクションを実行できます。
- すべて、または特定の権限ポリシー、もしくはロールに関する情報を取得します。
- 権限ポリシーまたはロールを作成、更新、削除します。
- 静的プラグインに関する権限ポリシーの情報を取得します。
RBAC REST API には、次のコンポーネントが必要です。
認可
RBAC REST API には、許可されたユーザーロールに対するベアラートークンの認可が必要です。開発目的の場合、ブラウザーで Web コンソールにアクセスできます。ネットワーク要求リストでトークン要求を更新すると、応答 JSON 内でトークンが見つかります。
Authorization: Bearer $token
たとえば、Developer Hub の Homepage で Network タブに移動し、query?term=
ネットワーク呼び出しを検索できます。あるいは、Catalog ページに移動し、entity-facets
を持つネットワーク呼び出しを選択してベアラートークンを取得することもできます。
HTTP メソッド
RBAC REST API は、API 要求で次の HTTP メソッドをサポートします。
-
GET
: 指定したリソースのエンドポイントから指定した情報を取得する -
POST
: リソースを作成または更新する -
PUT
: リソースを更新する -
DELETE
: リソースを削除する
ベース URL
RBAC REST API 要求のベース URL は、http://SERVER:PORT/api/permission/policies
(http://localhost:7007/api/permission/policies
など) です。
エンドポイント
指定された kind、namespace、ユーザー名の RBAC REST API エンドポイント (例: /api/permission/policies/[kind]/[namespace]/[name]
) は、対応するリソースにアクセスするためにベース URL に追加する URI です。
以下は、/api/permission/policies/[kind]/[namespace]/[name]
エンドポイントの要求 URL の例です。
http://localhost:7007/api/permission/policies/user/default/johndoe
少なくとも 1 つの権限が user:default/johndoe
に割り当てられている場合、前述した要求 URL の例は、有効な認可トークンを含む GET
応答で送信されると結果を返します。ただし、権限がロールにのみ割り当てられている場合、例として挙げた要求 URL は出力を返しません。
要求データ
RBAC REST API の HTTP POST
要求では、データに JSON 要求の body が必要になる場合があります。
http://localhost:7007/api/permission/policies
の POST
要求 URL と JSON 要求の body データの例:
{ "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "delete", "effect": "allow" }
HTTP ステータスコード
RBAC REST API は、応答として返される次の HTTP ステータスコードをサポートしています。
-
200
OK: 要求は成功しました。 -
201
Created: 要求により、新しいリソースが正常に作成されました。 -
204
No Content: 要求は成功しましたが、応答ペイロードで送信する追加コンテンツはありません。 -
400
Bad Request: 要求に入力エラーがありました。 -
401
Unauthorized: 要求されたリソースに対する有効な認証がありません。 -
403
Forbidden: 要求の承認が拒否されました。 -
404
Not Found: 要求されたリソースは見つかりません。 -
409
Conflict: 要求が、現在の状態およびターゲットリソースと競合しています。
5.3.1. REST クライアントまたは curl ユーティリティーを使用して RBAC REST API で要求を送信する
RBAC REST API を使用すると、ユーザーインターフェイスを使用せずに、Developer Hub の権限ポリシーおよびロールと対話できます。RBAC REST API 要求は、任意の REST クライアントまたは curl ユーティリティーを使用して送信できます。
前提条件
- Red Hat Developer Hub がインストールされ、実行されている。Red Hat Developer Hub のインストルの詳細は、「Helm Chart を使用した OpenShift Container Platform への Red Hat Developer Hub のデプロイ」 を参照してください。
- Developer Hub にアクセスできる。
手順
要求の送信先となる API エンドポイント (例:
POST/api/permission/policies
) を特定します。ユースケースに合わせて、要求の詳細を調整します。REST クライアントの場合:
- Authorization: Web コンソールから生成されたトークンを入力します。
-
HTTP method:
POST
に設定します。 -
URL: RBAC REST API のベース URL とエンドポイント (例:
http://localhost:7007/api/permission/policies
) を入力します。
curl ユーティリティーの場合:
-
-X
:POST
に設定します。 -H
: 以下のヘッダーを設定します。Content-type: application/json
Authorization: Bearer $token
$token
は、ブラウザーの Web コンソールから要求されたトークンです。-
URL: 次の RBAC REST API ベースの URL エンドポイント (例:
http://localhost:7007/api/permission/policies
) を入力します。 -
-d
: 要求の JSON bodyを追加します。
要求の例:
curl -X POST "http://localhost:7007/api/permission/policies" -d '{"entityReference":"role:default/test", "permission": "catalog-entity", "policy": "read", "effect":"allow"}' -H "Content-Type: application/json" -H "Authorization: Bearer $token" -v
- 要求を実行し、応答を確認します。
5.3.2. サポートされている RBAC REST API エンドポイント
RBAC REST API は、Developer Hub で権限ポリシーとロールを管理し、そのポリシーとロールに関する情報を取得するための以下のエンドポイントを提供します。
5.3.2.1. 権限ポリシー
RBAC REST API は、Red Hat Developer Hub で権限ポリシーを管理するために、次のエンドポイントをサポートします。
- [GET] /api/permission/policies
すべてのユーザーの権限ポリシーリストを返します。
応答例 (JSON)
[ { "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "read", "effect": "allow" }, { "entityReference": "role:default/test", "permission": "catalog.entity.create", "policy": "use", "effect": "allow" }, ]
- [GET] /api/permission/policies/{kind}/{namespace}/{name}
指定されたエンティティー参照に関連する権限ポリシーを返します。
表5.1 要求パラメーター 名前 説明 タイプ 要件 kind
エンティティーの種類
String
必須
namespace
エンティティーの名前空間
String
必須
name
エンティティーに関連するユーザー名
String
必須
応答例 (JSON)
[ { "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "read", "effect": "allow" }, { "entityReference": "role:default/test", "permission": "catalog.entity.create", "policy": "use", "effect": "allow" } ]
- [POST] /api/permission/policies
指定されたエンティティーの権限ポリシーを作成します。
表5.2 要求パラメーター 名前 説明 タイプ 要件 entityReference
名前空間と名前を含むエンティティーの参照値
String
必須
permission
権限の種類
String
必須
policy
権限の読み取りまたは書き込みポリシー
String
必須
effect
ポリシーを許可するかどうか
String
必須
要求 の body の例 (JSON)
{ "entityReference": "role:default/test", "permission": "catalog-entity", "policy": "read", "effect": "allow" }
応答の例
201 Created
- [PUT] /api/permission/policies/{kind}/{namespace}/{name}
指定されたエンティティーの権限ポリシーを更新します。
要求パラメーター
要求の body には、
oldPolicy
オブジェクトとnewPolicy
オブジェクトが含まれています。名前 説明 タイプ 要件 permission
権限の種類
String
必須
policy
権限の読み取りまたは書き込みポリシー
String
必須
effect
ポリシーを許可するかどうか
String
必須
要求 の body の例 (JSON)
{ "oldPolicy": { "permission": "catalog-entity", "policy": "read", "effect": "deny" }, "newPolicy": { "permission": "policy-entity", "policy": "read", "effect": "allow" } }
応答の例
200
- [DELETE] /api/permission/policies/{kind}/{namespace}/{name}?permission={value1}&policy={value2}&effect={value3}
指定されたエンティティーに追加された権限ポリシーを削除します。
表5.3 要求パラメーター 名前 説明 タイプ 要件 kind
エンティティーの種類
String
必須
namespace
エンティティーの名前空間
String
必須
name
エンティティーに関連するユーザー名
String
必須
permission
権限の種類
String
必須
policy
権限の読み取りまたは書き込みポリシー
String
必須
effect
ポリシーを許可するかどうか
String
必須
応答の例
204 No Content
- [GET] /api/permission/plugins/policies
すべての静的プラグインの権限ポリシーを返します。
応答例 (JSON)
[ { "pluginId": "catalog", "policies": [ { "permission": "catalog-entity", "policy": "read" }, { "permission": "catalog.entity.create", "policy": "create" }, { "permission": "catalog-entity", "policy": "delete" }, { "permission": "catalog-entity", "policy": "update" }, { "permission": "catalog.location.read", "policy": "read" }, { "permission": "catalog.location.create", "policy": "create" }, { "permission": "catalog.location.delete", "policy": "delete" } ] }, ... ]
5.3.2.2. ロール
RBAC REST API は、Red Hat Developer Hub でロールを管理するために、次のエンドポイントをサポートします。
- [GET] /api/permission/roles
Developer Hub のすべてのロールを返します。
応答例 (JSON)
[ { "memberReferences": ["user:default/pataknight"], "name": "role:default/guests" }, { "memberReferences": [ "group:default/janus-authors", "user:default/matt" ], "name": "role:default/rbac_admin" } ]
- [GET] /api/permission/roles/{kind}/{namespace}/{name}
Developer Hub でロールを作成します。
表5.4 要求パラメーター 名前 説明 タイプ 要件 body
作成される新しいロールの
memberReferences
、group
、namespace
、name
。要求の body
必須
要求 の body の例 (JSON)
{ "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }
応答の例
201 Created
- [PUT] /api/permission/roles/{kind}/{namespace}/{name}
Developer Hub のロールの
memberReferences
、kind
、namespace
、またはname
を更新します。要求パラメーター
要求の body には、
oldRole
オブジェクトとnewRole
オブジェクトが含まれています。名前 説明 タイプ 要件 body
作成される新しいロールの
memberReferences
、group
、namespace
、name
。要求の body
必須
要求 の body の例 (JSON)
{ "oldRole": { "memberReferences": ["group:default/test"], "name": "role:default/test_admin" }, "newRole": { "memberReferences": ["group:default/test", "user:default/test2"], "name": "role:default/test_admin" } }
応答の例
200 OK
- [DELETE] /api/permission/roles/{kind}/{namespace}/{name}?memberReferences=<VALUE>
Developer Hub のロールから、指定されたユーザーまたはグループを削除します。
表5.5 要求パラメーター 名前 説明 タイプ 要件 kind
エンティティーの種類
String
必須
namespace
エンティティーの名前空間
String
必須
name
エンティティーに関連するユーザー名
String
必須
memberReferences
関連するグループの情報
String
必須
応答の例
204
- [DELETE] /api/permission/roles/{kind}/{namespace}/{name}
Developer Hub から、指定されたロールを削除します。
表5.6 要求パラメーター 名前 説明 タイプ 要件 kind
エンティティーの種類
String
必須
namespace
エンティティーの名前空間
String
必須
name
エンティティーに関連するユーザー名
String
必須
応答の例
204
第6章 動的プラグインのインストール
動的プラグインのサポートは、バックエンドプラグインマネージャーパッケージに基づいています。これは、設定されたルートディレクトリー (app config 内の dynamicPlugins.rootDirectory
) をスキャンして動的プラグインパッケージを探し、動的にロードするサービスです。
Red Hat Developer Hub に事前にインストールされている動的プラグインを使用することも、パブリック NPM レジストリーから外部動的プラグインをインストールすることもできます。
6.1. インストール済みプラグインの表示
Dynamic Plugins Info フロントエンドプラグインを使用すると、Red Hat Developer Hub アプリケーションに現在インストールされているプラグインを表示できます。このプラグインはデフォルトで有効です。
手順
- Developer Hub アプリケーションを開き、Administration をクリックします。
- Plugins タブに移動して、インストールされたプラグインと関連情報の一覧を表示します。
6.2. 事前にインストール済みの動的プラグイン
Red Hat Developer Hub には、厳選された動的プラグインが事前にインストールされています。カスタム設定を必要とする動的プラグインは、デフォルトでは無効になっています。
このリリースの Developer Hub に事前にインストールされている動的プラグインの完全なリストについては、動的プラグインのサポートマトリクス を参照してください。
アプリケーションが起動すると、デフォルトで無効になっているプラグインごとに、Developer Hub Pod のログ内の install-dynamic-plugins init container
に次のようなメッセージが表示されます。
======= Skipping disabled dynamic plugin ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic
このプラグインを有効にするには、同じ名前のパッケージを Helm チャートに追加し、disabled
フィールドの値を ‘false’ に変更します。以下に例を示します。
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic disabled: false
プラグインのデフォルト設定は、dynamic-plugins.default.yaml`
ファイルから抽出されます。ただし、pluginConfig
エントリーを使用すると、デフォルト設定をオーバーライドできます。
6.2.1. 事前にインストールされた動的プラグインの説明と詳細
テクノロジープレビュー機能は、実稼働環境での Red Hat サービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、今後の製品機能への早期アクセスを提供することで、お客様が機能をテストし、開発プロセス中にフィードバックを提供できるようにしています。
Red Hat のテクノロジープレビュー機能のサポートの詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
バンドルされたコミュニティーの動的プラグインに対する Red Hat のサポートについて、詳しくは Red Hat Developer サポートポリシー のページを参照してください。
Red Hat Developer Hub では 56 個のプラグインが利用可能です。詳細は、以下の表を参照してください。
名前 | Role | プラグイン | 説明 | バージョン | サポートレベル | パス | 必須の変数 | デフォルト |
---|---|---|---|---|---|---|---|---|
3scale | バックエンド | @janus-idp/backstage-plugin-3scale-backend | 3scale Backstage プロバイダープラグインは、3scale コンテンツを Backstage カタログに同期します。 | 1.4.7 | Red Hat テクノロジープレビュー | ./dynamic-plugins/dist/janus-idp-backstage-plugin-3scale-backend-dynamic |
| Disabled |
AAP | バックエンド | @janus-idp/backstage-plugin-aap-backend | 1.5.5 | Red Hat テクノロジープレビュー | ./dynamic-plugins/dist/janus-idp-backstage-plugin-aap-backend-dynamic |
| Disabled | |
ACR | フロントエンド | @janus-idp/backstage-plugin-acr | 1.2.28 | Red Hat テクノロジープレビュー | ./dynamic-plugins/dist/janus-idp-backstage-plugin-acr | Disabled | ||
Analytics Provider Segment | フロントエンド | @janus-idp/backstage-plugin-analytics-provider-segment | Segment 用の Backstage Analytics API 実装を提供します。これをインストールして設定すると、ユーザーが Backstage インスタンスに移動して使用すると、分析イベントが Segment に送信されます。 | 1.2.11 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-analytics-provider-segment |
| Disabled |
Argo CD | フロントエンド | @roadiehq/backstage-plugin-argo-cd | Argo CD を表示し、対話するための Backstage プラグイン。 | 2.4.1 | Production | ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd | Disabled | |
Argo CD | バックエンド | @roadiehq/backstage-plugin-argo-cd-backend | Argo CD バックエンドの Backstage プラグイン | 2.14.5 | Production | ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic |
| Disabled |
Argo CD | バックエンド | @roadiehq/scaffolder-backend-argocd | 1.1.23 | コミュニティーサポート | ./dynamic-plugins/dist/roadiehq-scaffolder-backend-argocd-dynamic |
| Disabled | |
Azure Devops | フロントエンド | @backstage/plugin-azure-devops | 0.3.12 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-azure-devops | Disabled | ||
Azure Devops | バックエンド | @backstage/plugin-azure-devops-backend | Azure DevOps フロントエンドプラグインが使用する、ビルドやプルリクエストなどを取得するための API が含まれる Azure DevOps バックエンドプラグイン。 | 0.5.5 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-azure-devops-backend-dynamic |
| Disabled |
Azure Devops | バックエンド | @backstage/plugin-scaffolder-backend-module-azure | @backstage/plugin-scaffolder-backend の Azure モジュール | 0.1.5 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-azure-dynamic | 有効 | |
Bitbucket | バックエンド | @backstage/plugin-catalog-backend-module-bitbucket-cloud | Bitbucket Cloud への統合を支援する Backstage カタログバックエンドモジュール | 0.1.28 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-cloud-dynamic |
| Disabled |
Bitbucket | バックエンド | @backstage/plugin-catalog-backend-module-bitbucket-server | Bitbucket Server への統合を支援する Backstage カタログバックエンドモジュール | 0.1.26 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-bitbucket-server-dynamic |
| Disabled |
Bitbucket | バックエンド | @backstage/plugin-scaffolder-backend-module-bitbucket-cloud | @backstage/plugin-scaffolder-backend の Bitbucket Cloud モジュール | 0.1.3 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-cloud-dynamic | 有効 | |
Bitbucket | バックエンド | @backstage/plugin-scaffolder-backend-module-bitbucket-server | @backstage/plugin-scaffolder-backend の Bitbucket Server モジュール。 | 0.1.3 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-bitbucket-server-dynamic | 有効 | |
Datadog | フロントエンド | @roadiehq/backstage-plugin-datadog | Datadog のグラフとダッシュボードを Backstage に埋め込みます。 | 2.2.6 | コミュニティーサポート | ./dynamic-plugins/dist/roadiehq-backstage-plugin-datadog | Disabled | |
Dynatrace | フロントエンド | @backstage/plugin-dynatrace | Dynatrace に統合する Backstage プラグイン。 | 9.0.0 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-dynatrace | Disabled | |
動的プラグイン | フロントエンド | @janus-idp/backstage-plugin-dynamic-plugins-info | Backstage 用の Dynamic Plugins Info プラグイン | 1.0.2 | Production | @janus-idp/backstage-plugin-dynamic-plugins-info | 有効 | |
Gerrit | バックエンド | @backstage/plugin-scaffolder-backend-module-gerrit | @backstage/plugin-scaffolder-backend の Gerrit モジュール | 0.1.5 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gerrit-dynamic | 有効 | |
GitHub | バックエンド | @backstage/plugin-catalog-backend-module-github | GitHub への統合を支援する Backstage カタログバックエンドモジュール | 0.5.3 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-dynamic |
| Disabled |
GitHub | バックエンド | @backstage/plugin-catalog-backend-module-github-org | カタログプラグインの github-org バックエンドモジュール。 | 0.1.0 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-github-org-dynamic |
| Disabled |
GitHub | フロントエンド | @backstage/plugin-github-actions | GitHub Actions に統合する Backstage プラグイン | 0.6.11 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-github-actions | Disabled | |
GitHub | フロントエンド | @backstage/plugin-github-issues | GitHub Issues に統合する Backstage プラグイン | 0.2.19 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-github-issues | Disabled | |
GitHub | バックエンド | @backstage/plugin-scaffolder-backend-module-github | @backstage/plugin-scaffolder-backend の GitHub モジュール | 0.2.3 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-github-dynamic | 有効 | |
GitHub | フロントエンド | @roadiehq/backstage-plugin-github-insights | Readme、Top Contributor、およびその他のウィジェットを提供する Backstage プラグイン。 | 2.3.27 | コミュニティーサポート | ./dynamic-plugins/dist/roadiehq-backstage-plugin-github-insights | Disabled | |
GitHub | フロントエンド | @roadiehq/backstage-plugin-github-pull-requests | GitHub プルリクエストを表示し、対話するための Backstage プラグイン。 | 2.5.24 | コミュニティーサポート | ./dynamic-plugins/dist/roadiehq-backstage-plugin-github-pull-requests | Disabled | |
GitHub | フロントエンド | @roadiehq/backstage-plugin-security-insights | GitHub リポジトリーのセキュリティーに関する洞察を追加するための Backstage プラグイン。 | 2.3.15 | コミュニティーサポート | ./dynamic-plugins/dist/roadiehq-backstage-plugin-security-insights | Disabled | |
Gitlab | バックエンド | @backstage/plugin-catalog-backend-module-gitlab | GitLab インスタンスからリポジトリーを展開します。 | 0.3.10 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-dynamic | Disabled | |
Gitlab | バックエンド | @backstage/plugin-scaffolder-backend-module-gitlab | GitLab との対話を可能にする scaffolder バックエンドのモジュール | 0.2.16 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-scaffolder-backend-module-gitlab-dynamic | Disabled | |
Gitlab | フロントエンド | @immobiliarelabs/backstage-plugin-gitlab | GitLab と対話するための Backstage プラグイン | 6.4.0 | コミュニティーサポート | ./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab | Disabled | |
Gitlab | バックエンド | @immobiliarelabs/backstage-plugin-gitlab-backend | GitLab と対話するための Backstage プラグイン | 6.4.0 | コミュニティーサポート | ./dynamic-plugins/dist/immobiliarelabs-backstage-plugin-gitlab-backend-dynamic |
| Disabled |
Jenkins | フロントエンド | @backstage/plugin-jenkins | Jenkins 二統合される Backstage プラグイン | 0.9.5 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-jenkins | Disabled | |
Jenkins | バックエンド | @backstage/plugin-jenkins-backend | Jenkins に統合する Backstage バックエンドプラグイン | 0.3.7 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-jenkins-backend-dynamic |
| Disabled |
Jfrog Artifactory | フロントエンド | @janus-idp/backstage-plugin-jfrog-artifactory | Jfrog Artifactory プラグインは、Jfrog Artifactory レジストリー内のコンテナーイメージに関する情報を表示します。 | 1.2.28 | Red Hat テクノロジープレビュー | ./dynamic-plugins/dist/janus-idp-backstage-plugin-jfrog-artifactory |
| Disabled |
Jira | フロントエンド | @roadiehq/backstage-plugin-jira | Jira を表示し、対話するための Backstage プラグイン | 2.5.4 | コミュニティーサポート | ./dynamic-plugins/dist/roadiehq-backstage-plugin-jira | Disabled | |
Keycloak | バックエンド | Keycloak バックエンドプラグインは、Keycloak を Backstage に統合します。 | 1.8.6 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-keycloak-backend-dynamic |
| Disabled | |
Kubernetes | フロントエンド | @backstage/plugin-kubernetes | Kubernetes に統合する Backstage プラグイン | 0.11.5 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-kubernetes | 有効 | |
Kubernetes | バックエンド | @backstage/plugin-kubernetes-backend | Kubernetes に統合する Backstage バックエンドプラグイン | 0.15.3 | Production | ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic |
| 有効 |
Kubernetes | フロントエンド | @janus-idp/backstage-plugin-topology | Topology プラグインを使用すると、Kubernetes クラスター上の任意のサービスを駆動する Deployment、Job、Daemonset、Statefulset、CronJob、Pod などのワークロードを視覚化できます。 | 1.18.8 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-topology | 有効 | |
Lighthouse | フロントエンド | @backstage/plugin-lighthouse | Lighthouse に統合する Backstage プラグイン | 0.4.15 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-lighthouse | Disabled | |
Nexus リポジトリーマネージャー | フロントエンド | @janus-idp/backstage-plugin-nexus-repository-manager | Nexus Repository Manager プラグインは、Backstage アプリケーションの Nexus Repository Manager で利用可能なビルドアーティファクトに関する情報を表示します。 | 1.4.28 | Red Hat テクノロジープレビュー | ./dynamic-plugins/dist/janus-idp-backstage-plugin-nexus-repository-manager | Disabled | |
OCM | フロントエンド | @janus-idp/backstage-plugin-ocm |
Open Cluster Management (OCM) プラグインは、Backstage インスタンスを OCM の | 3.7.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-ocm | Disabled | |
OCM | バックエンド | @janus-idp/backstage-plugin-ocm-backend | 3.5.7 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-ocm-backend-dynamic |
| Disabled | |
Pagerduty | フロントエンド | @pagerduty/backstage-plugin | PagerDuty に統合する Backstage プラグイン | 0.9.3 | コミュニティーサポート | ././dynamic-plugins/dist/pagerduty-backstage-plugin | Disabled | |
Quay | フロントエンド | @janus-idp/backstage-plugin-quay | Quay プラグインは、Backstage アプリケーションの Quay レジストリー内のコンテナーイメージに関する情報を表示します。 | 1.5.10 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-quay | Disabled | |
Quay | バックエンド | @janus-idp/backstage-scaffolder-backend-module-quay | このモジュールは、Quay の Backstage テンプレートアクションを提供します。 | 1.3.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-quay-dynamic | 有効 | |
RBAC | フロントエンド | @janus-idp/backstage-plugin-rbac | Backstage の RBAC フロントエンドプラグイン | 1.15.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-rbac | Disabled | |
Regex | バックエンド | @janus-idp/backstage-scaffolder-backend-module-regex | このプラグインは、RegExp の Backstage テンプレートアクションを提供します。 | 1.3.5 | Production | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-regex-dynamic | 有効 | |
Scaffolder | バックエンド | @roadiehq/scaffolder-backend-module-utils | scaffolder テンプレートで使用するアクションのコレクションが含まれています。 | 1.13.6 | コミュニティーサポート | ./dynamic-plugins/dist/roadiehq-scaffolder-backend-module-utils-dynamic | 有効 | |
ServiceNow | バックエンド | @janus-idp/backstage-scaffolder-backend-module-servicenow | このプラグインは、ServiceNow の Backstage テンプレートアクションを提供します。 | 1.3.5 | Red Hat テクノロジープレビュー | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-servicenow-dynamic |
| Disabled |
SonarQube | フロントエンド | @backstage/plugin-sonarqube | SonarQube コードの品質とセキュリティーの結果を表示するための Backstage プラグイン。 | 0.7.12 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-sonarqube | Disabled | |
SonarQube | バックエンド | @backstage/plugin-sonarqube-backend | 0.2.15 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-sonarqube-backend-dynamic |
| Disabled | |
SonarQube | バックエンド | @janus-idp/backstage-scaffolder-backend-module-sonarqube | このモジュールは、SonarQube の Backstage テンプレートアクションを提供します。 | 1.3.5 | Red Hat テクノロジープレビュー | ./dynamic-plugins/dist/janus-idp-backstage-scaffolder-backend-module-sonarqube-dynamic | Disabled | |
Tech Radar | フロントエンド | @backstage/plugin-tech-radar | 組織の Tech Radar を表示できる Backstage プラグイン | 0.6.13 | コミュニティーサポート | ./dynamic-plugins/dist/backstage-plugin-tech-radar | Disabled | |
Techdocs | フロントエンド | @backstage/plugin-techdocs | コンポーネントのテクニカルドキュメントをレンダリングする Backstage プラグイン | 1.10.0 | Production | ./dynamic-plugins/dist/backstage-plugin-techdocs | 有効 | |
Techdocs | バックエンド | @backstage/plugin-techdocs-backend | コンポーネントのテクニカルドキュメントをレンダリングする Backstage バックエンドプラグイン | 1.9.6 | Production | ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic |
| 有効 |
Tekton | フロントエンド | @janus-idp/backstage-plugin-tekton | Tekton プラグインを使用すると、Kubernetes クラスターで利用可能な PipelineRun リソースを視覚化できます。 | 3.5.12 | Production | ./dynamic-plugins/dist/janus-idp-backstage-plugin-tekton | Disabled |
6.3. Helm チャートを使用した動的プラグインのインストール
柔軟なインストール方法である Helm チャートを使用して、Developer Hub インスタンスをデプロイできます。Helm chart を使用すると、コードを再コンパイルしたりコンテナーを再ビルドしたりすることなく、動的プラグインを Developer Hub インスタンスにサイドロードできます。
Helm を使用して Developer Hub に動的プラグインをインストールするには、Helm チャートに次の global.dynamic
パラメーターを追加します。
plugins
: インストールを目的とした動的プラグインのリスト。デフォルトでは、リストは空です。プラグインのリストには次のフィールドを入力できます。-
package
: インストールする動的プラグインパッケージのパッケージ仕様。パッケージは、ローカルまたは外部の動的プラグインのインストールに使用できます。ローカルインストールの場合は、動的プラグインを含むローカルフォルダーへのパスを使用します。外部インストールの場合は、パブリック NPM リポジトリーのパッケージ仕様を使用します。 -
integrity
(外部パッケージの場合に必要): パッケージ固有の<alg>-<digest>
形式の整合性チェックサム。サポートされるアルゴリズムは、sha256
、sha384
、sha512
です。 -
pluginConfig
: オプションのプラグイン固有のapp-config
YAML フラグメント。詳細は、プラグインの設定を参照してください。 -
disabled
:true
に設定すると、動的プラグインが無効になります。デフォルト:false
。
-
-
includes
: 同じ構文を使用する YAML ファイルのリスト。
includes
ファイル内の plugins
リストは、main Helm values の plugins
リストとマージされます。プラグインパッケージが両方の plugins
リストに記載されている場合、main Helm values の plugins
フィールドが includes
ファイルの plugins
フィールドをオーバーライドします。デフォルト設定には、dynamic-plugins.default.yaml
ファイルが含まれています。このファイルには、デフォルトで有効か無効かに関係なく、Developer Hub に事前にインストールされているすべての動的プラグインが含まれます。
6.3.1. 整合性チェックサムの取得
整合性チェックサムを取得するには、次のコマンドを入力します。
npm view <package name>@<version> dist.integrity
6.3.2. 動的プラグインインストール用の Helm chart 設定の例
次の例は、特定の種類の動的プラグインインストール用に Helm chart を設定する方法を示しています。
外部プラグインが特定のアプリケーション設定を必要とする場合に、ローカルプラグインと外部プラグインを設定する
global: dynamic: plugins: - package: <alocal package-spec used by npm pack> - package: <external package-spec used by npm pack> integrity: sha512-<some hash> pluginConfig: ...
含まれるファイルからプラグインを無効にする
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.default.yaml> disabled: true
含まれるファイルからプラグインを有効にする
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.custom.yaml> disabled: false
含まれるファイルで無効になっているプラグインを有効にする
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: <some imported plugins listed in dynamic-plugins.custom.yaml> disabled: false
6.3.3. Helm chart を使用した外部動的プラグインのインストール
NPM レジストリーには、デモンストレーションの目的で使用できる外部動的プラグインが含まれています。たとえば、次のコミュニティープラグインは、NPMJS リポジトリーの janus-idp
組織で使用できます。
- Notifications (フロントエンドおよびバックエンド)
- Kubernetes actions (scaffolder actions)
Notifications プラグインおよび Kubernetes actions プラグインをインストールするには、次の例に示すように、global.dynamic.plugins
リストの Helm chart values に当該プラグインを追加します。
global: dynamic: plugins: - package: '@janus-idp/plugin-notifications-backend-dynamic@1.3.6' # Integrity can be found at https://registry.npmjs.org/@janus-idp/plugin-notifications-backend-dynamic integrity: 'sha512-Qd8pniy1yRx+x7LnwjzQ6k9zP+C1yex24MaCcx7dGDPT/XbTokwoSZr4baSSn8jUA6P45NUUevu1d629mG4JGQ==' - package: '@janus-idp/plugin-notifications@1.1.12 ' # https://registry.npmjs.org/@janus-idp/plugin-notifications integrity: 'sha512-GCdEuHRQek3ay428C8C4wWgxjNpNwCXgIdFbUUFGCLLkBFSaOEw+XaBvWaBGtQ5BLgE3jQEUxa+422uzSYC5oQ==' pluginConfig: dynamicPlugins: frontend: janus-idp.backstage-plugin-notifications: appIcons: - name: notificationsIcon module: NotificationsPlugin importName: NotificationsActiveIcon dynamicRoutes: - path: /notifications importName: NotificationsPage module: NotificationsPlugin menuItem: icon: notificationsIcon text: Notifications config: pollingIntervalMs: 5000 - package: '@janus-idp/backstage-scaffolder-backend-module-kubernetes-dynamic@1.3.5' # https://registry.npmjs.org/@janus-idp/backstage-scaffolder-backend-module-kubernetes-dynamic integrity: 'sha512-19ie+FM3QHxWYPyYzE0uNdI5K8M4vGZ0SPeeTw85XPROY1DrIY7rMm2G0XT85L0ZmntHVwc9qW+SbHolPg/qRA==' proxy: endpoints: /explore-backend-completed: target: 'http://localhost:7017' - package: '@dfatwork-pkgs/search-backend-module-explore-wrapped-dynamic@0.1.3-next.1' # https://registry.npmjs.org/@dfatwork-pkgs/search-backend-module-explore-wrapped-dynamic integrity: 'sha512-mv6LS8UOve+eumoMCVypGcd7b/L36lH2z11tGKVrt+m65VzQI4FgAJr9kNCrjUZPMyh36KVGIjYqsu9+kgzH5A==' - package: '@dfatwork-pkgs/plugin-catalog-backend-module-test-dynamic@0.0.0' # https://registry.npmjs.org/@dfatwork-pkgs/plugin-catalog-backend-module-test-dynamic integrity: 'sha512-YsrZMThxJk7cYJU9FtAcsTCx9lCChpytK254TfGb3iMAYQyVcZnr5AA/AU+hezFnXLsr6gj8PP7z/mCZieuuDA=='
6.4. エアギャップ環境での外部プラグインのインストール
カスタム NPM レジストリーをセットアップすることで、エアギャップ環境に外部プラグインをインストールできます。動的プラグインパッケージの NPM レジストリー URL と認証情報を設定するには、動的プラグインパッケージのカスタム NPM レジストリーの使用 を参照してください。
6.5. 動的プラグインパッケージのカスタム NPM レジストリーの使用
Helm chart を使用して、動的プラグインパッケージの NPM レジストリー URL と認証情報を設定できます。npm pack
を使用して取得した動的プラグインパッケージの場合は、.npmrc
ファイルを使用できます。
Helm chart を使用して、次の内容で dynamic-plugins-npmrc
という名前のシークレットを作成し、.npmrc
ファイルを NPM レジストリーに追加します。
apiVersion: v1 kind: Secret metadata: name: dynamic-plugins-npmrc type: Opaque stringData: .npmrc: | registry=<registry-url> //<registry-url>:_authToken=<auth-token> ...
6.6. 動的プラグインの基本設定
一部の動的プラグインでは、環境変数を設定する必要があります。必須の環境変数が設定されておらず、プラグインが有効になっている場合、アプリケーションの起動に失敗する可能性があります。
各プラグインで必須の環境変数は、動的プラグインのサポートマトリクス にリストされています。
ZiB-bomb の検出。大きなファイルを含む動的プラグインをインストールする場合、インストールスクリプトがパッケージアーカイブを ZiB-bomb とみなすと、インストールは失敗します。
パッケージアーカイブ内のファイルの最大許容サイズを増やすには、デプロイメント install-dynamic-plugins initContainer
の MAX_ENTRY_SIZE
環境値を、デフォルトサイズの 20000000
バイトより大きくします。
6.7. Ansible Automation Platform のインストールと設定
Ansible Automation Platform (AAP) プラグインは、ジョブテンプレートやワークフロージョブテンプレートなどのアクセス可能なテンプレートを AAP から Developer Hub カタログに同期します。
Ansible Automation Platform プラグインはテクノロジープレビュー機能としてのみご利用いただけます。
テクノロジープレビュー機能は、実稼働環境での Red Hat サービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、今後の製品機能への早期アクセスを提供することで、お客様が機能をテストし、開発プロセス中にフィードバックを提供できるようにしています。
Red Hat のテクノロジープレビュー機能のサポートの詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
バンドルされたコミュニティーの動的プラグインに対する Red Hat のサポートについて、詳しくは Red Hat Developer サポートポリシー のページを参照してください。
6.7.1. 管理者の場合
6.7.1.1. AAP バックエンドプラグインのインストールおよび設定
AAP バックエンドプラグインを使用すると、Developer Hub の app-config.yaml
設定ファイルを使用して 1 つまたは複数のプロバイダーを設定できます。
前提条件
- Developer Hub アプリケーションがインストールされ、実行中である。
- Ansible Automation Platform でアカウントを作成している。
インストール
AAP バックエンドプラグインは、基本的な設定プロパティーとともに Developer Hub にプリロードされています。これを有効にするには、次のように、disabled
プロパティーを false
に設定します。
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-aap-backend-dynamic disabled: false
Basic configuration
AAP プラグインを有効にするには、次の環境変数を設定する必要があります。
-
AAP_BASE_URL
: サービスのベース URL -
AAP AUTH TOKEN
: サービスの認証トークン
詳細設定
aap
マーカーを使用して、Developer Hub のapp-config.yaml
ファイルを次のように設定できます。catalog: providers: aap: dev: baseUrl: $(AAP_BASE_URL) authorization: 'Bearer ${AAP_AUTH_TOKEN}' owner: <owner> system: <system> schedule: # optional; same options as in TaskScheduleDefinition # supports cron, ISO duration, "human duration" as used in code frequency: { minutes: 1 } # supports ISO duration, "human duration" as used in code timeout: { minutes: 1 }
6.7.1.2. AAP バックエンドプラグインのトラブルシューティング用のログ行
Developer Hub アプリケーションを起動すると、以下のログ行が表示されます。
[1] 2023-02-13T15:26:09.356Z catalog info Discovered ResourceEntity API type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.423Z catalog info Discovered ResourceEntity Red Hat Event (DEV, v1.2.0) type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.620Z catalog info Discovered ResourceEntity Red Hat Event (TEST, v1.1.1) type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.819Z catalog info Discovered ResourceEntity Red Hat Event (PROD, v1.1.1) type=plugin target=AapResourceEntityProvider:dev [1] 2023-02-13T15:26:09.819Z catalog info Applying the mutation with 3 entities type=plugin target=AapResourceEntityProvider:dev
6.7.2. ユーザーの場合
6.7.2.1. Developer Hub AAP からのテンプレートへのアクセス
AAP バックエンドプラグインを正常に設定すると、ジョブテンプレートやワークフロージョブテンプレートなどのテンプレートが AAP から同期され、Developer Hub カタログページにリソースとして表示されます。
前提条件
- Developer Hub アプリケーションがインストールされ、実行中である。
- AAP バックエンドプラグインがインストールされている。インストールおよび設定の手順は、「AAP バックエンドプラグインのインストールおよび設定」 を参照してください。
手順
- Developer Hub アプリケーションを開き、Catalog ページに移動します。
ページの左側にある Kind ドロップダウンから Resource を選択し、 the Type ドロップダウンから job template または workflow job template を選択します。
AAP から利用可能なすべてのテンプレートのリストがページに表示されます。
リストからテンプレートを選択します。
OVERVIEW タブには、次のようなさまざまなカードが含まれています。
- About: テンプレートに関する詳細情報を提供します。
- Relations: テンプレートと関連する側面を視覚的に表示します。
- Links: AAP ダッシュボードへのリンクと、テンプレートの詳細ページへのリンクが含まれます。
- subcomponents: 関連するサブコンポーネントの一覧を表示します。
6.8. Keycloak のインストールと設定
Keycloak を Developer Hub に統合する Keycloak バックエンドプラグインには、次の機能があります。
- レルム内の Keycloak ユーザーの同期
- レルム内の Keycloak グループとそのユーザーの同期
6.8.1. 管理者の場合
6.8.1.1. インストール
Keycloak プラグインは、基本的な設定プロパティーとともに Developer Hub にプリロードされています。これを有効にするには、次のように、disabled
プロパティーを false
に設定します。
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-keycloak-backend-dynamic disabled: false
6.8.1.2. Basic configuration
Keycloak プラグインを有効にするには、次の環境変数を設定する必要があります。
-
KEYCLOAK_BASE_URL
-
KEYCLOAK_LOGIN_REALM
-
KEYCLOAK_REALM
-
KEYCLOAK_CLIENT_ID
-
KEYCLOAK_CLIENT_SECRET
6.8.1.3. 詳細設定
スケジュール設定
次のように、app-config.yaml
ファイルでスケジュールを設定できます。
catalog: providers: keycloakOrg: default: # ... # highlight-add-start schedule: # optional; same options as in TaskScheduleDefinition # supports cron, ISO duration, "human duration" as used in code frequency: { minutes: 1 } # supports ISO duration, "human duration" as used in code timeout: { minutes: 1 } initialDelay: { seconds: 15 } # highlight-add-end
app-config.yaml
ファイルのスケジュールに変更を加えた場合は、再起動して変更を適用します。
Keycloak クエリーパラメーター
次のように、app-config.yaml
ファイル内のデフォルトの Keycloak クエリーパラメーターをオーバーライドできます。
catalog: providers: keycloakOrg: default: # ... # highlight-add-start userQuerySize: 500 # Optional groupQuerySize: 250 # Optional # highlight-add-end
Developer Hub と Keycloak 間の通信は、Keycloak API を使用して有効になります。ユーザー名およびパスワード、またはクライアント認証情報は、認証方法に対応しています。
以下の表は、app-config.yaml
ファイルの catalog.providers.keycloakOrg.<ENVIRONMENT_NAME>
オブジェクトでプラグインを有効にするために設定できるパラメーターを説明しています。
名前 | 説明 | デフォルト値 | 必須 |
---|---|---|---|
|
Keycloak サーバーの場所 (例: | "" | はい |
| 同期するレルム |
| いいえ |
| 認証に使用するレルム |
| いいえ |
| 認証するユーザー名 | "" | パスワードベースの認証を使用している場合は Yes |
| 認証するパスワード | "" | パスワードベースの認証を使用している場合は Yes |
| 認証するクライアント ID | "" | クライアントクレデンシャルベースの認証を使用している場合は Yes |
| 認証するクライアントシークレット | "" | クライアントクレデンシャルベースの認証を使用している場合は Yes |
| 一度にクエリーするユーザーの数 |
| いいえ |
| 一度にクエリーするグループの数 |
| いいえ |
クライアントクレデンシャルを使用する場合は、アクセスタイプを confidential
に設定し、サービスアカウントを有効にする必要があります。realm-management
クライアントロールから以下のロールも追加する必要があります。
-
query-groups
-
query-users
-
view-users
6.8.1.4. 制限事項
自己署名または企業証明書に問題がある場合は、Developer Hub を開始する前に以下の環境変数を設定できます。
NODE_TLS_REJECT_UNAUTHORIZED=0
環境変数を設定するソリューションは推奨されません。
6.8.2. ユーザーの場合
6.8.2.1. Keycloak プラグインを使用した Developer Hub へのユーザーとグループのインポート
プラグインが正常に設定されると、プラグインは起動するたびにユーザーとグループをインポートします。
スケジュールを設定すると、ユーザーとグループもインポートされます。
最初のインポートが完了したら、User を選択して、カタログページからユーザーの一覧を表示できます。
ページにユーザーの一覧が表示されます。
ユーザーを選択すると、Keycloak からインポートされた情報が表示されます。
グループを選択し、リストを表示して、Keycloak からインポートされたグループの情報を選択または表示することもできます。
6.9. Nexus Repository Manager のインストールと設定
Nexus Repository Manager プラグインは、Developer Hub アプリケーションのビルドアーティファクトに関する情報を表示します。ビルドアーティファクトは Nexus Repository Manager で入手できます。
Nexus Repository Manager プラグインは、テクノロジープレビュー機能のみです。
テクノロジープレビュー機能は、実稼働環境での Red Hat サービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、今後の製品機能への早期アクセスを提供することで、お客様が機能をテストし、開発プロセス中にフィードバックを提供できるようにしています。
Red Hat のテクノロジープレビュー機能のサポートの詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
バンドルされたコミュニティーの動的プラグインに対する Red Hat のサポートについて、詳しくは Red Hat Developer サポートポリシー のページを参照してください。
6.9.1. 管理者の場合
6.9.1.1. Nexus Repository Manager プラグインのインストールおよび設定
インストール
Nexus Repository Manager プラグインは、基本的な設定プロパティーとともに Developer Hub にプリロードされています。これを有効にするには、次のように、disabled プロパティーを false
に設定します。
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-nexus-repository-manager disabled: false
設定
次のように、
app-config.yaml
ファイルでプロキシーを目的の Nexus Repository Manager サーバーに設定します。proxy: '/nexus-repository-manager': target: 'https://<NEXUS_REPOSITORY_MANAGER_URL>' headers: X-Requested-With: 'XMLHttpRequest' # Uncomment the following line to access a private Nexus Repository Manager using a token # Authorization: 'Bearer <YOUR TOKEN>' changeOrigin: true # Change to "false" in case of using self hosted Nexus Repository Manager instance with a self-signed certificate secure: true
オプション: Nexus Repository Manager プロキシーのベース URL を次のように変更します。
nexusRepositoryManager: # default path is `/nexus-repository-manager` proxyPath: /custom-path
オプション: 次の実験的アノテーションを有効にします。
nexusRepositoryManager: experimentalAnnotations: true
以下のアノテーションを使用してエンティティーにアノテーションを付けます。
metadata: annotations: # insert the chosen annotations here # example nexus-repository-manager/docker.image-name: `<ORGANIZATION>/<REPOSITORY>`,
動的プラグインのインストールと設定の詳細は、6章動的プラグインのインストール セクションを参照してください。
6.9.2. ユーザーの場合
6.9.2.1. Developer Hub での Nexus Repository Manager プラグインの使用
Nexus Repository Manager は、ビルドアーティファクトに関する情報を表示できるフロントエンドプラグインです。
前提条件
- Developer Hub アプリケーションがインストールされ、実行中である。
- Nexus Repository Manager プラグインがインストールされている。インストールプロセスは、「Nexus Repository Manager プラグインのインストールおよび設定」 を参照してください。
手順
- Developer Hub アプリケーションを開き、Catalog ページからコンポーネントを選択します。
BUILD ARTIFACTS タブに移動します。
BUILD ARTIFACTS タブには、ビルドアーティファクトのリストと、VERSION、REPOSITORY、REPOSITORY TYPE、MANIFEST、MODIFIED、SIZE などの関連情報が含まれます。
6.10. Tekton のインストールと設定
Tekton プラグインを使用すると、Kubernetes または OpenShift クラスターでの CI/CD パイプライン実行の結果を視覚化できます。このプラグインを使用すると、ユーザーはアプリケーションのパイプラインに含まれるすべての関連タスクの概略ステータスを視覚的に確認できます。
6.10.1. 管理者の場合
6.10.1.1. インストール
前提条件
-
@backstage/plugin-kubernetes
および@backstage/plugin-kubernetes-backend
動的プラグインがインストールおよび設定されている。動的プラグインのインストールの詳細は、6章動的プラグインのインストール を参照してください。 -
Kubernetes プラグインが、
ServiceAccount
を使用してクラスターに接続するように設定されている。 ServiceAccount
がクラスターにアクセスするように、ClusterRole
がカスタムリソース (PipelineRuns および TaskRuns) に付与されている。注記RHDH Kubernetes プラグインが設定されている場合、
ClusterRole
はすでに付与されています。-
Pod ログを表示するために、
pods/log
の権限を付与している。 以下のコードを使用して、カスタムリソースおよび Pod ログに
ClusterRole
を付与することができます。kubernetes: ... customResources: - group: 'tekton.dev' apiVersion: 'v1' plural: 'pipelineruns' - group: 'tekton.dev' apiVersion: 'v1' ... apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: backstage-read-only rules: - apiGroups: - "" resources: - pods/log verbs: - get - list - watch ... - apiGroups: - tekton.dev resources: - pipelineruns - taskruns verbs: - get - list
読み取り専用の
ClusterRole
用に準備されたマニフェストを使用できます。これにより、Kubernetes プラグインと Tekton プラグインの両方にアクセスできるようになります。以下のアノテーションをエンティティーの
catalog-info.yaml
ファイルに追加し、エンティティーに Kubernetes リソースが含まれているかどうかを特定します。annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
また、
backstage.io/kubernetes-namespace
アノテーションを追加して、定義された namespace を使用して Kubernetes リソースを識別することもできます。annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NS>
以下のアノテーションをエンティティーの
catalog-info.yaml
ファイルに追加して、RHDH で Tekton 関連の機能を有効にします。アノテーションの値は、RHDH エンティティーの名前を識別します。annotations: ... janus-idp.io/tekton : <BACKSTAGE_ENTITY_NAME>
RHDH が Kubernetes リソースを検索するために使用する、カスタムラベルセレクターを追加します。ラベルセレクターは ID アノテーションよりも優先されます。
annotations: ... backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
Kubernetes プラグインが要求されたエンティティーから Kubernetes リソースを取得できるように、以下のラベルをリソースに追加します。
labels: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
注記ラベルセレクターを使用する場合は、上記のラベルがリソースに存在する必要があります。
手順
Tekton プラグインは、基本的な設定プロパティーとともに RHDH にプリロードされています。これを有効にするには、次のように、disabled プロパティーを false に設定します。
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/janus-idp-backstage-plugin-tekton disabled: false
6.10.2. ユーザーの場合
6.10.2.1. RHDH での Tekton プラグインの使用
Tekton フロントエンドプラグインを使用して PipelineRun
リソースを表示できます。
前提条件
- Red Hat Developer Hub (RHDH) がインストールされている。
- Tekton プラグインがインストールされている。インストールプロセスについては、Tekton プラグインのインストールと設定 を参照してください。
手順
- RHDH アプリケーションを開き、Catalog ページからコンポーネントを選択します。
CI タブに移動します。
CI タブには、Kubernetes クラスターに関連付けられた PipelineRun リソースのリストが表示されます。リストには、NAME、VULNERABILITIES、STATUS、TASK STATUS、STARTED、DURATION などのパイプライン実行の詳細が含まれます。
リスト内の PipelineRun 名の横にある行展開ボタンをクリックして、PipelineRun の視覚化を表示します。パイプライン実行リソースには、完了すべきタスクが含まれます。タスクカードにマウスポインターをかざすと、その特定のタスクを完了する手順を表示できます。
第7章 テンプレートの管理
テンプレートは、YAML ファイルで定義されたさまざまな UI フィールドで設定されたフォームです。テンプレートには、actions が含まれます。actions とは、順番に実行され、条件付きで実行できるステップです。
テンプレートを使用すると、Red Hat Developer Hub コンポーネントを簡単に作成し、Red Hat Developer Hub ソフトウェアカタログや、GitHub または GitLab のリポジトリーなどのさまざまな場所にこれらのコンポーネントを公開できます。
7.1. テンプレートエディターを使用したテンプレートの作成
テンプレートエディターを使用して、テンプレートを作成できます。
手順
以下のオプションのいずれかを使用して、テンプレートエディターにアクセスします。
-
Red Hat Developer Hub インスタンスの URL
https://<rhdh_url>/create/edit
開きます。 - Red Hat Developer Hub コンソールのナビゲーションメニューで Create… をクリックし、オーバーフローメニューボタンをクリックして Template editor を選択します。
-
Red Hat Developer Hub インスタンスの URL
- Edit Template Form をクリックします。
- オプション: テンプレートのパラメーターの YAML 定義を変更します。これらのパラメーターの詳細は、「YAML ファイルとしてのテンプレートの作成」 を参照してください。
- Name * に、テンプレート向けに独自の名前を入力します。
- Owner ドロップダウンメニューから、テンプレートの所有者を選択します。
- Next をクリックします。
Repository Location ビューで、テンプレートを公開するホストされたリポジトリーに関する次の情報を入力します。
ドロップダウンメニューから利用可能な Host を選択します。
注記利用可能なホストは、
allowedHosts
フィールドで YAML パラメーターで定義されます。サンプル YAML
# ... ui:options: allowedHosts: - github.com # ...
- Owner * フィールドに、ホストリポジトリーが属する組織、ユーザーまたはプロジェクトを入力します。
- Repository * フィールドに、ホストされているリポジトリーの名前を入力します。
- Review をクリックします。
- 正確性の情報を確認し、Create をクリックします。
検証
- ナビゲーションパネルの Catalog タブをクリックします。
- Kind ドロップダウンメニューで、Template を選択します。
- テンプレートが既存のテンプレートのリストに表示されていることを確認します。
7.2. YAML ファイルとしてのテンプレートの作成
Template
オブジェクトを YAML ファイルとして定義することでテンプレートを作成できます。
Template
オブジェクトは、テンプレートとそのメタデータを記述します。また、必要な入力変数と、スキャフォールディングサービスによって実行されるアクションのリストも含まれています。
Template
オブジェクトの例
apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: template-name 1 title: Example template 2 description: An example template for v1beta3 scaffolder. 3 spec: owner: backstage/techdocs-core 4 type: service 5 parameters: 6 - title: Fill in some steps required: - name properties: name: title: Name type: string description: Unique name of the component owner: title: Owner type: string description: Owner of the component - title: Choose a location required: - repoUrl properties: repoUrl: title: Repository Location type: string steps: 7 - id: fetch-base name: Fetch Base action: fetch:template # ... output: 8 links: - title: Repository 9 url: ${{ steps['publish'].output.remoteUrl }} - title: Open in catalog 10 icon: catalog entityRef: ${{ steps['register'].output.entityRef }} # ...
- 1
- テンプレートの名前を指定します。
- 2
- テンプレートのタイトルを指定します。これは、Create… ビューのテンプレートタイルに表示されるタイトルです。
- 3
- テンプレートの説明を入力します。これは、Create… ビューのテンプレートタイルに表示される説明です。
- 4
- テンプレートの所有権を指定します。
owner
フィールドは、システムまたは組織内のテンプレートの管理または監視を行うユーザーに関する情報を提供します。上記の例では、owner
フィールドはbackstage/techdocs-core
に設定されています。これは、このテンプレートがbackstage
名前空間のtechdocs-core
プロジェクトに属していることを意味します。 - 5
- コンポーネントタイプを指定します。この必須フィールドには任意の文字列値を指定できますが、組織でこれらに対して適切な分類を確立する必要があります。Red Hat Developer Hub インスタンスはこのフィールドを読み取り、その値に応じて異なる動作をする場合があります。たとえば、
website
タイプのコンポーネントは、Web サイト専用のツールを Red Hat Developer Hub インターフェイスに表示する場合があります。このフィールドに共通する値は次のとおりです。
service
- 通常 API を公開するバックエンドサービス。
website
- Web サイト
library
- npm モジュールや Java ライブラリーなどのソフトウェアライブラリー。
- 6
parameters
セクションを使用して、ユーザーが Red Hat Developer Hub コンソールでテンプレートを使用してコンポーネントを作成するときにフォームビューに表示されるユーザー入力のパラメーターを指定します。タイトルとプロパティーによって定義される各parameters
サブセクションにより、その定義を含む新しいフォームページが作成されます。- 7
- バックエンドで実行されるステップを指定するには、
steps
セクションを使用します。これらのステップは、一意のステップ ID、名前、およびアクションを使用して定義する必要があります。https://<rhdh_url>/create/actions
URL にアクセスすると、Red Hat Developer Hub インスタンスで利用可能なアクションを表示できます。 - 8
output
セクションを使用して、テンプレートの使用時に作成される出力データの構造を指定します。output
セクション、特にlinks
サブセクションには、テンプレートから作成されたコンポーネントにアクセスして操作するためにユーザーが利用できる貴重な参照と URL が提供されます。- 9
- 生成されたコンポーネントに関連付けられたリポジトリーへの参照または URL を提供します。
- 10
- さまざまなコンポーネントが表示されているカタログまたはディレクトリーで、生成されたコンポーネントを表示できるようにする参照または URL を提供します。
7.3. Red Hat Developer Hub への既存テンプレートのインポート
カタログプロセッサー を使用して、既存のテンプレートを Red Hat Developer Hub インスタンスに追加できます。
前提条件
- 1 つ以上のテンプレート YAML ファイルを含むディレクトリーを作成している。
- GitHub や GitLab などのリポジトリーに保存されているテンプレートを使用する場合は、プロバイダー用に Red Hat Developer Hub 統合を設定する必要があります。
手順
app-config.yaml
設定ファイルで、catalog.rules
セクションを変更してテンプレートのルールを追加し、以下の例のようにcatalog.locations
セクションが追加するテンプレートをポイントするように設定します。# ... catalog: rules: - allow: [Template] 1 locations: - type: url 2 target: https://<repository_url>/example-template.yaml 3 # ...
検証
- ナビゲーションパネルの Catalog タブをクリックします。
- Kind ドロップダウンメニューで、Template を選択します。
- テンプレートが既存のテンプレートのリストに表示されていることを確認します。