在 air-gapped 环境中安装 Red Hat Developer Hub
使用 Operator 或 Helm Chart 在 networik restricted 环境中运行 Red Hat OpenShift Container Platform 上的 Red Hat Developer Hub
摘要
第 1 章 air-gapped 环境 复制链接链接已复制到粘贴板!
air-gapped 环境(也称为 air-gapped 网络或隔离网络)通过物理隔离系统或网络来确保安全性。建立这个隔离,以防止 air-gapped 系统和外部源之间的未授权访问、数据传输或通信。
您可以在 air-gapped 环境中安装 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 可在不外部依赖项的情况下可靠地运行。
如果您的网络可以通过堡垒主机访问 registry,您可以使用 helper 脚本将 Operator 相关的镜像镜像到磁盘,并将其传送到 air-gapped 环境,而无需连接到互联网。
先决条件
- 已安装 Podman 5.3 或更高版本。如需更多信息,请参阅 Podman 安装说明。
- 您已安装了 Skopeo 1.17 或更高版本。
-
已安装
yq4.44 或更高版本。 -
您已安装了 GNU
sed命令行文本编辑器。 -
已安装
umociCLI 工具。 -
您有一个活跃的
oc registry,podman, 或skopeo会话到registry.redhat.io红帽生态系统目录。如需更多信息,请参阅链接:Red Hat Container Registry Authentication。 -
已安装
opmCLI 工具。如需更多信息 ,请参阅安装 opm CLI。 -
在 OpenShift Container Platform 中推荐:已安装了
oc-mirror工具,其版本与 OpenShift Container Platform 集群的版本对应。 - 请确定您的系统满足最低要求。请参阅 Red Hat Developer Hub 大小要求。
流程
运行以下命令,将镜像脚本下载到磁盘:
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.7/.rhdh/scripts/prepare-restricted-environment.sh使用带有适当选项集的
bash命令运行镜像脚本:bash prepare-restricted-environment.sh --filter-versions "1.7" --to-dir <my_pulled_image_location> [--use-oc-mirror true]其中:
--to-dir <my_pulled_image_location>-
输入您要拉取所有所需镜像的目录的绝对路径,例如
/home/user/rhdh-operator-mirror-dir。 --use-oc-mirror true(在 OpenShift Container Platform 上推荐)使用
oc-mirrorOpenShift Container Platform CLI 插件来镜像镜像。注意该脚本可能需要几分钟才能完成,因为它将多个镜像复制到镜像 registry。
-
将由
--to-dir选项指定的目录传送到断开连接的环境中。 在断开连接的环境中可访问集群和目标镜像 registry 的机器中,使用带有适当选项的
bash命令运行镜像脚本:bash <my_pulled_image_location>/install.sh --from-dir <my_pulled_image_location> [--to-registry <my.registry.example.com>] [--use-oc-mirror true]其中:
<my_pulled_image_location>/install.sh- 输入下载的安装脚本以及它存储在您系统中的目录的路径。
--from-dir <my_pulled_image_location>- 输入您要拉取所有所需镜像的目录。
--to-registry- (可选)输入您要镜像镜像 registry 的目标镜像的 URL。
--use-oc-mirror trueOpenShift Container Platform 建议使用
oc-mirrorOpenShift 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命名空间中运行的 pod 列表:kubectl -n rhdh-operator get pods
后续步骤
使用 Operator 在受支持的平台上创建 Red Hat Developer Hub 实例。如需更多信息,请参阅以下文档来了解您要使用的平台:
2.2. 使用 Operator 在部分断开连接的环境中安装 Red Hat Developer Hub 复制链接链接已复制到粘贴板!
在在受限网络中运行的 OpenShift Container Platform 集群上,无法使用公共资源。但是,部署 Red Hat Developer Hub Operator 并运行 Developer Hub 需要以下公共资源:
- Operator 镜像(bundle, operator, catalog)
- 操作对象镜像(RHDH、PostgreSQL)
要使这些资源可用,请将它们替换为集群可访问的镜像 registry 中的等效资源。
您可以使用一个帮助程序脚本来镜像所需的镜像,并提供必要的配置,以确保在安装 Red Hat Developer Hub Operator 并创建 Developer Hub 实例时使用这些镜像。此脚本需要目标镜像 registry。如果集群已在断开连接的网络中操作,则可能有一个目标镜像 registry。如果您还没有目标 registry,如果您有一个 OpenShift Container Platform 集群,您可能需要公开和利用内部集群 registry。
连接到 OpenShift Container Platform 集群时,帮助程序脚本会检测到它,并自动公开集群 registry。如果连接到 Kubernetes 集群,您可以手动指定目标 registry 来镜像镜像。
先决条件
- 已安装 Podman 5.3 或更高版本。如需更多信息,请参阅 Podman 安装说明。
- 您已安装了 Skopeo 1.17 或更高版本。
-
已安装
yq4.44 或更高版本。 -
您已安装了 GNU
sed命令行文本编辑器。 -
已安装
umociCLI 工具。 -
您有一个活跃的
oc registry,podman, 或Skopeo会话到registry.redhat.io红帽生态系统目录。如需更多信息,请参阅链接:Red Hat Container Registry Authentication。 -
您有一个活跃的
Skopeo会话,其中包含对目标镜像 registry 的管理访问权限。如需更多信息,请参阅验证到 registry。 -
已安装
opmCLI 工具。如需更多信息 ,请参阅安装 opm CLI。 如果使用 OpenShift Container Platform 集群,则满足以下先决条件:
-
建议:已安装了
oc-mirror工具,其版本与 OpenShift Container Platform 集群的版本对应。
-
建议:已安装了
如果使用受支持的 Kubernetes 集群,则满足以下先决条件:
- 您已在断开连接的集群上安装了 Operator Lifecycle Manager (OLM)。
- 您有一个可从断开连接的集群访问的镜像 registry。
- 请确定您的系统满足最低要求。请参阅 Red Hat Developer Hub 大小要求。
流程
- 在终端中,进入要保存镜像脚本的目录。
运行以下命令来下载镜像脚本:
curl -sSLO https://raw.githubusercontent.com/redhat-developer/rhdh-operator/refs/heads/release-1.7/.rhdh/scripts/prepare-restricted-environment.sh使用带有适当选项集的
bash命令运行镜像脚本:bash prepare-restricted-environment.sh \ --filter-versions "1.7" \ [--to-registry <my.registry.example.com>] \ [--use-oc-mirror true]其中:
--to-registry _<my.registry.example.com>- 输入您要镜像镜像 registry 的目标镜像的 URL。
--use-oc-mirror true可选: 使用
oc-mirrorOpenShift Container Platform CLI 插件来镜像镜像。注意该脚本可能需要几分钟才能完成,因为它将多个镜像复制到镜像 registry。
验证
- 如果使用 Red Hat OpenShift Container Platform,Red Hat Developer Hub Operator 会在 web 控制台的 Installed Operators 列表中。
如果使用受支持的 Kubernetes 平台,您可以通过在终端中运行以下命令来检查在
rhdh-operator命名空间中运行的 pod 列表:kubectl -n rhdh-operator get pods
后续步骤
使用 Operator 在受支持的平台上创建 Red Hat Developer Hub 实例。如需更多信息,请参阅以下文档来了解您要使用的平台:
您可以使用 Red Hat Developer Hub Helm Chart 在完全断开连接或部分断开连接的环境中安装 Red Hat Developer Hub。
如果您的网络可以通过堡垒主机访问 registry,您可以通过 Helm chart 将指定资源镜像到磁盘来安装 Red Hat Developer Hub,并将其传送到 air-gapped 环境,而无需连接到互联网。
先决条件
您已设置了工作站。
- 在 Red Hat Developer Portal 中有一个帐户。
- 您可以访问 charts.openshift.io Helm Chart 仓库。
-
已在工作站上安装了 OpenShift CLI (
oc)。 -
已安装
oc-mirrorOpenShift CLI (oc)插件 v2。如需更多信息,请参阅安装 oc-mirror OpenShift CLI 插件。
您已设置了您的中间主机。
- 您的主机有权访问 红帽生态系统目录。
- 您的主机有权访问目标主机上的镜像 registry。请参阅 公开 registry。
您已设置了目标主机。
- 已安装 Red Hat OpenShift Container Platform 4.16 或更高版本。
- 您的系统满足最小大小要求。请参阅 Red Hat Developer Hub 大小要求。
流程
创建
ImageSetConfiguration文件,以指定您要镜像的资源。例如:apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: helm: repositories: - name: openshift-charts url: https://charts.openshift.io charts: - name: redhat-developer-hub version: "1.7"其中:
Version: "1.7"- 输入要镜像的 Red Hat Developer Hub 版本。
运行
oc-mirror命令,对ImageSetConfiguration.yaml文件中指定的资源进行镜像(mirror)。例如:oc mirror --v2 -c <mirror_config_directory>/ImageSetConfiguration.yaml file://<mirror_archive_directory>/其中:
<mirror_config_directory>-
输入您系统上镜像设置配置文件的位置,如
.user。 <mirror_archive_directory>-
输入创建镜像存档的目录位置,如
file://.user。
注意运行
oc-mirror命令会生成一个本地工作区,其中包含镜像归档文件、Helm chart、ImageDigestMirrorSet(IDMS)和ImageTagMirrorSet(ITMS)清单。IDMS 和 ITMS 清单包含您必须在后续步骤中针对集群应用的文件。输出示例:
Creating archive /path/to/mirror-archive/mirror_seq1_000000.tar-
将生成的存档文件(例如,
mirror_seq1_000000.tar)传送到 air-gapped 环境。 连接到您的 air-gapped 环境,并确保您也连接到以下对象:
- 本地目标 registry
- 目标 OpenShift Container Platform 集群
在 air-gapped 环境中,通过运行
oc-mirror命令将资源从存档镜像到目标 registry。例如:oc mirror --v2 -c <image-set-config> --from file://<mirror-archive-directory> docker://<target-registry>其中:
<mirror_archive_file>-
输入包含您要镜像资源的文件名称,例如
mirror_seq1_0000.tar。 <target_registry>-
输入您要将镜像推送到的目标 registry 的名称,如
docker://registry.localhost:5000。
在您的工作区中,运行以下命令来查找 IDMS 和 ITMS 文件。例如:
ls <workspace_directory>/working-dir/cluster-resources/其中:
<workspace_directory>-
指定工作区目录的名称,如
oc-mirror-workspace。 <results_directory>-
指定结果目录的名称,例如
results-1738070846。
要镜像 Helm Chart,请通过运行
oc apply命令在断开连接的集群中部署 IDMS 和 ITMS 文件。例如:oc apply -f <workspace_directory>/working-dir/cluster-resources其中:
<workspace-directory>-
输入工作区目录的名称,如
oc-mirror-workspace。 <results-directory>-
输入结果目录的名称,例如
results-1738070846。
在 air-gapped 环境中,通过运行带有
namespace和set选项的helm install命令,将 Helm Chart 部署到您要使用的命名空间中。例如:CLUSTER_ROUTER_BASE=$(oc get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/[.]*\.//') helm install <rhdh_instance> <workspace_directory>/working-dir/helm/charts/<archive_file> --namespace <your_namespace> --create-namespace \ --set global.clusterRouterBase="$CLUSTER_ROUTER_BASE"其中:
<rhdh_instance>-
输入 Red Hat Developer Hub 实例的名称,如
my-rhdh-project。 <workspace_directory>-
输入工作区目录的名称,如
oc-mirror-workspace。 <results_directory>-
输入结果目录的名称,例如
results-1738070846。 <archive_file>-
输入包含您要镜像资源的归档文件的名称,例如
redhat-developer-hub-1.4.1.tgz。 <your_namespace>-
输入您要将 Helm Chart 部署到的命名空间,如
my-rhdh-project。
如果您的网络可以访问 registry.redhat.io registry 和 charts.openshift.io Helm Chart 仓库,您可以通过将指定资源直接镜像到目标 registry 来在部分断开连接的环境中部署 Red Hat Developer Hub 实例。
先决条件
- 已安装 Red Hat OpenShift Container Platform 4.16 或更高版本。
-
您可以访问
charts.openshift.ioHelm Chart 仓库。 -
您可以访问
registry.redhat.io。 - 您可以访问可从断开连接的集群访问的镜像 registry,例如:OpenShift Container Platform 镜像 registry。有关公开 OpenShift Container Platform 镜像 registry 的更多信息,请参阅 公开 registry。
- 已登陆到目标镜像 registry,并有将镜像推送到它的权限。如需更多信息,请参阅配置允许镜像镜像的凭证。
-
已在工作站上安装了 OpenShift CLI (
oc)。 -
建议在 OpenShift Container Platform 中:已安装了
oc-mirrorOpenShift CLI (oc)插件 v2。如需更多信息,请参阅安装 oc-mirror OpenShift CLI 插件。 - 在 Red Hat Developer Portal 中有一个帐户。
- 请确定您的系统满足最低要求。请参阅 Red Hat Developer Hub 大小要求。
流程
运行以下命令,使用 OpenShift CLI (
oc)登录到 OpenShift Container Platform 帐户:oc login -u <user> -p <password> https://api.<hostname>:6443- 从断开连接的集群中,登录到您要镜像的镜像 registry,如 OpenShift Container Platform 镜像 registry。
创建
ImageSetConfiguration.yaml文件,以指定您要镜像的资源。例如:apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: helm: repositories: - name: openshift-charts url: https://charts.openshift.io charts: - name: redhat-developer-hub version: "1.7"Version: "1.7"- 输入要镜像的 Red Hat Developer Hub 版本。
通过运行
oc-mirror命令,将镜像设置配置文件中指定的资源直接镜像到目标 registry。例如:oc-mirror --config=<mirror_config_directory>/ImageSetConfiguration.yaml <target-mirror-registry>其中:
<mirror_config_directory>-
指定系统上镜像设置配置文件的位置,如
.user。 <target_mirror_registry>-
指定目标镜像 registry 的位置和名称,如
docker://registry.example:5000。
注意运行
oc-mirror命令会创建一个包含 Helm Chart 和ImageContentSourcePolicy(ICSP)清单的本地工作区。ICSP 清单包含一个自动生成的imageContentSourcePolicy.yaml文件,您必须在以后的步骤中对集群应用该文件。在您的工作区中,通过运行
ls命令查找ImageDigestMirrorSet(IDMS)和ImageTagMirrorSet(ITMS)文件。例如:ls <workspace_directory>/working-dir/cluster-resources/其中:
<workspace_directory>-
指定工作区目录的名称,如
oc-mirror-workspace。 <results_directory>-
指定结果目录的名称,例如
results-1738070846。
要配置镜像镜像,请通过运行
ocapply 命令在断开连接的集群中部署 IDMS 和 ITMS 文件。例如:oc apply -f <workspace_directory>/working-dir/cluster-resources其中:
<workspace_directory>-
输入工作区目录的名称,如
oc-mirror-workspace。 <results_directory>-
输入结果目录的名称,例如
results-1738070846。
在 air-gapped 环境中,通过运行带有
namespace和set选项的helm install命令,将 Helm Chart 部署到您要使用的命名空间中。例如: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 Chart 部署到的命名空间,如
my-rhdh-project。
如果您在完全断开连接的或部分断开连接的环境中使用受支持的 Kubernetes 平台,您可以使用 Helm Chart 安装 Red Hat Developer Hub。支持的 Kubernetes 平台包括:
- Microsoft Azure Kubernetes Service
- Amazon Elastic Kubernetes Service
- Google Kubernetes Engine
在没有互联网访问的环境中,完全断开连接的安装可确保 Red Hat Developer Hub 可以在没有外部依赖项的情况下可靠地运行。此方法涉及镜像镜像并将其手动传输到 air-gapped 环境。
先决条件
- 已安装 Skopeo 1.17 或更高版本
- 已安装 Yq 4.4 或更高版本
-
已向 registry.redhat.io 进行身份验证,以使用
skopeo login命令拉取镜像。 -
您可以访问配置了
kubectl的 Kubernetes 集群 - 您已在 air-gapped 主机上安装了 Helm 3.13 或更高版本
流程
在终端中,运行以下命令获取 Helm chart 值:
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 Chart 仓库的名称,如
openshift-helm-charts。 - <rhdh_version>
指定您要使用的 Red Hat Developer Hub 版本,如
1.7.3。注意helm pull & lt;helm_chart_repo_name> /redhat-developer-hub -- version <rhdh_version> 命令会自动创建 Helm Chart 归档文件,并将 Helm Chart 下载到当前工作目录。
运行以下命令来提取镜像摘要:
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将以下文件和目录传送到 air-gapped 环境中:
- rhdh-hub
- postgresql
-
Helm Chart 归档文件,如
redhat-developer-hub-1.7.3.tgz
运行以下命令,将镜像加载到 air-gapped 主机上:
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 的名称,如
registry.example.com。 - <rhdh_repo_name>
-
指定存储 Red Hat Developer Hub 镜像的存储库的名称,例如
rhdh/rhdh-hub-rhel9。这个值必须与加载到 air-gapped 主机的 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 的名称,如
registry.example.com。 - <rhdh_repo_name>
-
指定存储 Red Hat Developer Hub 镜像的存储库的名称,例如
rhdh/rhdh-hub-rhel9。这个值必须与加载到 air-gapped 主机的 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: <my_developer_hub_domain> 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
运行以下命令,在当前命名空间中安装 Helm Chart:
helm install rhdh ./<helm_chart_archive_file_name> -f values.yaml其中
- <helm_chart_archive_file_name>
-
指定 Helm Chart 归档文件的名称,如
redhat-developer-hub-1.4.0.tgz。
在部分断开连接的环境中,集群无法访问外部 registry,如 registry.redhat.io,但它可以访问内部镜像 registry。此方法需要直接从集群直接访问内部镜像 registry。
先决条件
您已设置了工作站。
- 已安装 Skopeo 1.17 或更高版本
- 已安装 Yq 4.4 或更高版本
- 已安装 Helm 3.13 或更高版本
- 您有一个针对 registry.redhat.io 的活跃 Skopeo 会话
-
您有一个针对目标镜像 registry 的活跃 Skopeo 会话,如
registry.internal.example.com -
您可以访问配置了
kubectl的 Kubernetes 集群
流程
在终端中,运行以下命令来下载并提取 Helm Chart:
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 Chart 仓库的名称,如
openshift-helm-charts。 - <rhdh_version>
-
输入您要使用的 Red Hat Developer Hub 版本,如
1.7.3。
运行以下命令,使用
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)输入以下命令将镜像镜像到内部镜像 registry:
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 的名称,如
registry.internal.example.com。 - <postgresql_repo_name>
-
指定 PostgreSQL 存储库的名称,如
rhdh/postgresql-15。 - <rhdh_repo_name>
-
指定 Red Hat Developer Hub 存储库的名称,如
rhdh/rhdh-hub-rhel9。
为您要使用的 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
运行以下命令,在当前命名空间中安装 Helm Chart:
helm install rhdh ./_<helm_chart_archive_file_name>_ -f values.yaml其中
- <helm_chart_archive_file_name>
-
指定 Helm Chart 归档文件的名称,如
redhat-developer-hub-1.7.3.tgz。