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 实例:
- 如果您没有 Kafka 实例的持久性卷,则需要创建一个。
在
multicluster-global-hub命名空间中创建一个名为multicluster-global-hub-transport的 secret。在以下必填字段中提取信息:
-
bootstrap.servers:指定 Kafka bootstrap 服务器。 -
ca.crt: 如果您使用KafkaUser自定义资源配置身份验证凭据,则需要此项。有关从 secret 提取ca.crt证书所需的步骤,请参阅 STRIMZI 文档中的 用户身份验证 主题。 -
client.crt: 必需,请参阅 STRIMZI 文档中的 用户身份验证 主题,以获取从 secret 提取user.crt证书的步骤。 -
client.key: 必需,请参阅 STRIMZI 文档中的 用户身份验证 主题,以获取从 secret 中提取user.key的步骤。
-
运行以下命令来创建 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>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 Copied! Toggle word wrap Toggle overflow -
如果在 Kafka 实例中配置了自动主题创建,请跳过这一步。如果没有配置,请手动创建
spec、status和事件主题。 - 确保访问 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的可选值。- 验证集群所需的最小存储大小为 20GB。这个数量可以存储三个受管集群,每个受管 hub 有 250 个受管集群和 50 个策略(18 个月)。
- 运行以下命令来创建 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>
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 集群中,您可以考虑使用带有 nodePort 或 LoadBalancer 的服务类型来公开数据库。如需更多信息,请参阅 访问置备的 postgres 数据库以进行故障排除。
1.5.3. 集成现有 Grafana 版本 复制链接链接已复制到粘贴板!
如果您依赖您自己的 Grafana 从多个源(如 Prometheus)从不同的集群获取指标,并使用现有 Grafana 实例使用多集群全局 hub。要将多集群全局 hub 数据纳入您自己的 Grafana 中,您需要配置数据源并导入仪表板。
运行以下命令,从 multicluster global hub Grafana
数据源secret 收集 PostgreSQL 连接信息:oc get secret multicluster-global-hub-grafana-datasources -n multicluster-global-hub -ojsonpath='{.data.datasources\.yaml}' | base64 -doc get secret multicluster-global-hub-grafana-datasources -n multicluster-global-hub -ojsonpath='{.data.datasources\.yaml}' | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出类似以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过添加源(如 PostgreSQL),并使用之前提取的信息完成所需字段,在您自己的 Grafana 实例中配置数据源。
请参见以下必填字段:
- Name
- Host
- 数据库
- 用户
- 密码
- TLS/SSL 模式
- TLS/SSL 方法
- CA 证书
如果您的 Grafana 不在多集群全局 hub 集群中,您需要使用
LoadBalancer公开 PostgreSQL,以便 PostgreSQL 可以从外部访问。您可以将以下值添加到PostgresCluster操作对象中:service: type: LoadBalancer
service: type: LoadBalancerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加该内容后,您可以从
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
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 128mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行该命令后,您可以使用
xxxx.us-east-1.elb.amazonaws.com:5432作为 PostgreSQL 连接主机。导入现有的仪表板。
- 按照官方 Grafana 文档中的 导出和导入 仪表板中的步骤,从现有的 Grafana 实例导出仪表板。
- 按照官方 Grafana 文档中的 Export and import 仪表板中的步骤,将仪表板导入到 multicluster global hub Grafana 实例中。
1.5.4. 其他资源 复制链接链接已复制到粘贴板!
如需有关如何从 secret 中提取 ca.crt 证书的更多信息,请参阅 STRIMZI 文档中的 用户身份验证。
有关从 secret 中提取 user.crt 证书的步骤,请参阅 STRIMZI 文档中的 用户身份验证。