ClickHouse 控制平面与您的 BYOC VPC 之间的连接
下一节将介绍 Tailscale 私有网络如何用于故障排查以及可选的管理访问。
Tailscale 私有网络
概述
- 管理操作:ClickHouse 管理服务与您的 BYOC 基础设施进行协同
- 故障排查访问:ClickHouse 工程师访问 Kubernetes API 服务器和 ClickHouse 系统表以进行诊断
- 指标访问:ClickHouse 的集中式监控仪表盘会访问部署在您的 BYOC VPC 内的 Prometheus 栈中的指标,使 ClickHouse 工程师能够了解该环境的可观测性状态。
BYOC 中 Tailscale 的工作原理
-
Tailnet 地址注册:每个端点都会注册一个唯一的 tailnet 地址 (例如,Kubernetes API 服务器的
k8s.xxxx.us-east-1.aws.byoc.clickhouse-prd.com) -
Tailscale agent 容器:一个 Tailscale agent 容器会在你的 EKS 集群中运行,负责:
- 连接到 Tailscale 协调服务器
- 注册服务,使其可被发现
- 与 Nginx pod (容器组) 协调网络设置
-
Nginx pod (容器组) :一个 Nginx pod (容器组) ,用于:
- 终止来自 Tailscale 的 TLS 流量
- 将流量路由到 EKS 集群内相应的 IP 地址
网络连接过程
-
初始连接:
- 两端的 agent (ClickHouse 工程师的环境和你的 BYOC EKS 集群) 都会连接到 Tailscale 协调服务器
- EKS 集群中的 agent 会注册 Kubernetes 服务,使其可被发现
- ClickHouse 工程师必须先在内部申请相应权限,才能看到该服务
-
连接模式:
- 直连模式:agent 会尝试通过 NAT 穿透隧道建立直接连接
- 中继模式:如果直连模式失败,通信会回退到通过 Tailscale DERP (分布式加密中继协议) 服务器中继
-
加密:
- 所有通信都会进行端到端加密
- 每个 agent 都会生成自己的公钥/私钥密钥对 (类似于 PKI)
- 无论使用直连模式还是中继模式,流量都会保持加密
安全功能
- EKS 集群中的 Tailscale agent 会向 Tailscale 协调/中继服务器发起出站连接
- 无需入站连接——无需在安全组规则中允许流量入站到 Tailscale agent
- 这可减少攻击面,并简化网络安全配置
- 在 Tailscale 将工程师路由到客户端点之前,工程师必须先通过内部审批流程申请访问权限
- 访问具有时效性,并会自动过期
- 所有访问都会经过审计并记录日志
管理服务访问
- 您可以将 EKS API 服务器配置为仅使用专用终结点
- 在这种情况下,管理服务将通过 Tailscale 访问 API 服务器 (类似于人工进行的故障排查访问)
- 同时会保留公网访问,作为紧急调查和支持需求的备用机制
网络流量流向
- EKS 集群中的 Tailscale agent → Tailscale 协调服务器 (出站)
- 工程师机器上的 Tailscale agent → Tailscale 协调服务器 (出站)
- 在 agent 之间建立直连或中继连接
- 加密流量通过已建立的隧道传输
- EKS 中的 Nginx pod (容器组) 终止 TLS 并将流量路由到内部服务
- Tailscale 连接仅用于管理和故障排查
- 查询流量和客户数据绝不会经过 Tailscale
- 所有客户数据始终保留在您的 VPC 内
网络边界
- 入站:进入客户 BYOC VPC 的流量。
- 出站:源自客户 BYOC VPC 并发送到外部目标端的流量。
- 公网:可通过公共互联网访问的网络端点。
- 私网:只能通过私有连接访问的网络端点,例如 VPC peering、VPC Private Link 或 Tailscale。