アップグレードの前には毎回、Ayakaleaf Pro を停止した状態で一貫性のあるバックアップを取得してください。アップグレード先のバージョンの手順についてはリリースノートを確認してください。
sudo docker pull でプルしておいてください。
- レプリカ 1 つ
- 複数のレプリカ
1
Ayakaleaf Pro を停止する
2
バックアップする
MongoDB は任意のメンバーからバックアップします。データボリュームは、それをマウントする短命な Pod(ボリュームのあるノードに配置されます)を通じてバックアップします。git-bridge のボリューム(
data-git-bridge-0)についても同様に行い、Secret overleaf-secrets のコピーも保管してください。ストレージが VolumeSnapshots をサポートしている場合は、ボリュームのスナップショットでも同じことができます。3
バージョンを変更して起動する
40-overleaf.yaml(および同じタグを使う必要がある 45-git-bridge.yaml)に新しいタグを設定してから、次を実行します。strategy: Recreate を使用しているため、タグを変更しても 2 つのバージョンが同時に動作することはありません。MongoDB と Redis
これらは Ayakaleaf Pro とは別にアップグレードします。MongoDB については MongoDB の更新に従ってください(メジャーバージョンを 1 つずつ上げ、各ステップの後にfeatureCompatibilityVersion を設定)。10-mongo.yaml のイメージを変更すると、StatefulSet が mongo-2、mongo-1、mongo-0 を順に置き換えるため、レプリカセットはメンバー 1 つずつ新しいイメージに移行します。
ロールバック
上記のとおり Ayakaleaf Pro を停止し、アーカイブから MongoDB を(mongorestore --drop --archive --gzip)、バックアップからボリュームまたはバケットを復元し、古いタグを設定して再度起動します。新しいバージョンのマイグレーションは、これ以外の方法では元に戻せません。
Q&A
あるレプリカが準備完了にならず、他のレプリカが起動しない
あるレプリカが準備完了にならず、他のレプリカが起動しない
回答: テストクラスターでは、ある設定によって
podManagementPolicy: OrderedReady では、overleaf-1 は overleaf-0 の準備が完了してから起動し、ローリングアップデートは一度も準備完了にならなかった Pod を置き換えません。原因(たとえば ConfigMap の誤った設定)を修正した後、StatefulSet が現在のテンプレートから再作成するように、停止している Pod を削除してください。overleaf-0 が準備完了にならなかった後にこの問題が発生しました。Pod を削除すると、3 つのレプリカすべてが起動しました。
