GitLab 13.0はメジャーバージョンアップのため、通常のアップデート作業とは異なる手順が必要です。 また、GitLabが使用するPostgreSQLの最小要求バージョンが10系から11系に上がっているので注意が必要です。
動作確認バージョン
この記事の内容は下記のバージョンと環境で動作確認をしました。
- GitLab Enterprise Edition 12.0.12
- インストール方法: Omnibusパッケージ
- OS: Ubuntu 18.04、およびCentOS 7
概要
GitLab 13.0にアップデートできるのは、GitLab 12.10からのみとなります。 そのため、GitLab 12.9以前のバージョンを使用している場合は、最初にGitLab 12.10にアップデートする必要があります。
また、GitLab 13.0からGitLabが使用するPostgreSQLの最小要求バージョンが10系から11系に上がっているので、 GitLab 13.0にアップデートする前に、PostgreSQLのバージョンを上げる必要があります。
リリースブログの「 Important notes on upgrading to GitLab 13.0」 セクションにアップデートでの注意点がまとまっているので、アップデートを行う前に確認することをおすすめします。
GitLab 12.10にアップデートする
GitLab 12.0 〜 GitLab 12.9からGitLab 12.10にアップデートするには下記のコマンドを実行します。 GitLab 11.11以前のバージョンからアップデートする場合は、最初にGitLab 12.0にアップデートしてから実施してください。
注: GitLab Community Editionを使用している場合は、gitlab-ce
に置き換えてください。
# Ubuntu
$ sudo apt-get install gitlab-ee=12.10.*
# CentOS
$ sudo yum install gitlab-ee-12.10.*
アップデートにはしばらく時間がかかります。 アップデートが完了したら、ブラウザでアクセスして正常に使用できることを確認してください。
PostgreSQLを11系にバージョンアップする
続いて、GitLabが使用するPostgreSQLを11系にバージョンアップします。 以降の手順はOmnibusパッケージにバンドルされているPostgreSQLを使用している場合の説明となります。 外部のPostgreSQLを使用する設定の場合は、それぞれの環境に合わせてPostgreSQLのバージョンアップを実施してください。
なお、GitLab 13.0にアップデートすると自動的にPostgreSQLのバージョンアップを実行されますが、 Zero downtime updates を使用している環境などでは自動的にアップデートされず下記のようなエラーが発生してアップデートに失敗します。
gitlab preinstall: Your version of PostgreSQL is no longer supported. Please upgrade your PostgreSQL version to 11.
そのため、GitLab 12.10にアップデートした段階でPostgreSQLを11系にバージョンアップしておくのが安全です。
PostgreSQLのバージョンアップ中はGitLabのダウンタイムが発生するので注意してください。 ダウンタイムの時間はデータ量によりますが、世界最大のGitLabインスタンスであるGitLab.comでは、 PostgreSQLのバージョンアップのために約2時間の計画メンテナンスを実施 しています。
PostgreSQLのバージョンアップでは、バージョンアップ前のデータをバックアップとして残すため、 少なくともPostgreSQLのデータ使用量以上のディスクの空き容量が必要です。 バージョンアップを実行する前にディスクに十分な空き容量があることを確認しましょう。
PostgreSQLのデータ使用量は下記のコマンドで確認できます。
注: デフォルトの保存先の場合の例です。設定を変更して使用している場合は、読み替えて実行してください。
$ sudo du -sh /var/opt/gitlab/postgresql/data
また、ディスクの空き容量は下記のコマンドで確認できます。
$ sudo df -h
もしも、データを配置しているパーティションに十分な空き容量がない場合は、pg-upgrade
コマンドの--tmp-dir $DIR
引数を利用して、 アップデートの作業ディレクトリを指定することができます。
ディレクトリの空き容量を確認したら、下記のコマンドでPostgreSQLのバージョンアップを実行しましょう。
$ sudo gitlab-ctl pg-upgrade
バージョンアップにはしばらく時間がかかります。 バージョンアップが完了したら、ブラウザでGitLabにアクセスして正常に動作していることを確認してください。
バージョンアップが完了したら、下記のコマンドでバックアップファイルを削除してください。
注: デフォルトの保存先の場合の例です。設定を変更して使用している場合は、読み替えて実行してください。
$ sudo rm -rf /var/opt/gitlab/postgresql/data.10
$ sudo rm -f /var/opt/gitlab/postgresql-version.old
PostgreSQLのバージョンアップについては、 公式ドキュメント が充実しているので、そちらも参照ください。
GitLab 13.0にアップデートする
続いて、下記のコマンドでGitLab 13.0にアップデートします。
注: GitLab Community Editionを使用している場合は、gitlab-ce
に置き換えてください。
# Ubuntu
$ sudo apt-get install gitlab-ee=13.0.*
# CentOS
$ sudo yum install gitlab-ee-13.0.*
アップデートにはしばらく時間がかかります。 アップデートが完了したら、ブラウザでアクセスして正常に使用できることを確認してください。
まとめ
GitLabのメジャーバージョンでは、普段のアップデート作業にはない手順が必要であったり、注意すべき点があったりします。 思わぬトラブルを発生させないように、GitLabのアップデートを実施する際は、普段からリリースブログをよく確認してから実施しましょう。
また、GitLabでは様々なインストール方法が提供されているので、どの方法が良いか迷うと方もいると思います。 そのような場合は、アップデート手順などの情報が最も充実しているので、 公式の推奨方法であるOmnibusパッケージでインストールすることをおすすめします。
カバーイメージの提供: Nikita Karimov on Unsplash