GitLabアップグレードプランの作成
このドキュメントは、セルフマネージド GitLab インスタンスをアップグレードするための強力なプランを作成するためのガイドです。
一般的な注意事項
- 可能であれば、本番インスタンスを更新する前に、テスト環境でアップグレードをテストしてください。理想的には、テスト環境は本番環境を可能な限り模倣する必要があります。
-
サポートと協力してプランを作成する場合は、以下を含むアーキテクチャの詳細を共有してください:
- GitLab はどのようにインストールされていますか?
- ノードのオペレーションシステムは何ですか?(サポートが終了したOSのバージョンを確認し、それ以降のアップデートが利用可能かどうかを確認してください)。
- シングルノードですか、それともマルチノードですか?マルチノードの場合、各ノードのアーキテクチャの詳細を教えてください。
- GitLab Geoを使っていますか?もしそうなら、各セカンダリノードについてのアーキテクチャの詳細があれば教えてください。
- あなたのセットアップで他にユニークな点や興味深い点、私たちが理解すべき重要な点があれば教えてください。
- GitLabの現在のバージョンで何か既知のイシューに遭遇していますか?
アップグレード前とアップグレード後のチェック
アップグレードの直前と直後に、アップグレード前とアップグレード後のチェックを行い、GitLab の主要なコンポーネントが動作していることを確認します:
-
一般的な設定を確認します:
sudo gitlab-rake gitlab:check
-
暗号化されたデータベース値が復号化できることを確認します:
sudo gitlab-rake gitlab:doctor:secrets
- GitLab UIで、以下のことを確認してください:
- ユーザーはサインインできます。
- プロジェクトリストが表示されます。
- プロジェクトのイシューとマージリクエストにアクセスできます。
- ユーザーは GitLab からリポジトリをクローンできます。
- ユーザーは GitLab にコミットをプッシュできます。
- GitLab CI/CDについては、こちらをご確認ください:
- Runner pick up jobs.
- Dockerイメージはレジストリからプッシュ/プルできます。
-
Geoを使用する場合は、プライマリと各セカンダリで関連するチェックを実行します:
sudo gitlab-rake gitlab:geo:check
- Elasticsearch を使用している場合は、検索が成功していることを確認します。
何らかの問題が発生した場合は、トラブルシューティングの方法を参照してください。
ロールバックプラン
アップグレード中に何か問題が発生する可能性があるため、そのシナリオに備えてロールバックプランを用意しておくことが重要です。適切なロールバックプランは、インスタンスを最後の動作状態に戻すための明確なパスを作成します。これは、インスタンスをバックアップする方法と、インスタンスをリストアする方法で構成されます。
GitLabのバックアップ
GitLabとそのすべてのデータ(データベース、リポジトリ、アップロード、ビルド、アーティファクト、LFSオブジェクト、レジストリ、ページ)のバックアップを作成します。これは、アップグレードに問題があった場合、GitLabを動作する状態にロールバックするために不可欠です:
- GitLabのバックアップを作成します。インストール方法に基づいた指示に従ってください。シークレットファイルと設定ファイルのバックアップを忘れないでください。
- あるいは、インスタンスのスナップショットを作成しましょう。複数ノードのインストールの場合は、すべてのノードをスナップショットする必要があります。このプロセスはGitLabサポートの対象外です。
GitLabのリストア
本番環境を模したテスト環境がある場合は、リストアをテストしてすべてが期待通りに動くことを確認しましょう。
GitLabバックアップを復元するには:
- リストアする前に、前提条件について必ず読んでください。最も重要なことは、バックアップしたGitLabインスタンスと新しいGitLabインスタンスのバージョンが同じでなければならないということです。
- GitLabをリストアします。インストール方法に基づいた指示に従ってください。シークレットと設定ファイルもリストアされていることを確認してください。
- スナップショットからリストアする場合は、その手順を知っておいてください。このプロセスはGitLabサポートの対象外です。
アップグレードプラン
アップグレードプランについては、インスタンスに最適なプランのアウトラインを作成することから始め、使用している関連機能のアップグレードを行います。
- 関連ドキュメントを読み、理解することで、アップグレード計画を作成します:
- インストール方法に基づいてアップグレードします:
- ダウンタイムゼロでのアップグレード(可能かつ希望する場合)
- GitLab Community EditionからEnterprise Editionへの変換
- アップグレードすべきバージョンは?
- アップグレードパスを決定します。
- 現在のバージョンとアップグレード先のバージョンの両方について、バージョン固有のアップデートの指示がないかどうかを確認します。
- バージョン固有の変更がある場合
- ターゲットGitLabバージョンとOSの互換性を確認します。
- バックグラウンドマイグレーションのため、次のアップグレードの前に一時停止するよう計画してください。次のアップグレードの前に、すべてのマイグレーションが終了している必要があります。
- 開始バージョンで利用可能であれば、アップグレード中にメンテナンスモードをオンにすることを検討してください。
- PostgreSQLについて:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 使用しているPostgreSQLのバージョンを探します。PostgreSQLのアップグレードが必要な場合は、関連するパッケージまたは非パッケージの手順を説明します。
追加機能
上記の一般的な情報とは別に、特別な計画が必要な機能を有効にしている場合があります。
Geo、外部Gitaly、Elasticsearchなど、あなたのセットアップに適用できない機能に関するセクションは無視してかまいません。
外部Gitaly
外部Gitalyサーバーをご利用の場合、アプリケーションサーバーをアップグレードする前に、外部Gitalyサーバーを新しいバージョンにアップグレードする必要があります。
Geo
Geoを使用している場合:
- Geo アップグレードのドキュメントをレビューしてください。
- Geo バージョンごとのアップデート手順についてお読みください。
- データベースをアップグレードする際の Geo 固有の手順をレビューします。
- _各_Geo サイト(プライマリおよび各セカンダリ)のアップグレードおよびロールバック プランを作成します。
Runner
GitLabをアップデートしたら、新しいGitLabのバージョンに合わせてRunnerをアップグレードしてください。
Kubernetes用GitLabエージェント
KubernetesクラスタをGitLabと接続している場合は、Kubernetes用のGitLabエージェントを新しいGitLabのバージョンに合わせてアップグレードしてください。
Elasticsearch
GitLabをアップデートする前に、保留中の高度な検索のマイグレーションをチェックして、高度な検索のマイグレーションが完了していることを確認してください。
GitLabをアップデートした後、新しいバージョンで互換性が失われた場合、Elasticsearchをアップグレードする必要があるかもしれません。ElasticsearchのアップデートはGitLabサポートの対象外です。
トラブルシューティング
計画通りにいかないことがあれば
- 時間がない場合は、エラーをコピーし、後で分析するためのログを収集し、最後に動作したバージョンにロールバックします。データ収集には以下のツールが使えます:
- サポート
- GitLabサポート、またカスタマーサクセスマネージャーにお問い合わせください。
- 緊急サポートが含まれて いる場合は、緊急チケットを作成してください。