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

HelmインストールからLinuxパッケージ(Omnibus)インストールにマイグレーションするには:

  1. 管理エリア({admin}) に移動し、Overview > Componentsを選択して GitLab の現在のバージョンを確認します。
  2. クリーンなマシンを用意し、GitLab Helm chartのバージョンに合ったLinuxパッケージをインストールします。
  3. マイグレーション前に、GitLab Helmチャートインスタンス上のGitリポジトリの整合性を確認します。
  4. GitLab Helm chartインスタンスのバックアップを作成し、シークレットもバックアップしてください。
  5. Linux パッケージインスタンスの/etc/gitlab/gitlab-secrets.json をバックアップします。
  6. kubectl コマンドを実行するワークステーションにyqツール(バージョン 4.21.1 以降)をインストールします。
  7. ワークステーションに/etc/gitlab/gitlab-secrets.json ファイルのコピーを作成します。
  8. 以下のコマンドを実行して、GitLab Helmチャートインスタンスからシークレットを取得します。GITLAB_NAMESPACERELEASE を適切な値に置き換えてください:

    kubectl get secret -n GITLAB_NAMESPACE RELEASE-rails-secret -ojsonpath='{.data.secrets\.yml}' | yq '@base64d | from_yaml | .production' -o json > rails-secrets.json
    yq eval-all 'select(filename == "gitlab-secrets.json").gitlab_rails = select(filename == "rails-secrets.json") | select(filename == "gitlab-secrets.json")' -ojson  gitlab-secrets.json rails-secrets.json > gitlab-secrets-updated.json
    
  9. 結果はgitlab-secrets-updated.json で、Linux パッケージインスタンスの古いバージョンの/etc/gitlab/gitlab-secrets.json を置き換えるのに使えます。
  10. /etc/gitlab/gitlab-secrets.jsonを置き換えた後、Linux パッケージ・インスタンスを再構成します:

    sudo gitlab-ctl reconfigure
    
  11. Linux パッケージインスタンスで、オブジェクトストレージを設定し、LFS、アーティファクト、アップロードなどをテストして動作することを確認します。
  12. コンテナレジストリを使用する場合は、そのオブジェクトストレージを個別に設定します。これは、統合オブジェクトストレージをサポートしていません。
  13. Helmチャートインスタンスに接続されているオブジェクトストレージのデータを、Linuxパッケージインスタンスに接続されている新しいストレージと同期します。いくつか注意点があります:

    • S3 互換のストレージの場合、s3cmd ユーティリティを使用してデータをコピーします。
    • LinuxパッケージインスタンスでMinIOのようなS3互換オブジェクトストレージを使用する予定がある場合は、MinIOを指すオプションendpoint を設定し、/etc/gitlab/gitlab.rbpath_styletrue に設定する必要があります。
    • 新しいLinuxパッケージインスタンスで古いオブジェクトストレージを再利用できます。この場合、2 つのオブジェクトストレージ間でデータを同期する必要はありません。ただし、ビルトインのMinIOインスタンスを使用している場合、GitLab Helmチャートをアンインストールすると、ストレージのプロビジョニングが解除される可能性があります。
  14. GitLab HelmのバックアップをLinuxパッケージインスタンスの/var/opt/gitlab/backupsリストアを実行します。
  15. リストアが完了したら、doctor Rakeタスクを実行してシークレットが有効であることを確認します。
  16. すべての確認が終わったら、GitLab Helmチャートインスタンスをアンインストールしてください。