标准升级指南
📘 概述
本指南详细介绍如何 在 生产环境 中对 CSGHUB 进行 安全升级。
升级过程将确保数据安全、服务连续性与最小停机时间。
💡 适用范围:适用于通过 Helm Chart 部署的 CSGHUB 集群。
⚙️ 前置条件
✅ 环境要求
| 项目 | 要求 |
|---|---|
| Kubernetes 集群 | v1.28+,集群处于健康状态(kubectl get nodes 全部 Ready) |
| Helm | v3.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.16.0 v1.16.0 CSGHub charts with CE and EE.
......
2️⃣ 执行升级命令
创建自定义资源:
curl -sSL https://charts.opencsg.com/repository/scripts/crds_install.sh | bash
执行升级命令:
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.16.0
⚠️ 如果你修改过域名或启用了 HTTPS,请确保以下参数仍然一致:
--set global.gateway.external.domain="<your-domain>" \
--set global.gateway.tls.enabled=true \
--set global.gateway.tls.secretName="csghub-tls-certs"
3️⃣ 验证升级状态
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