更新履歴

icon
 古場 正行   2020/10/10 13:04

現在との差分
History → Now CHANGED
@@ -1,14 +1,21 @@
1
1
# はじめに
2
2
- [GitLab](https://about.gitlab.com/) はバージョン 13.0 から hashed storage に対応しており、今までのストレージを legacy storage と呼んで非推奨としている。
3
+ - GitLab 13.0 以上で環境を構築してプロジェクトやリポジトリを作成した場合は既に hashed storage になっているのだが、GitLab 12.x.x 以下で環境を構築していてる場合は、当然 legacy storage で動いている。
3
- - GitLab 13.4 に上げると hashed storage に強制移行させられてしまうのだが、この時、プロジェクトのリポジトリが消えてしまうトラブルに遭遇してしまうことがある。
4
+ - GitLab 12.x.x 以下の環境を GitLab 13.0.0〜13.3.x に上げても legacy storage のままで動作してくれるが、そこから GitLab 13.4.0 以上に上げると hashed storage に強制移行させられてしまう。この時、非常に高い確率で__プロジェクトのリポジトリが消えてしまうトラブル__に遭遇することになる。
4
- - [GitLab 14 では legacy storage サポート打ち切りのアナウンスが出ている](https://docs.gitlab.com/ee/////administration/repository_storage_types.html#legacy-storage)ので、今のうちに hashed storage に移行した方が良い。以下、その手順を示す。<br />※ 本手順は [docker-compose を使って起動している GitLab](https://docs.gitlab.com/omnibus/docker/#install-gitlab-using-docker-compose) を前提とする。
5
+ - [GitLab 14 では legacy storage サポート打ち切りのアナウンスが出ている](https://docs.gitlab.com/ee/////administration/repository_storage_types.html#legacy-storage)ので、今のうちに hashed storage に移行した方が良い。以下、その手順を示す。
6
+ - 本手順は [docker-compose を使って起動している GitLab](https://docs.gitlab.com/omnibus/docker/#install-gitlab-using-docker-compose) を前提とする。<br />⇒ 上記のリンク先の解説を試す時は、`gitlab-ee``gitlab-ce` に置き換えること。
5
7
8
+ ## なぜこのナレッジを書いたのか?
9
+ - この謎のリポジトリ消失問題を解決するまでに結構な期間悩んでしまったので、「自力で GitLab を動作させている方々のトラブル防止や解決の一助になれば…」と思って書かせていただいた。
10
+
11
+ ---
12
+
6
13
# 移行手順
7
- - GitLab 13.4.0 以上に上げてしまう前に、GitLab 13.0.x〜13.3.x のどこかの実行環境で legacy storagehashed storage にマイグレーションしてしまうのがお勧めである。
14
+ - ポイント:<br />GitLab 13.4.0 以上に上げてしまう前に、GitLab 13.0.013.3.x のどこかの実行環境で legacy storage を hashed storage にマイグレーションしてしまうのがお勧めである。
8
15
9
16
## 手順&#9312; runner registration tokens の削除
10
- - GitLab 13.0.x〜13.3.x の環境で runner registration tokens を全て削除する。
17
+ - GitLab 13.0.0〜13.3.x の環境で runner registration tokens を全て削除する。
11
18
```
12
19
docker-compose exec gitlab gitlab-rails dbconsole
13
20
```
14
21
```
@@ -20,9 +27,9 @@
20
27
UPDATE application_settings SET runners_registration_token_encrypted = null;
21
28
-- Clear runner tokens
22
29
UPDATE ci_runners SET token = null, token_encrypted = null;
23
30
```
24
- - これをやっておかないと、後述の `gitlab-rake gitlab:storage:migrate_to_hashed` の実行の時に hashed_storage:hashed_storage_project_migrate”で“OpenSSL::Cipher::CipherError:”が発生してリポジトリのマイグレーションに失敗する可能性がある。
31
+ - これをやっておかないと、後述の `gitlab-rake gitlab:storage:migrate_to_hashed` の実行の時に hashed_storage:hashed_storage_project_migrate で `OpenSSL::Cipher::CipherError:` が発生してリポジトリのマイグレーションに失敗する可能性がある。
25
32
- もちろん、runner registration tokens を削除せずにマイグレーションに成功すれば御の字である。最初はこの手順&#9312;を飛ばしてこの次の手順&#9313;から実行し、マイグレーションに失敗したらバックアップを書き戻してここからやり直すのもいいだろう。
26
33
- 参考:[Reset runner registration tokens](https://docs.gitlab.com/ce/raketasks/backup_restore.html#reset-runner-registration-tokens)
27
34
28
35
## 手順&#9313; gitlab-rake gitlab:storage:migrate_to_hashed の実行
@@ -30,9 +37,9 @@
30
37
```
31
38
docker-compose exec gitlab gitlab-rake gitlab:storage:migrate_to_hashed
32
39
```
33
40
- このコマンドを実行した後に GitLab の管理者エリアの“監視”→“バックグラウンドジョブ”を開くと、マイグレーションの進行状況やマイグレーション終了時のエラーの有無を確認することができる。
34
- - マイグレーションが終了した時に“OpenSSL::Cipher::CipherError:” のようなエラーが発生していたらマイグレーションに失敗している。このエラーが発生した場合は、バックアップを書き戻してマイグレーションを最初からやり直す時に、最初に手順&#9312;を実行して runner registration tokens を削除するとうまくいく。
41
+ - マイグレーションが終了した時に `OpenSSL::Cipher::CipherError:` のエラーが発生していたらマイグレーションに失敗している。このエラーが発生した場合は、バックアップを書き戻してマイグレーションを最初からやり直す時に、最初に手順&#9312;を実行して runner registration tokens を削除するとうまくいく。
35
42
- このコマンドを実行すると全てのプロジェクトが hashed storage にマイグレーションされる。特定の範囲のプロジェクトをマイグレーションしたい場合は“ID_FROM”と“ID_TO”を追加して以下のようにやればよい。
36
43
```
37
44
docker-compose exec gitlab gitlab-rake gitlab:storage:migrate_to_hashed ID_FROM=50 ID_TO=100
38
45
```
@@ -40,17 +47,28 @@
40
47
41
48
## 手順&#9314; hashed storage 移行後のプロジェクト/リポジトリの確認
42
49
- legacy storage から hashed storage へのマイグレーションで特にエラーが発生しなかったならば、いくつかのプロジェクトにアクセスしてリポジトリに問題がないことを確認する。
43
50
44
- ## 手順&#9315; GitLab 13.0.x〜13.3.x から 13.4.0 以上へのアップグレード
51
+ ## 手順&#9315; GitLab 13.0.013.3.x から 13.4.0 以上へのアップグレード
45
52
- hashed storage への移行がうまく行ったら、GitLab のバックアップを取った後に 13.4.0 以上にアップグレードする。
46
53
- アップグレード後は、いくつかのプロジェクトにアクセスしてリポジトリに問題がないことを忘れないように確認すること。
47
54
48
55
## 手順&#9316; runner registration tokens の再生成
49
56
- 手順&#9312;で runner registration tokens を削除してしまった場合は、新しいトークンを作り直す。
50
57
58
+ ## まだ GitLab 12.x.x 以下を使っている場合のもっと簡単な移行手順
59
+ 1. 現在の環境のままで runner registration tokens を削除する。
60
+ - 動作未確認なので 12.x.x 以下ではうまく削除できないかもしれないというリスクがある。
61
+ 2. GitLab を 13.4.0 以上にバージョンアップする。
62
+ 3. 削除した runner registration tokens を作り直す。
63
+
51
64
---
52
65
66
+ # APPENDIX A:現在利用している GitLab のバージョンの確認方法
67
+ - `https://GitLabのアドレス/help` を開く。
68
+ - 例)https://gitlab.koba.jp/help
69
+ - サインインしないと GitLab のバージョンは表示されないので、右上に“Sign in”と表示されていたらサインインすること。
70
+
53
- # APPENDIX:参考資料
71
+ # APPENDIX B:参考資料
54
72
- [Repository storage Rake tasks](https://docs.gitlab.com/ee/administration/raketasks/storage.html)
55
73
- [Back up and restore GitLab](https://docs.gitlab.com/ee/raketasks/backup_restore.html)
56
74
- [Upgrade to GitLab 13.4.0 (b0481767fe4) killed all repositories](https://forum.gitlab.com/t/upgrade-to-gitlab-13-4-0-b0481767fe4-killed-all-repositories/43038)

過去のナレッジの内容

現在のナレッジの内容
 戻る