1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab 19.2.1に更新した頃からバックアップが取得できていなかった件への対応

1
Posted at

はじめに

Gitlabのバックアップ状況をチェックしたところ7月31日を最後にtarファイルが存在していませんでした。

現状の確認

/home/git/data/backups/ディレクトリ内容の抜粋
...
-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の環境変数では次のように設定しています。

gitlab-rc.yamlファイルの抜粋
        - name: GITLAB_BACKUP_SCHEDULE
          value: daily
        - name: GITLAB_BACKUP_TIME
          value: 01:00

GitLabのPodからcronの状況を確認すると、次のようになっています。

gitユーザーのcronjob設定 (crontab -u git -l)
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をみると、順調に取得できていそうな雰囲気でしたが、最後の方でエラーが発生しています。

/home/git/gitlab/log/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つのクラスターだけで対応して、実際には手動での対応を行いました。

yaml/gitlab-rc.yamlファイルの変更部分の差分
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に登録するという手段もありそうですが、採用したのは単純に不足するディレクトリを作成する方法です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?