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 实例:
- 如果没有 Kafka 实例的持久性卷,则需要创建一个。
在
multicluster-global-hub命名空间中创建一个名为multicluster-global-hub-transport的 secret。在以下必填字段中提取信息:
-
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的步骤。
-
运行以下命令来创建 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和event主题。 - 确保访问 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)是一个可选值。- 验证您的集群是否具有最低需要 20GB 的存储大小。这个数量可以存储有 250 个受管集群的三个受管 hub,每个托管 hub 需要 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
- 主机
- 数据库
- 用户
- 密码
- 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 Connection Host。导入现有的仪表板。
1.5.4. 其他资源 复制链接链接已复制到粘贴板!
有关如何从 secret 提取 ca.crt 证书的更多信息,请参阅 STRIMZI 文档中的 用户身份验证。
如需了解从 secret 中提取 user.crt 证书的步骤,请参阅 STRIMZI 文档中的 用户身份验证。