GitLabメンテナンスモードの内部動作
メンテナンスモードはどこで実行されるのですか?
GitLab Maintenance Modeは、railsアプリケーション内のいくつかのキーとなる場所で、アプリケーションレベルでのHTTPとSSHリクエストからの書き込みのみをブロックします。コードベースでmaintenance_mode?
を検索してください。
- このメソッドは、データベースへの書き込みが許可されていないときの特別な動作を切り替えます。このメソッドは、GETリクエストで書き込みが発生する可能性のある場所に使用します。
Gitlab::Database.read_only?
のコードベースを検索してください。 - 読み込み専用ミドルウェアでは、明示的に許可されていない限り、データベースへの書き込みを引き起こす HTTP リクエストはブロックされます (たとえば GET リクエスト)。
-
SSH経由のGitプッシュアクセスは、アクセスが許可されているかどうかをチェックするために
gitlab-shell
POSTが/internal/allowed
、401を返すことで拒否されます。 - コンテナレジストリ認証サービス。コンテナレジストリへの更新がブロックされます。
データベース自体は読み取り専用モードではなく(Geo セカンダリサイトを除く)、ブロックされたソース以外からの書き込みが可能です。