升级 Nanocl
Nanocl 尚未达到 v1,Statefile 和存储格式可能在次要版本之间变化。替换安装前,请阅读对应版本的迁移说明。0.17 到 0.18 是不兼容迁移,可能需要停机。
导出当前状态
卸载 0.17 前,将目标状态导出到空目录:
nanocl backup -o ./nanocl-0.17-backup备份命令为每个命名空间写入一个 Statefile,并分别生成 jobs.yml、secrets.yml 和 resources.yml。请在 /var/lib/nanocl 之外保留副本。
备份保留连接的 0.17 守护进程报告的模式,不会自动转换为 0.18。重新应用前,审查并改写每个导出文件。
将 0.17 Statefile 迁移到 0.18
Cargo 的主要结构从单个匿名容器及副本模式,改为命名容器列表和整数副本数:
0.17
ApiVersion: v0.17
Cargoes:
- Name: api
Container:
Image: ghcr.io/example/api:1.0.0
Replication:
Mode: Static
Replicas: 20.18
ApiVersion: v0.18
Cargoes:
- Name: api
Replicas: 2
Containers:
- Name: api
Image: ghcr.io/example/api:1.0.0对每个 Cargo:
- 将
Container替换为一个或多个命名Containers。 - 将顺序启动任务移到命名
InitContainers。 - 将旧副本对象或模式替换为整数
Replicas(最小为 1)。 - 将网络模式、主机端口绑定、主机名和 DNS 配置移到 Cargo。容器级端口发布会被拒绝。
- 将命名空间对象键和代理目标,从
{name}.{namespace}改为规范的{namespace}.{name}顺序。
VM Statefile 现在使用完整本地 Image 路径,可用 InitContainer 准备镜像。守护进程管理的 nanocl vm image 工作流程已移除。
Cargo 级 cargo exec 和组级 kill 操作也已移除。先用 nanocl ps 选择具体进程,再运行 nanocl exec PROCESS -- COMMAND... 或 nanocl kill PROCESS。
升级顺序
- 备份 Statefile 和应用数据。
- 根据 0.18 模式改写并审查导出的 Statefile。
- 按应用需求停止流量和工作负载。
- 卸载旧组件,保留外部备份,再按照安装指南安装 Nanocl 0.18。
- 应用前用
nanocl state render验证改写文件,然后按依赖顺序应用:Secret、任务或资源,以及部署需要的命名空间工作负载。 - 恢复流量前,检查 Cargo 健康状态、代理和 DNS 规则,以及应用行为。
安装程序不会自动完成这次不兼容 Statefile 迁移,也不保证零停机升级。
数据库 TLS Secret
升级后的 nanocld 首次启动时,将内部数据库 TLS Secret 中可读取的旧证书路径替换为 PEM 内容。首次启动时请保持这些证书文件可用。
最后更新于