2、多集群基础概念:集群联邦、集群间网络拓扑、服务网格与镜像拉取的关系
在多集群架构中,镜像拉取权限配置并非孤立的认证问题,而是与集群联邦、网络拓扑、服务网格等基础设施能力深度耦合。理解这些基础概念之间的关联,是设计高效、安全的多集群镜像拉取策略的前提。
2.1 集群联邦:统一身份与资源视图
集群联邦(Cluster Federation)的核心目标是让多个 Kubernetes 集群对外表现为一个逻辑集群。在镜像拉取场景中,联邦层主要解决身份统一和凭证分发两个问题。
- 身份统一:联邦控制平面为每个成员集群颁发联邦级 ServiceAccount,使得镜像仓库能够基于联邦身份而非单个集群节点 IP 进行鉴权。
- 凭证分发:联邦控制器将镜像拉取 Secret(如 dockerconfigjson)自动同步到所有成员集群的指定命名空间,避免人工逐集群配置。
关键约束:联邦层仅负责凭证的“分发”,不负责“传输安全”。凭证从联邦控制面到成员集群的同步通道,必须由底层网络策略(如 Cilium)提供加密和访问控制。
2.2 集群间网络拓扑:拉取流量的物理路径
镜像拉取请求的源(Pod)和目标(镜像仓库)之间的网络拓扑,直接决定了 Cilium 网络策略的配置粒度。常见的多集群网络拓扑分为以下三种:
| 拓扑类型 | 描述 | 镜像拉取路径 | Cilium 策略关注点 |
|---|---|---|---|
| 扁平网络 | 所有集群 Pod CIDR 互通,无 NAT | Pod → 仓库 Pod IP(直连) | 基于 Pod 标签的 L3/L4 策略 |
| 网关路由 | 集群间通过 Ingress/Egress Gateway 转发 | Pod → 本集群 Gateway → 对端集群 Gateway → 仓库 | Gateway 端点身份识别 + TLS 策略 |
| 服务网格代理 | 所有流量经 Sidecar Proxy 转发 | Pod → Sidecar → 网格控制面 → 仓库 | mTLS 策略 + 服务账户到网格身份映射 |
常见误区:在扁平网络拓扑中,运维人员常误以为“网络可达”即“安全可达”。实际上,即使 Pod IP 可路由,也必须通过 Cilium 策略显式允许镜像仓库端口(如 5000/tcp)和仓库 Pod 的标签选择器,否则默认 Deny 策略会阻断拉取。
2.3 服务网格:身份驱动的拉取授权
服务网格(如 Istio、Linkerd)为多集群通信提供了身份层。在镜像拉取场景中,网格将 Pod 的 Kubernetes ServiceAccount 映射为网格 SPIFFE 身份,使得 Cilium 网络策略可以从“基于 IP”升级为“基于身份”。
- mTLS 自动加密:网格 Sidecar 自动为拉取流量启用双向 TLS,Cilium 策略只需关注“允许哪些 SPIFFE 身份访问仓库”,无需管理 TLS 证书。
- 身份感知策略:Cilium 可以读取网格注入的 X.509 证书 SAN 字段,实现比标签选择器更细粒度的拉取控制。
最佳实践:在服务网格环境中,建议将 Cilium 网络策略的端点选择器从
podSelector 切换为 toFQDN 或 toService,配合网格的 ServiceEntry 资源,使策略与网格身份模型对齐。
2.4 三者的协同关系
集群联邦、网络拓扑、服务网格并非独立工作,它们在镜像拉取权限配置中形成如下协同链条:
- 联邦层:定义哪些集群可以拉取镜像,并分发初始凭证(Secret)。
- 网络拓扑层:决定拉取流量的物理路径,暴露需要保护的端口和端点。
- 服务网格层:为拉取流量注入可验证的身份,使 Cilium 策略能够基于身份而非网络地址进行授权。
- Cilium 策略层:综合联邦身份、网络路径、网格身份,生成最终的 L3-L7 网络策略。
2.5 关键设计原则
| 原则 | 说明 | 对镜像拉取的影响 |
|---|---|---|
| 最小权限 | 每个集群只获得拉取自身所需镜像的凭证 | 联邦层按命名空间分发 Secret,Cilium 策略限制凭证使用范围 |
| 身份优先 | 优先使用网格身份而非 IP 地址做策略决策 | 避免 IP 漂移导致策略失效,提升拉取链路稳定性 |
| 路径感知 | 策略必须覆盖拉取流量的完整网络路径 | 网关路由场景需额外放通 Gateway 之间的中转流量 |
| 可审计 | 所有拉取请求在 Cilium 策略层留下日志 | 启用 Cilium 的 L7 审计日志,记录拉取来源、目标、身份 |
避坑提示:不要将集群联邦的凭证分发机制与 Cilium 网络策略的授权机制混为一谈。联邦分发凭证只解决“有没有钥匙”的问题,Cilium 策略解决“钥匙能不能用、在哪里用”的问题。两者必须配合,缺一不可。