proxy-pool/deploy/kubernetes/overlays/development-mtls/README.md
2026-08-07 18:26:09 +08:00

2.9 KiB
Raw Blame History

Kubernetes development mTLS overlay

该 Overlay 在 base 资源之上启用 Controller 控制面 mTLS并启动一个固定身份的 Gateway 和 Checker。它只用于开发或预发布的单副本控制面验证不是生产弹性身份方案。

Prepare certificates

先生成未提交的开发证书。输出目录必须为空;生成器的 controller 证书包含 DNS:controllerOverlay 中的客户端也只拨号 controller:8443

./scripts/generate-local-controlplane-certs.ps1
kubectl apply -f deploy/kubernetes/base/namespace.yaml

将生成的三组证书写入 Kubernetes Secret。下面的命令可重复执行只更新对应 Secret

kubectl -n proxy-pool create secret generic proxy-pool-controlplane-server-tls `
  --from-file=tls.crt=deploy/.control-plane-tls/controller/tls.crt `
  --from-file=tls.key=deploy/.control-plane-tls/controller/tls.key `
  --from-file=ca.crt=deploy/.control-plane-tls/controller/ca.crt `
  --dry-run=client -o yaml | kubectl apply -f -

kubectl -n proxy-pool create secret generic proxy-pool-controlplane-gateway-tls `
  --from-file=tls.crt=deploy/.control-plane-tls/gateway-a/tls.crt `
  --from-file=tls.key=deploy/.control-plane-tls/gateway-a/tls.key `
  --from-file=ca.crt=deploy/.control-plane-tls/gateway-a/ca.crt `
  --dry-run=client -o yaml | kubectl apply -f -

kubectl -n proxy-pool create secret generic proxy-pool-controlplane-checker-tls `
  --from-file=tls.crt=deploy/.control-plane-tls/checker-a/tls.crt `
  --from-file=tls.key=deploy/.control-plane-tls/checker-a/tls.key `
  --from-file=ca.crt=deploy/.control-plane-tls/checker-a/ca.crt `
  --dry-run=client -o yaml | kubectl apply -f -

另行从私密配置系统创建 proxy-pool-secrets。可参考 base 目录的 secret.example.yaml但不要把实际数据库、Redis、Provider 或 API 凭据写入 Git。

Deploy

kubectl apply -k deploy/kubernetes/overlays/development-mtls
kubectl -n proxy-pool rollout status deployment/proxy-controller --timeout=5m
kubectl -n proxy-pool rollout status deployment/proxy-gateway --timeout=5m
kubectl -n proxy-pool rollout status deployment/proxy-checker --timeout=5m

Overlay 的 Gateway 固定为 worker_id=gateway-aChecker 固定为 checker_id=checker-a,并把 Gateway HPA 限制为 minReplicas=maxReplicas=1。 因此不得在此 Overlay 上增加副本数或放宽 HPA重复使用同一 Worker 身份会破坏 session、ownership 和证书角色边界。

生产环境需要由工作负载身份系统为每个副本签发独立、可轮换的证书,并将该副本的 身份注入 worker_idinstance_id、Gateway Client TLS 或 Checker Client TLS。 应用会在每次新控制面 TLS 握手读取更新后的叶证书和信任根;已有 gRPC 流仍按原会话保留, 根轮换时先投放新旧根的重叠信任包,再按 PDB 滚动排空旧连接。