第 1 章 在 Elastic Kubernetes Service (EKS)上安装 Red Hat Developer Hub


您可以使用以下方法之一在 Amazon Elastic Kubernetes Service (EKS)上安装 Red Hat Developer Hub:

  • Red Hat Developer Hub Operator
  • Red Hat Developer Hub Helm chart

1.1. 使用 Operator 在 EKS 上安装 Developer Hub

Red Hat Developer Hub Operator 安装需要 Operator Lifecycle Manager (OLM)框架。

附加资源

1.1.1. 使用 OLM 框架安装 Developer Hub Operator

您可以使用 Operator Lifecycle Manager (OLM)框架在 EKS 上安装 Developer Hub Operator。之后,您可以继续在 EKS 中部署 Developer Hub 实例。

先决条件

流程

  1. 在终端中运行以下命令,以创建安装 Operator 的 rhdh-operator 命名空间:

    kubectl create namespace rhdh-operator
    Copy to Clipboard Toggle word wrap
  2. 使用以下命令创建 pull secret:

    kubectl -n rhdh-operator create secret docker-registry rhdh-pull-secret \
        --docker-server=registry.redhat.io \
        --docker-username=<user_name> \ 
    1
    
        --docker-password=<password> \ 
    2
    
        --docker-email=<email> 
    3
    Copy to Clipboard Toggle word wrap
    1
    在命令中输入您的用户名。
    2
    在命令中输入您的密码。
    3
    在命令中输入您的电子邮件地址。

    创建的 pull secret 用于从红帽生态系统中拉取 Developer Hub 镜像。

  3. 创建一个包含红帽生态系统中的 Operator 的 CatalogSource 资源:

    cat <<EOF | kubectl -n rhdh-operator apply -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: CatalogSource
    metadata:
      name: redhat-catalog
    spec:
      sourceType: grpc
      image: registry.redhat.io/redhat/redhat-operator-index:v4.15
      secrets:
      - "rhdh-pull-secret"
      displayName: Red Hat Operators
    EOF
    Copy to Clipboard Toggle word wrap
  4. 按如下所示创建 OperatorGroup 资源:

    cat <<EOF | kubectl apply -n rhdh-operator -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: rhdh-operator-group
    EOF
    Copy to Clipboard Toggle word wrap
  5. 使用以下代码创建 Subscription 资源:

    cat <<EOF | kubectl apply -n rhdh-operator -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: rhdh
      namespace: rhdh-operator
    spec:
      channel: fast
      installPlanApproval: Automatic
      name: rhdh
      source: redhat-catalog
      sourceNamespace: rhdh-operator
      startingCSV: rhdh-operator.v1.2.6
    EOF
    Copy to Clipboard Toggle word wrap
  6. 运行以下命令,以验证创建的 Operator 是否正在运行:

    kubectl -n rhdh-operator get pods -w
    Copy to Clipboard Toggle word wrap

    如果 Operator pod 显示 ImagePullBackOff 状态,则可能需要权限直接在 Operator 部署清单中拉取镜像。

    提示

    您可以在 deployment.spec.template.spec.imagePullSecrets 列表中包括所需的 secret 名称,并使用 kubectl get deployment -n rhdh-operator 命令验证部署名称:

    kubectl -n rhdh-operator patch deployment \
        rhdh.fast --patch '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"rhdh-pull-secret"}]}}}}' \
        --type=merge
    Copy to Clipboard Toggle word wrap
  7. 更新 Operator 的默认配置,以确保 Developer Hub 资源可以按照以下步骤在 EKS 中正确启动:

    1. 使用以下命令,编辑 rhdh-operator 命名空间中的 backstage-default-config ConfigMap:

      kubectl -n rhdh-operator edit configmap backstage-default-config
      Copy to Clipboard Toggle word wrap
    2. 找到 db-statefulset.yaml 字符串,并将 fsGroup 添加到其 spec.template.spec.securityContext 中,如下例所示:

        db-statefulset.yaml: |
          apiVersion: apps/v1
          kind: StatefulSet
      --- TRUNCATED ---
          spec:
          --- TRUNCATED ---
            restartPolicy: Always
            securityContext:
            # You can assign any random value as fsGroup
              fsGroup: 2000
            serviceAccount: default
            serviceAccountName: default
      --- TRUNCATED ---
      Copy to Clipboard Toggle word wrap
    3. 找到 deployment.yaml 字符串,并将 fsGroup 添加到其规格中,如下例所示:

        deployment.yaml: |
          apiVersion: apps/v1
          kind: Deployment
      --- TRUNCATED ---
          spec:
            securityContext:
              # You can assign any random value as fsGroup
              fsGroup: 3000
            automountServiceAccountToken: false
      --- TRUNCATED ---
      Copy to Clipboard Toggle word wrap
    4. 找到 service.yaml 字符串,并将 类型改为 NodePort,如下所示:

        service.yaml: |
          apiVersion: v1
          kind: Service
          spec:
           # NodePort is required for the ALB to route to the Service
            type: NodePort
      --- TRUNCATED ---
      Copy to Clipboard Toggle word wrap
    5. 保存并退出。

      等待几分钟,直到更改自动应用到操作器 Pod。

先决条件

流程

  1. 使用以下模板,创建一个名为 app-config-rhdh 的 ConfigMap,其中包含 Developer Hub 配置:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: app-config-rhdh
    data:
      "app-config-rhdh.yaml": |
        app:
          title: Red Hat Developer Hub
          baseUrl: https://<rhdh_dns_name>
        backend:
          auth:
            keys:
              - secret: "${BACKEND_SECRET}"
          baseUrl: https://<rhdh_dns_name>
          cors:
            origin: https://<rhdh_dns_name>
    Copy to Clipboard Toggle word wrap
  2. 创建名为 secrets-rhdh 的 Secret,再添加名为 BACKEND_SECRET 的键,其带有 Base64 编码的字符串 作为值:

    apiVersion: v1
    kind: Secret
    metadata:
      name: secrets-rhdh
    stringData:
      # TODO: See https://backstage.io/docs/auth/service-to-service-auth/#setup
      BACKEND_SECRET: "xxx"
    Copy to Clipboard Toggle word wrap
    重要

    确保为每个 Developer Hub 实例使用唯一的 BACKEND_SECRET 值。

    您可以使用以下命令生成密钥:

    node-p'require("crypto").randomBytes(24).toString("base64")'
    Copy to Clipboard Toggle word wrap
  3. 要启用从 Red Hat Ecosystem Catalog 拉取 PostgreSQL 镜像,请在部署 Developer Hub 实例的命名空间中的 default 服务帐户中添加镜像 pull secret:

    kubectl patch serviceaccount default \
        -p '{"imagePullSecrets": [{"name": "rhdh-pull-secret"}]}' \
        -n <your_namespace>
    Copy to Clipboard Toggle word wrap
  4. 使用以下模板创建自定义资源文件:

    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
     # TODO: this the name of your Developer Hub instance
      name: my-rhdh
    spec:
      application:
        imagePullSecrets:
        - "rhdh-pull-secret"
        route:
          enabled: false
        appConfig:
          configMaps:
            - name: "app-config-rhdh"
        extraEnvs:
          secrets:
            - name: "secrets-rhdh"
    Copy to Clipboard Toggle word wrap
  5. 使用以下模板创建 Ingress 资源,确保根据需要自定义名称:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      # TODO: this the name of your Developer Hub Ingress
      name: my-rhdh
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
    
        alb.ingress.kubernetes.io/target-type: ip
    
        # 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:us-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: <rhdh_dns_name>
    
    spec:
      ingressClassName: alb
      rules:
        # TODO: Set your application domain name.
        - host: <rhdh_dns_name>
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  # TODO: my-rhdh is the name of your Backstage Custom Resource.
                  # Adjust if you changed it!
                  name: backstage-my-rhdh
                  port:
                    name: http-backend
    Copy to Clipboard Toggle word wrap

    在前面的模板中,将 ' <rhdh_dns_name>' 替换为您的 Developer Hub 域名,并将 alb.ingress.kubernetes.io/certificate-arn 的值替换为您的证书 ARN。

验证

等待 DNS 名称响应,这表示您的 Developer Hub 实例已准备就绪。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部