从GitLab 13.12.15版本升级至GitLab 14.4.2版本

我们提供每次搜索都找不到的小细节。
本文是个人观点,与我所在的任何组织无关。

0. 首先

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

0-1. GitLab的Kubernetes代理是什么?

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

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

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

GitLab(Kubernetes认证信息)—(推送)—> 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代理)–(拉取)–> GitLab

这样一来,您无需在GitLab上设置认证信息,Kubernetes会通过向GitLab发起Pull轮询的方式实现,因此无需将Kubernetes集群暴露在互联网上。

0-2. GitLab的Kubernetes代理将免费提供!

GitLab Kubernetes Agent在最初引入时(13.4版本),只能在Premium Edition中使用。

image.png

但是,从14.5版本开始,即使是免费版也可以使用!!

注意:Agent的GitOps工作流功能、GitOps部署功能和Kubernetes网络安全警报功能仅适用于付费版本。

0-3. 需要更新操作系统版本

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

0-4. 需要以下的工序 (有修正)

    1. 从Ubuntu 16.04 LTS升级到18.04 LTS

 

    1. 从GitLab CE 13.12.15升级到GitLab CE 14.0.12

 

    1. 从GitLab CE 14.0.12升级到GitLab CE 14.1.8

 

    1. 从GitLab CE 14.1.8升级到GitLab CE 14.2.6

 

    1. 从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.414.1.8版本,需要逐个进行升级(?)。

注意:
从14.1.Y版本开始,可以通过批量背景迁移一次性升级到最新版本。(@wadakatu先生,谢谢您的信息)

1. 操作系统升级

只需按照以下步骤进行操作即可进行操作系统升级。

sudo do-release-upgrade

由于需要进行对话式操作,来决定将途中设置文件更改为新的包或现有的包,所以请保持终端处于打开状态。

从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

升级完成后,请按照以下步骤重新配置并进行数据库迁移。

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
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

从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对吧。

广告
将在 10 秒后关闭
bannerAds