はじめに
Gitlabのバックアップ状況をチェックしたところ7月31日を最後にtarファイルが存在していませんでした。
現状の確認
...
-rw------- 1 git git 5079490560 Jul 29 01:03 1785254426_2026_07_29_19.0.1_gitlab_backup.tar
-rw------- 1 git git 5079715840 Jul 30 01:02 1785340825_2026_07_30_19.0.1_gitlab_backup.tar
-rw------- 1 git git 5079848960 Jul 31 01:02 1785427226_2026_07_31_19.0.1_gitlab_backup.tar
ファイル名からもだいたいバージョン19.0.xの次に更新したタイミングから取得できていませんでした。
私の環境ではちょうど19.2.1に更新したタイミングです。
commit f8f7b71211fa20d4e7c2a9167e8f64c2e61aabdf
Author: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
Date: Fri Jul 31 23:56:40 2026 +0000
Update the gitlab container tag to 19.2.1.
Kubernetesの環境変数では次のように設定しています。
- name: GITLAB_BACKUP_SCHEDULE
value: daily
- name: GITLAB_BACKUP_TIME
value: 01:00
GitLabのPodからcronの状況を確認すると、次のようになっています。
00 01 * * * /bin/bash -l -c 'cd /home/git/gitlab && bundle exec rake gitlab:backup:create SKIP= RAILS_ENV=production' >> /var/log/gitlab/gitlab/gitlab-backup.log 2>&1
追加で設定が必要というわけではなさそうなので、ログをみてみますが、Podのログは問題なさそうだったので、Podのコンテナに保存されているファイルを確認します。
gitlab-backup.logをみると、順調に取得できていそうな雰囲気でしたが、最後の方でエラーが発生しています。
rake aborted!
Errno::ENOENT: No such file or directory @ rb_check_realpath_internal - /home/git/data/shared/agent_plan_content (Errno::ENOENT)
単純にディレクトリが存在していないようです。
対処方法
/home/git/dataはPVC上の領域なので、一回対処すれば問題なさそうです。
$ mkdir -p /home/git/data/shared/agent_plan_content
$ chown -R git:git /home/git/data/shared/agent_plan_content
$ chmod 0700 /home/git/data/shared/agent_plan_content
再発を防ぐためにはYAMLファイルのinitContainersの中でディレクトリを作成するべきですが、とりあえずQiitaの記事を修正する方向で確認のため1つのクラスターだけで対応して、実際には手動での対応を行いました。
diff --git a/gitlab/yaml/gitlab-rc.yml b/gitlab/yaml/gitlab-rc.yml
index ec8c518..d710ba4 100644
--- a/gitlab/yaml/gitlab-rc.yml
+++ b/gitlab/yaml/gitlab-rc.yml
@@ -27,9 +27,15 @@ spec:
name: node-data
- mountPath: /var/log/gitlab
name: log-data
+ - name: create-agentdir
+ image: busybox:1.36
+ command: ['sh', '-c', 'mkdir -p /home/git/data/shared/agent_plan_content ; chown 1000:1000 /home/git/data/shared/agent_plan_content ; chmod 0755 /home/git/data/shared/agent_plan_content']
+ volumeMounts:
+ - mountPath: /home/git/data
+ name: data
containers:
- name: gitlab
さいごに
ディレクトリ名が分かったので検索すると関連するIssuesが登録されていました。
crontabのSKIPに登録するという手段もありそうですが、採用したのは単純に不足するディレクトリを作成する方法です。