第4章 Helm チャートを使用して、エアギャップ環境内のサポートされている Kubernetes プラットフォームに Red Hat Developer Hub をインストールする
完全な非接続環境または部分的な非接続環境でサポートされている Kubernetes プラットフォームを使用している場合は、Helm チャートを使用して Red Hat Developer Hub をインストールできます。サポートされている Kubernetes プラットフォームは次のとおりです。
- Microsoft Azure Kubernetes Service
- Amazon Elastic Kubernetes Service
- Google Kubernetes Engine
4.1. Helm チャートを使用して、完全な非接続環境でサポートされている Kubernetes プラットフォームに Red Hat Developer Hub をインストールする リンクのコピーリンクがクリップボードにコピーされました!
インターネットにアクセスできない環境では、完全な非接続環境でのインストールにより、Red Hat Developer Hub を外部の依存関係なしで確実に実行できるようになります。このアプローチでは、イメージをミラーリングし、手動でエアギャップ環境に転送する必要があります。
前提条件
- Skopeo 1.17 以降がインストールされている。
- Yq 4.4 以降がインストールされている。
-
skopeo loginコマンドを使用して、イメージをプルするために registry.redhat.io に認証している。 -
kubectlが設定された Kubernetes クラスターにアクセスできる。 - エアギャップホストに Helm 3.13 以降がインストールされている。
手順
ミラーリングホストのターミナルで、次のコマンドを実行して 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 チャートを現在の作業ディレクトリーにダウンロードします。
次のコマンドを実行して、イメージダイジェストを抽出します。
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)次のコマンドを実行して、イメージをローカルアーカイブにミラーリングします。
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次のファイルとディレクトリーをエアギャップ環境に転送します。
- rhdh-hub
- postgresql
-
Helm チャートアーカイブファイル (例:
redhat-developer-hub-1.6.3.tgz)
次のコマンドを実行して、イメージをエアギャップホストにロードします。
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)。
使用する 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: trueEKS の場合は、次の
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: trueGKE の場合は、次の
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
次のコマンドを実行して、現在の 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)。