生产部署
生产部署应把 Testudo 看作控制面组件,重点关注权限、可用性、备份存储、远端集群访问和可观测性。
部署建议
- Operator 和 Server 运行在管理集群。
- 使用独立 namespace,例如
disaster-system。 - 使用
testudo-chartHelm Chart 统一安装 operator、server 和 web。 - Chart 发布包、values 文件和镜像版本一一对应,避免只升级部分组件。
- Server 开启认证和 trace middleware。
- Operator 日志接入集中日志系统。
- Event 和 status 作为排障第一入口。
生产环境推荐使用私有 values 文件。默认 Docker Hub 公共镜像不需要镜像拉取 Secret:
helm upgrade --install testudo ./testudo-chart-1.0.0.tgz \
-n disaster-system \
--create-namespace \
-f values-prod.yaml
如果安装到非默认命名空间,必须同步设置 global.namespace:
helm upgrade --install testudo ./testudo-chart-1.0.0.tgz \
-n prod-dr \
--create-namespace \
-f values-prod.yaml \
--set global.namespace=prod-dr
如果生产环境使用私有镜像仓库,可以在私有 values 文件中配置镜像拉取 Secret 和镜像地址:
imagePullSecret:
existingSecret: default-secret
images:
operator:
repository: registry.example.com/softcdata/testudo-operator
server:
repository: registry.example.com/softcdata/testudo-server
web:
repository: registry.example.com/softcdata/testudo-web
权限
Operator 需要:
- 管理本项目 CRD。
- 读写 Velero 资源。
- 读取远端集群凭证 Secret。
- 在远端集群执行备份恢复相关操作。
Server 需要:
- 读取和写入 CRD。
- 读取 Event。
- 读取用户和系统设置相关资源。
可用性
- Server 可以多副本部署。
- Operator 通常通过 leader election 保证同一时间只有一个 active reconciler。
- 对象存储应配置高可用和备份策略。
- 远端集群访问凭证应定期轮换。
disaster-web默认通过NodePort 30087暴露;生产环境可以改为 Ingress 或受控的 L4/L7 入口。disaster-server默认是ClusterIP 30081,不建议直接暴露到集群外。
Helm values 基线
global:
namespace: disaster-system
web:
service:
type: NodePort
nodePort: 30087
strategy:
type: RollingUpdate
server:
service:
type: ClusterIP
port: 30081
strategy:
type: RollingUpdate
operator:
strategy:
type: RollingUpdate
webhook:
enabled: true
certManager:
enabled: true
升级策略
升级顺序建议:
- 备份 values 文件和关键 CRD 实例。
- 确认新 Chart 包中的 CRD、operator、server、web 镜像版本匹配。
- 在测试集群执行
helm template和helm upgrade --dry-run。 - 避免在长流程操作进行中升级控制器。
- 执行
helm upgrade。 - 观察关键实例、操作状态和任务事件。
helm template testudo ./testudo-chart-1.0.0.tgz -f values-prod.yaml
helm upgrade testudo ./testudo-chart-1.0.0.tgz \
-n disaster-system \
-f values-prod.yaml