毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
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でしか利用できませんでした。
しかし、14.5から無償版でも利用できるようになります!!
注: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. 以下のような工程が必要に (訂正あり)
- Ubuntu 16.04 LTSから18.04 LTSにアップグレード
- GitLab CE 13.12.15からGitLab CE 14.0.12にアップグレード
- GitLab CE 14.0.12からGitLab CE 14.1.8にアップグレード
- GitLab CE 14.1.8から
GitLab CE 14.2.6にアップグレード GitLab CE 14.2.6からGitLab CE 14.3.4にアップグレード-
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.4
は、一つずつ~~アップグレードする必要があります(😱)。14.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」>タブの「キュー済」を見ます。
まだジョブは完了していないようです。「完了」タブを見ます。
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
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
バックグラウンドのマイグレーションジョブはありませんでした。
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. まとめ
アップグレードが完了しました。
次は14.5ですね。