> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Uppgradera på Kubernetes

> Uppgradera en Kubernetes-driftsättning av Ayakaleaf Pro, med en replik eller flera.

En uppgradering byter avbildningstaggen. Den nya versionen migrerar databasen när den startar, och dessa migreringar måste köras **en gång, från en pod, medan ingen äldre pod körs**. På Kubernetes utesluter detta en vanlig rullande uppdatering av en skalad StatefulSet.

> [!CAUTION]
>
> Gör en [konsekvent säkerhetskopia](https://ayakaleaf-pro.mintlify.site/sv/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) före varje uppgradering, med Ayakaleaf Pro stoppat. Läs [versionsinformationen](https://ayakaleaf-pro.mintlify.site/sv/on-premises/release-notes) för steg som gäller den version du uppgraderar till.

Innan du börjar hämtar du med `sudo docker pull`, på varje nod som kör Ayakaleaf Pro, alla TeX Live-avbildningar som den nya versionen eller din nya konfiguration listar.

> [tab] En replik
>
> **1. Stoppa Ayakaleaf Pro**
>
> ```bash theme={null}
> kubectl -n overleaf scale deployment/overleaf --replicas=0
> kubectl -n overleaf wait --for=delete pod -l app=overleaf --timeout=5m
> ```
>
> **2. Säkerhetskopiera**
>
> MongoDB, från valfri medlem:
>
> ```bash wrap theme={null}
> kubectl -n overleaf exec mongo-0 -- mongodump --quiet --archive --gzip \
>   --uri 'mongodb://mongo-0.mongo:27017,mongo-1.mongo:27017,mongo-2.mongo:27017/sharelatex?replicaSet=overleaf' \
>   > sharelatex-$(date +%F).archive.gz
> ```
>
> Datavolymen, via en kortlivad pod som monterar den (den hamnar på volymens nod):
>
> ```bash wrap theme={null}
> kubectl -n overleaf run backup --image=busybox --restart=Never --overrides='
> {"spec":{"containers":[{"name":"backup","image":"busybox","command":["sleep","3600"],
>  "volumeMounts":[{"name":"d","mountPath":"/data"}]}],
>  "volumes":[{"name":"d","persistentVolumeClaim":{"claimName":"overleaf-data"}}]}}'
> kubectl -n overleaf wait --for=condition=Ready pod/backup
> kubectl -n overleaf exec backup -- tar czf - -C /data . > overleaf-data-$(date +%F).tar.gz
> kubectl -n overleaf delete pod backup
> ```
>
> Gör detsamma för git-bridges volym (`data-git-bridge-0`) och spara en kopia av Secret:en `overleaf-secrets`. Om din lagring stöder [VolumeSnapshots](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) åstadkommer en ögonblicksbild av volymerna samma sak.
>
> **3. Byt version och starta**
>
> Ange den nya taggen i `40-overleaf.yaml` (och i `45-git-bridge.yaml`, som måste använda samma tagg) och kör sedan:
>
> ```bash theme={null}
> kubectl apply -f 40-overleaf.yaml -f 45-git-bridge.yaml
> kubectl -n overleaf scale deployment/overleaf --replicas=1
> kubectl -n overleaf rollout status deployment/overleaf --timeout=20m
> kubectl -n overleaf logs deployment/overleaf | grep 'Finished migrations'
> ```
>
> Deployment:en använder `strategy: Recreate`, så även en ändrad tagg kör aldrig två versioner samtidigt.

> [tab] Flera repliker
>
> För konfigurationen i [Horisontell skalning](https://ayakaleaf-pro.mintlify.site/sv/on-premises/configuration/kubernetes/horizontal-scaling.md).
>
> **1. Stoppa alla repliker**
>
> ```bash theme={null}
> kubectl -n overleaf scale statefulset/overleaf --replicas=0
> kubectl -n overleaf wait --for=delete pod -l app=overleaf-ha --timeout=10m
> ```
>
> **2. Säkerhetskopiera**
>
> MongoDB som på fliken för en replik, dina S3-buckets med leverantörens verktyg, git-bridges volym (`data-git-bridge-0`) och Secrets. Replikernas `/srv/overleaf-ha` innehåller bara kompileringsutdata och behöver ingen säkerhetskopiering.
>
> **3. Starta en replik med den nya versionen**
>
> Ange den nya taggen i `70-overleaf.yaml` och `75-git-bridge.yaml`, samt `replicas: 1`:
>
> ```bash theme={null}
> kubectl apply -f 70-overleaf.yaml -f 75-git-bridge.yaml
> kubectl -n overleaf rollout status statefulset/overleaf --timeout=20m
> kubectl -n overleaf logs overleaf-0 | grep 'Finished migrations'
> ```
>
> Kontrollera att du kan logga in, öppna ett projekt och kompilera.
>
> **4. Starta de andra replikerna**
>
> Ange `replicas: 3` igen och tillämpa. `OrderedReady` startar dem en i taget.
>
> ```bash theme={null}
> kubectl apply -f 70-overleaf.yaml
> kubectl -n overleaf rollout status statefulset/overleaf --timeout=20m
> ```
>
> > [!WARNING]
> >
> > Ändra inte avbildningen för en körande skalad StatefulSet med `kubectl set image` eller `kubectl apply`: den rullande uppdateringen skulle starta den nya versionen, och dess migreringar, medan äldre repliker fortfarande betjänar användare. Konfigurationsändringar utan ny version går bra som en rullande omstart: `kubectl -n overleaf rollout restart statefulset/overleaf`.

### MongoDB och Redis

Uppgradera dem separat från Ayakaleaf Pro. För MongoDB följer du [Uppdatera MongoDB](https://ayakaleaf-pro.mintlify.site/sv/on-premises/maintenance/updating-mongodb.md) (en huvudversion i taget, `featureCompatibilityVersion` efter varje steg); en replikuppsättning tar emot den nya avbildningen en medlem i taget när du ändrar avbildningen i `10-mongo.yaml`, eftersom StatefulSet:en ersätter `mongo-2`, `mongo-1` och `mongo-0` i tur och ordning.

### Återställa

Stoppa Ayakaleaf Pro enligt ovan, återställ MongoDB från arkivet (`mongorestore --drop --archive --gzip`) och volymerna eller buckets från säkerhetskopian, ange den gamla taggen och starta igen. Den nya versionens migreringar kan inte ångras på annat sätt.

### Frågor och svar

> [accordion] En replik förblir inte redo, och de andra replikerna startar aldrig
>
> **Svar:** Med `podManagementPolicy: OrderedReady` startar `overleaf-1` först när `overleaf-0` är redo, och en rullande uppdatering ersätter inte en pod som aldrig blev redo. När du har åtgärdat orsaken, till exempel en felaktig inställning i ConfigMap:en, tar du bort den fastnade podden så att StatefulSet:en skapar den på nytt från den aktuella mallen:
>
> ```bash theme={null}
> kubectl -n overleaf delete pod overleaf-0
> kubectl -n overleaf rollout status statefulset/overleaf --timeout=20m
> ```
>
> Vi stötte på detta i vårt testkluster efter att en inställning hindrade `overleaf-0` från att bli redo; när podden togs bort kunde alla tre repliker starta.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.