LinuxパッケージからHelmチャートへのマイグレーション

このガイドは、パッケージベースのGitLabインストールからHelmチャートへのマイグレーションに役立ちます。

前提条件

マイグレーションを行う前に、いくつかの前提条件を満たす必要があります:

  • パッケージベースの GitLab インスタンスが稼働していること。gitlab-ctl status を実行し、down 状態をレポーターするサービスがないことを確認してください。
  • マイグレーションに先立ち、Gitリポジトリの整合性を確認するのは良い習慣です。
  • パッケージベースのインストールと同じGitLabバージョンを実行しているHelmチャートベースのデプロイが必要です。
  • Helm チャートベースのデプロイが使用するオブジェクトストレージを設定する必要があります。本番環境で使用する場合は、外部のオブジェクトストレージを使用し、それにアクセスするためのログイン認証情報を準備しておくことをお勧めします。組み込みの MinIO サービスを使用している場合は、そこからログイン認証情報を取得する方法についてドキュメントをお読みください。

マイグレーション手順

caution
JUnit テストレポートアーティファクト (junit.xml.gz) のマイグレーションは、GitLab 12.8 までは以下のgitlab:artifacts:migrate スクリプトではサポートされていませんでした。
  1. パッケージベースのインストールからオブジェクトストレージに既存のデータをマイグレーションします:

    1. オブジェクトストレージにマイグレーションします。

    2. パッケージベースの GitLab インスタンスにアクセスし、マイグレーションしたデータが利用可能であることを確認します。例えば、ユーザー、グループ、プロジェクトのアバターが正常にレンダリングされているか、イシューに追加された画像やその他のファイルが正しく読み込まれているかなどを確認します。

  2. バックアップ tarball を作成し、マイグレーション済みのディレクトリをすべて除外します。

    バックアップファイルは、明示的に変更しない限り、/var/opt/gitlab/backups の下に保存されます。

  3. パッケージベースのインストールから、シークレットから始めてHelmチャートにリストアします。/etc/gitlab/gitlab-secrets.json の値を Helm が使用する YAML ファイルにマイグレーションする必要があります。
  4. すべてのポッドを再起動して、変更が適用されていることを確認します:

    kubectl delete pods -lrelease=<helm release name>
    
  5. Helmベースのデプロイにアクセスし、パッケージベースのインストールに存在したプロジェクト、グループ、ユーザー、イシューなどが復元されていることを確認します。また、アップロードされたファイル(アバター、イシューにアップロードされたファイルなど)が正常に読み込まれているかどうかを確認します。