正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Helm ChartからLinuxパッケージへの移行

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

HelmインストールからLinuxパッケージ(Omnibus)インストールに移行するには、次の手順に従います:

  1. 左側のサイドバーの下部で、管理者エリアを選択します。

  2. 左側のサイドバーの下部にある概要 > コンポーネントを選択して、現在のGitLabのバージョンを確認します。

  3. クリーンなマシンを準備し、お使いのGitLab Helmチャートのバージョンに一致するLinuxパッケージをインストールします。

  4. 移行の前に、GitLab Helmチャートインスタンス上のGitリポジトリの整合性を確認します。

  5. GitLab Helmチャートインスタンスのバックアップを作成し、必ずシークレットもバックアップしてください

  6. Linuxパッケージインスタンスで/etc/gitlab/gitlab-secrets.jsonをバックアップします。

  7. kubectlコマンドを実行するワークステーションに、yqツール(バージョン4.21.1以降)をインストールします。

  8. ワークステーションで/etc/gitlab/gitlab-secrets.jsonファイルのコピーを作成します。

  9. 次のコマンドを実行して、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
  10. 結果はgitlab-secrets-updated.jsonです。これを使用して、Linuxパッケージインスタンス上の/etc/gitlab/gitlab-secrets.jsonの古いバージョンを置き換えることができます。

  11. /etc/gitlab/gitlab-secrets.jsonを置き換えた後、Linuxパッケージインスタンスを再構成します:

    sudo gitlab-ctl reconfigure
  12. Linuxパッケージインスタンスで、オブジェクトストレージを構成し、LFS、アーティファクト、アップロードなどをテストして、動作することを確認します。

  13. コンテナレジストリを使用する場合は、オブジェクトストレージを個別に構成します。統合されたオブジェクトストレージはサポートされていません。

  14. Helmチャートインスタンスに接続されているオブジェクトストレージから、Linuxパッケージインスタンスに接続されている新しいストレージにデータを同期します。いくつかの注意点があります:

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

  16. (オプション)Git SSHクライアントでホストの不一致エラーが発生しないように、SSHホストキーを復元します:

    1. 次のスクリプトを使用して、<name>-gitlab-shell-host-keysシークレットをファイルに戻します(必要なツール: jqbase64kubectl):

      mkdir ssh
      HOSTKEYS_JSON="hostkeys.json"
      GITLAB_NAMESPACE="my_namespace"
      kubectl get secret -n ${GITLAB_NAMESPACE} gitlab-gitlab-shell-host-keys -o json > ${HOSTKEYS_JSON}
      
      for k in $(jq -r '.data | keys | .[]' ${HOSTKEYS_JSON}); \
      do \
        jq -r --arg host_key ${k} '.data[$host_key]' ${HOSTKEYS_JSON}  | base64 --decode > ssh/$k ; \
      done
    2. 変換されたファイルをGitLab Railsノードにアップロードします。

    3. ターゲットRailsノード上:

      1. /etc/ssh/ディレクトリをバックアップします。例:

        sudo tar -czvf /root/ssh_dir.tar.gz -C /etc ssh
      2. 既存のホストキーを削除します:

        sudo find /etc/ssh -type f -name "/etc/ssh/ssh_*_key*" -delete
      3. 変換されたホストキーファイルを所定の場所(/etc/ssh)に移動します:

        for f in ssh/*; do sudo install -b -D  -o root -g root -m 0600 $f /etc/${f} ; done
      4. SSHデーモンを再起動します:

        sudo systemctl restart ssh.service
  17. 復元が完了したら、doctor Rakeタスクを実行して、シークレットが有効であることを確認します。

  18. すべてが検証されたら、GitLab Helmチャートインスタンスをuninstallできます。