第 1 章 使用 OLM 框架安装 Developer Hub Operator


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

有关 OLM 的详情,请参考 Operator Lifecycle Manager (OLM) 文档。

先决条件

流程

  1. 使用以下命令连接到您的 GKE 集群:

    gcloud container clusters get-credentials <cluster-name> \ 
    1
    
        --location=<cluster-location> 
    2
    Copy to Clipboard
    1
    输入您的 GKE 集群名称。
    2
    输入您的 GKE 集群位置。

    此命令将 Kubernetes 客户端配置为指向您的 GKE 集群。

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

    kubectl create namespace rhdh-operator
    Copy to Clipboard
  3. 使用以下命令创建 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
    1
    在命令中输入您的用户名。
    2
    在命令中输入您的密码。
    3
    在命令中输入您的电子邮件地址。

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

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

    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.18
      secrets:
      - "rhdh-pull-secret"
      displayName: Red Hat Operators
    EOF
    Copy to Clipboard

  5. 按如下所示创建 OperatorGroup 资源:

    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

  6. 使用以下代码创建 Subscription 资源:

    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.5.2
    EOF
    Copy to Clipboard

  7. 运行以下命令,以验证创建的 Operator 是否正在运行:

    kubectl -n rhdh-operator get pods -w
    Copy to Clipboard

    如果 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

1.1. 使用 Operator 在 GKE 上部署 Developer Hub 实例

您可以使用 Operator 在 GKE 中部署 Developer Hub 实例。

先决条件

  • 集群管理员已安装了 Red Hat Developer Hub Operator。
  • 您已订阅了 registry.redhat.io。如需更多信息,请参阅 Red Hat Container Registry 身份验证
  • 已安装 kubectl。如需更多信息,请参阅安装 kubetl
  • 您已为 Developer Hub 实例配置了域名。
  • 您已保留了一个未附加到任何虚拟机(VM)的静态外部高级 IPv4 全局 IP 地址。如需更多信息,请参阅 保留新的静态外部 IP 地址
  • 您已为域名配置了 DNS 记录,以指向已保留的 IP 地址。

    注意

    您需要创建一个等于 IP 地址的 A 记录。此过程最多可能需要一小时才能传播。

流程

  1. 使用以下模板创建一个包含 app-config.yaml Developer Hub 配置文件的 app-config.yaml 配置映射:

    app-config.yaml 片段

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-rhdh-app-config
    data:
      "app-config.yaml": |
        app:
          title: Red Hat Developer Hub
          baseUrl: https://<rhdh_domain_name>
        backend:
          auth:
            externalAccess:
                - type: legacy
                  options:
                    subject: legacy-default-config
                    secret: "${BACKEND_SECRET}"
          baseUrl: https://<rhdh_domain_name>
          cors:
            origin: https://<rhdh_domain_name>
    Copy to Clipboard

  2. 创建一个 & lt;my_product_secrets > secret,并添加名为 BACKEND_SECRET 的键,并带有 Base64 编码的字符串 值,如下例所示:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <my_product_secrets> 
    1
    
    stringData:
      # TODO: See https://backstage.io/docs/auth/service-to-service-auth/#setup
      BACKEND_SECRET: "xxx"
    Copy to Clipboard
    1
    <my_product_secrets > 是您首选的 Developer Hub secret 名称,其中 < my_product_secrets > 指定 Developer Hub 中 secret 配置的标识符。
    重要

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

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

    node-p'require("crypto").randomBytes(24).toString("base64")'
    Copy to Clipboard
  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
  4. 使用以下模板创建 Backstage 自定义资源(CR)文件:

    自定义资源片段

    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      # This is the name of your Developer Hub instance
      name: my-rhdh
    spec:
      application:
        imagePullSecrets:
        - "rhdh-pull-secret"
        route:
          enabled: false
        appConfig:
          configMaps:
            - name: my-rhdh-app-config
        extraEnvs:
          secrets:
            - name: <my_product_secrets> 
    1
    Copy to Clipboard

    1
    <my_product_secrets > 是您首选的 Developer Hub secret 名称,其中 < my_product_secrets > 指定 Developer Hub 中 secret 配置的标识符。
  5. 通过创建一个 ManagedCertificate 对象来设置 Google 管理的证书,您必须附加到 Ingress,如下例所示:

    apiVersion: networking.gke.io/v1
    kind: ManagedCertificate
    metadata:
      name: <rhdh_certificate_name>
    spec:
      domains:
        - <rhdh_domain_name>
    Copy to Clipboard

    有关设置 Google 管理的证书的更多信息,请参阅设置 Google 管理的证书

  6. 创建 FrontendConfig 对象,来为重定向到 HTTPS 设置策略。您必须将此策略附加到 Ingress。

    FrontendConfig 对象示例

    apiVersion: networking.gke.io/v1beta1
    kind: FrontendConfig
    metadata:
      name: <ingress_security_config>
    spec:
      sslPolicy: gke-ingress-ssl-policy-https
      redirectToHttps:
        enabled: true
    Copy to Clipboard

    有关将策略设置为重定向到 HTTPS 的更多信息,请参阅 HTTP 到 HTTPS 重定向

  7. 使用以下模板创建入口资源,根据需要自定义名称:

    ingress 资源配置示例

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      # TODO: this the name of your Developer Hub Ingress
      name: my-rhdh
      annotations:
        # If the class annotation is not specified it defaults to "gce".
        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>
    spec:
      ingressClassName: gce
      rules:
        # TODO: Set your application domain name.
        - host: <rhdh_domain_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

验证

其他信息

有关使用 TLS 的 Ingress 设置 GKE 的更多信息,请参阅 安全 GKE Ingress

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat