第 5 章 在 Kubernetes 中使用 TLS 连接配置 RHDH 实例


您可以在 Kubernetes 集群中配置带有传输层安全(TLS)连接的 RHDH 实例,如 Azure Red Hat OpenShift (ARO)集群、支持的云供应商中的任何集群,或者具有正确配置自己的集群。传输层安全性(TLS)可确保与其他实体(如第三方应用程序或外部数据库)的 RHDH 实例的安全连接。但是,您必须使用公共证书颁发机构(CA)签名证书来配置 Kubernetes 集群。

先决条件

  • 您已使用公共 CA 签名证书设置了 Azure Red Hat OpenShift (ARO)集群。有关获取 CA 证书的更多信息,请参阅您的厂商文档。
  • 您已创建了命名空间并设置对资源具有正确读取权限的服务帐户。

    示例:用于基于角色的访问控制的 Kubernetes 清单

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: backstage-read-only
    rules:
      - apiGroups:
          - '*'
        resources:
          - pods
          - configmaps
          - services
          - deployments
          - replicasets
          - horizontalpodautoscalers
          - ingresses
          - statefulsets
          - limitranges
          - resourcequotas
          - daemonsets
        verbs:
          - get
          - list
          - watch
    #...

  • 您已获取与服务帐户关联的 secret 和服务 CA 证书。
  • 您已创建了一些资源并为其添加注解,以便 Kubernetes 插件可以发现这些资源。您可以应用这些 Kubernetes 注解:

    • backstage.io/kubernetes-id to label components
    • backstage.io/kubernetes-namespace 以标记命名空间

流程

  1. dynamic-plugins-rhdh.yaml 文件中启用 Kubernetes 插件:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: dynamic-plugins-rhdh
    data:
      dynamic-plugins.yaml: |
        includes:
          - dynamic-plugins.default.yaml
        plugins:
          - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic
            disabled: false 1
          - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes
            disabled: false 2
            # ...
    1
    将值设为 false 以启用 backstage-plugin-kubernetes-backend-dynamic 插件。
    2
    将值设为 false 以启用 backstage-plugin-kubernetes 插件。
    注意

    backstage-plugin-kubernetes 插件 当前还只是一个技术预览。作为替代方案,您可以使用 ./dynamic-plugins/dist/backstage-plugin-topology-dynamic 插件,该插件正式发布(GA)。

  2. 设置 kubernetes 集群详情并在 app-config-rhdh.yaml 文件中配置目录同步选项:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: app-config-rhdh
    data:
      "app-config-rhdh.yaml": |
      # ...
      catalog:
        rules:
          - allow: [Component, System, API, Resource, Location]
        providers:
          kubernetes:
            openshift:
              cluster: openshift
              processor:
                namespaceOverride: default
                defaultOwner: guests
              schedule:
                frequency:
                  seconds: 30
                timeout:
                  seconds: 5
      kubernetes:
        serviceLocatorMethod:
          type: 'multiTenant'
        clusterLocatorMethods:
          - type: 'config'
            clusters:
              - url: <target-cluster-api-server-url> 1
                name: openshift
                authProvider: 'serviceAccount'
                skipTLSVerify: false 2
                skipMetricsLookup: true
                dashboardUrl: <target-cluster-console-url> 3
                dashboardApp: openshift
                serviceAccountToken: ${K8S_SERVICE_ACCOUNT_TOKEN} 4
                caData: ${K8S_CONFIG_CA_DATA} 5
                # ...
    1
    Kubernetes control plane 的基本 URL。您可以运行 kubectl cluster-info 命令来获取基本 URL。
    2
    将此参数的值设置为 false,以启用 TLS 证书的验证。
    3
    可选:管理 ARO 集群的 Kubernetes 仪表板的链接。
    4
    可选:使用 K8S_SERVICE_ACCOUNT_TOKEN 环境变量传递服务帐户令牌,您可以在 my-rhdh-secrets secret 中定义。
    5
    使用 K8S_CONFIG_CA_DATA 环境变量传递 CA 数据,您可以在 my-rhdh-secrets secret 中定义。
  3. 保存配置更改。

验证

  1. 运行 RHDH 应用程序来导入您的目录:

    kubectl -n rhdh-operator get pods -w
  2. 验证 pod 日志是否没有显示您的配置错误。
  3. 进入 Catalog 并检查 Developer Hub 实例中的组件页面,以验证集群连接以及您的创建的资源是否存在。
注意

如果您遇到连接错误,如证书问题或权限,请在组件页面中选中消息框或查看 pod 的日志。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.