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

59 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Kubernetes development mTLS overlay
该 Overlay 在 base 资源之上启用 Controller 控制面 mTLS并启动一个固定身份的 Gateway
和 Checker。它只用于开发或预发布的单副本控制面验证不是生产弹性身份方案。
## Prepare certificates
先生成未提交的开发证书。输出目录必须为空;生成器的 `controller` 证书包含
`DNS:controller`Overlay 中的客户端也只拨号 `controller:8443`
```powershell
./scripts/generate-local-controlplane-certs.ps1
kubectl apply -f deploy/kubernetes/base/namespace.yaml
```
将生成的三组证书写入 Kubernetes Secret。下面的命令可重复执行只更新对应 Secret
```powershell
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
```powershell
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-a`Checker 固定为
`checker_id=checker-a`,并把 Gateway HPA 限制为 `minReplicas=maxReplicas=1`
因此不得在此 Overlay 上增加副本数或放宽 HPA重复使用同一 Worker 身份会破坏
session、ownership 和证书角色边界。
生产环境需要由工作负载身份系统为每个副本签发独立、可轮换的证书,并将该副本的
身份注入 `worker_id`、`instance_id`、Gateway Client TLS 或 Checker Client TLS。
应用会在每次新控制面 TLS 握手读取更新后的叶证书和信任根;已有 gRPC 流仍按原会话保留,
根轮换时先投放新旧根的重叠信任包,再按 PDB 滚动排空旧连接。