Red Hat Developer Hub 管理ガイド


Red Hat Developer Hub 1.1

Red Hat Customer Content Services

概要

Red Hat Developer Hub は、開発者ポータルを構築するための開発者プラットフォームです。このドキュメントでは、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)

前提条件

注記

セキュリティーを強化するには、Red Hat Developer Hub Operator を専用のデフォルト namespace (rhdh-operator など) にデプロイします。クラスター管理者は、ロールバインディングまたはクラスターのロールバインディングを使用して、他のユーザーの Operator リソースへのアクセスを制限できます。

手順

  1. OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Operators > OperatorHub に移動します。
  2. Filter by keyword ボックスに Developer Hub と入力し、Red Hat Developer Hub Operator カードをクリックします。
  3. Red Hat Developer Hub Operator ページで、Install をクリックします。
  4. 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 チャネルに手動で切り替える必要があります。
  5. Install Operator ページで、Operator の Update approval ストラテジーを選択します。

    • Automatic オプションを選択すると、Operator は手動で確認せずに更新されます。
    • Manual オプションを選択すると、更新チャネルで新しい更新がリリースされると通知が開きます。インストールを開始する前に、管理者が更新を手動で承認する必要があります。
  6. 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 のドキュメント を参照してください。

手順

  1. Developer Hub Web コンソールの Developer パースペクティブから、+Add をクリックします。
  2. Developer Catalog パネルから、Helm Chart をクリックします。
  3. Filter by keyword ボックスに Developer Hub と入力し、Red Hat Developer Hub カードをクリックします。
  4. Red Hat Developer Hub ページで、Create をクリックします。
  5. クラスターから、OpenShift Container Platform ルーターホスト (例: apps.<clusterName>.com) をコピーします。
  6. ラジオボタンを選択して、Form ビューまたは YAML ビューのいずれかを使用して Developer Hub インスタンスを設定します。デフォルトでは Form ビューが選択されています。

    • Form ビュー の使用

      1. Form ビューを使用してインスタンスを設定するにはRoot SchemaglobalEnable service authentication within Backstage instance に移動し、OpenShift Container Platform ルーターホストをフォームのフィールドに貼り付けます。
    • YAML ビュー の使用

      1. YAML ビューを使用してインスタンスを設定するには、次の例に示すように、global.clusterRouterBase パラメーター値に OpenShift Container Platform ルーターのホスト名を貼り付けます。

        global:
          auth:
            backend:
              enabled: true
          clusterRouterBase: apps.<clusterName>.com
          # other Red Hat Developer Hub Helm Chart configurations
  7. 必要に応じて他の値を編集します。

    注記

    ホストに関する情報がコピーされ、Developer Hub バックエンドからアクセスできるようになります。

    OpenShift Container Platform ルートが自動的に生成されると、ルートのホスト値が推測され、同じホスト情報が Developer Hub に送信されます。また、値を使用してホストを手動で設定することで Developer Hub がカスタムドメイン上に存在する場合は、カスタムホストが優先されます。

  8. Create をクリックし、データベースと Developer Hub が起動するまで待ちます。
  9. Developer Hub プラットフォームの使用を開始するには、Open URL アイコンをクリックします。

    RHDH の Helm のインストール
注記

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 ポータルのアカウントがある。

手順

  1. 次のコマンドを実行し、oc コマンドラインツールを使用して OpenShift Container Platform アカウントにログインします。

    oc login -u <user> -p <password> https://api.<hostname>:6443
  2. 以下のコマンドを実行し、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
  3. 以下のコマンドを実行して、podmanregistry.redhat.io にログインします。

    podman login registry.redhat.io

    レジストリー認証の詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。

  4. 次のコマンドを実行して、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
  5. 次のコマンドを実行して、両方のイメージを内部 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 証明書がシステムにインストール されていることを確認してください。

  6. 次のコマンドを使用して、両方のイメージが OpenShift Container Platform の内部レジストリーに存在することを確認します。

    oc get imagestream -n <project_name>
  7. 次のコマンドを実行して、両方のイメージのローカルイメージ検索を有効にします。

    oc set image-lookup postgresql-15
    oc set image-lookup  rhdh-hub-rhel9
  8. YAML view に移動し、次の値を使用して backstagepostgresqlimage セクションを更新します。

    Developer Hub イメージの値の例

    upstream:
      backstage:
        image:
          registry: ""
          repository: rhdh-hub-rhel9
          tag: latest

    PostgreSQL イメージの値の例

    upstream:
      postgresql:
        image:
          registry: ""
          repository: postgresql-15
          tag: latest

  9. 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 を使用します。

前提条件

手順

  1. Red Hat Developer Hub インスタンス用に OpenShift Container Platform でプロジェクトを作成するか、既存のプロジェクトを選択します。

    ヒント

    OpenShift Container Platform でプロジェクトを作成する方法の詳細は、Red Hat OpenShift Container Platform ドキュメントの Web コンソールを使用したプロジェクトの作成 を参照してください。

  2. OpenShift Container Platform Web コンソールの Developer 視点で、+Add をクリックします。
  3. Developer Catalog パネルから、Operator Backed をクリックします。
  4. Filter by keyword ボックスに Developer Hub と入力し、Red Hat Developer Hub カードをクリックします。
  5. Create をクリックします。
  6. Red Hat Developer Hub インスタンスの カスタム設定 を追加します。
  7. Create Backstage ページで、Create をクリックします。

検証

Pod の準備ができたら、URL を開いて Red Hat Developer Hub プラットフォームにアクセスできます。

  1. Topology ビューで Pod をクリックし、Details パネルで Status を確認して、Pod の準備ができていることを確認します。Pod の準備が完了すると、Pod のステータスは Active になります。
  2. Topology ビューから、Developer Hub Pod の Open URL アイコンをクリックします。

    Operator インストール 1

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.baseUrlbackend.baseUrlbackend.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 アカウントがある。

手順

  1. Developer パースペクティブから、ConfigMaps タブを選択します。
  2. Create ConfigMap をクリックします。
  3. Configure viaYAML view オプションを選択し、必要に応じてファイルに変更を加えます。
  4. Create をクリックします。
  5. Secrets タブを選択します。
  6. Create Key/value Secret をクリックします。
  7. シークレットに secrets-rhdh という名前を指定します。
  8. BACKEND_SECRET という名前のキーと、base64 でエンコードされた文字列を値として追加します。Red Hat Developer Hub インスタンスごとに一意の値を使用します。たとえば、次のコマンドを使用してターミナルからキーを生成できます。

    node -p 'require("crypto").randomBytes(24).toString("base64")'
  9. Create をクリックします。
  10. Topology ビューを選択します。
  11. 使用する Red Hat Developer Hub インスタンスのオーバーフローメニューをクリックし、Edit Backstage を選択して、Red Hat Developer Hub インスタンスの YAML ビューを読み込みます。

    Operator インストール 2
  12. 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
  13. Save をクリックします。
  14. Topology ビューに戻り、Red Hat Developer Hub Pod が起動するまで待ちます。
  15. Open URL アイコンをクリックして、新しい設定変更を適用した Red Hat Developer Hub プラットフォームの使用を開始します。

関連情報

2.2.2. Red Hat Developer Hub Operator を使用した動的プラグインの設定

動的プラグインの設定は、Backstage カスタムリソース (CR) が参照できる ConfigMap オブジェクトに保存できます。

注記

pluginConfig フィールドが環境変数を参照する場合は、secrets-rhdh シークレットで変数を定義する必要があります。

手順

  1. OpenShift Container Platform Web コンソールから、ConfigMaps タブを選択します。
  2. Create ConfigMap をクリックします。
  3. Create ConfigMap ページで、Configure viaYAML 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: {}

  4. Create をクリックします。
  5. Topology タブに移動します。
  6. 使用する Red Hat Developer Hub インスタンスのオーバーフローメニューをクリックし、Edit Backstage を選択して、Red Hat Developer Hub インスタンスの YAML ビューを読み込みます。

    Operator インストール 2
  7. dynamicPluginsConfigMapName フィールドを Backstage CR に追加します。以下に例を示します。

    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
      name: my-rhdh
    spec:
      application:
    # ...
        dynamicPluginsConfigMapName: dynamic-plugins-rhdh
    # ...
  8. Save をクリックします。
  9. Topology ビューに戻り、Red Hat Developer Hub Pod が起動するまで待ちます。
  10. 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 クラスターイメージレジストリーは、ターゲットミラーレジストリーとして使用できません。ミラーレジストリーについて を参照してください。

  • 独自のミラーレジストリーを作成する場合は、Red Hat Openshift 導入用のミラーレジストリーを使用したミラーレジストリーの作成 を参照してください。
  • ミラーレジストリーをまだ持っていない場合は、ヘルパースクリプトを使用してミラーレジストリーを作成できます。また、次の追加の前提条件が必要です。

    • cURL パッケージがインストールされている。Red Hat Enterprise Linux の場合、curl パッケージをインストールすると、curl コマンドが使用可能になります。他のプラットフォームで curl を使用するには、cURL の Web サイト を参照してください。
    • htpasswd コマンドが利用可能である。Red Hat Enterprise Linux の場合、httpd-tools パッケージをインストールすると、htpasswd コマンドが使用可能になります。

手順

  1. ミラーリングスクリプトをダウンロードして実行し、カスタム 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 エコシステム内で堅牢な開発環境がオーケストレーションされます。

前提条件

手順

  1. ターミナルに移動し、次のコマンドを実行して、Developer Hub チャートを含む Helm チャートリポジトリーを、ローカルの Helm レジストリーに追加します。

    helm repo add openshift-helm-charts https://charts.openshift.io/
  2. 次のコマンドを使用してプルシークレットを作成します。

    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
    1
    コマンドにユーザー名を入力します。
    2
    コマンドにパスワードを入力します。
    3
    コマンドにメールアドレスを入力します。

    作成されたプルシークレットは、Red Hat エコシステムから Developer Hub イメージをプルするために使用されます。

  3. 次のテンプレートを使用して、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
  4. ターミナルで次のコマンドを実行し、最新バージョンの 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 のインストール

前提条件

手順

  1. ターミナルで次のコマンドを実行して、Operator がインストールされている rhdh-operator namespace を作成します。

    kubectl create namespace rhdh-operator
  2. 次のコマンドを使用してプルシークレットを作成します。

    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
    1
    コマンドにユーザー名を入力します。
    2
    コマンドにパスワードを入力します。
    3
    コマンドにメールアドレスを入力します。

    作成されたプルシークレットは、Red Hat エコシステムから Developer Hub イメージをプルするために使用されます。

  3. 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
  4. 次のように OperatorGroup リソースを作成します。

    cat <<EOF | kubectl apply -n rhdh-operator -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: rhdh-operator-group
    EOF
  5. 次のコードを使用して 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
  6. 次のコマンドを実行して、作成した 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
  7. 次の手順を使用して Operator のデフォルト設定を更新して、Developer Hub リソースが EKS で正常に起動できるようにします。

    1. 次のコマンドを使用して、rhdh-operator namespace の backstage-default-config ConfigMap を編集します。

      kubectl -n rhdh-operator edit configmap backstage-default-config
    2. 次の例に示すように、db-statefulset.yaml 文字列を見つけて、その spec.template.spec.securityContextfsGroup を追加します。

        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 ---
    3. 次の例に示すように、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 ---
    4. 次のように、service.yaml 文字列を見つけて、typeNodePort に変更します。

        service.yaml: |
          apiVersion: v1
          kind: Service
          spec:
           # NodePort is required for the ALB to route to the Service
            type: NodePort
      --- TRUNCATED ---
    5. 保存して終了します。

      変更が Operator Pod に自動的に適用されるまで、数分間待ちます。

3.2.2. OLM フレームワークなしで Red Hat Developer Hub Operator をインストールする

前提条件

  • 次のコマンドがインストールされている。

    • git
    • make
    • sed

手順

  1. 次のコマンドを使用して、Operator リポジトリーのクローンをローカルマシンに作成します。

    git clone --depth=1 https://github.com/janus-idp/operator.git rhdh-operator && cd rhdh-operator
  2. 次のコマンドを実行して、デプロイメントマニフェストを生成します。

    make deployment-manifest

    前のコマンドは rhdh-operator-<VERSION>.yaml という名前のファイルを生成します。これは手動で更新されます。

  3. 次のコマンドを実行して、生成したデプロイメントマニフェストに置換を適用します。

    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
  4. 生成したデプロイメントマニフェストファイルをエディターで開き、次の手順を実行します。

    1. 次の例に示すように、db-statefulset.yaml 文字列を見つけて、その spec.template.spec.securityContextfsGroup を追加します。

         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 ---
    2. 次の例に示すように、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 ---
    3. 次のように、service.yaml 文字列を見つけて、typeNodePort に変更します。

        service.yaml: |
          apiVersion: v1
          kind: Service
          spec:
            # NodePort is required for the ALB to route to the Service
            type: NodePort
      --- TRUNCATED ---
    4. デフォルトのイメージを 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
  5. 次のように、イメージプルシークレットを 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 ---
  6. 次のコマンドを使用してマニフェストを適用し、Operator をデプロイします。

    kubectl apply -f rhdh-operator-VERSION.yaml
  7. 以下のコマンドを実行して、Operator が実行されていることを確認します。

    kubectl -n rhdh-operator get pods -w

3.2.3. EKS への Developer Hub インスタンスのインストール

Red Hat Developer Hub Operator がインストールされ、実行されたら、EKS で Developer Hub インスタンスを作成できます。

前提条件

手順

  1. 次のテンプレートを使用して、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>
  2. 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")'
  3. Red Hat エコシステムカタログから PostgreSQL イメージをプルできるようにするには、Developer Hub インスタンスがデプロイされている namespace 内のデフォルトのサービスアカウントにイメージプルシークレットを追加します。

    kubectl patch serviceaccount default \
        -p '{"imagePullSecrets": [{"name": "rhdh-pull-secret"}]}' \
        -n <your_namespace>
  4. 次のテンプレートを使用してカスタムリソースファイルを作成します。

    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"
  5. 次のテンプレートを使用して 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 がサポートするデプロイメント

手順

  1. Operator の管理者として、デフォルト設定を編集して、次のように Prometheus アノテーションを追加します。

    # Update OPERATOR_NS accordingly
    OPERATOR_NS=rhdh-operator
    kubectl edit configmap backstage-default-config -n "${OPERATOR_NS}"
  2. 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 ---
  3. 変更を保存します。

検証

スクレイピングが機能するかどうかを確認するには、以下の手順を実行します。

  1. 次のように、kubectl を使用して Prometheus コンソールをローカルマシンにポート転送します。

    kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
  2. Web ブラウザーを開いて http://localhost:9090 に移動し、Prometheus コンソールにアクセスします。
  3. 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 をセットアップするときは、必ず次の調整を行ってください。

    1. Allowed callback URL(s) セクションに、URL https://<rhdh_url>/api/auth/oidc/handler/frame を含めます。<rhdh_url> は Developer Hub アプリケーションの URL (my.rhdh.example.com など) に置き換えてください。
    2. 同様に、Allowed sign-out URL(s) セクションに https://<rhdh_url> を追加します。<rhdh_url> は Developer Hub アプリケーションの URL (my.rhdh.example.com など) に置き換えます。
    3. OAuth 2.0 grant types で、Authorization code grant を選択して認証コードを返します。
    4. OpenID Connect scopes で、少なくとも次のスコープを選択してください。

      • OpenID
      • プロファイル
      • メール
    Helm のデプロイメント

    手順

    1. 次のようにして、カスタム 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
    2. 次のテンプレートを使用して、カスタム 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"
    3. 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
    4. Helm デプロイメントをアップグレードします。

      helm upgrade rhdh \
        openshift-helm-charts/redhat-developer-hub \
        [--version 1.1.4] \
        --values /path/to/values.yaml
    Operator がサポートするデプロイメント
    1. 次のコードを 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
    2. 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"
    3. カスタムリソースに 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"
    4. オプション: カスタムリソースがサポートする既存の Developer Hub インスタンスがあり、それを編集していない場合は、Developer Hub デプロイメントを手動で削除し、Operator を使用して再作成できます。次のコマンドを実行して、Developer Hub デプロイメントを削除します。

      kubectl delete deployment -l app.kubernetes.io/instance=<CR_NAME>

検証

  1. Developer Hub の Web URL に移動し、OIDC 認証を使用してサインインします。これにより、設定した AWS Cognito ユーザープールを介して認証するよう求められます。
  2. ログインしたら、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.securityContextfsGroup を調整することで解決できます。
    • 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>

4.1.1. Helm チャートを使用して Azure Kubernetes Service (AKS) に Red Hat Developer Hub をデプロイする

Helm を使用して Developer Hub を AKS にデプロイできます。

手順

  1. ターミナルを開き、次のコマンドを実行して Helm チャートリポジトリーを追加します。

    helm repo add openshift-helm-charts https://charts.openshift.io/
  2. 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>
  3. 次のテンプレートを使用して、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
  4. Helm Chart をインストールするには、次のコマンドを実行します。

    helm -n <your_namespace> install -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
  5. デプロイメントのステータスを確認します。

    kubectl get deploy <your_deploy_name>-developer-hub -n <your_namespace>
  6. URL: https://<app_address> を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228) です。
  7. デプロイメントをアップグレードまたは削除するには、次のコマンドを実行します。

    アップグレードコマンド

    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 をデプロイできます。

手順

  1. rhdh-operator-<VERSION>.yaml という名前の Red Hat Developer Hub Operator マニフェストファイルを取得し、次のフラグメントを追加して db-statefulset.yamldeployment.yaml のデフォルト設定を変更します。

    securityContext:
      fsGroup: 300

    マニフェストで指定された場所は次のとおりです。

    db-statefulset.yaml: | spec.template.spec
    deployment.yaml: | spec.template.spec
  2. 変更した Operator マニフェストを Kubernetes クラスターに適用します。

    kubectl apply -f rhdh-operator-<VERSION>.yaml
    注記

    前のコマンドの実行はクラスター範囲であり、適切なクラスター権限が必要です。

  3. 次の例に示すように、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>
  4. 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
  5. 作成した Ingress をデプロイするには、次のコマンドを実行します。

    kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
  6. 次の例を使用して、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>
  7. secrets-rhdh という名前のシークレットを作成し、次の例に示すように、Base64-encoded 文字列値の BACKEND_SECRET という名前のキーを追加します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: secrets-rhdh
    stringData:
      BACKEND_SECRET: "xxx"
  8. 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"
  9. CR マニフェストを namespace に適用します。

    kubectl -n <your_namespace> apply -f rhdh.yaml
  10. URL: https://<app_address> を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228) です。
  11. オプション: 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 インスタンスからのライブログの表示
  1. Azure Portal に移動します。
  2. リソースグループ <your-ResourceGroup> を検索し、AKS クラスター <your-Cluster> を見つけます。
  3. メニューから Kubernetes resources → Workloads を選択します。
  4. <your-rhdh-cr>-developer-hub デプロイメント (Helm Chart インストールの場合) または <your-rhdh-cr>-backstage デプロイメント (Operator がサポートするインストールの場合) を選択します。
  5. 左側のメニューで Live Logs をクリックします。
  6. Pod を選択します。

    注記

    Pod は 1 つだけである必要があります。

ライブログデータが収集され、表示されます。

Container Engine からのリアルタイムログデータの表示
  1. Azure Portal に移動します。
  2. リソースグループ <your-ResourceGroup> を検索し、AKS クラスター <your-Cluster> を見つけます。
  3. メニューから MonitoringInsights を選択します。
  4. Containers タブに移動します。
  5. backend-backstage コンテナーを見つけてクリックすると、Container Engine によって生成されるリアルタイムログデータが表示されます。

4.3. Red Hat Developer Hub の認証プロバイダーとして Microsoft Azure を使用する

Developer Hub の core-plugin-api パッケージは Microsoft Azure 認証プロバイダーと統合しており、Azure OAuth を使用してサインインを認証します。

前提条件

4.3.1. Helm デプロイメントの認証プロバイダーとして Microsoft Azure を使用する

Helm Chart を使用してインストールすると、Microsoft Azure を Red Hat Developer Hub の 認証プロバイダーとして使用できます。詳細は、「Helm チャートを使用して Azure Kubernetes Service (AKS) に Red Hat Developer Hub をデプロイする」 を参照してください。

手順

  1. アプリケーションが登録されたら、次の点を書き留めます。

    • clientId: アプリケーション (クライアント) ID。App Registration → Overview にあります。
    • clientSecret: シークレット。*App Registration → Certificates & secrets にあります (必要に応じて新規作成します)。
    • tenantId: ディレクトリー (テナント) ID。App Registration → Overview にあります。
  2. 次のフラグメントが 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

    新しいファイルを作成することも、既存のファイルに追加することもできます。

  3. ConfigMap を Kubernetes クラスターに適用します。

    kubectl -n <your_namespace> apply -f <app-config>.yaml
  4. Azure 認証情報を含む既存の Secret を作成または再利用し、次のフラグメントを追加します。

    stringData:
      AZURE_CLIENT_ID: <value-of-clientId>
      AZURE_CLIENT_SECRET: <value-of-clientSecret>
      AZURE_TENANT_ID: <value-of-tenantId>
  5. シークレットを Kubernetes クラスターに適用します。

    kubectl -n <your_namespace> apply -f <azure-secrets>.yaml
  6. value.yaml ファイルが、以前に作成した ConfigMap と Secret を参照していることを確認します。

    upstream:
      backstage:
      ...
        extraAppConfig:
          - filename: ...
            configMapRef: <app-config-containing-azure>
        extraEnvVarsSecrets:
          - <secret-containing-azure>
  7. オプション: Helm Chart がすでにインストールされている場合は、アップグレードします。

    helm -n <your_namespace> upgrade -f <your-values.yaml> <your_deploy_name> redhat-developer/backstage --version 1.1.4
  8. オプション: 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 のデプロイ」 を参照してください。

手順

  1. アプリケーションが登録されたら、次の点を書き留めます。

    • clientId: アプリケーション (クライアント) ID。App Registration → Overview にあります。
    • clientSecret: シークレット。*App Registration → Certificates & secrets にあります (必要に応じて新規作成します)。
    • tenantId: ディレクトリー (テナント) ID。App Registration → Overview にあります。
  2. 次のフラグメントが 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

    新しいファイルを作成することも、既存のファイルに追加することもできます。

  3. ConfigMap を Kubernetes クラスターに適用します。

    kubectl -n <your_namespace> apply -f <app-config>.yaml
  4. Azure 認証情報を含む既存の Secret を作成または再利用し、次のフラグメントを追加します。

    stringData:
      AZURE_CLIENT_ID: <value-of-clientId>
      AZURE_CLIENT_SECRET: <value-of-clientSecret>
      AZURE_TENANT_ID: <value-of-tenantId>
  5. シークレットを Kubernetes クラスターに適用します。

    kubectl -n <your_namespace> apply -f <azure-secrets>.yaml
  6. カスタムリソースマニフェストが、以前に作成した 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>
  7. カスタムリソースマニフェストを適用します。

    kubectl -n <your_namespace> apply -f rhdh.yaml
  8. オプション: 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 に追加できます。

前提条件

手順

  1. 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

  2. Developer Hub Helm Chart で、Root Schema → Backstage chart schema → Backstage parameters → Backstage container additional volume mounts に移動します。
  3. Add Backstage container additional volume mounts を選択し、次の値を追加します。

    • mountPath: opt/app-root/src/rbac
    • Name: rbac-policy
  4. RBAC ポリシーを、Developer Hub Helm Chart の Backstage container additional volumes に追加します。

    • name: rbac-policy
    • configMap

      • defaultMode: 420
      • name: rbac-policy
  5. 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 権限
名前リソースタイプポリシー説明

catalog.entity.read

catalog-entity

read

ユーザーまたはロールがカタログから読み取ることを許可します。

catalog.entity.create

 

create

ユーザーまたはロールによるカタログエンティティーの作成 (既存のコンポーネントをカタログに登録することを含む) を許可します。

catalog.entity.refresh

catalog-entity

update

ユーザーまたはロールがカタログから単一または複数のエンティティーを更新することを許可します。

catalog.entity.delete

catalog-entity

delete

ユーザーまたはロールがカタログから単一または複数のエンティティーを削除することを許可します。

catalog.location.read

 

read

ユーザーまたはロールがカタログから単一または複数の場所を読み取ることを許可します。

catalog.location.create

 

create

ユーザーまたはロールがカタログ内に場所を作成することを許可します。

catalog.location.delete

 

delete

ユーザーまたはロールがカタログから場所を削除することを許可します。

Scaffolder 権限
名前リソースタイプポリシー説明

scaffolder.action.execute

scaffolder-action

 

テンプレートからのアクションの実行を許可します。

scaffolder.template.parameter.read

scaffolder-template

read

ユーザーまたはロールがテンプレートから単一または複数のパラメーターを読み取ることを許可します。

scaffolder.template.step.read

scaffolder-template

read

ユーザーまたはロールがテンプレートから単一または複数のステップを読み取ることを許可します。

RBAC 権限
名前リソースタイプポリシー説明

policy.entity.read

policy-entity

read

ユーザーまたはロールに権限ポリシーとロールの読み取りを許可します。

policy.entity.create

policy-entity

create

ユーザーまたはロールが単一または複数の権限ポリシーとロールを作成することを許可します。

policy.entity.update

policy-entity

update

ユーザーまたはロールが単一または複数の権限ポリシーとロールを更新することを許可します。

policy.entity.delete

policy-entity

delete

ユーザーまたはロールが単一または複数の権限ポリシーとロールを削除することを許可します。

Kubernetes 権限
名前リソースタイプポリシー説明

kubernetes.proxy

  

ユーザーまたはロールがプロキシーエンドポイントにアクセスすることを許可します。

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 でロールを作成できます。

前提条件

手順

  1. Developer Hub のサイドバーの下部にある Administration に移動します。

    RBAC タブが表示され、 Developer Hub で作成されたすべてのロールが表示されます。

  2. (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
  3. CREATE をクリックしてロールを作成します。
  4. 所定のフィールドにロールの名前と説明を入力し、NEXT をクリックします。
  5. 検索フィールドを使用してユーザーとグループを追加し、NEXT をクリックします。
  6. Add permission policies セクションのドロップダウンから PluginPermission を選択します。
  7. Add permission policies セクションで、設定する Policy を選択または選択解除し、NEXT をクリックします。
  8. Review and create セクションで追加された情報を確認します。
  9. 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 で作成されている。

手順

  1. Developer Hub のサイドバーの下部にある Administration に移動します。

    RBAC タブが表示され、 Developer Hub で作成されたすべてのロールが表示されます。

  2. (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
  3. 編集するロールの編集アイコンを選択します。
  4. 名前、説明、ユーザーとグループ、権限ポリシーなどのロールの詳細を編集し、NEXT をクリックします。
  5. 編集したロールの詳細を確認し、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 で作成されている。

手順

  1. Developer Hub のサイドバーの下部にある Administration に移動します。

    RBAC タブが表示され、 Developer Hub で作成されたすべてのロールが表示されます。

  2. (オプション) 任意のロールをクリックすると、OVERVIEW ページにロール情報が表示されます。
  3. 削除するロールの Actions 列から削除アイコンを選択します。

    Delete this role? というポップアップが画面に表示されます。

  4. 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 の HomepageNetwork タブに移動し、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/policiesPOST 要求 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 ユーティリティーを使用して送信できます。

前提条件

手順

  1. 要求の送信先となる 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

  2. 要求を実行し、応答を確認します。

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

作成される新しいロールの memberReferencesgroupnamespacename

要求の body

必須

要求 の body の例 (JSON)

{
  "memberReferences": ["group:default/test"],
  "name": "role:default/test_admin"
}

応答の例

201 Created

[PUT] /api/permission/roles/{kind}/{namespace}/{name}

Developer Hub のロールの memberReferenceskindnamespace、または name を更新します。

要求パラメーター

要求の body には、oldRole オブジェクトと newRole オブジェクトが含まれています。

名前説明タイプ要件

body

作成される新しいロールの memberReferencesgroupnamespacename

要求の 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 アプリケーションに現在インストールされているプラグインを表示できます。このプラグインはデフォルトで有効です。

手順

  1. Developer Hub アプリケーションを開き、Administration をクリックします。
  2. 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 個のプラグインが利用可能です。詳細は、以下の表を参照してください。

表6.1 動的プラグインのサポートマトリクス
名前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

THREESCALE_BASE_URL

THREESCALE_ACCESS_TOKEN

Disabled

AAP

バックエンド

@janus-idp/backstage-plugin-aap-backend

 

1.5.5

Red Hat テクノロジープレビュー

./dynamic-plugins/dist/janus-idp-backstage-plugin-aap-backend-dynamic

AAP_BASE_URL

AAP_AUTH_TOKEN

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

SEGMENT_WRITE_KEY

SEGMENT_MASK_IP

SEGMENT_TEST_MODE

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

ARGOCD_USERNAME

ARGOCD_PASSWORD

ARGOCD_INSTANCE1_URL

ARGOCD_AUTH_TOKEN

ARGOCD_INSTANCE2_URL

ARGOCD_AUTH_TOKEN2

Disabled

Argo CD

バックエンド

@roadiehq/scaffolder-backend-argocd

 

1.1.23

コミュニティーサポート

./dynamic-plugins/dist/roadiehq-scaffolder-backend-argocd-dynamic

ARGOCD_USERNAME

ARGOCD_PASSWORD

ARGOCD_INSTANCE1_URL

ARGOCD_AUTH_TOKEN

ARGOCD_INSTANCE2_URL

ARGOCD_AUTH_TOKEN2

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

AZURE_TOKEN

AZURE_ORG

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

BITBUCKET_WORKSPACE

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

BITBUCKET_HOST

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

GITHUB_ORG

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

GITHUB_URL

GITHUB_ORG

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

GITLAB_HOST

GITLAB_TOKEN

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

JENKINS_URL

JENKINS_USERNAME

JENKINS_TOKEN

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

ARTIFACTORY_URL

ARTIFACTORY_TOKEN

ARTIFACTORY_SECURE

Disabled

Jira

フロントエンド

@roadiehq/backstage-plugin-jira

Jira を表示し、対話するための Backstage プラグイン

2.5.4

コミュニティーサポート

./dynamic-plugins/dist/roadiehq-backstage-plugin-jira

 

Disabled

Keycloak

バックエンド

@janus-idp/backstage-plugin-keycloak-backend

Keycloak バックエンドプラグインは、Keycloak を Backstage に統合します。

1.8.6

Production

./dynamic-plugins/dist/janus-idp-backstage-plugin-keycloak-backend-dynamic

KEYCLOAK_BASE_URL

KEYCLOAK_LOGIN_REALM

KEYCLOAK_REALM

KEYCLOAK_CLIENT_ID

KEYCLOAK_CLIENT_SECRET

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

K8S_CLUSTER_NAME

K8S_CLUSTER_URL

K8S_CLUSTER_TOKEN

有効

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 の MultiClusterHub および MultiCluster エンジンと統合します。

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

OCM_HUB_NAME

OCM_HUB_URL

moc_infra_token

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

SERVICENOW_BASE_URL

SERVICENOW_USERNAME

SERVICENOW_PASSWORD

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

SONARQUBE_URL

SONARQUBE_TOKEN

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

TECHDOCS_BUILDER_TYPE

TECHDOCS_GENERATOR_TYPE

TECHDOCS_PUBLISHER_TYPE

BUCKET_NAME

BUCKET_REGION_VAULT

BUCKET_URL

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

有効

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> 形式の整合性チェックサム。サポートされるアルゴリズムは、sha256sha384sha512 です。
    • 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 initContainerMAX_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: サービスの認証トークン

詳細設定

  1. 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 カタログページにリソースとして表示されます。

前提条件

手順

  1. Developer Hub アプリケーションを開き、Catalog ページに移動します。
  2. ページの左側にある Kind ドロップダウンから Resource を選択し、 the Type ドロップダウンから job template または workflow job template を選択します。

    aap バックエンドプラグイン backstage

    AAP から利用可能なすべてのテンプレートのリストがページに表示されます。

  3. リストからテンプレートを選択します。

    OVERVIEW タブには、次のようなさまざまなカードが含まれています。

    • About: テンプレートに関する詳細情報を提供します。
    • Relations: テンプレートと関連する側面を視覚的に表示します。
    • Links: AAP ダッシュボードへのリンクと、テンプレートの詳細ページへのリンクが含まれます。
    • subcomponents: 関連するサブコンポーネントの一覧を表示します。
    aap バックエンドプラグイン backstage 詳細

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> オブジェクトでプラグインを有効にするために設定できるパラメーターを説明しています。

名前説明デフォルト値必須

baseUrl

Keycloak サーバーの場所 (例: https://localhost:8443/auth)。Keycloak の新しいバージョンでは、/auth コンテキストパスが省略されることに注意してください。

""

はい

realm

同期するレルム

master

いいえ

loginRealm

認証に使用するレルム

master

いいえ

username

認証するユーザー名

""

パスワードベースの認証を使用している場合は Yes

password

認証するパスワード

""

パスワードベースの認証を使用している場合は Yes

clientId

認証するクライアント ID

""

クライアントクレデンシャルベースの認証を使用している場合は Yes

clientSecret

認証するクライアントシークレット

""

クライアントクレデンシャルベースの認証を使用している場合は Yes

userQuerySize

一度にクエリーするユーザーの数

100

いいえ

groupQuerySize

一度にクエリーするグループの数

100

いいえ

クライアントクレデンシャルを使用する場合は、アクセスタイプを 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 を選択して、カタログページからユーザーの一覧を表示できます。

catalog-list

ページにユーザーの一覧が表示されます。

user-list

ユーザーを選択すると、Keycloak からインポートされた情報が表示されます。

user-profile

グループを選択し、リストを表示して、Keycloak からインポートされたグループの情報を選択または表示することもできます。

group-profile

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

設定

  1. 次のように、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
  2. オプション: Nexus Repository Manager プロキシーのベース URL を次のように変更します。

    nexusRepositoryManager:
        # default path is `/nexus-repository-manager`
        proxyPath: /custom-path
  3. オプション: 次の実験的アノテーションを有効にします。

    nexusRepositoryManager:
        experimentalAnnotations: true
  4. 以下のアノテーションを使用してエンティティーにアノテーションを付けます。

    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 は、ビルドアーティファクトに関する情報を表示できるフロントエンドプラグインです。

前提条件

手順

  1. Developer Hub アプリケーションを開き、Catalog ページからコンポーネントを選択します。
  2. BUILD ARTIFACTS タブに移動します。

    BUILD ARTIFACTS タブには、ビルドアーティファクトのリストと、VERSIONREPOSITORYREPOSITORY TYPEMANIFESTMODIFIEDSIZE などの関連情報が含まれます。

    Nexus Repository Manager タブ

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 プラグインのインストールと設定 を参照してください。

手順

  1. RHDH アプリケーションを開き、Catalog ページからコンポーネントを選択します。
  2. CI タブに移動します。

    CI タブには、Kubernetes クラスターに関連付けられた PipelineRun リソースのリストが表示されます。リストには、NAMEVULNERABILITIESSTATUSTASK STATUSSTARTEDDURATION などのパイプライン実行の詳細が含まれます。

    CI CD タブ Tekton
  3. リスト内の PipelineRun 名の横にある行展開ボタンをクリックして、PipelineRun の視覚化を表示します。パイプライン実行リソースには、完了すべきタスクが含まれます。タスクカードにマウスポインターをかざすと、その特定のタスクを完了する手順を表示できます。

    CI CD タブ Tekton

第7章 テンプレートの管理

テンプレートは、YAML ファイルで定義されたさまざまな UI フィールドで設定されたフォームです。テンプレートには、actions が含まれます。actions とは、順番に実行され、条件付きで実行できるステップです。

テンプレートを使用すると、Red Hat Developer Hub コンポーネントを簡単に作成し、Red Hat Developer Hub ソフトウェアカタログや、GitHub または GitLab のリポジトリーなどのさまざまな場所にこれらのコンポーネントを公開できます。

7.1. テンプレートエディターを使用したテンプレートの作成

テンプレートエディターを使用して、テンプレートを作成できます。

手順

  1. 以下のオプションのいずれかを使用して、テンプレートエディターにアクセスします。

    テンプレートエディター
    • Red Hat Developer Hub インスタンスの URL https://<rhdh_url>/create/edit 開きます。
    • Red Hat Developer Hub コンソールのナビゲーションメニューで Create…​ をクリックし、オーバーフローメニューボタンをクリックして Template editor を選択します。
  2. Edit Template Form をクリックします。
  3. オプション: テンプレートのパラメーターの YAML 定義を変更します。これらのパラメーターの詳細は、「YAML ファイルとしてのテンプレートの作成」 を参照してください。
  4. Name * に、テンプレート向けに独自の名前を入力します。
  5. Owner ドロップダウンメニューから、テンプレートの所有者を選択します。
  6. Next をクリックします。
  7. Repository Location ビューで、テンプレートを公開するホストされたリポジトリーに関する次の情報を入力します。

    1. ドロップダウンメニューから利用可能な Host を選択します。

      注記

      利用可能なホストは、allowedHosts フィールドで YAML パラメーターで定義されます。

      サンプル YAML

      # ...
              ui:options:
                allowedHosts:
                  - github.com
      # ...

    2. Owner * フィールドに、ホストリポジトリーが属する組織、ユーザーまたはプロジェクトを入力します。
    3. Repository * フィールドに、ホストされているリポジトリーの名前を入力します。
    4. Review をクリックします。
  8. 正確性の情報を確認し、Create をクリックします。

検証

  1. ナビゲーションパネルの Catalog タブをクリックします。
  2. Kind ドロップダウンメニューで、Template を選択します。
  3. テンプレートが既存のテンプレートのリストに表示されていることを確認します。

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
    # ...
    1
    新規テンプレートをカタログに追加できるようにするには、テンプレートルールを追加する必要 あります。
    2
    GitHub や GitLab などのリポジトリーからテンプレートをインポートする場合は、url タイプを使用します。
    3
    テンプレートの URL を指定します。

検証

  1. ナビゲーションパネルの Catalog タブをクリックします。
  2. Kind ドロップダウンメニューで、Template を選択します。
  3. テンプレートが既存のテンプレートのリストに表示されていることを確認します。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.