GitLab インストールのバックアップ

GitLabのバックアップは、Chartで提供されているToolboxポッドでbackup-utility コマンドを実行することで行われます。このChartのcronベースのバックアップ機能を有効にすることで、バックアップを自動化することもできます。

初めてバックアップを実行する前に、Toolboxが オブジェクトストレージにアクセスできるように適切に設定されていることを確認してください。

GitLab Helm Chartベースのインストールをバックアップするには、以下の手順に従ってください。

バックアップの作成

  1. 次のコマンドを実行して、toolboxポッドが起動していることを確認します。

    kubectl get pods -lrelease=RELEASE_NAME,app=toolbox
    
  2. バックアップ・ユーティリティを実行します。

    kubectl exec <Toolbox pod name> -it -- backup-utility
    
  3. オブジェクトストレージサービスのgitlab-backups バケットにアクセスし、tarball が追加されていることを確認します。<timestamp>_gitlab_backup.tar 形式で名前が付けられます。バックアップタイムスタンプの内容を読んでください。

  4. この tarball はリストアに必要です。

cronベースのバックアップ

note
Helmチャートによって作成されたKubernetes CronJobは、jobTemplateに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のシークレットのコピーも保存しておく必要があります。シークレットはセキュリティの観点からバックアップには含まれません。データベースを含むフルバックアップはシークレットのコピーとは別に保存しておくことをお勧めします。

  1. rails secretsのオブジェクト名を検索します。

    kubectl get secrets | grep rails-secret
    
  2. シークレットのコピーを保存します。

    kubectl get secrets <rails-secret-name> -o jsonpath="{.data['secrets\.yml']}" | base64 --decode > gitlab-secrets.yaml
    
  3. gitlab-secrets.yaml をセキュリティで保護された場所に保管してください。バックアップをリストアするために必要です。

追加情報