GitLab-CE バックアップ、リストア、アップグレード

実行環境

項目 内容
OS WSL2:ubuntu2020
ミドルウェア Docker-Desktop

バックアップ

GitLabのバックアップでは、3種類のファイルをバックアップする。

  • GitLab

    GitLab のデータ本体。コマンドは下記。

    # 12.2 以上なら下のコマンドだけ
    $ sudo gitlab-backup create
    
  • GitLab設定ファイル(gitlab.rb)

    GitLab の諸設定ファイル。IPアドレスやメール送信設定、LDAPなどをできるようにしている場合、これも移植しないと移植先で当該機能を再設定する羽目になる。

    注意としては、上記のGitLabのバックアップで一緒にバックアップしてくれないので自分で抜き取る。パスは、/etc/gitlab/gitlab.rb

  • GitLab シークレットファイル(gitlab-secrets.json)

    ユーザプロフィールや2段階認証情報などが入っている。これがないとログインできなくなる。この子も、バックアップされないので、自分で抜き取る。

参考:Back up GitLab | GitLab

リストア

バックアップ時のGitLabと、リストア先のGitLabのバージョンは揃えておく。Dockerコンテナであっても、コンテナ内で下記を実行してあげれば、リストア可能(Dockerコマンド版もある)。

  1. バックアップファイルをリストア先のパックアップパスにおき、所有者とグループ変更する

    バックアップパスのデフォルトは /var/opt/gitlab/backups/ で、バックアップファイル(gitlab.rb)に定義されているので、念の為確認する。

     # 例
     $ sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/
     $ sudo chown git:git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar
    
  2. データベースに接続するプロセスを停止する

     $ sudo gitlab-ctl stop puma
     $ sudo gitlab-ctl stop sidekiq
     # Verify
     $ sudo gitlab-ctl status
    
  3. リストアを実行する

     # バックアップファイルの『_gitlab_backup.tar』は不要
     $ sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce
    
  4. gitlab-secrets.jsongitlab.rb を置き換える

  5. 下記コマンドを叩いて、GitLabを更新する。

     $ sudo gitlab-ctl reconfigure
     $ sudo gitlab-ctl restart
     $ sudo gitlab-rake gitlab:check SANITIZE=true
    
  6. 最後に整合性チェックを行う

     $ sudo gitlab-rake gitlab:artifacts:check
     $ sudo gitlab-rake gitlab:lfs:check
     $ sudo gitlab-rake gitlab:uploads:check
    

参考:Restore GitLab | GitLab

バージョンアップグレード

Docker で稼働する GitLab のバージョンアップはとても簡単。コンテナの立ち上げ方はこちらを参照。

GitLab をアップグレードする際には、アップグレードパスに乗ってあげていく必要がある。本日時点では、次のようになっている。

8.11.Z-> 8.12.0-> 8.17.7-> 9.0.13-> 9.5.10-> 10.0.7-> 10.8.7-> 11.0.6-> 11.11.8-> 12.0.12-> 12.1.17-> 12.10.14-> 13.0.14-> 13.1.11-> 13.8.8-> 13.12.15-> 14.0.12-> 14.3.6-> 14.9.5-> 14.10.Z-> 15.0.Z-> 15.1.Z(複数の Web ノードを持つ GitLab インスタンスの場合) ) -> 15.4.0->最新15.Y.Z

例えば、現在のGit Labのバージョンが、14.3.2 の場合、14.3.6-> 14.9.5-> 14.10.Z-> 15.0.Z-> 15.1.Z -> 15.4.0 -> 15.Y.Z(latest) という順に上げていく。Y,Z は任意。

公式手順のDocker コンテナで稼働している場合は、コンテナを削除して、アップグレードパスの次のイメージをプルして、新しいコンテナを立ち上げるだけで良い。

データ自体は Docker ボリュームに保存されているため消えない。念の為バックアップは必須

大雑把な手順をまとめる。

  1. バックアップを取る
  2. 実行中コンテナを停止する (sudo docker stop gitlab)
  3. Dockerコンテナを削除する (sudo docker rm gitlab)
  4. 次のアップグレードパスのコンテナを立てる(sudo docker pull gitlab/gitlab-ce:<next path>参考
  5. アップグレード版GitLabが起動するのを待つ
  6. ヘルプ画面でバージョンを確認し、アップグレードできていることを確認する

あとは、所望のバージョンになるまで、2〜6を繰り返す

参考: * アップグレード * アップグレード パス