設定


Red Hat Developer Hub 1.4

Red Hat Developer Hub の設定

Red Hat Customer Content Services

概要

Red Hat Developer Hub を実稼働環境向けに設定し、IT エコシステムで動作させるために、カスタム config map や Secret を追加する方法を説明します。

はじめに

Red Hat Developer Hub を実稼働環境向けに設定し、IT エコシステムで動作させるために、カスタム config map や Secret を追加する方法を説明します。

第1章 カスタム Red Hat Developer Hub 設定のプロビジョニングおよび使用

Red Hat Developer Hub を設定するには、Red Hat OpenShift Container Platform アプリケーションを設定するために広く使用されているこれらの方法を使用します。

  • config map を使用してファイルとディレクトリーをマウントします。
  • シークレットを使用して環境変数を挿入します。

これらの方法を Developer Hub に適用する方法を学びます。

1.1. カスタム Red Hat Developer Hub 設定のプロビジョニング

Red Hat Developer Hub を設定するには、Red Hat Developer Hub を実行する前に、カスタムの Red Hat Developer Hub config map とシークレットを Red Hat OpenShift Container Platform にプロビジョニングします。

ヒント

デフォルトの config map およびシークレットを使用して Developer Hub を実行するには、この手順を省略できます。この設定への変更は、Developer Hub の再起動時に元に戻される可能性があります。

前提条件

  • OpenShift CLI (oc) を使用して、Developer Hub インスタンスを格納するための OpenShift Container Platform クラスターに開発者権限でアクセスできる。

手順

  1. カスタムの &lt ;my_product_secrets > .txt ファイルを作成し、設定ファイルのクリアテキストではなく、OpenShift Container Platform シークレットの環境変数としてシークレットをプロビジョニングします。1 行ごとに KEY=value 形式のシークレットが 1 つ含まれています。

  2. カスタムの app-config.yaml ファイルを作成します。これは、メインの Developer Hub 設定ファイルです。

    Developer Hub が適切に機能させるには、app-config.yaml ファイルに baseUrl フィールドが必須です。初期化中にエラーが発生しないようにするには、アプリケーションセクションbackend セクションの両方で baseUrl を指定する必要があります。

    例1.1 app-config.yaml での baseUrl の設定

    app:
      title: Red Hat Developer Hub
      baseUrl: https://<my_developer_hub_url>
    
    backend:
      auth:
        externalAccess:
          - type: legacy
            options:
              subject: legacy-default-config
              secret: "${BACKEND_SECRET}"
      baseUrl: https://<my_developer_hub_url>
      cors:
        origin: https://<my_developer_hub_url>
    Copy to Clipboard Toggle word wrap

    任意で、以下のような設定を入力します。

  3. カスタム設定ファイルを OpenShift Container Platform クラスターにプロビジョニングします。

    1. Developer Hub インスタンスを含むことを目的とした <my-rhdh-project> プロジェクトを作成します。

      $ oc create namespace my-rhdh-project
      Copy to Clipboard Toggle word wrap

      または、Web コンソールを使用してプロジェクトを作成 します。

    2. app-config.yaml ファイルを <my-rhdh-project> プロジェクトの my-rhdh-app-config config map にプロビジョニングします。

      $ oc create configmap my-rhdh-app-config --from-file=app-config.yaml --namespace=my-rhdh-project
      Copy to Clipboard Toggle word wrap

      または、Web コンソールを使用して config map を作成 します。

    3. < my_product_secrets > .txt ファイルを < my -rhdh-project> プロジェクトの <my _product_secrets > シークレットにプロビジョニングします。

      $ oc create secret generic <my_product_secrets> --from-file=<my_product_secrets>.txt --namespace=my-rhdh-project
      Copy to Clipboard Toggle word wrap

      または、Web コンソールを使用してシークレットを作成 します。

注記

<my_product_secrets&gt; は、Developer Hub 内のシークレット設定の識別子を指定するのに推奨される Developer Hub シークレット名です。

次のステップ

追加の config map およびシークレットのプロビジョニングを検討してください。

1.2. Red Hat Developer Hub Operator を使用したカスタム設定での Developer Hub の実行

Developer Hub Operator を使用してカスタム設定で Red Hat Developer Hub を実行するには、次の Backstage カスタムリソース (CR) を作成します。

  • カスタム config map にプロビジョニングされたファイルをマウントする。
  • カスタムシークレットでプロビジョニングされた環境変数を挿入する。

手順

  1. my-rhdh-custom-resource.yaml ファイルで Backstage CR を作成し、カスタム config map とシークレットを使用します。

    例1.2 最小の my-rhdh-custom-resource.yaml カスタムリソースの例

    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      name: my-rhdh-custom-resource
    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
        extraFiles:
          mountPath: /opt/app-root/src
        replicas: 1
        route:
          enabled: true
      database:
        enableLocalDb: true
    Copy to Clipboard Toggle word wrap

    例1.3 動的プラグインおよび RBAC ポリシー config map、および外部の PostgreSQL データベースシークレットを含む my-rhdh-custom-resource.yaml カスタムリソースの例。

    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      name: <my-rhdh-custom-resource>
    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
             - name: rbac-policies
        dynamicPluginsConfigMapName: dynamic-plugins-rhdh
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
             - name: my-rhdh-database-secrets
        extraFiles:
          mountPath: /opt/app-root/src
          secrets:
            - name: my-rhdh-database-certificates-secrets
              key: postgres-crt.pem, postgres-ca.pem, postgres-key.key
        replicas: 1
        route:
          enabled: true
      database:
        enableLocalDb: false
    Copy to Clipboard Toggle word wrap
    必須フィールド:
    必須フィールドはありません。空の Backstage CR を作成し、デフォルト設定で Developer Hub を実行できます。
    オプションのフィールド:
    spec.application.appConfig.configMaps
    config map 名のリストを入力します。

    my-rhdh-app-config config map のファイルをマウントします。

    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
    Copy to Clipboard Toggle word wrap

    例1.4 my-rhdh-app-config および rbac-policies config map にファイルをマウントします。

    spec:
      application:
        appConfig:
          mountPath: /opt/app-root/src
          configMaps:
             - name: my-rhdh-app-config
             - name: rbac-policies
    Copy to Clipboard Toggle word wrap
    spec.application.extraEnvs.envs

    必要に応じて、プロキシー環境変数 など、シークレットではない追加の環境変数を入力します。

    例1.5 HTTP_PROXYHTTPS_PROXY、および NO_PROXY 環境変数を注入します。

    spec:
      application:
        extraEnvs:
          envs:
            - name: HTTP_PROXY
              value: 'http://10.10.10.105:3128'
            - name: HTTPS_PROXY
              value: 'http://10.10.10.106:3128'
            - name: NO_PROXY
              value: 'localhost,example.org'
    Copy to Clipboard Toggle word wrap
    spec.application.extraEnvs.secrets

    環境変数のシークレット名リストを入力します。

    例1.6 Red Hat Developer Hub シークレットに環境変数を挿入する

    spec:
      application:
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
    Copy to Clipboard Toggle word wrap

    例1.7 Red Hat Developer Hub および my-rhdh-database-secrets シークレットに環境変数を挿入します。

    spec:
      application:
        extraEnvs:
          secrets:
             - name: <my_product_secrets>
             - name: my-rhdh-database-secrets
    Copy to Clipboard Toggle word wrap
注記

<my_product_secrets&gt; は、Developer Hub 内のシークレット設定の識別子を指定するのに推奨される Developer Hub シークレット名です。

spec.application.extraFiles.secrets

証明書ファイルのシークレット名とファイルのリストを入力します。

my-rhdh-database-certificates-secrets シークレットに含まれる postgres-crt.pempostgres-ca.pem、および postgres-key.key ファイルをマウントします。

spec:
  application:
    extraFiles:
      mountPath: /opt/app-root/src
      secrets:
        - name: my-rhdh-database-certificates-secrets
          key: postgres-crt.pem, postgres-ca.pem, postgres-key.key
Copy to Clipboard Toggle word wrap

spec.database.enableLocalDb

ローカルの PostgreSQL データベースを有効または無効にします。

ローカルの PostgreSQL データベース生成を無効にして、外部の postgreSQL データベースを使用します。

spec:
  database:
    enableLocalDb: false
Copy to Clipboard Toggle word wrap

開発環境で、ローカルの PostgreSQL データベースを使用します。

spec:
  database:
    enableLocalDb: true
Copy to Clipboard Toggle word wrap

spec.deployment

任意で デプロイメント設定を入力します

  1. Developer Hub インスタンスを起動または更新するには、Backstage CR を適用します。

    $ oc apply --filename=my-rhdh-custom-resource.yaml --namespace=my-rhdh-project
    Copy to Clipboard Toggle word wrap

1.2.1. Red Hat Developer Hub Operator を使用したカスタム設定での追加ファイルのマウント

Developer Hub Operator を使用して、ConfigMap や Secret などの追加ファイルをコンテナー内の任意の場所にマウントできます。

mountPath フィールドで、ConfigMap または Secret をマウントする場所を指定します。マウントの動作は、subPath を含めるか除外するかに関係なく、key または mountPath フィールドの指定によって変わります。

  • keymountPath が指定されていない場合: 各キーまたは値が、subPath を使用して filename またはコンテンツとしてマウントされます。
  • keymountPath の有無にかかわらず指定されている場合: 指定されたキーまたは値が、subPath を使用してマウントされます。
  • mountPath のみが指定されている場合: すべてのキーまたは値を含むディレクトリーが、subPath を使用せずにマウントされます。
注記
  • OpenShift Container Platform は、subPath を使用してマウントされたボリュームを自動的に更新しません。デフォルトでは、RHDH Operator がこれらの ConfigMap または Secret を監視し、変更が発生したときに RHDH Pod を更新します。
  • セキュリティー上の理由から、Red Hat Developer Hub は Operator サービスアカウントにシークレットの読み取りアクセス権を付与しません。そのため、mountPath と key の両方を指定せずに Secret からファイルをマウントすることはできません。

前提条件

手順

  1. OpenShift Container Platform で、次の YAML コードを使用して ConfigMap または Secret を作成します。

    例1.8 最小限の my-project-configmap ConfigMap の例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-project-configmap
    data:
      file11.txt: |
        My file11 content
      file 12.txt: |
        My file12 content
    Copy to Clipboard Toggle word wrap

    例1.9 最小限の Red Hat Developer Hub シークレットの例

    apiVersion: v1
    kind: Secret
    metadata:
      name: <my_product_secrets>
    StringData:
      secret11.txt: |
        secret-content
    Copy to Clipboard Toggle word wrap

    詳細は、カスタム Red Hat Developer Hub 設定のプロビジョニングおよび使用 を参照してください。

  2. configMaps name の値を ConfigMap の名前に設定するか、secrets name の値を Backstage CR の Secret の名前に設定します。以下に例を示します。

    spec:
      application:
        extraFiles:
          mountPath: /my/path
          configMaps:
            - name: my-project-configmap
              key: file12.txt
              mountPath: /my/my-rhdh-config-map/path
          secrets:
            - name: <my_product_secrets>
              key: secret11.txt
              mountPath: /my/my-rhdh-secret/path
    Copy to Clipboard Toggle word wrap
注記

<my_product_secrets&gt; は、Developer Hub 内のシークレット設定の識別子を指定するのに推奨される Developer Hub シークレット名です。

1.3. Red Hat Developer Hub Helm チャートを使用したカスタム設定での Developer Hub の実行

Red Hat Developer Hub Helm チャートを使用して、カスタムアプリケーション設定ファイルを OpenShift Container Platform インスタンスに追加できます。

前提条件

手順

  1. Developer Hub でカスタム設定ファイルを使用するように Helm を設定します。

    1. Helm リリースのリストを表示するには、Helm タブに移動します。
    2. 使用する Helm リリースのオーバーフローメニューをクリックし、Upgrade を選択します。
    3. YAML ビュー を使用して Helm 設定を編集します。
    4. 以下のように upstream.backstage.extraAppConfig.configMapRef パラメーターおよび upstream.backstage.extraAppConfig.filename パラメーターの値を設定します。

      Helm 設定の抜粋

      upstream:
        backstage:
          extraAppConfig:
            - configMapRef: my-rhdh-app-config
              filename: app-config.yaml
      Copy to Clipboard Toggle word wrap

    5. Upgrade をクリックします。

次のステップ

  • Helm を使用して Developer Hub をインストールします。

第2章 外部 PostgreSQL データベースの設定

管理者は、Red Hat Developer Hub で外部 PostgreSQL データベースを設定および使用できます。PostgreSQL 証明書ファイルを使用すると、Operator または Helm チャートを使用して外部 PostgreSQL インスタンスを設定できます。

注記

Developer Hub は、外部 PostgreSQL データベースの設定をサポートします。データのバックアップや外部 PostgreSQL データベースの高可用性 (HA) の設定など、メンテナンスアクティビティーを実行できます。

デフォルトでは、Red Hat Developer Hub Operator または Helm チャートによってローカル PostgreSQL データベースが作成されます。ただし、この設定は実稼働環境には適していません。実稼働環境のデプロイメントでは、ローカルデータベースの作成を無効にし、代わりに外部の PostgreSQL インスタンスに接続するように Developer Hub を設定します。

2.1. Operator を使用した外部 PostgreSQL インスタンスの設定

Red Hat Developer Hub Operator を使用して外部 PostgreSQL インスタンスを設定できます。デフォルトでは、Operator は RHDH インスタンスのデプロイ先と同じ namespace に PostgreSQL のローカルインスタンスを作成して管理します。ただし、このデフォルト設定を変更して、Amazon Web Services (AWS) Relational Database Service (RDS) や Azure データベースなどの外部 PostgreSQL データベースサーバーを設定することもできます。

前提条件

  • サポートされているバージョンの PostgreSQL を使用している。詳細は、製品ライフサイクルのページ を参照してください。
  • 次の情報がある。

    • db-host: PostgreSQL インスタンスの Domain Name System (DNS) または IP アドレスを示します。
    • db-port: PostgreSQL インスタンスのポート番号 (5432 など) を示します。
    • username: PostgreSQL インスタンスに接続するためのユーザー名を示します。
    • password: PostgreSQL インスタンスに接続するためのパスワードを示します。
  • Red Hat Developer Hub Operator がインストールされている。
  • オプション: TLS プロトコルを使用してデータベース接続を保護できるように、CA 証明書、Transport Layer Security (TLS) 秘密鍵、および TLS 証明書がある。詳細は、PostgreSQL ベンダーのドキュメントを参照してください。
注記

デフォルトでは、Developer Hub は各プラグインのデータベースを使用します。見つからない場合は、自動的にデータベースを作成します。外部 PostgreSQL インスタンスを設定するには、PSQL Database 権限に加えて、Create Database 権限が必要になる場合があります。

手順

  1. オプション: TLS 接続を使用して PostgreSQL インスタンスを設定するための証明書シークレットを作成します。

    cat <<EOF | oc -n my-rhdh-project create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: my-rhdh-database-certificates-secrets 
    1
    
    type: Opaque
    stringData:
     postgres-ca.pem: |-
      -----BEGIN CERTIFICATE-----
      <ca-certificate-key> 
    2
    
     postgres-key.key: |-
      -----BEGIN CERTIFICATE-----
      <tls-private-key> 
    3
    
     postgres-crt.pem: |-
      -----BEGIN CERTIFICATE-----
      <tls-certificate-key> 
    4
    
      # ...
    EOF
    Copy to Clipboard Toggle word wrap
    1
    証明書シークレットの名前を指定します。
    2
    CA 証明書の鍵を指定します。
    3
    オプション: TLS 秘密鍵を指定します。
    4
    オプション: TLS 証明書の鍵を指定します。
  2. PostgreSQL インスタンスに接続するための認証情報シークレットを作成します。

    cat <<EOF | oc -n my-rhdh-project create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: my-rhdh-database-secrets 
    1
    
    type: Opaque
    stringData: 
    2
    
     POSTGRES_PASSWORD: <password>
     POSTGRES_PORT: "<db-port>"
     POSTGRES_USER: <username>
     POSTGRES_HOST: <db-host>
     PGSSLMODE: <ssl-mode> # for TLS connection 
    3
    
     NODE_EXTRA_CA_CERTS: <abs-path-to-pem-file> # for TLS connection, e.g. /opt/app-root/src/postgres-crt.pem 
    4
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    認証情報シークレットの名前を指定します。
    2
    PostgreSQL インスタンスに接続するための認証情報データを指定します。
    3
    オプション: 必要な Secure Sockets Layer (SSL) モード に応じて値を指定します。
    4
    オプション: PostgreSQL インスタンスに TLS 接続が必要な場合にのみ値を指定します。
  3. Backstage カスタムリソース (CR) を作成します。

    cat <<EOF | oc -n my-rhdh-project create -f -
    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      name: <backstage-instance-name>
    spec:
      database:
        enableLocalDb: false 
    1
    
      application:
        extraFiles:
          mountPath: <path> # e g /opt/app-root/src
          secrets:
            - name: my-rhdh-database-certificates-secrets 
    2
    
              key: postgres-crt.pem, postgres-ca.pem, postgres-key.key # key name as in my-rhdh-database-certificates-secrets Secret
        extraEnvs:
          secrets:
            - name: my-rhdh-database-secrets 
    3
    
            # ...
    Copy to Clipboard Toggle word wrap
    1
    enableLocalDb パラメーターの値を false に設定して、PostgreSQL のローカルインスタンスの作成を無効にします。
    2
    TLS 接続を設定した場合は、証明書シークレットの名前を指定します。
    3
    作成した認証情報シークレットの名前を指定します。
    注記

    Backstage CR にリストされている環境変数は、Operator のデフォルト設定を使用します。Operator のデフォルト設定を変更した場合は、それに応じて Backstage CR を再設定する必要があります。

  4. Backstage CR を Developer Hub インスタンスをデプロイした namespace に適用します。

2.2. Helm チャートを使用した外部 PostgreSQL インスタンスの設定

Helm チャートを使用して外部 PostgreSQL インスタンスを設定できます。デフォルトでは、Helm チャートは RHDH インスタンスのデプロイ先と同じ namespace に PostgreSQL のローカルインスタンスを作成して管理します。ただし、このデフォルト設定を変更して、Amazon Web Services (AWS) Relational Database Service (RDS) や Azure データベースなどの外部 PostgreSQL データベースサーバーを設定することもできます。

前提条件

  • サポートされているバージョンの PostgreSQL を使用している。詳細は、製品ライフサイクルのページ を参照してください。
  • 次の情報がある。

    • db-host: PostgreSQL インスタンスの Domain Name System (DNS) または IP アドレスを示します。
    • db-port: PostgreSQL インスタンスのポート番号 (5432 など) を示します。
    • username: PostgreSQL インスタンスに接続するためのユーザー名を示します。
    • password: PostgreSQL インスタンスに接続するためのパスワードを示します。
  • Helm チャートを使用して RHDH アプリケーションをインストールした。
  • オプション: TLS プロトコルを使用してデータベース接続を保護できるように、CA 証明書、Transport Layer Security (TLS) 秘密鍵、および TLS 証明書がある。詳細は、PostgreSQL ベンダーのドキュメントを参照してください。
注記

デフォルトでは、Developer Hub は各プラグインのデータベースを使用します。見つからない場合は、自動的にデータベースを作成します。外部 PostgreSQL インスタンスを設定するには、PSQL Database 権限に加えて、Create Database 権限が必要になる場合があります。

手順

  1. オプション: TLS 接続を使用して PostgreSQL インスタンスを設定するための証明書シークレットを作成します。

    cat <<EOF | oc -n <your-namespace> create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: my-rhdh-database-certificates-secrets 
    1
    
    type: Opaque
    stringData:
     postgres-ca.pem: |-
      -----BEGIN CERTIFICATE-----
      <ca-certificate-key> 
    2
    
     postgres-key.key: |-
      -----BEGIN CERTIFICATE-----
      <tls-private-key> 
    3
    
     postgres-crt.pem: |-
      -----BEGIN CERTIFICATE-----
      <tls-certificate-key> 
    4
    
      # ...
    EOF
    Copy to Clipboard Toggle word wrap
    1
    証明書シークレットの名前を指定します。
    2
    CA 証明書の鍵を指定します。
    3
    オプション: TLS 秘密鍵を指定します。
    4
    オプション: TLS 証明書の鍵を指定します。
  2. PostgreSQL インスタンスに接続するための認証情報シークレットを作成します。

    cat <<EOF | oc -n <your-namespace> create -f -
    apiVersion: v1
    kind: Secret
    metadata:
     name: my-rhdh-database-secrets 
    1
    
    type: Opaque
    stringData: 
    2
    
     POSTGRES_PASSWORD: <password>
     POSTGRES_PORT: "<db-port>"
     POSTGRES_USER: <username>
     POSTGRES_HOST: <db-host>
     PGSSLMODE: <ssl-mode> # for TLS connection 
    3
    
     NODE_EXTRA_CA_CERTS: <abs-path-to-pem-file> # for TLS connection, e.g. /opt/app-root/src/postgres-crt.pem 
    4
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    認証情報シークレットの名前を指定します。
    2
    PostgreSQL インスタンスに接続するための認証情報データを指定します。
    3
    オプション: 必要な Secure Sockets Layer (SSL) モード に応じて値を指定します。
    4
    オプション: PostgreSQL インスタンスに TLS 接続が必要な場合にのみ値を指定します。
  3. values.yaml という名前の Helm 設定ファイルで PostgreSQL インスタンスを設定します。

    # ...
    upstream:
      postgresql:
        enabled: false  # disable PostgreSQL instance creation 
    1
    
        auth:
          existingSecret: my-rhdh-database-secrets # inject credentials secret to Backstage 
    2
    
      backstage:
        appConfig:
          backend:
            database:
              connection:  # configure Backstage DB connection parameters
                host: ${POSTGRES_HOST}
                port: ${POSTGRES_PORT}
                user: ${POSTGRES_USER}
                password: ${POSTGRES_PASSWORD}
                ssl:
                  rejectUnauthorized: true,
                  ca:
                    $file: /opt/app-root/src/postgres-ca.pem
                  key:
                    $file: /opt/app-root/src/postgres-key.key
                  cert:
                    $file: /opt/app-root/src/postgres-crt.pem
      extraEnvVarsSecrets:
        - my-rhdh-database-secrets # inject credentials secret to Backstage 
    3
    
      extraEnvVars:
        - name: BACKEND_SECRET
          valueFrom:
            secretKeyRef:
              key: backend-secret
              name: '{{ include "janus-idp.backend-secret-name" $ }}'
      extraVolumeMounts:
        - mountPath: /opt/app-root/src/dynamic-plugins-root
          name: dynamic-plugins-root
        - mountPath: /opt/app-root/src/postgres-crt.pem
          name: postgres-crt # inject TLS certificate to Backstage cont. 
    4
    
          subPath: postgres-crt.pem
        - mountPath: /opt/app-root/src/postgres-ca.pem
          name: postgres-ca # inject CA certificate to Backstage cont. 
    5
    
          subPath: postgres-ca.pem
        - mountPath: /opt/app-root/src/postgres-key.key
          name: postgres-key # inject TLS private key to Backstage cont. 
    6
    
          subPath: postgres-key.key
      extraVolumes:
        - ephemeral:
            volumeClaimTemplate:
              spec:
                accessModes:
                  - ReadWriteOnce
                resources:
                  requests:
                    storage: 1Gi
          name: dynamic-plugins-root
        - configMap:
            defaultMode: 420
            name: dynamic-plugins
            optional: true
          name: dynamic-plugins
        - name: dynamic-plugins-npmrc
          secret:
            defaultMode: 420
            optional: true
            secretName: '{{ printf "%s-dynamic-plugins-npmrc" .Release.Name }}'
        - name: postgres-crt
          secret:
            secretName: my-rhdh-database-certificates-secrets 
    7
    
            # ...
    Copy to Clipboard Toggle word wrap
    1
    upstream.postgresql.enabled パラメーターの値を false に設定して、PostgreSQL のローカルインスタンスの作成を無効にします。
    2
    認証情報シークレットの名前を指定します。
    3
    認証情報シークレットの名前を指定します。
    4
    オプション: TLS 接続の場合のみ、TLS 証明書の名前を指定します。
    5
    オプション: TLS 接続の場合のみ、CA 証明書の名前を指定します。
    6
    オプション: TLS 接続に秘密鍵が必要な場合にのみ、TLS 秘密鍵の名前を指定します。
    7
    TLS 接続を設定した場合は、証明書シークレットの名前を指定します。
  4. values.yaml という名前の Helm 設定ファイルに設定の変更を適用します。

    helm upgrade -n <your-namespace> <your-deploy-name> openshift-helm-charts/redhat-developer-hub -f values.yaml --version 1.4.3
    Copy to Clipboard Toggle word wrap

2.3. Operator を使用したローカルデータベースの外部データベースサーバーへの移行

デフォルトでは、Red Hat Developer Hub は各プラグインのデータを PostgreSQL データベースでホストします。データベースのリストを取得すると、Developer Hub で設定されているプラグインの数によっては、複数のデータベースが表示される場合があります。ローカルの PostgreSQL サーバーでホストされている RHDH インスタンスから、AWS RDS、Azure データベース、Crunchy データベースなどの外部 PostgreSQL サービスにデータを移行できます。各 RHDH インスタンスからデータを移行するには、pg_dumppsql、または pgAdmin などの PostgreSQL ユーティリティーを使用できます。

注記

次の手順では、データベースコピースクリプトを使用して迅速な移行を実行します。

前提条件

  • ローカルマシンに pg_dump および psql ユーティリティーがインストールした。
  • データをエクスポートする場合は、ローカルデータベースの完全なダンプを作成するための PGSQL ユーザー権限がある。
  • データをインポートする場合は、外部データベースを作成し、データベースダンプを取り込むための PGSQL 管理者権限がある。

手順

  1. ターミナルで次のコマンドを実行して、ローカル PostgreSQL データベース Pod のポート転送を設定します。

    oc port-forward -n <your-namespace> <pgsql-pod-name> <forward-to-port>:<forward-from-port>
    Copy to Clipboard Toggle word wrap

    詳細は以下のようになります。

    • <pgsql-pod-name> 変数は、backstage-psql-<deployment-name>-<_index> という形式の PostgreSQL Pod の名前を示します。
    • <forward-to-port> 変数は、PostgreSQL データの転送先のポートを示します。
    • <forward-from-port> 変数は、5432 などの PostgreSQL ローカルインスタンスのポートを示します。

      例: ポート転送の設定

      oc port-forward -n developer-hub backstage-psql-developer-hub-0 15432:5432
      Copy to Clipboard Toggle word wrap

  2. 次の db_copy.sh スクリプトのコピーを作成し、設定に応じて詳細を編集します。

    #!/bin/bash
    
    to_host=<db-service-host> 
    1
    
    to_port=5432 
    2
    
    to_user=postgres 
    3
    
    
    from_host=127.0.0.1 
    4
    
    from_port=15432 
    5
    
    from_user=postgres 
    6
    
    
    allDB=("backstage_plugin_app" "backstage_plugin_auth" "backstage_plugin_catalog" "backstage_plugin_permission" "backstage_plugin_scaffolder" "backstage_plugin_search") 
    7
    
    
    for db in ${!allDB[@]};
    do
      db=${allDB[$db]}
      echo Copying database: $db
      PGPASSWORD=$TO_PSW psql -h $to_host -p $to_port -U $to_user -c "create database $db;"
      pg_dump -h $from_host -p $from_port -U $from_user -d $db | PGPASSWORD=$TO_PSW psql -h $to_host -p $to_port -U $to_user -d $db
    done
    Copy to Clipboard Toggle word wrap
    1
    宛先ホスト名 (例: <db-instance-name>.rds.amazonaws.com)。
    2
    宛先ポート (例: 5432)。
    3
    宛先サーバーのユーザー名 (例: postgres)。
    4
    ソースホスト名 (例: 127.0.0.1)。
    5
    送信元ポート番号 (例: <forward-to-port> 変数)。
    6
    ソースサーバーのユーザー名 (例: postgres)。
    7
    インポートするデータベースの名前を二重引用符で囲み、スペースで区切ります (例: "backstage_plugin_app" "backstage_plugin_auth" "backstage_plugin_catalog" "backstage_plugin_permission" "backstage_plugin_scaffolder" "backstage_plugin_search")。
  3. データをコピーするための宛先データベースを作成します。

    /bin/bash TO_PSW=<destination-db-password> /path/to/db_copy.sh 
    1
    Copy to Clipboard Toggle word wrap
    1
    <destination-db-password> 変数は、宛先データベースに接続するためのパスワードを示します。
    注記

    データのコピーが完了したら、ポート転送を停止できます。大規模データベースの処理と圧縮ツールの使用に関する詳細は、PostgreSQL Web サイトの Handling Large Databases セクションを参照してください。

  4. Backstage カスタムリソース (CR) を再設定します。詳細は、Operator を使用した外部 PostgreSQL インスタンスの設定 を参照してください。
  5. 再設定後、Backstage CR の末尾に次のコードが存在することを確認します。

    # ...
    spec:
      database:
        enableLocalDb: false
      application:
      # ...
        extraFiles:
          secrets:
            - name: my-rhdh-database-certificates-secrets
              key: postgres-crt.pem # key name as in my-rhdh-database-certificates-secrets Secret
        extraEnvs:
          secrets:
            - name: my-rhdh-database-secrets
    # ...
    Copy to Clipboard Toggle word wrap
    注記

    Backstage CR を再設定すると、対応する StatefulSet および Pod オブジェクトは削除されますが、PersistenceVolumeClaim オブジェクトは削除されません。ローカル PersistenceVolumeClaim オブジェクトを削除するには、次のコマンドを使用します。

    oc -n developer-hub delete pvc <local-psql-pvc-name>
    Copy to Clipboard Toggle word wrap

    <local-psql-pvc-name> 変数は、data-<psql-pod-name> という形式です。

  6. 設定の変更を適用します。

検証

  1. 次のコマンドを実行して、RHDH インスタンスが移行したデータを使用して実行されており、ローカルの PostgreSQL データベースが含まれていないことを確認します。

    oc get pods -n <your-namespace>
    Copy to Clipboard Toggle word wrap
  2. 出力で次の詳細を確認します。

    • backstage-developer-hub-xxx Pod が実行中の状態であること。
    • backstage-psql-developer-hub-0 Pod が利用不可であること。

      これらの詳細は、OpenShift Container Platform Web コンソールの Topology ビューを使用して確認することもできます。

第3章 Operator を使用する場合の Red Hat Developer Hub デプロイメントの設定

Red Hat Developer Hub Operator は、カスタムリソース (CR) の rhdh.redhat.com/v1alpha3 API バージョンを公開します。この CR は汎用の spec.deployment.patch フィールドを公開し、Developer Hub デプロイメントリソースを完全に制御できるようにします。このフィールドは、標準の apps.Deployment Kubernetes オブジェクトのフラグメントにすることができます。

手順

  1. 次のフィールドを使用して Backstage CR を作成します。

apiVersion: rhdh.redhat.com/v1alpha3
kind: Backstage
metadata:
  name: developer-hub
spec:
  deployment:
    patch:
      spec:
        template:
Copy to Clipboard Toggle word wrap

labels

Developer Hub Pod にラベルを追加します。

ラベル my=true を追加する例

apiVersion: rhdh.redhat.com/v1alpha3
kind: Backstage
metadata:
  name: developer-hub
spec:
  deployment:
    patch:
      spec:
        template:
          metadata:
            labels:
              my: true
Copy to Clipboard Toggle word wrap

volumes

my-volume という名前のボリュームを追加し、Developer Hub アプリケーションコンテナーの /my/path の下にマウントします。

追加ボリュームの例

apiVersion: rhdh.redhat.com/v1alpha3
kind: Backstage
metadata:
  name: developer-hub
spec:
  deployment:
    patch:
      spec:
        template:
          spec:
            containers:
              - name: backstage-backend
                volumeMounts:
                  - mountPath: /my/path
                    name: my-volume
            volumes:
              - ephemeral:
                  volumeClaimTemplate:
                    spec:
                      storageClassName: "special"
                name: my-volume
Copy to Clipboard Toggle word wrap

デフォルトの dynamic-plugins-root ボリュームを、dynamic-plugins-root という名前の永続ボリューム要求 (PVC) に置き換えます。$patch: replace ディレクティブに注意してください。そうしないと、新しいボリュームが追加されます。

dynamic-plugins-root ボリュームの置換例

apiVersion: rhdh.redhat.com/v1alpha3
kind: Backstage
metadata:
  name: developer-hub
spec:
  deployment:
    patch:
      spec:
        template:
          spec:
            volumes:
              - $patch: replace
                name: dynamic-plugins-root
                persistentVolumeClaim:
                  claimName: dynamic-plugins-root
Copy to Clipboard Toggle word wrap

CPU リクエスト

Developer Hub アプリケーションコンテナーの CPU リクエストを 250m に設定します。

CPU リクエストの例

apiVersion: rhdh.redhat.com/v1alpha3
kind: Backstage
metadata:
  name: developer-hub
spec:
  deployment:
    patch:
      spec:
        template:
          spec:
            containers:
              - name: backstage-backend
                resources:
                  requests:
                    cpu: 250m
Copy to Clipboard Toggle word wrap

my-sidecar コンテナー

Developer Hub Pod に新しい my-sidecar サイドカーコンテナーを追加します。

サイドカーコンテナーの例

apiVersion: rhdh.redhat.com/v1alpha3
kind: Backstage
metadata:
  name: developer-hub
spec:
  deployment:
    patch:
      spec:
        template:
          spec:
            containers:
              - name: my-sidecar
                image: quay.io/my-org/my-sidecar:latest
Copy to Clipboard Toggle word wrap

第4章 企業プロキシーの背後で Red Hat Developer Hub を実行する

ネットワークが制限された環境で、プロキシーを使用してリモートネットワークリソースにアクセスするように Red Hat Developer Hub を設定します。

アプリケーションを起動する前に、以下のいずれかの環境変数を設定して企業プロキシーの背後で Developer Hub アプリケーションを実行できます。

HTTP_PROXY
HTTP 要求に使用するプロキシーを示します。
HTTPS_PROXY
HTTPS 要求に使用するプロキシーを示します。
NO_PROXY
特定のドメインのプロキシーをバイパスするように環境変数を設定します。変数値は、プロキシーが指定されていても、プロキシーなしでアクセスできるホスト名または IP アドレスのコンマ区切りリストです。

4.1. NO_PROXY 除外ルールについて

NO_PROXY は、ホスト名または IP アドレスのコンマ区切り/スペース区切りのリストとオプションのポート番号です。入力 URL が NO_PROXY にリストされているエントリーのいずれかと一致する場合、ダイレクト要求がその URL をフェッチします (たとえば、プロキシー設定を省略します)。

注記

RHDH の NO_PROXY のデフォルト値は localhost,127.0.0.1 です。これをオーバーライドする場合は、リストに localhost または localhost:7007 以上を含めます。そうしないと、RHDH バックエンドが失敗する可能性があります。

一致は、以下のルールに従います。

  • NO_PROXY=* は、すべての要求のプロキシーをバイパスします。
  • スペースとコンマは、NO_PROXY リストのエントリーを区切る可能性があります。たとえば、NO_PROXY="localhost,example.com"NO_PROXY="localhost example.com"、または NO_PROXY="localhost, example.com" でも同じ効果があります。
  • NO_PROXY にエントリーが含まれていない場合は、HTTP(S)_PROXY 設定を行うと、バックエンドはプロキシー経由ですべての要求を送信します。
  • バックエンドは、リクエストがプロキシーをバイパスすべきかどうかを決定するために DNS ルックアップを実行しません。たとえば、DNS が example.com1.2.3.4 に解決した場合、NO_PROXY=1.2.3.4 を設定しても、example.com に送信される要求には影響しません。IP アドレス 1.2.3.4 に送信された要求のみがプロキシーをバイパスします。
  • ホスト名または IP アドレスの後にポートを追加する場合、プロキシーをバイパスするために要求はホスト/IP およびポートの両方に一致する必要があります。たとえば、NO_PROXY=example.com:1234 は、http(s)://example.com:1234 への要求のプロキシーをバイパスしますが、http(s)://example.com などの他のポートでの要求はバイパスしません。
  • ホスト名または IP アドレスの後にポートを指定しないと、ポートに関係なく、そのホスト/IP アドレスに対するすべての要求がプロキシーをバイパスします。たとえば、NO_PROXY=localhost は、http(s)://localhost:7077 および http(s)://localhost:8888 などの URL に送信される要求のプロキシーをバイパスします。
  • CIDR 表記の IP アドレスブロックは機能しません。したがって、バックエンドがそのブロックの IP アドレスにリクエストを送信しても、NO_PROXY=10.11.0.0/16 を設定することの効果はありません。
  • IPv4 アドレスのみをサポートします。::1 などの IPv6 アドレスは機能しません。
  • 通常、プロキシーは、ホスト名が NO_PROXY リストのエントリーと完全に一致する場合にのみバイパスされます。唯一の例外は、ドット (.) またはワイルドカード (*) で始まるエントリーです。このような場合は、ホスト名がエントリーで終わる場合はプロキシーをバイパスします。
注記

指定のドメインとそのすべてのサブドメインを除外する場合は、ドメインとそのワイルドカードドメインをリスト表示します。たとえば、NO_PROXY=example.com,.example.com を設定して、http(s)://example.com および http(s)://subdomain.example.com に送信されるリクエストのプロキシーをバイパスします。

4.2. Operator デプロイメントでのプロキシー情報の設定

Operator ベースのデプロイメントの場合、プロキシー設定に使用するアプローチはロールによって異なります。

  • クラスター管理者は、Operator namespace へのアクセス権を持つため、Operator のデフォルトの ConfigMap ファイルでプロキシー変数を設定できます。この設定は、Operator のすべてのユーザーにプロキシー設定を適用します。
  • 開発者は、カスタムリソース (CR) ファイルでプロキシー変数を設定できます。この設定は、その CR から作成された RHDH アプリケーションにプロキシー設定を適用します。

前提条件

  • Red Hat Developer Hub アプリケーションがインストールされている。

手順

  1. ロールに応じて、次のいずれかの手順を実行します。

    • 管理者として、プロキシー情報を Operator のデフォルトの ConfigMap ファイルに設定します。

      1. デフォルトの namespace rhdh-operatorbackstage-default-config という名前の ConfigMap ファイルを検索して開きます。
      2. deployment.yaml キーを見つけます。
      3. 次の例に示すように、Deployment 仕様で HTTP_PROXYHTTPS_PROXY、および NO_PROXY 環境変数の値を設定します。

        例: ConfigMap ファイルでプロキシー変数を設定する

        # Other fields omitted
          deployment.yaml: |-
            apiVersion: apps/v1
            kind: Deployment
            spec:
              template:
                spec:
                  # Other fields omitted
                  initContainers:
                    - name: install-dynamic-plugins
                      # command omitted
                      env:
                        - name: NPM_CONFIG_USERCONFIG
                          value: /opt/app-root/src/.npmrc.dynamic-plugins
                        - name: HTTP_PROXY
                          value: 'http://10.10.10.105:3128'
                        - name: HTTPS_PROXY
                          value: 'http://10.10.10.106:3128'
                        - name: NO_PROXY
                          value: 'localhost,example.org'
                      # Other fields omitted
                  containers:
                    - name: backstage-backend
                      # Other fields omitted
                      env:
                        - name: APP_CONFIG_backend_listen_port
                          value: "7007"
                        - name: HTTP_PROXY
                          value: 'http://10.10.10.105:3128'
                        - name: HTTPS_PROXY
                          value: 'http://10.10.10.106:3128'
                        - name: NO_PROXY
                          value: 'localhost,example.org'
        Copy to Clipboard Toggle word wrap

    • 開発者は、次の例に示すように、Backstage CR ファイルにプロキシー情報を設定します。

      例: CR ファイルでプロキシー変数を設定する

      spec:
        # Other fields omitted
        application:
          extraEnvs:
            envs:
              - name: HTTP_PROXY
                value: 'http://10.10.10.105:3128'
              - name: HTTPS_PROXY
                value: 'http://10.10.10.106:3128'
              - name: NO_PROXY
                value: 'localhost,example.org'
      Copy to Clipboard Toggle word wrap

  2. 設定変更を保存します。

4.3. Helm デプロイメントでのプロキシー情報の設定

Helm ベースのデプロイメントの場合、クラスター内にリソースを作成する権限を持つ開発者またはクラスター管理者は、values.yaml Helm 設定ファイルでプロキシー変数を設定できます。

前提条件

  • Red Hat Developer Hub アプリケーションがインストールされている。

手順

  1. Helm 設定ファイルでプロキシー情報を設定します。

    upstream:
      backstage:
        extraEnvVars:
          - name: HTTP_PROXY
            value: '<http_proxy_url>'
          - name: HTTPS_PROXY
            value: '<https_proxy_url>'
          - name: NO_PROXY
            value: '<no_proxy_settings>'
    Copy to Clipboard Toggle word wrap

    詳細は以下のようになります。

    <http_proxy_url>
    HTTP プロキシー URL に置き換える必要がある変数を示します。
    <https_proxy_url>
    HTTPS プロキシー URL に置き換える必要がある変数を示します。
    <no_proxy_settings>

    プロキシーから除外するコンマ区切りの URL に置き換える必要がある変数を示します (例: foo.com,baz.com)。

    例: Helm チャートを使用してプロキシー変数を設定する

    upstream:
      backstage:
        extraEnvVars:
          - name: HTTP_PROXY
            value: 'http://10.10.10.105:3128'
          - name: HTTPS_PROXY
            value: 'http://10.10.10.106:3128'
          - name: NO_PROXY
            value: 'localhost,example.org'
    Copy to Clipboard Toggle word wrap

  2. 設定変更を保存します。

第5章 Kubernetes での TLS 接続を使用した RHDH インスタンスの設定

Azure Red Hat OpenShift (ARO) クラスター、サポートされているクラウドプロバイダーからのクラスター、または適切な設定を持つ独自のクラスターなど、Kubernetes クラスター内の Transport Layer Security (TLS) 接続を使用して、RHDH インスタンスを設定できます。Transport Layer Security (TLS) は、サードパーティーアプリケーションや外部データベースなどの他のエンティティーを使用して RHDH インスタンスの安全な接続を確立します。ただし、Kubernetes クラスターを設定するには、パブリック認証局 (CA) によって署名された証明書を使用する必要があります。

前提条件

  • パブリック CA によって署名された証明書を使用して Azure Red Hat OpenShift (ARO) クラスターをセットアップした。CA 証明書の取得の詳細は、ベンダーのドキュメントを参照してください。
  • namespace を作成し、リソースに対する適切な読み取り権限を持つサービスアカウントを設定した。

    例: ロールベースアクセス制御のための Kubernetes マニフェスト

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: backstage-read-only
    rules:
      - apiGroups:
          - '*'
        resources:
          - pods
          - configmaps
          - services
          - deployments
          - replicasets
          - horizontalpodautoscalers
          - ingresses
          - statefulsets
          - limitranges
          - resourcequotas
          - daemonsets
        verbs:
          - get
          - list
          - watch
    #...
    Copy to Clipboard Toggle word wrap

  • サービスアカウントに関連付けられたシークレットとサービス CA 証明書を取得した。
  • いくつかのリソースを作成し、それらにアノテーションを追加して、Kubernetes プラグインでそれらのリソースを検出できるようにした。適用できる Kubernetes アノテーションは、次のとおりです。

    • コンポーネントにラベルを付けるための backstage.io/kubernetes-id
    • namespace にラベルを付けるための backstage.io/kubernetes-namespace

手順

  1. dynamic-plugins-rhdh.yaml ファイルで Kubernetes プラグインを有効にします。

    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-kubernetes-backend-dynamic
            disabled: false 
    1
    
          - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes
            disabled: false 
    2
    
            # ...
    Copy to Clipboard Toggle word wrap
    1
    値を false に設定して、backstage-plugin-kubernetes-backend-dynamic プラグインを有効にします。
    2
    値を false に設定して、backstage-plugin-kubernetes プラグインを有効にします。
    注記

    backstage-plugin-kubernetes プラグインは、現在 テクノロジープレビュー機能 です。代わりに、一般提供 (GA) 機能である ./dynamic-plugins/dist/backstage-plugin-topology-dynamic プラグインを使用することもできます。

  2. Kubernetes クラスターの詳細を設定し、app-config.yaml 設定ファイルでカタログ同期オプションを設定 します。

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: my-rhdh-app-config
    data:
      "app-config.yaml": |
      # ...
      catalog:
        rules:
          - allow: [Component, System, API, Resource, Location]
        providers:
          kubernetes:
            openshift:
              cluster: openshift
              processor:
                namespaceOverride: default
                defaultOwner: guests
              schedule:
                frequency:
                  seconds: 30
                timeout:
                  seconds: 5
      kubernetes:
        serviceLocatorMethod:
          type: 'multiTenant'
        clusterLocatorMethods:
          - type: 'config'
            clusters:
              - url: <target-cluster-api-server-url> 
    1
    
                name: openshift
                authProvider: 'serviceAccount'
                skipTLSVerify: false 
    2
    
                skipMetricsLookup: true
                dashboardUrl: <target-cluster-console-url> 
    3
    
                dashboardApp: openshift
                serviceAccountToken: ${K8S_SERVICE_ACCOUNT_TOKEN} 
    4
    
                caData: ${K8S_CONFIG_CA_DATA} 
    5
    
                # ...
    Copy to Clipboard Toggle word wrap
    1
    Kubernetes コントロールプレーンのベース URL。ベース URL は、kubectl cluster-info コマンドを実行して取得できます。
    2
    このパラメーターの値を false に設定して、TLS 証明書の検証を有効にします。
    3
    オプション: ARO クラスターを管理する Kubernetes ダッシュボードへのリンク。
    4
    オプション:< my_product_secrets > シークレットで定義した K8S_SERVICE_ACCOUNT_TOKEN 環境変数を使用してサービスアカウントトークンを渡します。
    5
    < my_product_secrets> シークレットで定義した K8S_CONFIG_CA_ DATA 環境変数を使用して CA データを渡します。
  3. 設定変更を保存します。

検証

  1. RHDH アプリケーションを実行してカタログをインポートします。

    kubectl -n rhdh-operator get pods -w
    Copy to Clipboard Toggle word wrap
  2. Pod ログに設定に関するエラーが表示されていないことを確認します。
  3. Catalog に移動し、Developer Hub インスタンスのコンポーネントページをチェックして、クラスター接続と作成したリソースの存在を確認します。
注記

証明書の問題や権限などに関する接続エラーが発生した場合は、コンポーネントページのメッセージボックスを確認するか、Pod のログを表示してください。

第6章 動的プラグインキャッシュの使用

Red Hat Developer Hub (RHDH) の動的プラグインキャッシュは、以前にインストールされたプラグインを保存することでインストールプロセスを強化し、プラットフォームの起動時間を短縮します。設定が変更されていない場合、この機能により、次回の起動時にプラグインを再度ダウンロードする必要がなくなります。

動的プラグインキャッシュを有効化する場合:

  • システムは、各プラグインの YAML 設定 (pluginConfig を除く) のチェックサムを計算します。
  • チェックサムは、プラグインのディレクトリー内の dynamic-plugin-config.hash という名前のファイルに保存されます。
  • 起動中に、プラグインのパッケージ参照が以前のインストールと一致し、チェックサムが変更されていない場合、ダウンロードはスキップされます。
  • 前回の起動以降に無効になっているプラグインは自動的に削除されます。

6.1. 動的プラグインキャッシュの有効化

RHDH で動的プラグインキャッシュを有効にするには、プラグインディレクトリー dynamic-plugins-root が永続ボリュームである必要があります。

Helm チャートインストールの場合、dynamic-plugins-root という名前の永続ボリュームが自動的に作成されます。

Operator ベースのインストールの場合、次のように PersistentVolumeClaim (PVC) を手動で作成する必要があります。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: dynamic-plugins-root
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

---

apiVersion: rhdh.redhat.com/v1alpha3
kind: Backstage
metadata:
  name: developer-hub
spec:
  deployment:
    patch:
      spec:
        template:
          spec:
            volumes:
              - $patch: replace
                name: dynamic-plugins-root
                persistentVolumeClaim:
                  claimName: dynamic-plugins-root
Copy to Clipboard Toggle word wrap
注記

RHDH Operator の今後のバージョンでは、PVC が自動的に作成される予定です。

6.2. 動的プラグインキャッシュの設定

次のオプションの動的プラグインキャッシュパラメーターを設定できます。

  • forceDownload: キャッシュをバイパスしてプラグインの再インストールを強制するには、true に設定します。デフォルトは false です。たとえば、dynamic-plugins.yaml ファイルを次のように変更します。

    plugins:
      - disabled: false
        forceDownload: true
        package: 'oci://quay.io/example-org/example-plugin:v1.0.0!internal-backstage-plugin-example'
    Copy to Clipboard Toggle word wrap

第7章 動的プラグインでの Redis Cache の使用

Redis キャッシュストアを使用すると、RHDH のパフォーマンスと信頼性を向上できます。RHDH のプラグインは、Keyv を利用した専用のキャッシュ接続を受け取ります。

7.1. Red Hat Developer Hub への Redis Cache のインストール

前提条件

  • Operator または Helm チャートのいずれかを使用して Red Hat Developer Hub をインストールしている。
  • アクティブな Redis サーバーがある。外部 Redis サーバーの設定の詳細は、Redis の公式ドキュメント を参照してください。

手順

app-config.yaml ファイルに次のコードを追加します。

backend:
  cache:
    store: redis
    connection: redis://user:pass@cache.example.com:6379
    useRedisSets: true
Copy to Clipboard Toggle word wrap

7.2. Red Hat Developer Hub での Redis Cache の設定

7.2.1. useRedisSets

useRedisSets オプションを使用すると、キーの管理に Redis セットを使用するかどうかを決定できます。デフォルトでは、このオプションは true に設定されています。

useRedisSets が有効化 (true) の場合:

  • Redis セットの namespace が作成され、生成されたすべてのキーがその namespace に追加され、キーのグループ管理が可能になります。
  • キーが削除されると、メインストレージと Redis セットから削除されます。
  • clear 関数を使用してすべてのキーを削除すると、Redis セット内のすべてのキーが削除対象としてチェックされ、セット自体も削除されます。
注記

高パフォーマンスのシナリオでは、useRedisSets を有効にすると、メモリーリークが発生する可能性があります。高パフォーマンスのアプリケーションまたはサービスを実行している場合は、useRedisSetsfalse に設定する必要があります。

useRedisSetsfalse に設定すると、キーは個別に処理され、Redis セットは使用されません。この設定では、clear 関数を使用する際に、実稼働環境でパフォーマンスの問題が発生する可能性があります。これは、すべてのキーの削除を反復処理する必要があるためです。

法律上の通知

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

Theme

© 2026 Red Hat
トップに戻る