エアギャップ環境への Red Hat Developer Hub のインストール


Red Hat Developer Hub 1.6

Operator または Helm チャートを使用した、ネットワークが制限された環境における Red Hat OpenShift Container Platform 上での Red Hat Developer Hub の実行

Red Hat Customer Content Services

概要

プラットフォーム管理者は、ロール、権限、その他の設定を行うことで、許可された他のユーザーが、Operator または Helm チャートを使用して、サポートされている任意のプラットフォームに Red Hat Developer Hub (RHDH) のエアギャップインスタンスをデプロイできるようにすることが可能です。

第1章 エアギャップ環境

エアギャップ環境は、エアギャップネットワークまたは分離ネットワークとも呼ばれ、システムまたはネットワークを物理的に分離することでセキュリティーを確保します。この分離は、エアギャップシステムと外部ソース間の不正なアクセス、データ転送、または通信を防止するために確立されます。

Red Hat Developer Hub は、セキュリティーを確保し、特定の規制要件を満たすために、エアギャップ環境にインストールできます。

第2章 Operator を使用したエアギャップ環境への Red Hat Developer Hub のインストール

Red Hat Developer Hub Operator を使用して、完全な非接続環境または部分的な非接続環境に Red Hat Developer Hub をインストールできます。サポートされているプラットフォームのリストは、Red Hat Developer Hub のライフサイクルページ を参照してください。

2.1. Operator を使用した完全な非接続環境への Red Hat Developer Hub のインストール

セキュリティー、コンプライアンス、または運用上の理由によりインターネットにアクセスできない環境では、完全な非接続インストールにより、外部の依存関係なしで Red Hat Developer Hub を確実に稼働させることができます。

ネットワークが踏み台ホストを介してレジストリーにアクセスできる場合は、ヘルパースクリプトを使用して、Operator 関連のイメージをディスクにミラーリングし、インターネットに接続せずにエアギャップ環境に転送することで、Red Hat Developer Hub をインストールできます。

前提条件

  • Podman 5.3 以降がインストールされている。詳細は、Podman のインストール手順 を参照してください。
  • Skopeo 1.17 以降がインストールされている。
  • yq 4.44 以降がインストールされている。
  • GNU sed コマンドラインテキストエディターがインストールされている。
  • umoci CLI ツールがインストールされている。
  • registry.redhat.io Red Hat Ecosystem Catalog へのアクティブな oc registrypodman、または skopeo セッションがある。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。
  • opm がインストールされている。詳細は、opm CLI のインストール を参照してください。

手順

  1. 次のコマンドを実行して、ミラーリングスクリプトをディスクにダウンロードします。

    curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.6/.rhdh/scripts/prepare-restricted-environment.sh
  2. 適切なオプションのセットを指定した bash コマンドを使用して、ミラーリングスクリプトを実行します。

    bash prepare-restricted-environment.sh
     --filter-versions "1.6"
     --to-dir _<my_pulled_image_location>_ 
    1
    
     [--use-oc-mirror true] 
    2
    1
    --to-dir オプションを使用して、必要なすべてのイメージをプルするディレクトリーへの絶対パスを指定します (例: /home/user/rhdh-operator-mirror-dir)。
    2
    (オプション) oc-mirror OpenShift Container Platform CLI プラグインを使用してイメージをミラーリングします。
    注記

    このスクリプトは複数のイメージをミラーレジストリーにコピーするため、完了までに数分かかる場合があります。

  3. --to-dir オプションで指定したディレクトリーを非接続環境に転送します。
  4. クラスターとターゲットミラーレジストリーの両方にアクセスできる非接続環境内のマシンから、適切なオプションのセットを指定した bash コマンドを使用してミラーリングスクリプトを実行します。

    bash <my_pulled_image_location>/install.sh 
    1
    
        --from-dir <my_pulled_image_location> 
    2
    
        [--to-registry <my.registry.example.com>] 
    3
    
        [--use-oc-mirror true] 
    4
    1
    ダウンロードしたイメージと、そのイメージを格納するシステム上のディレクトリーへの絶対パス。
    2
    --to-dir オプションを使用して、必要なすべてのイメージをプルするディレクトリーを指定します。
    3
    イメージをミラーリングするターゲットミラーレジストリーの URL を指定します。
    4
    (オプション) oc-mirror OpenShift Container Platform CLI プラグインを使用してイメージをミラーリングします。
    重要

    oc-mirror を使用してイメージをディスクにミラーリングした場合は、ディスクからイメージをミラーリングする際にも oc-mirror を使用する必要があります。これは oc-mirror が使用するフォルダーレイアウトによるものです。

    注記

    スクリプトは Red Hat Developer Hub Operator を自動的にインストールするため、完了するまでに数分かかる場合があります。

検証

  • Red Hat OpenShift Container Platform を使用している場合は、Red Hat Developer Hub Operator が Web コンソールの Installed Operators リストに表示されます。
  • サポートされている Kubernetes プラットフォームを使用している場合は、ターミナルで次のコマンドを実行すると、rhdh-operator namespace で実行されている Pod のリストを確認できます。

    kubectl -n rhdh-operator get pods

次のステップ

2.2. Operator を使用した部分的な非接続環境への Red Hat Developer Hub のインストール

制限されたネットワーク上で動作する OpenShift Container Platform クラスターでは、パブリックリソースは使用できません。ただし、Red Hat Developer Hub Operator をデプロイして Developer Hub を実行するには、次のパブリックリソースが必要です。

  • Operator イメージ (バンドル、Operator、カタログ)
  • オペランドイメージ (RHDH、PostgreSQL)

これらのリソースを使用可能にするには、これらのリソースを、クラスターからアクセス可能なミラーレジストリー内の同等のリソースに置き換えます。

ヘルパースクリプトを使用すると、必要なイメージをミラーリングし、そのイメージを Red Hat Developer Hub Operator のインストール時と Developer Hub インスタンスの作成時に使用するのに必要な設定を指定できます。このスクリプトにはターゲットミラーレジストリーが必要です。クラスターがすでに非接続ネットワーク上で動作している場合は、ターゲットミラーレジストリーが存在するはずです。ターゲットレジストリーがまだ存在せず、OpenShift Container Platform クラスターがある場合は、内部クラスターレジストリーを公開して活用することを推奨します。

OpenShift Container Platform クラスターに接続すると、ヘルパースクリプトがそれを検出し、クラスターレジストリーを自動的に公開します。Kubernetes クラスターに接続する場合は、イメージをミラーリングするターゲットレジストリーを手動で指定できます。

前提条件

  • Podman 5.3 以降がインストールされている。詳細は、Podman のインストール手順 を参照してください。
  • Skopeo 1.17 以降がインストールされている。
  • yq 4.44 以降がインストールされている。
  • GNU sed コマンドラインテキストエディターがインストールされている。
  • umoci CLI ツールがインストールされている。
  • registry.redhat.io Red Hat Ecosystem Catalog へのアクティブな oc registrypodman、または skopeo セッションがある。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。
  • ターゲットミラーレジストリーへの管理アクセス権を持つアクティブな skopeo セッションがある。詳細は、Authenticating to a registry を参照してください。
  • opm がインストールされている。詳細は、opm CLI のインストール を参照してください。
  • OpenShift Container Platform クラスターを使用している場合は、次の前提条件があります。

    • (オプション) イメージをミラーリングするために oc-mirror OpenShift Container Platform CLI プラグインを使用する場合は、このプラグインがインストールされている。
  • サポートされている Kubernetes クラスターを使用している場合は、次の前提条件があります。

    • 非接続クラスターに Operator Lifecycle Manager (OLM) をインストールした。
    • 非接続クラスターからアクセス可能なミラーレジストリーがある。

手順

  1. ターミナルで、ミラーリングスクリプトを保存するディレクトリーに移動します。
  2. 次のコマンドを実行してミラーリングスクリプトをダウンロードします。

    curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.6/.rhdh/scripts/prepare-restricted-environment.sh
  3. 適切なオプションのセットを指定した bash コマンドを使用して、ミラーリングスクリプトを実行します。

    bash prepare-restricted-environment.sh \
     --filter-versions "1.6" \
      [--to-registry <my.registry.example.com>] \ 
    1
    
      [--use-oc-mirror true] 
    2
    1
    イメージをミラーリングするターゲットミラーレジストリーの URL を指定します。
    2
    (オプション) oc-mirror OpenShift Container Platform CLI プラグインを使用してイメージをミラーリングします。
    注記

    このスクリプトは複数のイメージをミラーレジストリーにコピーするため、完了までに数分かかる場合があります。

検証

  • Red Hat OpenShift Container Platform を使用している場合は、Red Hat Developer Hub Operator が Web コンソールの Installed Operators リストに表示されます。
  • サポートされている Kubernetes プラットフォームを使用している場合は、ターミナルで次のコマンドを実行すると、rhdh-operator namespace で実行されている Pod のリストを確認できます。

    kubectl -n rhdh-operator get pods

次のステップ

Red Hat Developer Hub Helm チャートを使用して、完全な非接続環境または部分的な非接続環境に Red Hat Developer Hub をインストールできます。

ネットワークが bastion ホストを介してレジストリーにアクセスできる場合は、Helm チャートを使用して、指定されたリソースをディスクにミラーリングし、インターネットに接続せずにエアギャップ環境に転送することで、Red Hat Developer Hub をインストールできます。

前提条件

  • ワークステーションを設定している。

    • registry.redhat.io にアクセスできる。
    • charts.openshift.io Helm チャートリポジトリーにアクセスできる。
    • ワークステーションに OpenShift CLI (oc) がインストールされている。
    • oc-mirror OpenShift CLI (oc) プラグインがインストールされている。詳細は、oc-mirror OpenShift CLI プラグインのインストール を参照してください。
    • Red Hat Developer Portal にアカウントがある。
  • 中間ホストを設定している。

    • ホストは、非接続クラスターと、ターゲットミラーレジストリー (Red Hat OpenShift Container Platform イメージレジストリーなど) にアクセスできる。OpenShift Container Platform イメージレジストリーの公開の詳細は、レジストリーの公開 を参照してください。
    • oc-mirror OpenShift CLI (oc) プラグインがインストールされている。詳細は、oc-mirror OpenShift CLI プラグインのインストール を参照してください。
    • Red Hat OpenShift Container Platform 4.14 以降がインストールされている。
    • ワークステーションに OpenShift CLI (oc) がインストールされている。

手順

  1. ミラーリングするリソースを指定するには、ImageSetConfiguration ファイルを作成します。以下に例を示します。

    apiVersion: mirror.openshift.io/v1alpha2
    kind: ImageSetConfiguration
    mirror:
      helm:
        repositories:
               - name: <repository_name> (1)
            url: <repository_url> (2)
            charts:
              - name: <chart_name> (3)
                version: "<rhdh_version>" (4)
    ミラーリングするリポジトリーの名前 (例: openshift-charts)
    ミラーリングするリポジトリーの URL (例: https://charts.openshift.io)。
    ミラーリングする Helm チャートの名前 (例: redhat-developer-hub)。
    使用する Red Hat Developer Hub のバージョン (例: 1.6)
  2. oc-mirror コマンドを実行して、ImageSetConfiguration.yaml ファイルで指定されたリソースをミラーリングします。以下に例を示します。

    oc-mirror --config=<mirror_config_directory>/ImageSetConfiguration.yaml <mirror_archive_directory>/

    ここでは、以下のようになります。

    <mirror_config_directory>
    システム上のイメージセット設定ファイルの場所を指定します (例: .user)。
    <mirror_configuration_file>
    ミラー設定 yaml ファイルの名前を指定します (例: mirror-config.yaml)
    <mirror_archive_directory>
    ミラーアーカイブの作成先のディレクトリーの場所を指定します (例: file://.user)。
    注記

    oc-mirror コマンドを実行すると、ミラーアーカイブファイル、Helm チャート、ImageContentSourcePolicy (ICSP) マニフェストを含むローカルワークスペースが生成されます。ICSP マニフェストには、後の手順でクラスターに適用する必要がある imageContentSourcePolicy.yaml ファイルが含まれています。

    出力例

    Creating archive /path/to/mirror-archive/mirror_seq1_000000.tar

  3. 生成されたアーカイブファイル (例: mirror_seq1_000000.tar) をエアギャップ環境に転送します。
  4. エアギャップ環境に接続し、次のオブジェクトにも接続されていることを確認します。

    • ローカルターゲットレジストリー
    • ターゲット OpenShift Container Platform クラスター
  5. エアギャップ環境から oc-mirror コマンドを実行して、アーカイブからターゲットレジストリーにミラーリングします。以下に例を示します。

    oc-mirror --from <mirror-archive-file> <target-registry>

    ここでは、以下のようになります。

    <mirror_archive_file>
    ミラーリングするリソースを含むファイルの名前を指定します (例: mirror_seq1_0000.tar)。
    <target_registry>
    ミラーリングされたイメージをプッシュするターゲットレジストリーの名前を指定します (例: docker://registry.localhost:5000)。

    出力例

    Wrote release signatures to oc-mirror-workspace/results-1738075410
    Writing image mapping to oc-mirror-workspace/results-1738075410/mapping.txt
    Writing ICSP manifests to oc-mirror-workspace/results-1738075410

  6. ワークスペースで、ls コマンドを実行して imageContentSourcePolicy.yaml ファイルを見つけます。以下に例を示します。

    ls <workspace_directory>/<results_directory>

    ここでは、以下のようになります。

    <workspace_directory>
    ワークスペースディレクトリーの名前を指定します (例: oc-mirror-workspace)。
    <results_directory>
    結果ディレクトリーの名前を指定します (例: results-1738070846)。
  7. Helm チャートをミラーリングするには、oc apply コマンドを実行して、非接続クラスターに imageContentSourcePolicy.yaml ファイルをデプロイします。以下に例を示します。

    oc apply -f <workspace_directory>/<results_directory>/ImageContentSourcePolicy.yaml

    ここでは、以下のようになります。

    <workspace-directory>
    ワークスペースディレクトリーの名前を指定します (例: oc-mirror-workspace)。
    <results-directory>
    結果ディレクトリーの名前を指定します (例: results-1738070846)。
  8. エアギャップ環境で、namespaceset オプションを指定して helm install コマンドを実行し、使用する namespace に Helm チャートをデプロイします。以下に例を示します。

    CLUSTER_ROUTER_BASE=$(oc get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/[.]*\.//')
    
    helm install <rhdh_instance> <workspace_directory>/<results_directory>/charts/<archive_file> --namespace <your_namespace> --create-namespace \
      --set global.clusterRouterBase="$CLUSTER_ROUTER_BASE"

    ここでは、以下のようになります。

    <rhdh_instance>
    Red Hat Developer Hub インスタンスの名前を指定します (例: my-rhdh)
    <workspace_directory>
    ワークスペースディレクトリーの名前を指定します (例: oc-mirror-workspace)。
    <results_directory>
    結果ディレクトリーの名前を指定します (例: results-1738070846)。
    <archive_file>
    ミラーリングするリソースを含むアーカイブファイルの名前を指定します (例: redhat-developer-hub-1.4.1.tgz)。
    <your_namespace>
    Helm チャートをデプロイする namespace を指定します (例: my-rhdh-project)

ネットワークが registry.redhat.io レジストリーと charts.openshift.io Helm チャートリポジトリーにアクセスできる場合は、指定されたリソースをターゲットレジストリーに直接ミラーリングすることで、部分的に非接続環境に Red Hat Developer Hub インスタンスをデプロイできます。

前提条件

  • Red Hat OpenShift Container Platform 4.14 以降がインストールされている。
  • charts.openshift.io Helm チャートリポジトリーにアクセスできる。
  • registry.redhat.io にアクセスできる。
  • 非接続クラスターからアクセスできるミラーレジストリー (OpenShift Container Platform イメージレジストリーなど) にアクセスできる。OpenShift Container Platform イメージレジストリーの公開の詳細は、レジストリーの公開 を参照してください。
  • ターゲットミラーレジストリーにログインしており、そこにイメージをプッシュする権限がある。詳細は、イメージのミラーリングを可能にする認証情報の設定 を参照してください。
  • ワークステーションに OpenShift CLI (oc) がインストールされている。
  • oc-mirror OpenShift CLI (oc) プラグインがインストールされている。詳細は、oc-mirror OpenShift CLI プラグインのインストール を参照してください。
  • Red Hat Developer Portal にアカウントがある。

手順

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

    oc login -u <user> -p <password> https://api.<hostname>:6443
  2. 非接続クラスターから、OpenShift Container Platform イメージレジストリーなど、ミラーリングするイメージレジストリーにログインします。
  3. ImageSetConfiguration.yaml ファイルを作成します。
  4. ImageSetConfiguration.yaml ファイルで、ミラーリングするリソースを指定します。以下に例を示します。

    apiVersion: mirror.openshift.io/v1alpha2
    kind: ImageSetConfiguration
    mirror:
      helm:
        repositories:
          - name: <repository_name> (1)
            url: <repository_url> (2)
            charts:
              - name: <chart_name> (3)
                version: "<rhdh_version>" (4)
    ミラーリングする Helm チャートを含むリポジトリーの名前 (例: openshift-charts)
    ミラーリングする Helm チャートを含むリポジトリーの URL (例: https://charts.openshift.io)。
    ミラーリングするイメージを含む Helm チャートの名前 (例: redhat-developer-hub)
    使用する Red Hat Developer Hub のバージョン (例: 1.6)
  5. oc-mirror コマンドを実行して、イメージセット設定ファイルで指定されたリソースをターゲットレジストリーに直接ミラーリングします。以下に例を示します。

    oc-mirror --config=<mirror_config_directory>/ImageSetConfiguration.yaml <target-mirror-registry>

    ここでは、以下のようになります。

    <mirror_config_directory>
    システム上のイメージセット設定ファイルの場所を指定します (例: .user)。
    <target_mirror_registry>
    ターゲットミラーレジストリーの場所と名前を指定します (例: docker://registry.example:5000)
    注記

    oc-mirror コマンドを実行すると、Helm チャートと ImageContentSourcePolicy (ICSP) マニフェストを含むローカルワークスペースが作成されます。ICSP マニフェストには、後の手順でクラスターに適用する必要がある、自動生成された imageContentSourcePolicy.yaml ファイルが含まれています。

    出力例

    Writing image mapping to oc-mirror-workspace/results-1738070846/mapping.txt
    Writing ICSP manifests to oc-mirror-workspace/results-1738070846

  6. ワークスペースで、ls コマンドを実行して imageContentSourcePolicy.yaml ファイルを見つけます。以下に例を示します。

    ls <workspace_directory>/<results_directory>

    ここでは、以下のようになります。

    <workspace_directory>
    ワークスペースディレクトリーの名前を指定します (例: oc-mirror-workspace)。
    <results_directory>
    結果ディレクトリーの名前を指定します (例: results-1738070846)。
  7. Helm チャートをミラーリングするには、oc apply コマンドを実行して、非接続クラスターに imageContentSourcePolicy.yaml ファイルをデプロイします。以下に例を示します。

    oc apply -f <workspace_directory>/<results_directory>/ImageContentSourcePolicy.yaml

    ここでは、以下のようになります。

    <workspace_directory>
    ワークスペースディレクトリーの名前を指定します (例: oc-mirror-workspace)。
    <results_directory>
    結果ディレクトリーの名前を指定します (例: results-1738070846)。
  8. エアギャップ環境で、namespaceset オプションを指定して helm install コマンドを実行し、使用する namespace に Helm チャートをデプロイします。以下に例を示します。

    CLUSTER_ROUTER_BASE=$(oc get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/[.]*\.//')
    
    helm install <rhdh_instance> <workspace_directory>/<results_directory>/charts/<archive_file> --namespace <your_namespace> --create-namespace \
      --set global.clusterRouterBase="$CLUSTER_ROUTER_BASE"

    ここでは、以下のようになります。

    <rhdh_instance>
    Red Hat Developer Hub インスタンスの名前を指定します (例: my-rhdh)
    <workspace_directory>
    ワークスペースディレクトリーの名前を指定します (例: oc-mirror-workspace)。
    <results_directory>
    結果ディレクトリーの名前を指定します (例: results-1738070846)。
    <archive_file>
    ミラーリングするリソースを含むアーカイブファイルの名前を指定します (例: redhat-developer-hub-1.4.1.tgz)。
    <your_namespace>
    Helm チャートをデプロイする namespace を指定します (例: my-rhdh-project)

完全な非接続環境または部分的な非接続環境でサポートされている Kubernetes プラットフォームを使用している場合は、Helm チャートを使用して Red Hat Developer Hub をインストールできます。サポートされている Kubernetes プラットフォームは次のとおりです。

  • Microsoft Azure Kubernetes Service
  • Amazon Elastic Kubernetes Service
  • Google Kubernetes Engine

インターネットにアクセスできない環境では、完全な非接続環境でのインストールにより、Red Hat Developer Hub を外部の依存関係なしで確実に実行できるようになります。このアプローチでは、イメージをミラーリングし、手動でエアギャップ環境に転送する必要があります。

前提条件

  • Skopeo 1.17 以降がインストールされている。
  • Yq 4.4 以降がインストールされている。
  • skopeo login コマンドを使用して、イメージをプルするために registry.redhat.io に認証している。
  • kubectl が設定された Kubernetes クラスターにアクセスできる。
  • エアギャップホストに Helm 3.13 以降がインストールされている。

手順

  1. ミラーリングホストのターミナルで、次のコマンドを実行して Helm チャートの値を取得します。

    helm repo add <helm_chart_repo_name> https://charts.openshift.io/
    helm repo update
    helm show values <helm_chart_repo_name>/redhat-developer-hub --version <rhdh_version>  values.default.yaml
    helm pull <helm_chart_repo_name>/redhat-developer-hub --version <rhdh_version>

    以下は、

    <helm_chart_repo_name>
    Helm チャートリポジトリーの名前を指定します (例: openshift- helm -charts)
    <rhdh_version>

    使用する Red Hat Developer Hub のバージョンを指定します (例: 1.6.3)。

    注記

    helm pull <helm_chart_repo_name>/redhat-developer-hub --version <rhdh_version> コマンドは、Helm チャートアーカイブファイルを自動的に作成し、Helm チャートを現在の作業ディレクトリーにダウンロードします。

  2. 次のコマンドを実行して、イメージダイジェストを抽出します。

    RHDH_IMAGE=$(yq '.upstream.backstage.image | .registry + "/" + .repository' values.default.yaml)
    RHDH_DIGEST=$(yq '.upstream.backstage.image.tag' values.default.yaml)
    PG_IMAGE=$(yq '.upstream.postgresql.image | .registry + "/" + .repository' values.default.yaml)
    PG_DIGEST=$(yq '.upstream.postgresql.image.tag' values.default.yaml)
  3. 次のコマンドを実行して、イメージをローカルアーカイブにミラーリングします。

    skopeo login registry.redhat.io
    skopeo copy --all docker://${RHDH_IMAGE}:${RHDH_DIGEST} dir:./rhdh-hub
    skopeo copy --all docker://${PG_IMAGE}:${PG_DIGEST} dir:./postgresql
  4. 次のファイルとディレクトリーをエアギャップ環境に転送します。

    • rhdh-hub
    • postgresql
    • Helm チャートアーカイブファイル (例: redhat-developer-hub-1.6.3.tgz)
  5. 次のコマンドを実行して、イメージをエアギャップホストにロードします。

    skopeo copy --all dir:./rhdh-hub docker://<mirror_registry_name>/<rhdh_repo_name>:${RHDH_DIGEST}
    
    skopeo copy --all dir:./postgresql docker://<mirror_registry_name>/<postgresql_repo_name>:${PG_DIGEST}

    以下は、

    <mirror_registry_name>
    イメージをプッシュするターゲットミラーレジストリーの名前を指定します (例: registry.example.com)。
    <rhdh_repo_name>
    Red Hat Developer Hub イメージが保存されているリポジトリーの名前を指定します (例: rhdh/rhdh-hub-rhel9)。この値は、エアギャップホストにロードした Red Hat Developer Hub イメージの名前と一致する必要があります。
    <postgresql_repo_name>
    PostgreSQL イメージが保存されているリポジトリーの名前を指定します (例: rhdh/postgresql-15)。
  6. 使用する Kubernetes プラットフォームの values.yaml ファイルを作成し、ローカル使用を反映するために次のイメージ参照をファイルに追加します。

    upstream:
      backstage:
        image:
          registry: "<mirror_registry_name>"
          repository: <rhdh_repo_name>
          tag: "${RHDH_DIGEST}"
    
      postgresql:
        image:
          registry: "<mirror_registry_name>"
          repository: <postgresql_repo_name>
          tag: "${PG_DIGEST}"

    以下は、

    <mirror_registry_name>
    イメージをプッシュするターゲットミラーレジストリーの名前を指定します (例: registry.example.com)。
    <rhdh_repo_name>
    Red Hat Developer Hub イメージが保存されているリポジトリーの名前を指定します (例: rhdh/rhdh-hub-rhel9)。この値は、エアギャップホストにロードした Red Hat Developer Hub イメージの名前と一致する必要があります。
    <postgresql_repo_name>

    PostgreSQL イメージが保存されているリポジトリーの名前を指定します (例: rhdh/postgresql-15)。

    • AKS の場合は、次の 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
    • EKS の場合は、次の 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
    • GKE の場合は、次の values.yaml ファイルテンプレートを使用します。

      global:
        host: <rhdh_domain_name>
      route:
        enabled: false
      upstream:
        service:
          type: NodePort
        ingress:
          enabled: true
          annotations:
            kubernetes.io/ingress.class: gce
            kubernetes.io/ingress.global-static-ip-name: <ADDRESS_NAME>
            networking.gke.io/managed-certificates: <rhdh_certificate_name>
            networking.gke.io/v1beta1.FrontendConfig: <ingress_security_config>
          className: gce
        backstage:
          image:
            pullSecrets:
            - rhdh-pull-secret
          podSecurityContext:
            fsGroup: 2000
        postgresql:
          image:
            pullSecrets:
            - rhdh-pull-secret
          primary:
            podSecurityContext:
              enabled: true
              fsGroup: 3000
        volumePermissions:
          enabled: true
  7. 次のコマンドを実行して、現在の namespace に Helm チャートをインストールします。

    helm install rhdh ./<helm_chart_archive_file_name> -f values.yaml

    以下は、

    <helm_chart_archive_file_name>
    Helm チャートアーカイブファイルの名前を指定します (例: redhat-developer-hub-1.4.0.tgz)。

部分的な非接続環境では、クラスターは registry.redhat.io などの外部レジストリーにアクセスできませんが、内部ミラーレジストリーにはアクセスできます。この方法では、クラスターから内部ミラーレジストリーに直接アクセスする必要があります。

前提条件

  • ワークステーションを設定している。

    • Skopeo 1.17 以降がインストールされている。
    • Yq 4.4 以降がインストールされている。
    • Helm 3.13 以降がインストールされている。
    • registry.redhat.io に対してアクティブな Skopeo セッションがある。
    • ターゲットミラーレジストリー (例: registry.internal.example.com) に対して、アクティブな Skopeo セッションがある。
    • kubectl が設定された Kubernetes クラスターにアクセスできる。

手順

  1. ターミナルで、次のコマンドを実行して Helm チャートをダウンロードして抽出します。

    helm repo add _<helm_chart_repo_name>_ https://charts.openshift.io/
    helm repo update
    helm pull _<helm_chart_repo_name>_/redhat-developer-hub --version _<rhdh_version>_
    helm show values _<helm_chart_repo_name>_/redhat-developer-hub --version _<rhdh_version>_ > values.default.yaml

    以下は、

    <helm_chart_repo_name>
    Helm チャートリポジトリーの名前を指定します (例: openshift- helm -charts)
    <rhdh_version>
    使用する Red Hat Developer Hub のバージョンを指定します (例: 1.6.3)。
  2. 次のコマンドを実行し、yq を使用してイメージダイジェストを抽出します。

    RHDH_IMAGE=$(yq '.upstream.backstage.image | .registry + "/" + .repository' values.default.yaml)
    RHDH_DIGEST=$(yq '.upstream.backstage.image.tag' values.default.yaml)
    PG_IMAGE=$(yq '.upstream.postgresql.image | .registry + "/" + .repository' values.default.yaml)
    PG_DIGEST=$(yq '.upstream.postgresql.image.tag' values.default.yaml)
  3. 次のコマンドを入力して、イメージを内部ミラーレジストリーにミラーリングします。

    skopeo login registry.redhat.io
    
    skopeo login _<mirror_registry_name>_
    
    skopeo copy --remove-signatures \
      docker://${PG_IMAGE}@${PG_DIGEST} \
      docker://_<mirror_registry_name>_/_<postgresql_repo_name>_:${PG_DIGEST}
    
    skopeo copy --remove-signatures \
      docker://${RHDH_IMAGE}@${RHDH_DIGEST} \
      docker://_<mirror_registry_name>_/_<rhdh_repo_name>_${RHDH_DIGEST}

    以下は、

    <mirror_registry_name>
    内部ミラーレジストリーの名前を指定します (例: registry.internal.example.com)。
    <postgresql_repo_name>
    PostgreSQL リポジトリーの名前を指定します (例: rhdh/postgresql-15)。
    <rhdh_repo_name>
    Red Hat Developer Hub リポジトリーの名前を指定します (例: rhdh/rhdh-hub-rhel9)。
  4. 使用する Kubernetes プラットフォームの values.yaml ファイルを作成し、ローカル使用を反映するために次のイメージ参照をファイルに追加します。

    upstream:
      backstage:
        image:
          registry: "_<mirror_registry_name>_"
          repository: _<rhdh_repo_name>_
          tag: "${RHDH_DIGEST}"
    
      postgresql:
        image:
          registry: "_<mirror_registry_name>_"
          repository: _<postgresql_repo_name>_
          tag: "${PG_DIGEST}"
    • AKS の場合は、次の 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
    • EKS の場合は、次の 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
    • GKE の場合は、次の values.yaml ファイルテンプレートを使用します。

      global:
        host: <rhdh_domain_name>
      route:
        enabled: false
      upstream:
        service:
          type: NodePort
        ingress:
          enabled: true
          annotations:
            kubernetes.io/ingress.class: gce
            kubernetes.io/ingress.global-static-ip-name: <ADDRESS_NAME>
            networking.gke.io/managed-certificates: <rhdh_certificate_name>
            networking.gke.io/v1beta1.FrontendConfig: <ingress_security_config>
          className: gce
        backstage:
          image:
            pullSecrets:
            - rhdh-pull-secret
          podSecurityContext:
            fsGroup: 2000
        postgresql:
          image:
            pullSecrets:
            - rhdh-pull-secret
          primary:
            podSecurityContext:
              enabled: true
              fsGroup: 3000
        volumePermissions:
          enabled: true
  5. 次のコマンドを実行して、現在の namespace に Helm チャートをインストールします。

    helm install rhdh ./_<helm_chart_archive_file_name>_ -f values.yaml

    以下は、

    <helm_chart_archive_file_name>
    Helm チャートアーカイブファイルの名前を指定します (例: redhat-developer-hub-1.6.3.tgz)。

法律上の通知

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る