1.5. 集成现有组件


多集群全局 hub 需要中间件组件、Kafka 和 PostgreSQL 以及 Grafana 作为 Observability 平台,以提供策略合规视图。multicluster global hub 提供 Kafka、PostgreSQL 和 Grafana 的版本。您还可以集成您自己的现有 Kafka、PostgreSQL 和 Grafana。

1.5.1. 集成现有 Kafka 版本

如果您有自己的 Kafka 实例,您可以使用它作为多集群全局 hub 的传输。Kafka 3.3 是经过测试的版本。完成以下步骤以集成 Kafka 实例:

  1. 如果您没有 Kafka 实例的持久性卷,则需要创建一个。
  2. multicluster-global-hub 命名空间中创建一个名为 multicluster-global-hub-transport 的 secret。

    1. 在以下必填字段中提取信息:

      • bootstrap.servers :指定 Kafka bootstrap 服务器。
      • ca.crt: 如果您使用 KafkaUser 自定义资源配置身份验证凭据,则需要此项。有关从 secret 提取 ca.crt 证书所需的步骤,请参阅 STRIMZI 文档中的 用户身份验证 主题。
      • client.crt: 必需,请参阅 STRIMZI 文档中的 用户身份验证 主题,以获取从 secret 提取 user.crt 证书的步骤。
      • client.key: 必需,请参阅 STRIMZI 文档中的 用户身份验证 主题,以获取从 secret 中提取 user.key 的步骤。
  3. 运行以下命令来创建 secret,根据需要将值替换为您提取的值:

    oc create secret generic multicluster-global-hub-transport -n multicluster-global-hub \
        --from-literal=bootstrap_server=<kafka-bootstrap-server-address> \
        --from-file=ca.crt=<CA-cert-for-kafka-server> \
        --from-file=client.crt=<Client-cert-for-kafka-server> \
        --from-file=client.key=<Client-key-for-kafka-server>
  4. 如果在 Kafka 实例中配置了自动主题创建,请跳过这一步。如果没有配置,请手动创建 specstatus事件 主题。
  5. 确保访问 Kafka 的全局 hub 用户有权从主题读取数据,并将数据写入主题。

1.5.2. 集成现有 PostgreSQL 版本

如果您有自己的 PostgreSQL 关系数据库,您可以使用它作为多集群全局 hub 的存储。PostgreSQL 13 是经过测试的版本。

要求的最小存储大小为 20GB。这个数量可以存储 3 个受管集群,每个受管 hub 有 250 个受管集群和 50 个策略(18 个月)。您需要在 multicluster-global-hub 命名空间中创建一个名为 multicluster-global-hub-storage 的 secret。secret 必须包含以下字段:

  • database_uri :它用于创建数据库并插入数据。您的值必须类似以下格式: postgres://<user>:<password>@<host>:<port>/<database>?sslmode=<mode>
  • database_uri_with_readonlyuser :它用于查询由多集群全局 hub 使用的 Grafana 实例的数据。这是一个可选值。您的值必须类似以下格式: postgres://<user>:<password>@<host>:<port>/<database>?sslmode=<mode>
  • ca.crt 是基于 sslmode 的可选值。

    1. 验证集群所需的最小存储大小为 20GB。这个数量可以存储三个受管集群,每个受管 hub 有 250 个受管集群和 50 个策略(18 个月)。
    2. 运行以下命令来创建 secret:
oc create secret generic multicluster-global-hub-storage -n multicluster-global-hub \
    --from-literal=database_uri=<postgresql-uri> \
    --from-literal=database_uri_with_readonlyuser=<postgresql-uri-with-readonlyuser> \
    --from-file=ca.crt=<CA-for-postgres-server>

主机必须可从多集群全局 hub 集群访问。如果您的 PostgreSQL 数据库位于 Kubernetes 集群中,您可以考虑使用带有 nodePortLoadBalancer 的服务类型来公开数据库。如需更多信息,请参阅 访问置备的 postgres 数据库以进行故障排除

1.5.3. 集成现有 Grafana 版本

如果您依赖您自己的 Grafana 从多个源(如 Prometheus)从不同的集群获取指标,并使用现有 Grafana 实例使用多集群全局 hub。要将多集群全局 hub 数据纳入您自己的 Grafana 中,您需要配置数据源并导入仪表板。

  1. 运行以下命令,从 multicluster global hub Grafana 数据源 secret 收集 PostgreSQL 连接信息:

    oc get secret multicluster-global-hub-grafana-datasources -n multicluster-global-hub -ojsonpath='{.data.datasources\.yaml}' | base64 -d

    输出类似以下示例:

    apiVersion: 1
    datasources:
    - access: proxy
      isDefault: true
      name: Global-Hub-DataSource
      type: postgres
      url: postgres-primary.multicluster-global-hub.svc:5432
      database: hoh
      user: guest
      jsonData:
        sslmode: verify-ca
        tlsAuth: true
        tlsAuthWithCACert: true
        tlsConfigurationMethod: file-content
        tlsSkipVerify: true
        queryTimeout: 300s
        timeInterval: 30s
      secureJsonData:
        password: xxxxx
        tlsCACert: xxxxx
  2. 通过添加源(如 PostgreSQL),并使用之前提取的信息完成所需字段,在您自己的 Grafana 实例中配置数据源。

    请参见以下必填字段:

    • Name
    • Host
    • 数据库
    • 用户
    • 密码
    • TLS/SSL 模式
    • TLS/SSL 方法
    • CA 证书
  3. 如果您的 Grafana 不在多集群全局 hub 集群中,您需要使用 LoadBalancer 公开 PostgreSQL,以便 PostgreSQL 可以从外部访问。您可以将以下值添加到 PostgresCluster 操作对象中:

    service:
      type: LoadBalancer

    添加该内容后,您可以从 postgres-ha 服务中获取 EXTERNAL-IP。请参见以下示例:

    oc get svc postgres-ha -n multicluster-global-hub
    NAME          TYPE           CLUSTER-IP      EXTERNAL-IP                        PORT(S)          AGE
    postgres-ha   LoadBalancer   172.30.227.58   xxxx.us-east-1.elb.amazonaws.com   5432:31442/TCP   128m

    运行该命令后,您可以使用 xxxx.us-east-1.elb.amazonaws.com:5432 作为 PostgreSQL 连接主机。

  4. 导入现有的仪表板。

    1. 按照官方 Grafana 文档中的 导出和导入 仪表板中的步骤,从现有的 Grafana 实例导出仪表板。
    2. 按照官方 Grafana 文档中的 Export and import 仪表板中的步骤,将仪表板导入到 multicluster global hub Grafana 实例中。

1.5.4. 其他资源

如需有关如何从 secret 中提取 ca.crt 证书的更多信息,请参阅 STRIMZI 文档中的 用户身份验证

有关从 secret 中提取 user.crt 证书的步骤,请参阅 STRIMZI 文档中的 用户身份验证

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.