NetworkPolicy 资源,二者
默认均处于关闭状态:
- 集群策略 — 针对各个集群的策略,涵盖
ClickHouseCluster和KeeperCluster资源的内部流量,可通过每个自定义资源中的spec.networkPolicy启用。 - Operator pod (容器组) 策略 — 图表 随附的策略,用于限制进入 controller manager pod (容器组) 本身的流量,适用于指标和 webhook 端点。
只有当 cluster 的 CNI plugin 实现了
NetworkPolicy 时,NetworkPolicy 才会生效
(例如 Calico 或 Cilium) 。如果 CNI 不强制执行 NetworkPolicy,
这些资源虽然会被创建,但实际上不会产生任何效果,而且 Kubernetes 也不会返回
error。在依赖这些策略之前,请先确认你的 CNI 会强制执行这些策略。集群网络策略
keeper 根据其
keeperClusterRef 允许 ClickHouse 集群接入——添加
或移除引用会自动更新 keeper 的策略,包括来自其他命名空间的
引用。
允许客户端连接和监控
9000/8123 或 TLS
变体) 或指标端口。NetworkPolicy 具有叠加性,
因此请在托管策略之外,通过您自己的策略授予访问权限:
9363,
Keeper 使用端口 9090) — 请明确允许监控命名空间访问。
设置 networkPolicy.policy: Disabled (默认值) 会移除受管理的
策略;operator 不会修改用户定义的策略,除非这些策略带有集群的 app 标签。
集群级禁用
ENABLE_NETWORK_POLICY 环境变量在整个集群范围内禁用 NetworkPolicy 管理。设置 ENABLE_NETWORK_POLICY=false 后,无论各个 ClickHouseCluster 和 KeeperCluster 的 spec.networkPolicy.policy 配置如何,operator 都会跳过每个集群的 NetworkPolicy reconcile 步骤,且完全不 watch NetworkPolicy 资源。因此,operator 的 ServiceAccount 无需拥有 networkpolicies.networking.k8s.io 的 RBAC 权限。这在使用受限 ServiceAccount 运行 operator 时非常有用,因为此类 ServiceAccount 会有意不授予这些权限。
Operator pod (容器组) 策略
Helm 图表会创建什么
这两个策略都只声明
policyTypes: [Ingress]。它们不会限制 operator 的出站流量,也不会影响 ClickHouse server 或 Keeper pod (容器组) 。
默认拒绝行为
NetworkPolicy 选中时,该 pod (容器组) 就会切换为对入口流量默认拒绝:一旦任一策略生效,所有未被显式允许、发往 controller
manager pod (容器组) 的入站流量都会被丢弃。启用后,
唯一能够到达 operator 的入口流量只有:
- 来自带有
metrics: enabled标签的命名空间的指标抓取,以及 - 来自带有
webhook: enabled标签的命名空间的 admission webhook 调用。
启用这些策略
allow-webhook-traffic 还要求 webhook.enabled: true (
默认启用) ,因此禁用 webhook 也会一并移除其策略。
对于原始 kubectl 清单,请按 kubectl install guide 中所述,
取消注释 [NETWORK POLICY] 部分。
这些原始清单同样包含这两条策略。
为客户端命名空间添加标签
namespaceSelector 匹配源命名空间,因此每个需要访问 operator 的命名空间
都必须带有相应的标签。来自未打标签命名空间的抓取或 webhook
调用都会被丢弃。
NetworkPolicy 控制可达性,而 集群角色 绑定控制授权。要让受保护的抓取成功,这两者都必须同时具备。
验证
- Prometheus 仍在抓取指标端点 (其命名空间带有
metrics: enabled标签,并绑定到 metrics-reader 集群角色) 。 - 创建或更新
ClickHouseCluster仍可通过准入控制 (webhook 可达) 。
- Operator 监控 — 指标端点、其 RBAC,以及如何保护抓取过程。
- 使用 kubectl 安装 — 在哪里取消网络策略部分的注释。
- 使用 Helm 安装 — 与 Operator 相关的 chart 配置值。