・GitLabをバージョンアップする手順を知りたい。
・バージョン13からバージョン15まで順番にバージョンアップする手順を詳しく教えてほしい。
こういった疑問に答えます。
本記事の内容
- GitLabをバージョンアップする手順(13.11.14から15.0.2へ)
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
GitLabをバージョンアップする手順(13.11.14から15.0.2へ)
GitLabのアップグレードパス
GitLabのバージョンアップをしばらくさぼっていた場合、いきなり最新バージョンに上げることができません。
Upgrade paths
Upgrading across multiple GitLab versions in one go is only possible by accepting downtime. The following examples assume downtime is acceptable while upgrading. If you don’t want any downtime, read how to upgrade with zero downtime.Find where your version sits in the upgrade path below, and upgrade GitLab accordingly, while also consulting the version-specific upgrade instructions:
8.11.Z -> 8.12.0 -> 8.17.7 -> 9.5.10 -> 10.8.7 -> 11.11.8 -> 12.0.12 -> 12.1.17 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.15 -> 14.0.12 -> 14.3.6 -> 14.9.5 -> 14.10.Z -> 15.0.Z -> latest 15.Y.Z
The following table, while not exhaustive, shows some examples of the supported upgrade paths.
Additional steps between the mentioned versions are possible. We list the minimally necessary steps only.
https://docs.gitlab.com/ee/update/#upgrade-paths
具体的なバージョンアップ手順
今回の私の環境でやりたいことは以下です。
- 現在のバージョン:GitLab Community Edition 13.11.4
- 更新後のバージョン:GitLab Community Edition 15.0.2
アップグレードパス
更新前 | 更新後 | メモ |
---|---|---|
13.11.4 | 13.12.15 | |
13.12.15 | 14.0.12 | 14に更新する前にunicorn を無効化してpuma を有効化 |
14.0.12 | 14.3.6 | 更新後に手動でマイグレーションコマンド実行が必要 |
14.3.6 | 14.9.5 | |
14.9.5 | 14.10.4 | |
14.10.4 | 15.0.2 |
現在のバージョンを確認
[root@SV-MARS ~]# gitlab-rake gitlab:env:info System information System: Current User: git Using RVM: no Ruby Version: 2.7.2p137 Gem Version: 3.1.4 Bundler Version:2.1.4 Rake Version: 13.0.3 Redis Version: 6.0.12 Git Version: 2.31.1 Sidekiq Version:5.2.9 Go Version: unknown GitLab information Version: 13.11.4 Revision: cea3c37b30e Directory: /opt/gitlab/embedded/service/gitlab-rails DB Adapter: PostgreSQL DB Version: 12.6 URL: https://gitlab.sv-mars.planet.space.com HTTP Clone URL: https://gitlab.sv-mars.planet.space.com/some-group/some-project.git SSH Clone URL: git@gitlab.sv-mars.planet.space.com:some-group/some-project.git Using LDAP: no Using Omniauth: yes Omniauth Providers: GitLab Shell Version: 13.17.0 Repository storage paths: - default: /var/opt/gitlab/git-data/repositories GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell Git: /opt/gitlab/embedded/bin/git
https://gitlab.sv-mars.planet.space.com/help
アップグレードコマンド 13.11.4 ->13.12.15
dnf install gitlab-ce-13.12.15-ce.0.el8.x86_64
gitlab-ctl reconfigure
gitlab-ctl restart
[root@SV-MARS ~]# dnf install gitlab-ce-13.12.15-ce.0.el8.x86_64 gitlab_gitlab-ce 319 B/s | 862 B 00:02 gitlab_gitlab-ce-source 266 B/s | 862 B 00:03 依存関係が解決しました。 ==================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ==================================================================================================== アップグレード: gitlab-ce x86_64 13.12.15-ce.0.el8 gitlab_gitlab-ce 881 M トランザクションの概要 ==================================================================================================== アップグレード 1 パッケージ ダウンロードサイズの合計: 881 M これでよろしいですか? [y/N]: y パッケージのダウンロード: gitlab-ce-13.12.15-ce.0.el8.x86_64.rpm 5.9 MB/s | 881 MB 02:29 ---------------------------------------------------------------------------------------------------- 合計 5.9 MB/s | 881 MB 02:30 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 scriptletの実行中: gitlab-ce-13.12.15-ce.0.el8.x86_64 1/2 gitlab preinstall: Automatically backing up only the GitLab SQL database (excluding everything else!) ~~~~~~~~~~~~~~~(中略)~~~~~~~~~~ gitlab Reconfigured! Restarting previously running GitLab services ok: run: alertmanager: (pid 2515215) 0s ok: run: gitaly: (pid 1880) 1471501s ok: run: gitlab-exporter: (pid 2515218) 1s ok: run: gitlab-workhorse: (pid 2515202) 2s ok: run: grafana: (pid 2515223) 0s ok: run: logrotate: (pid 2515228) 0s ok: run: nginx: (pid 2515235) 1s ok: run: node-exporter: (pid 2515237) 0s ok: run: postgres-exporter: (pid 2515250) 1s ok: run: postgresql: (pid 1882) 1471504s ok: run: prometheus: (pid 2515258) 0s ok: run: puma: (pid 2515264) 1s ok: run: redis: (pid 1881) 1471505s ok: run: redis-exporter: (pid 2515272) 0s ok: run: sidekiq: (pid 2515275) 1s _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/ Upgrade complete! If your GitLab server is misbehaving try running sudo gitlab-ctl restart before anything else. If you need to roll back to the previous version you can use the database backup made during the upgrade (scroll up for the filename). scriptletの実行中: gitlab-ce-13.11.4-ce.0.el8.x86_64 2/2 検証 : gitlab-ce-13.12.15-ce.0.el8.x86_64 1/2 検証 : gitlab-ce-13.11.4-ce.0.el8.x86_64 2/2 アップグレード済み: gitlab-ce-13.12.15-ce.0.el8.x86_64 完了しました!
[root@SV-MARS ~]# gitlab-ctl reconfigure Starting Chef Infra Client, version 15.14.0 resolving cookbooks for run list: ["gitlab"] Synchronizing Cookbooks: ~~~~~~~~~~~~~~~(中略)~~~~~~~~~~ Running handlers: Running handlers complete Chef Infra Client finished, 3/800 resources updated in 15 seconds Deprecations: * unicorn['worker_processes'] has been deprecated since 13.10 and will be removed in 14.0. Starting with GitLab 14.0, Unicorn is no longer supported and users must switch to Puma, following https://docs.gitlab.com/ee/administration/operations/puma.html. Warnings: The version of the running redis service is different than what is installed. Please restart redis to start the new version. sudo gitlab-ctl restart redis gitlab Reconfigured!
[root@SV-MARS ~]# gitlab-ctl restart ok: run: alertmanager: (pid 2518632) 1s ok: run: gitaly: (pid 2518640) 1s ok: run: gitlab-exporter: (pid 2518665) 1s ok: run: gitlab-workhorse: (pid 2518669) 0s ok: run: grafana: (pid 2518675) 1s ok: run: logrotate: (pid 2518683) 0s ok: run: nginx: (pid 2518691) 1s ok: run: node-exporter: (pid 2518699) 0s ok: run: postgres-exporter: (pid 2518707) 0s ok: run: postgresql: (pid 2518715) 0s ok: run: prometheus: (pid 2518794) 1s ok: run: puma: (pid 2518810) 1s ok: run: redis: (pid 2518815) 0s ok: run: redis-exporter: (pid 2518824) 1s ok: run: sidekiq: (pid 2518831) 0s
14に更新する前の設定変更(unicornを無効化しpumaを有効化)
GitLabの13から14に更新しようとすると、以下のエラーが出ます。
トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 scriptletの実行中: gitlab-ce-14.0.12-ce.0.el8.x86_64 1/2 * unicorn['worker_processes'] has been deprecated since 13.10 and was removed in 14.0. Starting with GitLab 14.0, Unicorn is no longer supported and users must switch to Puma, following https://docs.gitlab.com/ee/administration/operations/puma.html. Deprecations found. Please correct them and try again. エラー: %prein(gitlab-ce-14.0.12-ce.0.el8.x86_64) スクリプトの実行に失敗しました。終了ステータス 1 Error in PREIN scriptlet in rpm package gitlab-ce 検証 : gitlab-ce-14.0.12-ce.0.el8.x86_64 1/2 検証 : gitlab-ce-13.12.15-ce.0.el8.x86_64 2/2
設定ファイルを書き換えます。
/etc/gitlab/gitlab.rb
unicorn
の部分をコメントアウトして、逆に、puma
の部分のコメントを外します。
868 ## GitLab Unicorn 869 ##! Tweak unicorn settings. 870 ##! Docs: https://docs.gitlab.com/omnibus/settings/unicorn.html 871 ################################################################################ 872 873 # unicorn['enable'] = false 874 # unicorn['worker_timeout'] = 60 875 ###! Minimum worker_processes is 2 at this moment 876 ###! See https://gitlab.com/gitlab-org/gitlab-foss/issues/18771 877 #unicorn['worker_processes'] = 2 878 879 ### Advanced settings 880 # unicorn['listen'] = 'localhost' 881 # unicorn['port'] = 8080 882 # unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket' 883 # unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid' 884 # unicorn['tcp_nopush'] = true 885 # unicorn['backlog_socket'] = 1024 886 887 ###! **Make sure somaxconn is equal or higher then backlog_socket** 888 # unicorn['somaxconn'] = 1024 889 890 ###! **We do not recommend changing this setting** 891 # unicorn['log_directory'] = "/var/log/gitlab/unicorn" 892 893 ### **Only change these settings if you understand well what they mean** 895 ###! https://github.com/kzk/unicorn-worker-killer 896 # unicorn['worker_memory_limit_min'] = "1024 * 1 << 20" 897 # unicorn['worker_memory_limit_max'] = "1280 * 1 << 20" 898 899 # unicorn['exporter_enabled'] = false 900 # unicorn['exporter_address'] = "127.0.0.1" 901 # unicorn['exporter_port'] = 8083 902 903 ################################################################################ 904 ## GitLab Puma 905 ##! Tweak puma settings. You should only use Unicorn or Puma, not both. 906 ##! Docs: https://docs.gitlab.com/omnibus/settings/puma.html 907 ################################################################################ 908 909 puma['enable'] = true 910 puma['ha'] = false 911 puma['worker_timeout'] = 60 912 puma['worker_processes'] = 2 913 puma['min_threads'] = 4 914 puma['max_threads'] = 4 915 916 ### Advanced settings 917 puma['listen'] = '127.0.0.1' 918 puma['port'] = 8080 919 puma['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket' 920 puma['pidfile'] = '/opt/gitlab/var/puma/puma.pid' 921 puma['state_path'] = '/opt/gitlab/var/puma/puma.state' 922 923 ###! **We do not recommend changing this setting** 924 # puma['log_directory'] = "/var/log/gitlab/puma" 925 926 ### **Only change these settings if you understand well what they mean** 927 ###! Docs: https://github.com/schneems/puma_worker_killer 928 # puma['per_worker_max_memory_mb'] = 850 929 930 # puma['exporter_enabled'] = false 931 # puma['exporter_address'] = "127.0.0.1" 932 # puma['exporter_port'] = 8083
アップグレードコマンド 13.12.15 ->14.0.12
dnf install gitlab-ce-14.0.12-ce.0.el8.x86_64
gitlab-ctl reconfigure
gitlab-ctl restart
アップグレードコマンド 14.0.12 ->14.3.6
dnf install gitlab-ce-14.3.6-ce.0.el8.x86_64
gitlab-ctl reconfigure
gitlab-ctl restart
reconfigureの後、以下のエラーが発生しました。
There was an error running gitlab-ctl reconfigure: rails_migration[gitlab-rails] (gitlab::database_migrations line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: bash[migrate gitlab-rails database] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1' ---- Begin output of "bash" "/tmp/chef-script20220611-1944-1qnl8xf" ---- STDOUT: rake aborted! StandardError: An error has occurred, all later migrations canceled: Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active': {:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", :table_name=>"ci_stages", :column_name=>"id", :job_arguments=>[["id"], ["id_convert_to_bigint"]]} Finalize it manualy by running sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_stages,id,'[["id"]\, ["id_convert_to_bigint"]]'] For more information, check the documentation https://docs.gitlab.com/ee/user/admin_area/monitoring/background_migrations.html#database-migrations-failing-because-of-batched-background-migration-not-finished /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1109:in `ensure_batched_background_migration_is_finished' /opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210707210916_finalize_ci_stages_bigint_conversion.rb:13:in `up' /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:31:in `ddl_transaction' /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:61:in `block (3 levels) in <top (required)>' /opt/gitlab/embedded/bin/bundle:23:in `load' /opt/gitlab/embedded/bin/bundle:23:in `<main>' Caused by: Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active': {:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", :table_name=>"ci_stages", :column_name=>"id", :job_arguments=>[["id"], ["id_convert_to_bigint"]]} Finalize it manualy by running sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_stages,id,'[["id"]\, ["id_convert_to_bigint"]]'] For more information, check the documentation https://docs.gitlab.com/ee/user/admin_area/monitoring/background_migrations.html#database-migrations-failing-because-of-batched-background-migration-not-finished /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:1109:in `ensure_batched_background_migration_is_finished' /opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210707210916_finalize_ci_stages_bigint_conversion.rb:13:in `up' /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:31:in `ddl_transaction' /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:61:in `block (3 levels) in <top (required)>' /opt/gitlab/embedded/bin/bundle:23:in `load' /opt/gitlab/embedded/bin/bundle:23:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace) == 20210707210916 FinalizeCiStagesBigintConversion: migrating ================= STDERR: ---- End output of "bash" "/tmp/chef-script20220611-1944-1qnl8xf" ---- Ran "bash" "/tmp/chef-script20220611-1944-1qnl8xf" returned 1 Running handlers complete Chef Infra Client failed. 3 resources updated in 02 minutes 02 seconds
指示に従って、手動でマイグレーションを実行します。
gitlab-rake db:migrate
アップグレードコマンド 14.3.6 -> 14.9.5
dnf install gitlab-ce-14.9.5-ce.0.el8.x86_64
アップグレードコマンド 14.9.5 -> 14.10.4
dnf install gitlab-ce-14.10.4-ce.0.el8.x86_64
アップグレードコマンド 14.10.4 -> 15.0.2
dnf install gitlab-ce-15.0.2-ce.0.el8.x86_64
更新後のバージョンを確認
502エラーが起きたら
GitLabをバージョンアップすると、502エラーが出ました。
バージョンアップ直後の1~2分くらいは、502エラーが出ますが、待っていれば自動で回復します。
インフラエンジニアになるための勉強のやり方
私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
現在の会社で直接担当している業務の中では、決まった技術しか触れないけれど、
「他にも将来役に立ちそうなインフラ技術を勉強したい」「働きながらでもできる効率的なインフラエンジニアの勉強方法を知りたい」と考えている方のために、
①おすすめの書籍と、②おススメのオンライン学習サイトを紹介します。
働きながら勉強するための、おススメの書籍と、オンラインで学習できるサイトの紹介です。
インフラエンジニアの勉強ができるおススメ書籍
朝の通勤時や帰宅時の電車の中や、社外打合せへの移動中などに勉強するなら、やはり書籍が一番だと思います。
インフラエンジニアの教科書
LINE社に創業時から在籍しているインフラエンジニア・プロマネの「佐野裕」さんの本です。 twitter.com
膨大なトラフィックをさばくLINE社にて構築・保守を行っている現役エンジニアが記すITインフラの必須知識と経験の数々! サーバ、OS、ネットワーク機器、データセンター、購買と商談、障害対応、大規模インフラ、成長するために必要なスキルなど、基礎知識から実践まで言及。 ITインフラの世界が理解できる珠玉の1冊!
インフラエンジニアの教科書 (C&R研究所) 佐野裕 |
1週間でLPICの基礎が学べる本
Linuxの資格「LPIC」の試験対策を初心者向けに書いた入門書です。
Linuxの資格として広く知られているLPICですが、あまり知識の無いまま試験対策を始める人も多いのではないでしょうか。しかし、試験対策書は試験範囲についてのみ解説しているものが多く、初心者が理解するのは困難です。本書は、初心者がスムーズに試験対策を行えるよう、事前に基礎固めを行うLinux入門書です。試験情報や模擬問題も掲載しているので、資格取得を視野に入れた効率的な基礎学習が行えます。
1週間でLPICの基礎が学べる本 第3版 徹底攻略シリーズ (インプレス) 中島能和 |
インフラエンジニアの勉強ができるオンライン学習サイト
Udemy (オンライン動画学習サイト)
Udemy(ユーデミー)は、オンラインで動画で学習できるサービスです。
ITエンジニア系の講座もたくさん公開されています。
Udemyの特徴
- ユーザー登録すれば、第1回の講座は無料で視聴できる
- 無料のコンテンツもある
- 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい
以上、読んでいただきありがとうございました。