Erstellen Sie vor jedem Upgrade bei gestopptem Ayakaleaf Pro eine konsistente Sicherung. Lesen Sie in den Versionshinweisen nach, welche Schritte die Zielversion erfordert.
sudo docker pull jedes TeX Live-Image, das die neue Version oder Ihre neue Konfiguration aufführt.
- Ein Replikat
- Mehrere Replikate
1
Ayakaleaf Pro stoppen
2
Sichern
MongoDB, von einem beliebigen Mitglied aus:Das Daten-Volume, über einen kurzlebigen Pod, der es einbindet (er landet auf dem Knoten des Volumes):Verfahren Sie ebenso mit dem Volume von git-bridge (
data-git-bridge-0) und bewahren Sie eine Kopie des Secrets overleaf-secrets auf. Wenn Ihr Speicher VolumeSnapshots unterstützt, erfüllt ein Snapshot der Volumes denselben Zweck.3
Version ändern und starten
Setzen Sie den neuen Tag in Das Deployment verwendet
40-overleaf.yaml (und in 45-git-bridge.yaml, das denselben Tag verwenden muss) und führen Sie dann Folgendes aus:strategy: Recreate, sodass selbst bei einem geänderten Tag nie zwei Versionen gleichzeitig laufen.MongoDB und Redis
Aktualisieren Sie diese getrennt von Ayakaleaf Pro. Folgen Sie für MongoDB MongoDB aktualisieren (jeweils eine Hauptversion, nach jedem SchrittfeatureCompatibilityVersion); ein Replikatset übernimmt das neue Image Mitglied für Mitglied, wenn Sie das Image in 10-mongo.yaml ändern, weil das StatefulSet mongo-2, mongo-1 und mongo-0 nacheinander ersetzt.
Zurücksetzen
Stoppen Sie Ayakaleaf Pro wie oben, stellen Sie MongoDB aus dem Archiv (mongorestore --drop --archive --gzip) und die Volumes oder Buckets aus der Sicherung wieder her, setzen Sie den alten Tag und starten Sie erneut. Die Migrationen der neuen Version lassen sich anders nicht rückgängig machen.
Q&A
Ein Replikat wird nicht bereit, und die anderen Replikate starten nie
Ein Replikat wird nicht bereit, und die anderen Replikate starten nie
Antwort: Mit Das ist uns auf unserem Testcluster passiert, nachdem eine Einstellung verhindert hatte, dass
podManagementPolicy: OrderedReady startet overleaf-1 erst, wenn overleaf-0 bereit ist, und ein Rolling Update ersetzt keinen Pod, der nie bereit wurde. Nachdem Sie die Ursache behoben haben, zum Beispiel eine falsche Einstellung in der ConfigMap, löschen Sie den hängenden Pod, damit das StatefulSet ihn aus der aktuellen Vorlage neu erstellt:overleaf-0 bereit wurde; nach dem Löschen des Pods starteten alle drei Replikate.
