エアギャップ環境への Red Hat Developer Hub のインストール
Operator または Helm チャートを使用して、ネットワークが制限された環境で Red Hat OpenShift Container Platform 上で Red Hat Developer Hub を実行します。
概要
第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 registry
、podman
、またはskopeo
セッションがある。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 -
opm
がインストールされている。詳細は、opm CLI のインストール を参照してください。
手順
次のコマンドを実行して、ミラーリングスクリプトをディスクにダウンロードします。
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.5/.rhdh/scripts/prepare-restricted-environment.sh
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.5/.rhdh/scripts/prepare-restricted-environment.sh
Copy to Clipboard Copied! 適切なオプションのセットを指定した
bash
コマンドを使用して、ミラーリングスクリプトを実行します。bash prepare-restricted-environment.sh --filter-versions "1.5" --to-dir _<my_pulled_image_location>_ [--use-oc-mirror true]
bash prepare-restricted-environment.sh --filter-versions "1.5" --to-dir _<my_pulled_image_location>_
1 [--use-oc-mirror true]
2 Copy to Clipboard Copied! 注記このスクリプトは複数のイメージをミラーレジストリーにコピーするため、完了までに数分かかる場合があります。
-
--to-dir
オプションで指定したディレクトリーを非接続環境に転送します。 クラスターとターゲットミラーレジストリーの両方にアクセスできる非接続環境内のマシンから、適切なオプションのセットを指定した
bash
コマンドを使用してミラーリングスクリプトを実行します。bash <my_pulled_image_location>/install.sh --from-dir <my_pulled_image_location> [--to-registry <my.registry.example.com>] [--use-oc-mirror true]
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 Copy to Clipboard Copied! 重要oc-mirror
を使用してイメージをディスクにミラーリングした場合は、ディスクからイメージをミラーリングする際にもoc-mirror
を使用する必要があります。これはoc-mirror
が使用するフォルダーレイアウトによるものです。注記スクリプトは Red Hat Developer Hub Operator を自動的にインストールするため、完了するまでに数分かかる場合があります。
検証
- Red Hat OpenShift Container Platform を使用している場合は、Red Hat Developer Hub Operator が Web コンソールの Installed Operator リストに表示されます。
サポートされている Kubernetes プラットフォームを使用している場合は、ターミナルで次のコマンドを実行すると、
rhdh-operator
namespace で実行されている Pod のリストを確認できます。kubectl -n rhdh-operator get pods
kubectl -n rhdh-operator get pods
Copy to Clipboard Copied!
次のステップ
Operator を使用して、サポートされているプラットフォーム上に Red Hat Developer Hub インスタンスを作成します。詳細は、使用するプラットフォームに応じて次のドキュメントを参照してください。
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 registry
、podman
、または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) をインストールした。
- 非接続クラスターからアクセス可能なミラーレジストリーがある。
手順
- ターミナルで、ミラーリングスクリプトを保存するディレクトリーに移動します。
次のコマンドを実行してミラーリングスクリプトをダウンロードします。
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.5/.rhdh/scripts/prepare-restricted-environment.sh
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.5/.rhdh/scripts/prepare-restricted-environment.sh
Copy to Clipboard Copied! 適切なオプションのセットを指定した
bash
コマンドを使用して、ミラーリングスクリプトを実行します。bash prepare-restricted-environment.sh \ --filter-versions "1.5" \ [--to-registry <my.registry.example.com>] \ [--use-oc-mirror true]
bash prepare-restricted-environment.sh \ --filter-versions "1.5" \ [--to-registry <my.registry.example.com>] \
1 [--use-oc-mirror true]
2 Copy to Clipboard Copied! 注記このスクリプトは複数のイメージをミラーレジストリーにコピーするため、完了までに数分かかる場合があります。
検証
- Red Hat OpenShift Container Platform を使用している場合は、Red Hat Developer Hub Operator が Web コンソールの Installed Operator リストに表示されます。
サポートされている Kubernetes プラットフォームを使用している場合は、ターミナルで次のコマンドを実行すると、
rhdh-operator
namespace で実行されている Pod のリストを確認できます。kubectl -n rhdh-operator get pods
kubectl -n rhdh-operator get pods
Copy to Clipboard Copied!
次のステップ
Operator を使用して、サポートされているプラットフォーム上に Red Hat Developer Hub インスタンスを作成します。詳細は、使用するプラットフォームに応じて次のドキュメントを参照してください。
第3章 Helm チャートを使用したエアギャップ環境の OpenShift Container Platform への Red Hat Developer Hub のインストール
Red Hat Developer Hub Helm チャートを使用して、完全な非接続環境または部分的な非接続環境に Red Hat Developer Hub をインストールできます。
3.1. Helm チャートを使用した完全な非接続環境の OpenShift Container Platform への 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
) がインストールされている。
手順
ミラーリングするリソースを指定するには、
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)
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)
Copy to Clipboard Copied! - ミラーリングするリポジトリーの名前 (例:
openshift-charts)
。 - ミラーリングするリポジトリーの URL (例:
https://charts.openshift.io
)。 - ミラーリングする Helm チャートの名前 (例:
redhat-developer-hub
)。 - 使用する Red Hat Developer Hub のバージョン (例:
1.5
)
oc-mirror
コマンドを実行して、ImageSetConfiguration.yaml
ファイルで指定されたリソースをミラーリングします。以下に例を示します。oc-mirror --config=<mirror_config_directory>/ImageSetConfiguration.yaml <mirror_archive_directory>/
oc-mirror --config=<mirror_config_directory>/ImageSetConfiguration.yaml <mirror_archive_directory>/
Copy to Clipboard Copied! ここでは、以下のようになります。
<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
Creating archive /path/to/mirror-archive/mirror_seq1_000000.tar
Copy to Clipboard Copied! -
生成されたアーカイブファイル (例:
mirror_seq1_000000.tar
) をエアギャップ環境に転送します。 エアギャップ環境に接続し、次のオブジェクトにも接続されていることを確認します。
- ローカルターゲットレジストリー
- ターゲット OpenShift Container Platform クラスター
エアギャップ環境から
oc-mirror
コマンドを実行して、アーカイブからターゲットレジストリーにミラーリングします。以下に例を示します。oc-mirror --from <mirror-archive-file> <target-registry>
oc-mirror --from <mirror-archive-file> <target-registry>
Copy to Clipboard Copied! ここでは、以下のようになります。
<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
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
Copy to Clipboard Copied! ワークスペースで、
ls
コマンドを実行してimageContentSourcePolicy.yaml
ファイルを見つけます。以下に例を示します。ls <workspace_directory>/<results_directory>
ls <workspace_directory>/<results_directory>
Copy to Clipboard Copied! ここでは、以下のようになります。
<workspace_directory>
-
ワークスペースディレクトリーの名前を指定します (例:
oc-mirror-workspace
)。 <results_directory>
-
結果ディレクトリーの名前を指定します (例:
results-1738070846
)。
Helm チャートをミラーリングするには、
oc apply
コマンドを実行して、非接続クラスターにimageContentSourcePolicy.yaml
ファイルをデプロイします。以下に例を示します。oc apply -f <workspace_directory>/<results_directory>/ImageContentSourcePolicy.yaml
oc apply -f <workspace_directory>/<results_directory>/ImageContentSourcePolicy.yaml
Copy to Clipboard Copied! ここでは、以下のようになります。
<workspace-directory>
-
ワークスペースディレクトリーの名前を指定します (例:
oc-mirror-workspace
)。 <results-directory>
-
結果ディレクトリーの名前を指定します (例:
results-1738070846
)。
エアギャップ環境で、
namespace
とset
オプションを指定して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"
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"
Copy to Clipboard Copied! ここでは、以下のようになります。
<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)
。
3.2. Helm チャートを使用した部分的な非接続環境の OpenShift Container Platform への Red Hat Developer Hub のインストール
ネットワークが 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 にアカウントがある。
手順
次のコマンドを実行して、OpenShift CLI (
oc
) を使用して OpenShift Container Platform アカウントにログインします。oc login -u <user> -p <password> https://api.<hostname>:6443
oc login -u <user> -p <password> https://api.<hostname>:6443
Copy to Clipboard Copied! - 非接続クラスターから、OpenShift Container Platform イメージレジストリーなど、ミラーリングするイメージレジストリーにログインします。
-
ImageSetConfiguration.yaml
ファイルを作成します。 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)
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)
Copy to Clipboard Copied! - ミラーリングする Helm チャートを含むリポジトリーの名前 (例:
openshift-charts)
。 - ミラーリングする Helm チャートを含むリポジトリーの URL (例:
https://charts.openshift.io
)。 - ミラーリングするイメージを含む Helm チャートの名前 (例:
redhat-developer-hub)
。 - 使用する Red Hat Developer Hub のバージョン (例:
1.5)
oc-mirror
コマンドを実行して、イメージセット設定ファイルで指定されたリソースをターゲットレジストリーに直接ミラーリングします。以下に例を示します。oc-mirror --config=<mirror_config_directory>/ImageSetConfiguration.yaml <target-mirror-registry>
oc-mirror --config=<mirror_config_directory>/ImageSetConfiguration.yaml <target-mirror-registry>
Copy to Clipboard Copied! ここでは、以下のようになります。
<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
Writing image mapping to oc-mirror-workspace/results-1738070846/mapping.txt Writing ICSP manifests to oc-mirror-workspace/results-1738070846
Copy to Clipboard Copied! ワークスペースで、
ls
コマンドを実行してimageContentSourcePolicy.yaml
ファイルを見つけます。以下に例を示します。ls <workspace_directory>/<results_directory>
ls <workspace_directory>/<results_directory>
Copy to Clipboard Copied! ここでは、以下のようになります。
<workspace_directory>
-
ワークスペースディレクトリーの名前を指定します (例:
oc-mirror-workspace
)。 <results_directory>
-
結果ディレクトリーの名前を指定します (例:
results-1738070846
)。
Helm チャートをミラーリングするには、
oc apply
コマンドを実行して、非接続クラスターにimageContentSourcePolicy.yaml
ファイルをデプロイします。以下に例を示します。oc apply -f <workspace_directory>/<results_directory>/ImageContentSourcePolicy.yaml
oc apply -f <workspace_directory>/<results_directory>/ImageContentSourcePolicy.yaml
Copy to Clipboard Copied! ここでは、以下のようになります。
<workspace_directory>
-
ワークスペースディレクトリーの名前を指定します (例:
oc-mirror-workspace
)。 <results_directory>
-
結果ディレクトリーの名前を指定します (例:
results-1738070846
)。
エアギャップ環境で、
namespace
とset
オプションを指定して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"
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"
Copy to Clipboard Copied! ここでは、以下のようになります。
<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)
。