跳到正文

部署流程 ​

每個服務獨立部署。服務上的 部署(或 重新部署)會建置或拉取這個服務,並以當前設定重啟它;專案中的其他服務保持原樣執行。新增服務時會自動部署它,網路設定的修改會重新部署對應的服務。

要一次發布所有服務(例如修改了好幾個之後),使用專案 設定 中的 全部部署。全部部署還會移除你從專案中刪除的服務。

步驟 ​

每個服務會經歷以下狀態,顯示在它的概覽和側邊欄中:

狀態正在發生什麼
等待中在本次部署中排隊
建置中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 無關聯。