跳到正文

部署流程 ​

每个服务独立部署。服务上的 部署(或 重新部署)会构建或拉取这个服务,并以当前设置重启它;项目中的其他服务保持原样运行。添加服务时会自动部署它,网络设置的修改会重新部署对应的服务。

要一次发布所有服务(例如修改了好几个之后),使用项目 设置 中的 全部部署。全部部署还会移除你从项目中删除的服务。

步骤 ​

每个服务会经历以下状态,显示在它的概览和侧边栏中:

状态正在发生什么
等待中在本次部署中排队
构建中Git 服务正在 Zenavo 的构建机上构建
部署中正在把 Kubernetes 对象应用到服务器
启动中容器正在启动,等待通过健康检查
运行中所有实例都已就绪
失败 / 已崩溃构建或发布失败,或者容器反复退出。打开 日志 查看原因。
  1. 构建。 Git 服务会被克隆并构建(构建方案),镜像存入 Zenavo 的镜像存储,每个服务一个仓库,服务器从这里拉取(中国大陆的服务器从上海的副本拉取)。镜像服务会被解析为 digest,所以回滚时运行的是完全相同的镜像。
  2. 应用。 应用服务配置;全部部署时,服务按依赖顺序应用,每个服务等待它的依赖就绪。
  3. 发布。 没有数据卷的服务零停机更新:新实例必须健康之后,旧实例才会停止。有数据卷的服务先停止再启动,确保不会有两个实例同时写同一份数据。
  4. 初始化。 如果服务有初始化命令(来自模板),会在服务启动前,用相同的镜像、变量和数据卷在一个任务中运行一次。

构建队列 ​

Git 构建在 Zenavo 的构建机上运行,所有团队共享。一个团队同时运行的构建数取决于它的套餐(见用量与账单);更多的构建会等待,日志中会说明。

构建机繁忙时,空出来的构建机会分给套餐最高的等待中的构建:Team、Pro、Dev、Free 依次排列,同一套餐内先到先得。等待满 10 分钟的构建无论套餐都会排到下一个,所以不会有构建等太久。部署 Docker 镜像或数据库不需要构建,也不会在这里排队。

部署时 Zenavo 重启 ​

Zenavo 的控制面偶尔会重启,比如在更新时。正在进行的部署会从中断的地方继续,日志里会写明(Control plane restarted; resuming from …):

  • 构建时: 部署重新排队,再构建一次。
  • 构建完成后: 直接部署已经构建好的镜像,不再重新构建。
  • 发布时: 服务器会自己把发布做完。Zenavo 只应用还没轮到的服务,等其余服务就绪,然后照常把部署标记为成功或失败,并通知你。

如果当时某个服务的初始化命令(比如数据库迁移)正在运行,Zenavo 不会中止它,也不会再运行一次:部署会被标记为已中断,方便你确认命令的结果后再重新部署。一次部署最多在 2 次重启后继续,第 3 次重启时同样标记为已中断。其他操作(如备份、迁移项目)不会自动重做,而是标记为已中断,由你检查。

日志 ​

每次部署的输出在 日志 → 构建日志 中,运行期间和结束后都可以查看。详见日志。

与 Zeabur 无关联。