GitLab インストールのバックアップ
GitLabのバックアップは、Chartで提供されているToolboxポッドでbackup-utility
コマンドを実行することで行われます。このChartのcronベースのバックアップ機能を有効にすることで、バックアップを自動化することもできます。
初めてバックアップを実行する前に、Toolboxが オブジェクトストレージにアクセスできるように適切に設定されていることを確認してください。
GitLab Helm Chartベースのインストールをバックアップするには、以下の手順に従ってください。
バックアップの作成
-
次のコマンドを実行して、toolboxポッドが起動していることを確認します。
kubectl get pods -lrelease=RELEASE_NAME,app=toolbox
-
バックアップ・ユーティリティを実行します。
kubectl exec <Toolbox pod name> -it -- backup-utility
-
オブジェクトストレージサービスの
gitlab-backups
バケットにアクセスし、tarball が追加されていることを確認します。<timestamp>_gitlab_backup.tar
形式で名前が付けられます。バックアップタイムスタンプの内容を読んでください。 -
この tarball はリストアに必要です。
cronベースのバックアップ
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
アノテーションを設定します。GKE Autopilotのような一部のKubernetes環境では、このアノテーションの設定が許可されず、バックアップ用のジョブポッドが作成されません。このアノテーションは、gitlab.toolbox.backups.cron.safeToEvict
パラメータをtrue
に設定することで変更することができます。この場合、ジョブは作成されますが、退避されてバックアップが破損するリスクがあります。このChartでCronベースのバックアップを有効にすると、Kubernetesのスケジュールで定義された定期的な間隔でバックアップを実行できます。
以下のパラメータを設定する必要があります:
-
gitlab.toolbox.backups.cron.enabled
:cronベースのバックアップを有効にするにはtrueに設定します。 -
gitlab.toolbox.backups.cron.schedule
:Kubernetesスケジュールのドキュメントに従って設定します。 -
gitlab.toolbox.backups.cron.extraArgs
:オプションでbackup-utilityの追加引数を設定 (--skip db
など)
バックアップユーティリティの追加引数
バックアップ・ユーティリティはいくつかの追加引数を取ることができます。それが何かは
kubectl exec <Toolbox pod name> -it -- backup-utility --help
シークレットのバックアップ
Railsのシークレットのコピーも保存しておく必要があります。シークレットはセキュリティの観点からバックアップには含まれません。データベースを含むフルバックアップはシークレットのコピーとは別に保存しておくことをお勧めします。
-
rails secretsのオブジェクト名を検索します。
kubectl get secrets | grep rails-secret
-
シークレットのコピーを保存します。
kubectl get secrets <rails-secret-name> -o jsonpath="{.data['secrets\.yml']}" | base64 --decode > gitlab-secrets.yaml
-
gitlab-secrets.yaml
をセキュリティで保護された場所に保管してください。バックアップをリストアするために必要です。