第 4 章 使用 Helm Chart 在 air-gapped 环境中的受支持的 Kubernetes 平台上安装 Red Hat Developer Hub


如果您在完全断开连接的或部分断开连接的环境中使用受支持的 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 或更高版本

流程

  1. 在终端中,运行以下命令获取 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>
    Copy to Clipboard Toggle word wrap

    其中

    <helm_chart_repo_name>
    指定 Helm Chart 仓库的名称,如 openshift-helm-charts
    <rhdh_version>

    指定您要使用的 Red Hat Developer Hub 版本,如 1.7.0

    注意

    helm pull & lt;helm_chart_repo_name> /redhat-developer-hub -- version <rhdh_version > 命令会自动创建 Helm Chart 归档文件,并将 Helm Chart 下载到当前工作目录。

  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)
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  4. 将以下文件和目录传送到 air-gapped 环境中:

    • rhdh-hub
    • postgresql
    • Helm Chart 归档文件,如 redhat-developer-hub-1.7.0.tgz
  5. 运行以下命令,将镜像加载到 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}
    Copy to Clipboard Toggle word wrap

    其中

    <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
  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}"
    Copy to Clipboard Toggle word wrap

    其中

    <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
      Copy to Clipboard Toggle word wrap
    • 对于 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
      Copy to Clipboard Toggle word wrap
    • 对于 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
      Copy to Clipboard Toggle word wrap
  7. 运行以下命令,在当前命名空间中安装 Helm Chart:

    helm install rhdh ./<helm_chart_archive_file_name> -f values.yaml
    Copy to Clipboard Toggle word wrap

    其中

    <helm_chart_archive_file_name>
    指定 Helm Chart 归档文件的名称,如 redhat-developer-hub-1.4.0.tgz
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat