第 4 章 Red Hat Developer Hub 与 Microsoft Azure Kubernetes Service (AKS)集成


您可以将 Developer Hub 与 Microsoft Azure Kubernetes Service (AKS)集成,在开发中提供显著改进,为构建、部署和管理应用程序提供了一个简化的环境。

这个集成需要使用以下方法之一在 AKS 上部署 Developer Hub:

  • Helm chart
  • Red Hat Developer Hub Operator

您可以在 Azure Kubernetes Services (AKS)上部署 Developer Hub 应用程序,以访问用于构建、测试和部署应用程序的综合解决方案。

先决条件

  • 您有一个带有有效订阅的 Azure 帐户。
  • 您已在机器上安装 Azure CLI,并配置了 Resource Group 和 Cluster。如需更多信息,请参阅 如何安装 Azure CLI

    您可以执行以下步骤来配置资源组和集群:

    • 要访问 Azure,请确保您登录到我们的指定租户,请使用以下命令:

      az login [--tenant=<optional-directory-name>]
      Copy to Clipboard Toggle word wrap
    • 要创建资源组,请运行以下命令:

      az group create --name <your_ResourceGroup> --location <location>
      Copy to Clipboard Toggle word wrap
      提示

      您可以使用 az 帐户列表 -o table 来检索可用的区域。

    • 创建 AKS 集群:

      az aks create \
      --resource-group <your_ResourceGroup> \
      --name <your_ClusterName> \
      --enable-managed-identity \
      --generate-ssh-keys
      Copy to Clipboard Toggle word wrap

      如需了解更多选项,请参阅 --help

    • 连接到集群:

      az aks get-credentials --resource-group <your_ResourceGroup> --name <your_ClusterName>
      Copy to Clipboard Toggle word wrap

      上一命令配置 Kubernetes 客户端,并将 kubeconfig 中的当前上下文设置为指向您的 AKS 集群。

  • 已安装 kubectl。如需更多信息,请参阅 安装或更新 kubectl
  • 已安装 Helm 3 或最新的。

    特定于 AKS 的基本 Developer Hub 部署的比较
    • 权限问题 : Developer Hub 容器可能会遇到与 权限 相关的错误,如在尝试特定操作时 Permission denied。通过在 PodSpec.securityContext 中调整 fsGroup 来解决此错误。
    • Ingress 配置 :在 AKS 中,配置入口对于访问已安装的 Developer Hub 实例至关重要。访问 Developer Hub 实例需要使用以下命令启用基于 NGINX 的 Ingress Controller 路由附加组件:

      az aks approuting enable --resource-group <your_ResourceGroup> --name <your_ClusterName>
      Copy to Clipboard Toggle word wrap
      提示

      您可能需要安装 Azure CLI 扩展 aks-preview。如果没有自动安装扩展,您可能需要使用以下命令手动安装它:

      az extension add --upgrade -n aks-preview --allow-preview true
      Copy to Clipboard Toggle word wrap
    注意

    安装 Ingress Controller 后,带有 Ingress Controller 的 'app-routing-system' 命名空间将部署到集群中。记录来自已安装的 Ingress Controller 的 Developer Hub 应用程序地址(例如,108.141.70.228)),以便以后访问 Developer Hub 应用程序,稍后引用为 < app_address& gt;。

    kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    Copy to Clipboard Toggle word wrap
    • 命名空间 管理 :您可以使用以下命令为 AKS 中的 Developer Hub 部署创建一个专用命名空间:

      kubectl create namespace <your_namespace>
      Copy to Clipboard Toggle word wrap

您可以使用 Helm 在 AKS 上部署 Developer Hub。

流程

  1. 打开终端并运行以下命令来添加 Helm Chart 仓库:

    helm repo add openshift-helm-charts https://charts.openshift.io/
    Copy to Clipboard Toggle word wrap
  2. 要创建 ImagePull Secret,请运行以下命令:

    kubectl -n <your_namespace> create secret docker-registry rhdh-pull-secret \
        --docker-server=registry.redhat.io \
        --docker-username=<redhat_user_name> \
        --docker-password=<redhat_password> \
        --docker-email=<email>
    Copy to Clipboard Toggle word wrap
  3. 使用以下模板创建一个名为 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
  4. 要安装 Helm Chart,请运行以下命令:

    helm -n <your_namespace> install -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
    Copy to Clipboard Toggle word wrap
  5. 验证部署状态:

    kubectl get deploy <your_deploy_name>-developer-hub -n <your_namespace>
    Copy to Clipboard Toggle word wrap
  6. 使用 URL 访问部署的 Developer Hub: https://<app_address&gt;,其中 <app_address> 是之前获取的 Ingress 地址(例如 https://108.141.70.228)。
  7. 要升级或删除部署,请运行以下命令:

    upgrade 命令

    helm -n <your_namespace> upgrade -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
    Copy to Clipboard Toggle word wrap

    delete 命令

    helm -n <your_namespace> delete <your_deploy_name>
    Copy to Clipboard Toggle word wrap

您可以使用 Red Hat Developer Hub Operator 在 AKS 上部署 Developer Hub。

流程

  1. 获取名为 rhdh-operator-<VERSION>.yaml 的 Red Hat Developer Hub Operator 清单文件,并通过添加以下片段来修改 db-statefulset.yamldeployment.yaml 的默认配置:

    securityContext:
      fsGroup: 300
    Copy to Clipboard Toggle word wrap

    以下是清单中的指定位置:

    db-statefulset.yaml: | spec.template.spec
    deployment.yaml: | spec.template.spec
    Copy to Clipboard Toggle word wrap
  2. 将修改后的 Operator 清单应用到 Kubernetes 集群:

    kubectl apply -f rhdh-operator-<VERSION>.yaml
    Copy to Clipboard Toggle word wrap
    注意

    以上命令的执行是集群范围的,需要适当的集群权限。

  3. 使用您的红帽凭证创建名为 rhdh-pull-secretImagePull Secret,以访问受保护的 registry.redhat.io 中的镜像,如下例所示:

    kubectl -n <your_namespace> create secret docker-registry rhdh-pull-secret \
        --docker-server=registry.redhat.io \
        --docker-username=<redhat_user_name> \
        --docker-password=<redhat_password> \
        --docker-email=<email>
    Copy to Clipboard Toggle word wrap
  4. 创建名为 rhdh-ingress.yaml 的 Ingress 清单文件,指定您的 Developer Hub 服务名称,如下所示:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: rhdh-ingress
      namespace: <your_namespace>
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
        - http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: backstage-<your-CR-name>
                    port:
                      name: http-backend
    Copy to Clipboard Toggle word wrap
  5. 要部署创建的 Ingress,请运行以下命令:

    kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
    Copy to Clipboard Toggle word wrap
  6. 使用以下示例,创建一个名为 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://<app_address>
        backend:
          auth:
            keys:
              - secret: "${BACKEND_SECRET}"
          baseUrl: https://<app_address>
          cors:
            origin: https://<app_address>
    Copy to Clipboard Toggle word wrap
  7. 创建名为 secrets-rhdh 的 Secret,并添加一个名为 BACKEND_SECRET 的键,并带有 Base64 编码的字符串 值,如下例所示:

    apiVersion: v1
    kind: Secret
    metadata:
      name: secrets-rhdh
    stringData:
      BACKEND_SECRET: "xxx"
    Copy to Clipboard Toggle word wrap
  8. 创建名为 rhdh.yaml 的自定义资源(CR)清单文件,并包含之前创建的 rhdh-pull-secret,如下所示:

    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
      name: <your-rhdh-cr>
    spec:
      application:
        imagePullSecrets:
          - rhdh-pull-secret
        appConfig:
          configMaps:
            - name: "app-config-rhdh"
        extraEnvs:
          secrets:
            - name: "secrets-rhdh"
    Copy to Clipboard Toggle word wrap
  9. 将 CR 清单应用到您的命名空间:

    kubectl -n <your_namespace> apply -f rhdh.yaml
    Copy to Clipboard Toggle word wrap
  10. 使用 URL 访问部署的 Developer Hub: https://<app_address&gt;,其中 <app_address> 是之前获取的 Ingress 地址(例如 https://108.141.70.228)。
  11. 可选: 要删除 CR,请运行以下命令:

    kubectl -n <your_namespace> delete -f rhdh.yaml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat