GitLabアップグレードプランの作成

このドキュメントは、セルフマネージド GitLab インスタンスをアップグレードするための強力なプランを作成するためのガイドです。

一般的な注意事項

  • 可能であれば、本番インスタンスを更新する前に、テスト環境でアップグレードをテストしてください。理想的には、テスト環境は本番環境を可能な限り模倣する必要があります。
  • サポートと協力してプランを作成する場合は、以下を含むアーキテクチャの詳細を共有してください:
    • GitLab はどのようにインストールされていますか?
    • ノードのオペレーションシステムは何ですか?(サポートが終了したOSのバージョンを確認し、それ以降のアップデートが利用可能かどうかを確認してください)。
    • シングルノードですか、それともマルチノードですか?マルチノードの場合、各ノードのアーキテクチャの詳細を教えてください。
    • GitLab Geoを使っていますか?もしそうなら、各セカンダリノードについてのアーキテクチャの詳細があれば教えてください。
    • あなたのセットアップで他にユニークな点や興味深い点、私たちが理解すべき重要な点があれば教えてください。
    • GitLabの現在のバージョンで何か既知のイシューに遭遇していますか?

アップグレード前とアップグレード後のチェック

アップグレードの直前と直後に、アップグレード前とアップグレード後のチェックを行い、GitLab の主要なコンポーネントが動作していることを確認します:

  1. 一般的な設定を確認します:

    sudo gitlab-rake gitlab:check
    
  2. 暗号化されたデータベース値が復号化できることを確認します:

    sudo gitlab-rake gitlab:doctor:secrets
    
  3. GitLab UIで、以下のことを確認してください:
    • ユーザーはサインインできます。
    • プロジェクトリストが表示されます。
    • プロジェクトのイシューとマージリクエストにアクセスできます。
    • ユーザーは GitLab からリポジトリをクローンできます。
    • ユーザーは GitLab にコミットをプッシュできます。
  4. GitLab CI/CDについては、こちらをご確認ください:
    • Runner pick up jobs.
    • Dockerイメージはレジストリからプッシュ/プルできます。
  5. Geoを使用する場合は、プライマリと各セカンダリで関連するチェックを実行します:

    sudo gitlab-rake gitlab:geo:check
    
  6. Elasticsearch を使用している場合は、検索が成功していることを確認します。

何らかの問題が発生した場合は、トラブルシューティングの方法を参照してください。

ロールバックプラン

アップグレード中に何か問題が発生する可能性があるため、そのシナリオに備えてロールバックプランを用意しておくことが重要です。適切なロールバックプランは、インスタンスを最後の動作状態に戻すための明確なパスを作成します。これは、インスタンスをバックアップする方法と、インスタンスをリストアする方法で構成されます。

GitLabのバックアップ

GitLabとそのすべてのデータ(データベース、リポジトリ、アップロード、ビルド、アーティファクト、LFSオブジェクト、レジストリ、ページ)のバックアップを作成します。これは、アップグレードに問題があった場合、GitLabを動作する状態にロールバックするために不可欠です:

  • GitLabのバックアップを作成します。インストール方法に基づいた指示に従ってください。シークレットファイルと設定ファイルのバックアップを忘れないでください。
  • あるいは、インスタンスのスナップショットを作成しましょう。複数ノードのインストールの場合は、すべてのノードをスナップショットする必要があります。このプロセスはGitLabサポートの対象外です。

GitLabのリストア

本番環境を模したテスト環境がある場合は、リストアをテストしてすべてが期待通りに動くことを確認しましょう。

GitLabバックアップを復元するには:

  • リストアする前に、前提条件について必ず読んでください。最も重要なことは、バックアップしたGitLabインスタンスと新しいGitLabインスタンスのバージョンが同じでなければならないということです。
  • GitLabをリストアします。インストール方法に基づいた指示に従ってください。シークレットと設定ファイルもリストアされていることを確認してください。
  • スナップショットからリストアする場合は、その手順を知っておいてください。このプロセスはGitLabサポートの対象外です。

アップグレードプラン

アップグレードプランについては、インスタンスに最適なプランのアウトラインを作成することから始め、使用している関連機能のアップグレードを行います。

追加機能

上記の一般的な情報とは別に、特別な計画が必要な機能を有効にしている場合があります。

Geo、外部Gitaly、Elasticsearchなど、あなたのセットアップに適用できない機能に関するセクションは無視してかまいません。

外部Gitaly

外部Gitalyサーバーをご利用の場合、アプリケーションサーバーをアップグレードする前に、外部Gitalyサーバーを新しいバージョンにアップグレードする必要があります。

Geo

Geoを使用している場合:

Runner

GitLabをアップデートしたら、新しいGitLabのバージョンに合わせてRunnerをアップグレードしてください。

Kubernetes用GitLabエージェント

KubernetesクラスタをGitLabと接続している場合は、Kubernetes用のGitLabエージェントを新しいGitLabのバージョンに合わせてアップグレードしてください。

Elasticsearch

GitLabをアップデートする前に、保留中の高度な検索のマイグレーションをチェックして、高度な検索のマイグレーションが完了していることを確認してください。

GitLabをアップデートした後、新しいバージョンで互換性が失われた場合、Elasticsearchをアップグレードする必要があるかもしれません。ElasticsearchのアップデートはGitLabサポートの対象外です。

トラブルシューティング

計画通りにいかないことがあれば