跳到主要内容

标准升级指南

📘 概述

本指南详细介绍如何在 生产环境 中对 CSGHUB 进行 安全升级

升级过程将确保数据安全、服务连续性与最小停机时间。

💡 适用范围:适用于通过 Helm Chart 部署的 CSGHUB 集群。


⚙️ 前置条件

✅ 环境要求

项目要求
Kubernetes 集群v1.33+,集群处于健康状态(kubectl get nodes 全部 Ready)
Helmv3.12.0+,已配置管理权限
CSGHUB 已部署已通过 Helm 成功部署的运行实例

⚠️ 注意:升级前必须完成 数据备份配置保存,避免意外数据丢失。


💾 升级前准备

1️⃣ 备份现有配置

导出当前的 Helm values 文件:

helm get values csghub -n csghub -o yaml > csghub-values-backup.yaml

2️⃣ 备份关键数据

请至少备份以下内容:

组件备份方式
数据库(PostgreSQL)请参考数据备份恢复章节备份数据
Helm Values已在上一步导出 csghub-values-backup.yaml

💡 建议使用快照型备份方案(如 Ceph Snapshot / RDS Snapshot)以确保一致性。


🧩 升级步骤

1️⃣ 更新 Helm 仓库

helm repo update

确认可用版本:

helm search repo csghub/csghub --versions

示例输出:

NAME              	CHART VERSION	APP VERSION	DESCRIPTION
csghub/csghub 1.17.0 v1.17.0 CSGHub is an open-source platform designed for ...

2️⃣ 版本说明

v1.16.0

v1.16.0 开始,系统默认弃用 ingress-nginx,改为使用 envoyGateway。

由于 Helm 升级时不会自动创建依赖组件所需的 CRDs(CustomResourceDefinitions),因此如果当前集群版本 低于 v1.16.0,在升级前需要先手动安装相关 CRDs。

执行以下脚本:

curl -sSL https://charts.opencsg.com/repository/scripts/crds_install.sh | bash

该脚本用于:

  • 安装 envoyGateway 相关 CRDs
  • 确保升级到 v1.16.0 后相关组件能够正常运行

v1.17.0

v1.17.0 开始,以下组件的资源将由 CSGHub Helm Chart 统一管理:

  • Knative Serving
  • Argo Workflow
  • LeaderWorkSet

为了让 Helm 能够接管这些组件,升级时需要对已有资源进行 Patch,为其添加 Helm 管理相关的 metadata。

执行以下脚本:

curl -sSL https://charts.opencsg.com/repository/scripts/crds_takeover.sh | bash

该脚本用于:

  • 为现有 Knative Serving / Argo Workflow / LeaderWorkSet 资源添加 Helm 管理信息
  • 使这些资源能够被 CSGHub Helm Chart 接管并纳入统一管理

注意: 如果升级目标版本为 v1.17.0 或更高版本,以上脚本需要依次顺序执行。

3️⃣ 执行升级命令

执行升级命令:

helm upgrade --install csghub csghub/csghub \
--namespace csghub \
-f csghub-values-backup.yaml

如需升级到指定版本:

helm upgrade csghub csghub/csghub \
--namespace csghub \
-f csghub-values-backup.yaml \
--version 1.17.0

⚠️ 如果你修改过域名或启用了 HTTPS,请确保以下参数仍然一致:

--set global.gateway.external.domain="<your-domain>" \
--set global.gateway.tls.enabled=true \
--set global.gateway.tls.secretName="csghub-tls-certs"

4️⃣ 验证升级状态

helm status csghub -n csghub

查看 Pod 是否全部正常:

kubectl get pods -n csghub

正常情况下,所有组件应处于 Running 或 Completed 状态。

🔄 回滚操作(如所需)

若升级出现问题,可执行回滚操作:

查看历史版本:

helm history csghub -n csghub

执行回滚操作:

helm rollback csghub <revision> -n csghub

⚠️ 回滚不会自动恢复外部数据库或存储数据,如功能异常需结合数据备份一并恢复。


🔍 升级验证

升级完成后请验证以下服务状态:

服务验证命令 / 操作
CSGHUB 主界面访问 http://csghub.example.com
Casdoor 控制台访问 http://casdoor.example.com
Temporal 控制台访问 http://csghub.example.com/-/temporal
MinIO 控制台访问 http://minio.example.com:30080/console
Registry执行 docker login csghub.example.com 验证可用性

如需重新获取凭据,可执行:

kubectl get secret -n csghub csghub-casdoor-init \
-o jsonpath='{.data.INIT_ADMIN_USER}' | base64 -d && echo -n " / " && \
kubectl get secret -n csghub csghub-casdoor-init \
-o jsonpath='{.data.INIT_ADMIN_PASSWORD}' | base64 -d

⚡ 常见问题


🔒 安全升级建议

  • ✅ 升级前在测试环境先行验证版本兼容性
  • ✅ 保留至少 2 个历史版本以便快速回滚

📚 参考资料