本項ではGitLabを移行する手順を記載します。
「運用ガイド(FJCS仕様)」の「9.2.1 GitLabのバックアップ」を参照し、GitLabのバックアップ(<timestamp>_<version>_gitlab_backup.tar)を取得します。
取得したバックアップデータおよび、GitLabサーバーの以下を、移行先のマルチクラウド仕様の環境に送付します。
移行先のマルチクラウド仕様Kubernetes masterサーバーにログインし、上記でバックアップしたgitlab-secrets.jsonを参照し、secrets.ymlを以下の内容で作成します。
production: db_key_base: <gitlab-secrets.json内のdb_key_baseの値> secret_key_base: <gitlab-secrets.json内のsecret_key_baseの値> otp_key_base: <gitlab-secrets.json内のotp_key_baseの値> openid_connect_signing_key: <gitlab-secrets.json内のopenid_connect_signing_keyの値>
以下のコマンドを実行し、rails secrets名を確認する。以降の手順の<rails secrets名>には本手順で確認した値を設定します。
$ kubectl get secrets -n fj-esdp-system | grep rails-secret
rails secretsを登録しなおします。
$ kubectl delete secret -n fj-esdp-system <rails secrets名> $ kubectl create secret generic <rails secrets名> --from-file=secrets.yml=<secrets.ymlへのファイルパス> -n fj-esdp-system
GitLabのコンポーネントをRestartします。
$ kubectl delete pods -lapp=sidekiq,release=fj-gitlab -n fj-esdp-system $ kubectl delete pods -lapp=unicorn,release=fj-gitlab -n fj-esdp-system $ kubectl delete pods -lapp=task-runner,release=fj-gitlab -n fj-esdp-system
GitLabのtask-runnerのPod名を取得します。以降の手順の<task-runner Pod名>には本手順で確認した値を設定します。
$ kubectl get pods -lrelease=fj-gitlab,app=task-runner -n fj-esdp-system
バックアップデータからリストアします。
$ kubectl cp -n fj-esdp-system <<timestamp>_<version>_gitlab_backup.tarへのファイルパス> <task-runner Pod名>:/tmp $ kubectl exec <task-runner Pod名> -n fj-esdp-system -it -- backup-utility --restore -f file:///tmp/<timestamp>_<version>_gitlab_backup.tar
移行元のLFSのファイル、アイコンおよびWiki等にアップロードされたファイル、パイプラインのartifactsおよびContainer Registryのイメージは一括での移行ができません。以下に従い、移行元のバックアップから必要な資産を移行します。