【Omnibus GitLab】アップグレード手順(Ver.13 ~ Ver.14.6.2まで)


GitLabサーバーのアップグレードしてますか?
古いバージョンのまま放置されてる方も多いのではないでしょうか?

GIGAZINE:1Tbpsを超えるDDoS攻撃にGitLabサーバーが悪用されていると判明

脆弱性があるGitLabサーバーを悪用されるケースもあるらしいので、
なるべく早めに最新バージョンにしましょう。

3部構成で、GitLabのアップグレード手順をまとめます。

今回は、GitLab Ver.13 ~ Ver.14.6.2のアップグレード手順です。

前提条件

・GitLabをomnibusパッケージで構築していること。
・GitLabのバージョンが12.10.14以上であること。

まず初めに

アップグレードを始める前に、2つのことを確認しましょう。

1. 現行バージョンの確認

現在のGitLabバージョンを確認しましょう。
確認方法には2つあります。

a. Web上から確認

GitLabのサイトから確認するには、以下のURLにアクセスしてください。

https://[GitLabが動作しているホスト]/help

下記の表示が出ます。

[update asap]

セキュリティ的に脆弱なバージョンのGitLabを使用している証拠です。
とにかく早くアップグレードしましょう。


[update available]

最新のGitLabバージョンがリリースされています。
頃合いを見計らってアップグレードしましょう。


[up-to-date]

最新のGitLabを使用している証拠です。
何も心配は入りません。

b. CLIから確認

CLIを使用して、バージョンを確認することもできます。
Terminalなどで、下記コマンドを入力してください。

sudo gitlab-rake gitlab:env:info

GitLabのサーバー情報は、真ん中付近に記載されています。

GitLab information
Version:    12.14.10
Revision:   abcdefghifk
Directory:  /opt/gitlab/embedded/service/gitlab-rails
DB Adapter: PostgreSQL
DB Version: 9.6.11

2. アップグレードの流れ確認

ここが一番重要です。

この確認を怠ると後々大変なことになります。。

GitLabサーバーは、先ほど確認した現行バージョンに応じて
適切な段階を踏んでアップグレードする必要があります。
つまり、古いバージョンからいきなり最新バージョンに更新は無理です。(Ver.12.10 -> Ver14.6など)

詳しくはGitLab公式サイトをチェックしてください。

現在のGitLabバージョンが12.10.14と仮定した場合
Ver.14.6.2へのアップグレードは以下のような流れになります。
1段階アップグレードを進めるたびに、この手順を1周するイメージです。

12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.* -> 14.0.* -> 14.1.* -> 14.6.2

[*]には、任意の数字を入力してください。(リリースされているバージョン)

アップグレードの流れを確認できたら、実際にアップグレードを進めていきましょう。

1. バックアップ作成

バックアップはとにかく大事です。
困ったことになる前にバックアップしましょう。

GitLabのバックアップには2種類あります。

a. 各リポジトリのバックアップ

まずは、GitLabで管理している各リポジトリのバックアップを行いましょう
下記コマンドを入力するだけで、バックアップ作成を行なってくれます。

Ver.13くらいから、GitLabアップグレード時にもバックアップファイルを作成してくれますが、
念の為手動でも作成しておきましょう。
(バックアップの作りすぎで怒られることは滅多にないので、強気にいきましょう。)

sudo gitlab-backup create

バックアップ終了後/var/opt/gitlab/backupsのディレクトリ内を確認してください。
(バックアップディレクトリはgitlab.rbの設定から変更可能です。)

当日のバックアップファイルができていればバックアップ完了です。
`(例:12334567890_2021_12-22_13.8.8_gitlab_backup.tar)

b. 設定ファイルのバックアップ

さっきのコマンドだけでは、リポジトリの情報しかバックアップしてくれません。
しかし、/etc/gitlabディレクトリ内の設定ファイル群もバックアップしておいたほうが良いです。
下記コマンドで、手動バックアップを行いましょう。

sudo cp -ap /etc/gitlab <任意のディレクトリ>

どのバージョンから実装されたのか定かではないですが、
バージョンアップグレード時に設定ファイル群のバックアップも
自動で生成されるようになりました。

2. バックグラウンドマイグレーション確認

GitLabのバージョンを上げると、バックグラウンドでマイグレーションが走ります。
まだ、前のバージョンのマイグレーションが残っているのに、次のバージョンのアップグレードを
行なってしまうと、不具合に繋がります。
毎回、すべてマイグレーションが終了していることを確認しましょう。

GitLab Ver.13以降は、Terminal上でチェックします。
Terminalに下記のコマンドを入力してください。

sudo gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'

「0」と表示されればマイグレーションが終わっている証拠です。
次の行程に進みましょう。

3. パッケージリポジトリ追加

既にパッケージリポジトリを追加済みの方はこの処理を実行する必要はありません。
次の処理に進みましょう。
こちらを参考にして、GitLab構築した方はおそらく必要ないかと。。
(わからない方は、一旦スキップして次の処理に進んでください。)

ご自身のOSに応じて適切なコマンドを入力して、GitLab Community Edition のパッケージをダウンロードしてください。
※Enterprise Editionをお使いの場合は、gitlab-ceの部分をgitlab-eeに変更してください。

Ubuntu/Debian
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
CentOS
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

4. 指定バージョンをインストール(アップグレード)

アップグレードの流れをしっかり確認して、正しいバージョンをインストールしましょう。

Ubuntu/Debian
sudo apt-get install gitlab-ce-1*.**.**

#バージョン13.8.8をインストールしたい場合
sudo apt-get install gitlab-ce-13.8.8
CentOs
sudo yum install gitlab-ce-1*.**.**

#バージョン11.11.8をインストールしたい場合
sudo yum install gitlab-ce-13.8.8

下記のような表示が出れば成功です。

Running handlers:
Running handlers complete
Chef Infra Client finished, 66/720 resources updated in 01 minutes 09 seconds
gitlab Reconfigured!
Restarting previously running GitLab services
ok: run: gitaly: (pid 123) 1273s
ok: run: gitlab-workhorse: (pid 320) 0s
ok: run: logrotate: (pid 187) 1s
ok: run: postgresql: (pid 8) 4922s
ok: run: puma: (pid 18) 0s
ok: run: redis: (pid 12) 1342s
ok: run: sidekiq: (pid 160) 0s

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).

  検証中                  : gitlab-ce-13.8.8-ce.1.el7.x86_64                                                                                                                                                                                                                                                                                                          1/2 
  検証中                  : gitlab-ce-13.8.8-ce.0.el7.x86_64                                                                                                                                                                                                                                                                                                         2/2 

更新:
  gitlab-ce.x86_64 0:13.8.8-ce.1.el7                                                                                                                                                                                   

完了しました!

5. 動作確認

https://[GitLabが動作しているホスト]/helpにアクセスし、ページに表示される
GitLabのバージョンが上がっているか確認してください。
(アップグレード完了後大体1、2分で画面が確認できます。)

そして、各ページに遷移してみて、特にエラーなど出ないか動作確認してください。
何もなければ次に進みましょう。

6. バックアップファイル削除

1の行程で作成したバックアップファイルを削除しましょう。
別に残しておいても良いですが、GitLabのバックアップファイルのレストアは少し特殊でバックアップ作成時と異なるバージョンのGitLabにはリストアできません。
つまり、GitLab Ver.13.0.0で取得したバックアップは、Ver.13.0.1ではレストアできません。

7. 1に戻る

最後に

以上が、GitLabのVer.13 ~ Ver.14.6.2までのアップグレード手順です。
GitLabは公式ドキュメントがとても充実しているので、迷った際にはそちらを読んでみてください。
特にリリースノートには、重大な変更点などが
書き記されているので、随時確認するようにしてください。

GitLab Ver.13.5及びVer.14のアップデートに関しては、いくつか設定ファイルを変更する必要があります。
その変更ポイントについては、こちらをご覧ください。

もし、不明点・質問などあればコメント欄にて教えてください。
誰かの役に立ちますように。。

参考資料

Omnibus GitLabインストール手順
GitLab 13.0にアップデートする手順と注意点
Upgrading GitLab
Upgrade GitLab by using the GitLab package
GitLab Release Note
GitLab Tag List
PostgreSQL Requirement
Back up and restore GitLab
GitLab Package List