跳到主要内容

生产部署

生产部署应把 Testudo 看作控制面组件,重点关注权限、可用性、备份存储、远端集群访问和可观测性。

部署建议

  • Operator 和 Server 运行在管理集群。
  • 使用独立 namespace,例如 disaster-system
  • 使用 testudo-chart Helm 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

升级策略

升级顺序建议:

  1. 备份 values 文件和关键 CRD 实例。
  2. 确认新 Chart 包中的 CRD、operator、server、web 镜像版本匹配。
  3. 在测试集群执行 helm templatehelm upgrade --dry-run
  4. 避免在长流程操作进行中升级控制器。
  5. 执行 helm upgrade
  6. 观察关键实例、操作状态和任务事件。
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