@
kid1412621 #10 我目前是四种方案混合使用:
1 、内网环境,内网 DNS 做个泛域名解析指向 K8S 中 Traefik ( Ingress )的 Service IP ( LoadBalancer 模式),LoadBalancer 是基于 kube-vip 做的,集群中的节点离线也会自动切到其他节点,IP 不变。
2 、公网 VPN 连回家变成内网环境,与 1 相同。
3 、公网直连,Ingress 给部分服务(比如 Emby )配了直连域名(非直连域名配了 Traefik 的中间件,禁止非内网 IP 访问),直连域名通过 DDNS 指向公网 IP ,访问直连域名+映射后的端口就是直连。
4 、公网免端口、隐藏服务端 IP 连接,用腾讯云 CDN ,源地址指向 DDNS 域名+映射后的端口,然后就是跟常规的公网服务一样了。
通常来说,我自己的设备是用 1 和 2 ,部分不方便连接或没法连接 VPN 的设备用 4 ,全都是统一化的体验。需要给别人用的那些服务就是用 3 和 4 ,流量较大的优先用 3 ,量少、短期使用的用 4 。
域名解析方面有个注意点,我无论是公网还是内网都是做的泛解析,原因是 HTTPS 证书的签发记录可以被查到,而有些服务我不想被人直接知道,但又需要保持公网和内网一致的体验,所以不能子域名一个一个那么设。而且泛解析处理起来也更省事些,cert-manager 可以自动处理泛域名证书的签发和续签,所有服务只需要签一次,加上 kubed 可以同步 K8S 中的 Secret 到多个命名空间,可以轻松解决在分多命名空间管理、不给 Traefik 设置默认证书的情况下,多 Ingress 的 HTTPS 访问问题。
不给 Traefik 设置默认证书的原因是,如果你设置了默认证书,那么只要访问到你的 IP+HTTPS 端口就能根据证书直接得到域名,进而可能关联到你的 DDNS 域名,这也是不太安全的。