Skip to main content
Một lần nâng cấp sẽ thay thế tag của image. Phiên bản mới sẽ migrate cơ sở dữ liệu khi khởi động, và các migration này phải chạy một lần, từ một pod, trong khi không có pod phiên bản cũ nào đang chạy. Trên Kubernetes, điều này loại trừ việc dùng rolling update thông thường cho một StatefulSet đã được mở rộng.
Hãy tạo một bản sao lưu nhất quán trước mỗi lần nâng cấp, khi Ayakaleaf Pro đã dừng. Hãy đọc ghi chú phát hành để biết các bước của phiên bản mà bạn nâng cấp lên.
Trước khi bắt đầu, trên mọi node chạy Ayakaleaf Pro, hãy pull bất kỳ image TeX Live nào mà phiên bản mới hoặc cấu hình mới của bạn liệt kê, bằng sudo docker pull.
1

Dừng Ayakaleaf Pro

2

Sao lưu

MongoDB, từ bất kỳ thành viên nào:
Volume dữ liệu, thông qua một pod tồn tại ngắn có mount volume đó (pod này sẽ chạy trên node của volume):
Làm tương tự với volume của git-bridge (data-git-bridge-0), và giữ một bản sao của Secret overleaf-secrets. Nếu bộ lưu trữ của bạn hỗ trợ VolumeSnapshots, một snapshot của các volume cũng có tác dụng tương tự.
3

Thay đổi phiên bản và khởi động

Đặt tag mới trong 40-overleaf.yaml (và trong 45-git-bridge.yaml, vốn phải dùng cùng tag), sau đó:
Deployment dùng strategy: Recreate, nên ngay cả khi tag thay đổi cũng không bao giờ có hai phiên bản chạy cùng lúc.

MongoDB và Redis

Hãy nâng cấp chúng riêng biệt với Ayakaleaf Pro. Với MongoDB, hãy làm theo Cập nhật MongoDB (mỗi lần một phiên bản chính, đặt featureCompatibilityVersion sau mỗi bước); một replica set sẽ nhận image mới lần lượt từng thành viên khi bạn thay đổi image trong 10-mongo.yaml, vì StatefulSet lần lượt thay thế mongo-2, mongo-1 và mongo-0.

Khôi phục phiên bản cũ

Dừng Ayakaleaf Pro như trên, khôi phục MongoDB từ tệp lưu trữ (mongorestore --drop --archive --gzip) và các volume hoặc bucket từ bản sao lưu, đặt lại tag cũ và khởi động lại. Nếu không làm vậy, các migration của phiên bản mới không thể hoàn tác.

Q&A

Trả lời: Với podManagementPolicy: OrderedReady, overleaf-1 chỉ khởi động khi overleaf-0 đã sẵn sàng, và rolling update không thay thế một pod chưa bao giờ sẵn sàng. Sau khi bạn đã khắc phục nguyên nhân, ví dụ một cài đặt sai trong ConfigMap, hãy xóa pod bị kẹt để StatefulSet tạo lại nó từ template hiện tại:
Chúng tôi đã gặp trường hợp này trên cluster thử nghiệm sau khi một cài đặt khiến overleaf-0 không thể sẵn sàng; việc xóa pod đã giúp cả ba replica khởi động.
Lần sửa đổi cuối 2 tháng 11, 2026