1.5. 集成现有组件


multicluster global 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 文档中的 User authentication 主题,以了解从 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>
    Copy to Clipboard Toggle word wrap
  4. 如果在 Kafka 实例中配置了自动主题创建,则跳过这一步。如果没有配置,请手动创建 specstatusevent 主题。
  5. 确保访问 Kafka 的全局 hub 用户具有从主题中读取数据的权限,并将数据写入主题。

1.5.2. 集成现有 PostgreSQL 版本

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

最低所需的存储大小为 20GB。这个数量可以存储有 250 个受管集群的 3 个受管 hub,每个受管 hub 需要 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 的存储大小。这个数量可以存储有 250 个受管集群的三个受管 hub,每个托管 hub 需要 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>
Copy to Clipboard Toggle word wrap

主机必须可从多集群全局 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
    Copy to Clipboard Toggle word wrap

    输出类似以下示例:

    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
    Copy to Clipboard Toggle word wrap
  2. 通过添加源(如 PostgreSQL)在您自己的 Grafana 实例中配置数据源,并使用之前提取的信息完成必填字段。

    请参见以下必填字段:

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

    service:
      type: LoadBalancer
    Copy to Clipboard Toggle word wrap

    添加该内容后,您可以从 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
    Copy to Clipboard Toggle word wrap

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

  4. 导入现有的仪表板。

    1. 按照官方 Grafana 文档中的 导出和导入 仪表板中的步骤,从现有的 Grafana 实例导出仪表板。
    2. 按照官方 Grafana 文档中的 导出和导入 仪表板中的步骤,将仪表板导入到多集群全局 hub Grafana 实例中。

1.5.4. 其他资源

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

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部