Nexent Kubernetes 升级指导
🚀 升级流程概览
在 Kubernetes 上升级 Nexent 时,建议依次完成以下几个步骤:
- 拉取最新代码
- 执行 Helm 部署脚本
- 打开站点确认服务可用
🔄 步骤一:更新代码
更新之前,先记录下当前部署的版本和数据目录信息。
- 当前部署版本信息的位置:
backend/consts/const.py中的APP_VERSION - 数据目录信息的位置:
k8s/helm/nexent/values.yaml中的global.dataDir
git 方式下载的代码
通过 git 指令更新代码:
bash
git pullzip 包等方式下载的代码
- 需要去 GitHub 上重新下载一份最新代码,并解压缩。
- 将之前执行部署脚本目录下
k8s/helm目录中的.deploy.options文件拷贝到新代码目录的k8s/helm目录中。(如果不存在该文件则忽略此步骤)。
🔄 步骤二:执行升级
进入更新后代码目录的 k8s/helm 目录,执行部署脚本:
bash
cd k8s/helm
./deploy-helm.sh apply脚本会自动检测您之前的部署设置(版本、镜像源等)。如果 .deploy.options 文件不存在,系统会提示您输入配置信息。
💡 提示
- 若需配置语音模型(STT/TTS),请在对应的
values.yaml中修改相关配置,或通过命令行参数传入。
🌐 步骤三:验证部署
部署完成后:
- 在浏览器打开
http://localhost:30000 - 参考 用户指南 完成智能体配置与验证
🗄️ 手动更新数据库
升级时如果存在部分 SQL 文件执行失败,或需要手动执行增量 SQL 脚本时,可以通过以下方法进行更新。
📋 查找 SQL 脚本
SQL 迁移脚本位于仓库的:
docker/sql/请查看 升级指南 或版本发布说明,确认需要执行哪些 SQL 脚本。
✅ 方法一:使用 SQL 编辑器(推荐)
打开 SQL 编辑器,新建 PostgreSQL 连接。
从正在运行的 PostgreSQL Pod 中获取连接信息:
bash# 获取 PostgreSQL Pod 名称 kubectl get pods -n nexent -l app=nexent-postgresql # 端口转发以便本地访问 PostgreSQL kubectl port-forward svc/nexent-postgresql 5433:5432 -n nexent &连接信息:
- Host:
localhost - Port:
5433(转发的端口) - Database:
nexent - User:
root - Password: 可在
k8s/helm/nexent/charts/nexent-common/values.yaml中查看
- Host:
填写连接信息后测试连接,确认成功后可在
nexentschema 中查看所有表。按版本顺序执行所需的 SQL 文件。
⚠️ 注意事项
- 升级前请备份数据库,生产环境尤为重要。
- SQL 脚本需按时间顺序执行,避免依赖冲突。
🧰 方法二:使用 kubectl exec(无需客户端)
通过 stdin 重定向直接在主机上执行 SQL 脚本:
获取 PostgreSQL Pod 名称:
bashkubectl get pods -n nexent -l app=nexent-postgresql -o jsonpath='{.items[0].metadata.name}'直接从主机执行 SQL 文件:
bashkubectl exec -i <pod-name> -n nexent -- psql -U root -d nexent < ./sql/v1.1.1_1030-update.sql或者如果想交互式查看输出:
bashcat ./sql/v1.1.1_1030-update.sql | kubectl exec -i <pod-name> -n nexent -- psql -U root -d nexent
示例 - 依次执行多个 SQL 文件:
bash
# 获取 PostgreSQL Pod 名称
POSTGRES_POD=$(kubectl get pods -n nexent -l app=nexent-postgresql -o jsonpath='{.items[0].metadata.name}')
# 按顺序执行 SQL 文件
kubectl exec -i $POSTGRES_POD -n nexent -- psql -U root -d nexent < ./sql/v1.8.0_xxxxx-update.sql
kubectl exec -i $POSTGRES_POD -n nexent -- psql -U root -d nexent < ./sql/v2.0.0_0314_add_context_skill_t.sql💡 提示
- 执行前建议先备份数据库:
bash
POSTGRES_POD=$(kubectl get pods -n nexent -l app=nexent-postgresql -o jsonpath='{.items[0].metadata.name}')
kubectl exec nexent/$POSTGRES_POD -n nexent -- pg_dump -U root nexent > backup_$(date +%F).sql
- 对于 Supabase 数据库(仅完整版本),请使用
nexent-supabase-dbPod:
bash
SUPABASE_POD=$(kubectl get pods -n nexent -l app=nexent-supabase-db -o jsonpath='{.items[0].metadata.name}')
kubectl cp docker/sql/xxx.sql nexent/$SUPABASE_POD:/tmp/update.sql
kubectl exec -it nexent/$SUPABASE_POD -n nexent -- psql -U postgres -f /tmp/update.sql🔍 故障排查
查看部署状态
bash
kubectl get pods -n nexent
kubectl rollout status deployment/nexent-config -n nexent查看日志
bash
kubectl logs -n nexent -l app=nexent-config --tail=100
kubectl logs -n nexent -l app=nexent-web --tail=100手动 SQL 更新后重启服务(如需要)
如果您手动执行了 SQL 脚本,需要重启受影响的服务:
bash
kubectl rollout restart deployment/nexent-config -n nexent
kubectl rollout restart deployment/nexent-runtime -n nexent重新初始化 Elasticsearch(如需要)
bash
cd k8s/helm
bash init-elasticsearch.sh