7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitLabAdvent Calendar 2021

Day 2

GitLab 13.12.15からGitLab 14.4.2までアップグレード

Last updated at Posted at 2021-12-01

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

0. はじめに

なぜ、GitLabを14.4.2までアップグレードしたかったか?
簡単に言うとGitLab Kubernetes Agent available in GitLab Freeを使いたかったから。

0-1. GitLab Kubernetes Agentてなに?

簡単に言うとKubernetesクラスターとGitLabを連携させる機能です。

GitLab Kubernetes Agent | GitLab
https://docs.gitlab.com/ee/user/clusters/agent/

これまでもKubernetesクラスターとGitLabを連携させる機能はありました。
しかし、これまではGitLabからKubernetesへ接続していました。

GitLab(Kubernetes認証情報) ---(Push)--> Kubernetes

しかし、これには問題があります。
GitLab側にKubernetesの認証情報をがっつり保存しないといけないのです。
それの何が問題かというと、Kubernetesの認証情報というのはKubernetesのすべてをコントロールできる設定なので、その認証情報が万が一漏洩したときの影響が甚大すぎるのです。
もし、GitLabが複数のKubernetesへ連携していた場合にGitLabサーバーが1台乗っ取られるとその配下のすべてのKubernetesがコントロールできるということになり、目も当てられない状況になる可能性がありました。

また、GitLabからKubernetesへ接続する必要があるので、GitLab.comからKubernetesクラスターへ接続しようとしても、KubernetesクラスターがGitLab.comからIPリーチャブルな所にある必要があり、Kubernetesクラスターがインターネット上からアクセスできる場所になければならないという2重にやばい状況だったわけです。

それを解消するのが、GitLab Kubernetes Agentです。
これは、GitLabからKubernetesクラスターへ接続する方向を取りやめ、KubernetesクラスターからGitLabへ接続して連携するという方向に変わりました。

Kubernetes(GitLab Kubernetes Agent) --(Pull)--> GitLab

これなら、認証情報をGitLab側に設定する必要も無く、KubernetesがGitLabへPullポーリングをかけるという方法なので、Kubernetesクラスターをインターネット上にさらす必要もありません。

0-2. GitLab Kubernetes Agentが無料になります!

GitLab Kubernetes Agentは導入当初(13.4)は、Premium Editionでしか利用できませんでした。

image.png

しかし、14.5から無償版でも利用できるようになります!! :tada:

注:Agent’s GitOps workflow機能とGitOps deployments機能とKubernetes Network Security Alerts機能は有償版のみの機能です。

0-3. OSのバージョンアップが必要

GitLabをバージョン14.5にバージョンアップしたい!(執筆時点では未リリース)となったのですが、GitLabがインストールされているOSがUbuntu 16.04 LTSでした。そのため、GitLabのバージョンが13.12.15で止まっていました(16.04がサポート終了なので提供されるGitLabパッケージも提供が終了しています)。

0-4. 以下のような工程が必要に :cry:(訂正あり)

  1. Ubuntu 16.04 LTSから18.04 LTSにアップグレード
  2. GitLab CE 13.12.15からGitLab CE 14.0.12にアップグレード
  3. GitLab CE 14.0.12からGitLab CE 14.1.8にアップグレード
  4. GitLab CE 14.1.8からGitLab CE 14.2.6にアップグレード
  5. GitLab CE 14.2.6からGitLab CE 14.3.4にアップグレード
  6. GitLab CE 14.3.4からGitLab CE 14.4.2にアップグレード

はじめは、13.12.15から14.4.2に飛ばしてアップグレードできると思ったのですが、そうはいきませんでした。13系から14系にメジャーアップグレードが入っています。まず、これを乗り越える必要がありました。

さらに、14系からBatched background migrationsというのが導入され、14.0.12から~~14.3.414.1.8までは、一つずつ~~アップグレードする必要があります(😱)。

Note:
それ以降 14.1.Yから最新まではBatched background migrationsで一気にアップグレード可能です。(@wadakatu さん、情報ありがとうございました)

1. OSアップグレード

OSのアップグレードは以下のようにするだけです。

sudo do-release-upgrade

途中設定ファイルをパッケージの新しいものにするか、既存のものにするかという対話的操作が必要になりますので、ターミナルは開いたままにしておきましょう。

2. GitLab CE 13.12.15からGitLab CE 14.0.12にアップグレード

最新版の14.4.2が出ているので、sudo apt upgradeでは以下のようなエラーになります。

The following packages will be upgraded: 
  gitlab-ce 
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 
Need to get 0 B/957 MB of archives. 
After this operation, 190 MB of additional disk space will be used. 
Reading changelogs... Done 
(Reading database ... 183467 files and directories currently installed.) 
Preparing to unpack .../gitlab-ce_14.4.2-ce.0_amd64.deb ... 
gitlab preinstall: It seems you are upgrading from major version 13 to major version 14. 
gitlab preinstall: It is required to upgrade to the latest 14.0.x version first before proceeding. 
gitlab preinstall: Please follow the upgrade documentation at https://docs.gitlab.com/ee/update/index.html#upgrade- 
dpkg: error processing archive /var/cache/apt/archives/gitlab-ce_14.4.2-ce.0_amd64.deb (--unpack): 
 new gitlab-ce package pre-installation script subprocess returned error exit status 1 
Errors were encountered while processing: 
 /var/cache/apt/archives/gitlab-ce_14.4.2-ce.0_amd64.deb 
E: Sub-process /usr/bin/dpkg returned an error code (1)

「メジャーアップグレードになるので、14.0.xに先にアップデートしてね」と言われます。
なので、以下のようにアップグレードします。

sudo apt upgrade gitlab-ce=14.0.12-ce.0

アップグレードが終わったら以下のようにreconfigureしてdb:migrateしましょう。

SKIP_POST_DEPLOYMENT_MIGRATIONS=true sudo gitlab-ctl reconfigure
sudo gitlab-rake db:migrate
sudo gitlab-ctl hup puma
sudo gitlab-ctl restart sidekiq

GitLabが起動したらBackGround Migrationsを確認します。
「管理」>「監視」>「BackGround Migrations」>タブの「キュー済」を見ます。
image.png
まだジョブは完了していないようです。「完了」タブを見ます。
image.png

完了まで待ちます。
image.png
完了したので次に進みます。

3. GitLab CE 14.0.12からGitLab CE 14.1.8にアップグレード

あとは、これを繰り返します。

sudo apt upgrade -y gitlab-ce=14.1.8-ce.0
SKIP_POST_DEPLOYMENT_MIGRATIONS=true sudo gitlab-ctl reconfigure
sudo gitlab-rake db:migrate
sudo gitlab-ctl hup puma
sudo gitlab-ctl restart sidekiq

バックグラウンドのマイグレーションジョブはありませんでした。

4. GitLab CE 14.1.8からGitLab CE 14.2.6にアップグレード(訂正追記:GitLab CE 14.4.2までアップグレード可能です)

以下のコマンドでアップグレードします。

sudo apt upgrade -y gitlab-ce=14.2.6-ce.0 
SKIP_POST_DEPLOYMENT_MIGRATIONS=true sudo gitlab-ctl reconfigure
sudo gitlab-rake db:migrate 
sudo gitlab-ctl hup puma 
sudo gitlab-ctl restart sidekiq

マイグレーション完了後のものだけ示します。
image.png

5. GitLab CE 14.2.6からGitLab CE 14.3.4にアップグレード(訂正追記:GitLab CE 14.4.2までアップグレード可能です)

以下のコマンドでアップグレードします。

sudo apt upgrade -y gitlab-ce=14.3.4-ce.0 
SKIP_POST_DEPLOYMENT_MIGRATIONS=true sudo gitlab-ctl reconfigure
sudo gitlab-rake db:migrate 
sudo gitlab-ctl hup puma 
sudo gitlab-ctl restart sidekiq

バックグラウンドのマイグレーションジョブはありませんでした。
image.png

6. GitLab CE 14.3.4からGitLab CE 14.4.2にアップグレード(訂正追記:GitLab CE 14.1.8からアップグレード可能です)

以下のコマンドでアップグレードします。

sudo apt upgrade -y gitlab-ce=14.4.2-ce.0 
SKIP_POST_DEPLOYMENT_MIGRATIONS=true sudo gitlab-ctl reconfigure
sudo gitlab-rake db:migrate 
sudo gitlab-ctl hup puma 
sudo gitlab-ctl restart sidekiq

マイグレーションバックグラウンドジョブなし

7. まとめ

アップグレードが完了しました。

image.png

次は14.5ですね。

7
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?