c4k-forgejo/doc/Runbook_UpgradeFrom1.19To7.0.5.md

4.7 KiB

Playbook Upgrade from 1.19 to 7.0.5

Info: Relevant Breaking Changes:

Preparations

  1. Stop Forgejo Prod: k scale deployment forgejo --replicas=0
  2. Disable Backup Cron: k patch cronjobs forgejo-backup -p '{"spec" : {"suspend" : true }}'
  3. Scale up Backup-Restore Deployment: kubectl scale deployment backup-restore --replicas=1
  4. Execute Manual Backup: kubectl exec -it backup-restore-... -- /usr/local/bin/backup.sh

Create 2nd Repo Prod Server

  1. Terraform Preparations for 2nd Server: TODO
  2. Install c4k-forgejo Version TODO
    with config "forgejo-image-version-overwrite": "1.19.3-0"
  3. Stop Forgejo Deployment: k scale deployment forgejo --replicas=0
  4. Disable Backup Cron: k patch cronjobs forgejo-backup -p '{"spec" : {"suspend" : true }}'
  5. Scale up Backup-Restore Deployment: kubectl scale deployment backup-restore --replicas=1
  6. Restore Forgejo Backup: See BackupAndRestore.md
  7. Check for ..._INSTALL_LOCK: true in ConfigMap forgejo-env
  8. Scale up Forgejo Deployment and check for (startup) problems: k scale deployment forgejo --replicas=1

Upgrade to 1.20.1-0

  1. Scale down Forgejo Deployment: k scale deployment forgejo --replicas=0
  2. Adjust configmap: k edit cm forgejo-env
    1. Remove FORGEJO__database__CHARSET: utf8 (This was a misconfiguration, since this option only had effect for mysql dbs)
    2. Change FORGEJO__mailer__MAILER_TYPE: smtp+startls TO FORGEJO__mailer__PROTOCOL: smtp+starttls (Missed deprecation from 1.19)
    3. Change FORGEJO__service__EMAIL_DOMAIN_WHITELIST: repo.test.meissa.de TO FORGEJO__service__EMAIL_DOMAIN_ALLOWLIST: repo.test.meissa.de (Fallback deprecation in 1.21)
  3. Delete app.ini: k exec -it backup-restore-... -- rm /var/backups/gitea/conf/app.ini
  4. Set version to 1.20.1-0 with k edit deployment forgejo
  5. Scale up Forgejo Deployment: k scale deployment forgejo --replicas=1
  6. Check for errors

Upgrade to 1.21.1-0

  1. Scale down Forgejo Deployment: k scale deployment forgejo --replicas=0
  2. Delete app.ini: k exec -it backup-restore-... -- rm /var/backups/gitea/conf/app.ini
  3. Set version to 1.21.1-0 with k edit deployment forgejo
  4. Scale up Forgejo Deployment: k scale deployment forgejo --replicas=1
  5. Check for errors
  6. After upgrading, login as an admin, go to the /admin page and click run Sync missed branches from git data to databases (Fehlende Branches aus den Git-Daten in die Datenbank synchronisieren). If this is not done there will be messages such as LoadBranches: branch does not exist in the logs.

Upgrade to 7.0.0

  1. Scale down Forgejo Deployment: k scale deployment forgejo --replicas=0
  2. Adjust configmap: k edit cm forgejo-env
    1. Change FORGEJO__oauth2__ENABLE: "true" TO FORGEJO__oauth2__ENABLED: "true"
  3. Delete app.ini: k exec -it backup-restore-... -- rm /var/backups/gitea/conf/app.ini
  4. Set version to 7.0.0 with k edit deployment forgejo
  5. Scale up Forgejo Deployment: k scale deployment forgejo --replicas=1
  6. Check for errors

Upgrade to 7.0.5 (no breaking changes)

TODO: Upgrade to 8.0.0 instead after Release!

  1. Scale down Forgejo Deployment: k scale deployment forgejo --replicas=0
  2. Delete app.ini: k exec -it backup-restore-... -- rm /var/backups/gitea/conf/app.ini
  3. Set version to 7.0.5 with k edit deployment forgejo
  4. Scale up Forgejo Deployment: k scale deployment forgejo --replicas=1
  5. Check for errors

Post Work

  1. Switch DNS to new server
  2. Reenable Backup Cron on new server: k patch cronjobs forgejo-backup -p '{"spec" : {"suspend" : false }}'
  3. Execute manual Backup on new server: kubectl exec -it backup-restore-... -- /usr/local/bin/backup.sh
  4. Scale down Backup-Restore Deployment: kubectl scale deployment backup-restore --replicas=1
  5. The scope of all access tokens might (invisibly) have changed (in v1.20). Thus, rotate all tokens!
  6. Users should check their ssh keys: if they use rsa keys the minimum length should be 3072 bits! However, shorter keys should still work.

Known Errors

Error in v1.20.1-0

In the logs the following error can be found. This will be resolved automatically with the next upgrade (v1.21).

2024/07/08 08:31:30 ...g/config_provider.go:321:deprecatedSetting() [E] Deprecated fallback `[log]` `ROUTER` present. Use `[log]` `logger.router.MODE` instead. This fallback will be/has been removed in 1.21

TODO: Upgrade from 7.0.5 to 7.0.5-federated

TODO