Kubernetes,无需暴露公网入口

OpenVLAN operator 将你的集群接入 tailnet——Pod、服务和 operator 均可从任何地方私密访问。

给服务加一个注解,它就上线了——且保持私有

无需预配负载均衡器,无需繁琐的证书流程,无需调优 ingress 控制器。operator 会监听该注解,把服务直接发布到 tailnet 上,自动获得 MagicDNS 名称和基于身份的访问控制。

  • ✓除非显式开启,否则零公网暴露
  • ✓与现有 CNI 并存——无需推倒重来
  • ✓命名空间靠 ACL 隔离,而非网络拓扑
kubectl——发布一个服务
api-gateway生产 · ClusterIP:443已入网
orders-svc生产 · ClusterIP:8080已入网
grafana运维 · ClusterIP:3000已入网
pg-admin预发布 · ClusterIP:5432未暴露

每个 Pod 都自带身份

工作负载使用部署时签发的短期凭证进行认证。Pod 被驱逐或节点被回收时,其访问权限也随之蒸发——没有任何长期凭证可以从 ConfigMap 里扒出来拿到别处重用。

工作负载身份
ci-runner临时 · 1 小时后过期tag:ci受限
payments-api生产 · 轮换中tag:prod受限
old-sidecar上周已移除—已过期

operator 能做什么

⚙️

集群入口

用一个简单的注解将集群服务发布给 tailnet——无需公网负载均衡器,也没有证书麻烦。

🔗

集群出口

让 Pod 通过子网路由访问数据库和内部 API,源身份完整保留。

📡

多集群

开发、预发布和生产集群同处一张网状网络——命名空间靠 ACL 隔离,而非网络隔离。

🧩

服务间通信

不同集群的 Pod 通过加密路径以名称互相调用;无需跨集群对等互联。

🧠

Operator API

服务和 Pod 通过 CRD 成为 tailnet 的一等公民,与集群中的其他资源一样统一管理。

🔐

短期认证

临时集群使用会过期的认证密钥;没有可泄露的长期凭证。

🛡️

SSH 到节点

用 OpenVLAN SSH 调试节点级问题——无需堡垒 Pod,会话全程审计。

🚫

零入口暴露

API 服务器本身也可以关掉公网端点,完全活在网状网络上。

🧪

私有开发集群

开发者从笔记本电脑直接访问自己命名空间的服务;集群的任何部分都不公开。

🔁

GitOps 运行器

CI 通过网状网络向集群下发清单;云密钥不进运行器。

🏛️

遗留系统桥接

集群工作负载通过办公室子网路由器访问本地 Oracle 数据库。

📜

原生 Helm

安装、升级和配置都用你团队已经在 PR 里评审的那套工具。

安装

# Helm 安装,然后给服务加注解
$ helm install openvlan-operator openvlan/operator
 
apiVersion: v1
kind: Service
metadata:
  name: api-gateway
  annotations:
    openvlan.com/expose: "true"
 
# 现在可通过 api-gateway.prod.tailnet.com 访问——私密的

Kubernetes 常见问题

operator 会替换我的 CNI 吗?
不会——它与你现在使用的任何 CNI 并行运行。集群内部的 Pod 间流量照常流转;operator 只处理进出 tailnet 的流量。
有性能开销吗?
数据面是以内核速度运行的 AmneziaWG。典型的服务间路径相比普通 overlay 网络增加不到 1 毫秒,常规服务流量的吞吐量保持线速。
RBAC 和 ACL 如何配合?
二者互补:集群 RBAC 决定谁能部署和添加注解,tailnet ACL 决定每个工作负载在运行时能访问什么。ACL 文件通常归安全团队管,Helm values 归平台团队管。
可以让 API 服务器保持私有吗?
可以——这是很多人的最终选择。把 API 服务器端点挪到网状网络上,授权设备的 kubectl 直接可用,公网端点则连同它的白名单一起删掉。
Windows 节点池支持吗?
支持——operator 可在同一集群中管理 Linux 和 Windows 节点,混合节点池同处一张网状网络、共用一个策略文件。

几分钟,集群接入网状网络

Helm chart,一个注解,搞定。