カテゴリー
インストール システム関連

Dockerコンテナで動いているGitlabをアップデートしようしたら面倒くさかった話し

広告

自社のQNAPサーバーでGitlabをDockerコンテナを動かしているけど、バージョンアップしろ、って出てくる。赤い表示はとても気になる。

自分でメンテナンスをしなければいけいないのはオンプレミスの面倒なところ。

現在は12.7.6である(上の画像では13.0.0になっているけど、最初のスクリーンショットを取り忘れた)。Rubyで書かれたサイトのバージョンアップはうまく行ったためしがない。Rubyのサイトのバージョンアップをしていると、Rubyのためかサイトのためか、バージョンアップしているのかわからなくなるのが辛い。

このままでは放っておけないので、重い腰を上げてGitlabをバージョンアップしてみる。下調べすると、とてもGitlabのバージョンアップをするのに面倒なことが書いてある。一発でバージョンアップできないようだ。Gitlabのサポートページによると、とっても簡単だと書いてあるけど、これは信じてはいけない。

Update | GitLab Docker images | GitLab

参考にしたサイトは以下のサイトである。

GitLab 13リリース!!(アップデートでハマった。。。) – Qiita

それとGitlabのサポートページに書いてあるメジャーバージョンアップの項目である。

Upgrading major versions | GitLab release and maintenance policy | GitLab

ようするにメジャーバージョンアップは一つづつやれってこと。試しに一気にlatestにまでバージョンアップしたら、案の定動かなかった。つまり、自分のところではGitlabのサポートページに従うと、

12.7.6 -> 12.10.0 -> 13.0.0 -> latest(13.2.1)

と3回の作業が必要となる。12.10.0でデーターベースのPostgreSQLがバージョンしたらしくてマイナーバージョンアップでも一旦バージョンアップしなくていけないそうだ(そんなの知るか!状態)。

念のためにその都度バックアップをとっておく。QNAPのContainerStationを使いながら、以下の操作を繰り返す。

  1. gitlab-rake gitlab:backup:create でGitlabのデータをバックアップ
  2. Gitlabコンテナ停止
  3. Gitlabコンテナ削除
  4. docker-compose.ymlのimageのバージョン書き換え
  5. Gitlabコンテナ起動
  6. Gitlab動作確認

やることは単純だけど、これを3回繰り返すと無事に最新のGitlabにバージョンアップされた。Gitlabのサポートページの言ったとおり簡単だった?

だけど、「データーベースのバージョンアップも途中でやれ」って、あるサイトに書かれていたけど、バージョンアップでコンテナを起動するたびに、自動的にデーターベースのマイグレーションが実行しているようなので、データーベースのバージョンアップはやる必要はなかった。これは後で書いてあるOmnibus GitLab packageのおかげだったのかな?

ついでに同じくRubyで動いているRedmineのコンテナもバージョンアップしておく。こちらは一度プラグインを削除してから、一気に最新版にバージョンをあげる。こちらもコンテナのイメージのバージョンを最新版にして、今のコンテナを削除してから起動する。問題無く最新バージョンにアップデートしてくれた。

以上で、鬼門であるRubyで動いているサイトのバージョンアップが完了した。何かトラブルがあるとRubyのシステムはお手上げ。

そう言えばGilabでデーターベースはPostgreSQLだけど、同じQNAPのPostgreSQLを接続しに行かないなと思ったら、Gitlabのコンテナの中でPostgreSQLも含んで動かしているのね。それがOmnibus GitLab packageだそうだ。初めって知った。もっとドキュメントを読めや。> 自分

広告

追記(2020年7月26日)

RedmineとGitlabのリポジトリの連携をした。やることは以前の記事と同じだけど、最初はうまくできなかった。

以上を設定してRedmineのプロジェクトのリポジトリタブにアクセスすると、505インターナルエラーが出てしまって困ったけど、これって裏で一生懸命にリポジトリの処理しているから時間がかかっているだけだった。しばらくすると、正常にリポジトリの表示ができた。

あと、今までのGitlabでクローンするときはHTTPSでアクセスすると、何かライブラリのトラブルで認証のエラーをしていたけど、これがなくなっていた。これはバージョンアップしておいてよかった一つ。

広告