Skip to main content
升級會取代映像檔標籤。新版本會在啟動時遷移資料庫,而這些遷移必須只執行一次、由單一 Pod 執行,且執行時沒有任何舊版 Pod 在運作。在 Kubernetes 上,這表示不能對已擴展的 StatefulSet 直接進行滾動更新。
每次升級前,請在 Ayakaleaf Pro 停止的狀態下進行一致性備份。請閱讀版本資訊,了解您要升級的目標版本所需的步驟。
開始之前,請在每個執行 Ayakaleaf Pro 的節點上,以 sudo docker pull 拉取新版本或新設定中列出的任何 TeX Live 映像檔。
1

停止 Ayakaleaf Pro

2

備份

MongoDB,可從任一成員執行:
資料磁碟區,透過一個掛載該磁碟區的短期 Pod(它會被排程到磁碟區所在的節點):
對 git-bridge 的磁碟區(data-git-bridge-0)也執行相同操作,並保留一份 Secret overleaf-secrets 的副本。如果您的儲存空間支援 VolumeSnapshots,對磁碟區建立快照也能達到相同效果。
3

變更版本並啟動

在 40-overleaf.yaml(以及必須使用相同標籤的 45-git-bridge.yaml)中設定新標籤,然後:
此 Deployment 使用 strategy: Recreate,因此即使變更了標籤,也絕不會同時執行兩個版本。

MongoDB 與 Redis

請與 Ayakaleaf Pro 分開升級。MongoDB 請依照更新 MongoDB 進行(一次升級一個主要版本,每個步驟後設定 featureCompatibilityVersion);當您在 10-mongo.yaml 中變更映像檔時,複本集會一次一個成員地套用新映像檔,因為 StatefulSet 會依序取代 mongo-2、mongo-1 與 mongo-0。

回復

依上述方式停止 Ayakaleaf Pro,從封存檔還原 MongoDB(mongorestore --drop --archive --gzip),並從備份還原磁碟區或儲存貯體,設定舊標籤後再次啟動。除此之外,新版本的遷移無法復原。

Q&A

回答:在 podManagementPolicy: OrderedReady 下,overleaf-1 只有在 overleaf-0 就緒後才會啟動,而滾動更新不會取代從未就緒的 Pod。修正原因後(例如 ConfigMap 中的錯誤設定),請刪除卡住的 Pod,讓 StatefulSet 依目前的範本重新建立它:
我們在測試叢集上曾因某項設定使 overleaf-0 無法就緒而遇到這個問題;刪除該 Pod 後,三個副本便全部順利啟動。
最後修改於 2026年11月2日