GitLabサイレントモード
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
サイレントモードでは、GitLabからの送信通信(メールなど)を停止できます。サイレントモードは、使用中の環境での使用を目的としていません。
サイレントモードの使用場面
サイレントモードは特定のテストおよび検証シナリオ向けに設計されており、本番環境向けの汎用機能として使用しないでください。
サイレントモードは、以下のシナリオ向けに設計されています:
- Geoサイトのプロモートのテスト: Geoサイトのセカンダリサイトをプロモートしてディザスターリカバリー手順を検証する際に、プライマリサイトがアクティブなままである場合。
- たとえば、ディザスターリカバリーソリューションの一部として、セカンダリGeoサイトがあるとします。ディザスターリカバリー計画が実際に機能することを保証するためのベストプラクティスとして、それをプロモートしてプライマリGeoサイトにすることを定期的にテストしたいとします。ただし、プライマリサイトが、ユーザーへのレイテンシーが最も低い地域にあるため、フェイルオーバー全体を実際には実行したくありません。また、定期的なテストのたびにダウンタイムを発生させたくありません。そのため、プライマリサイトを起動したまま、セカンダリサイトをプロモートします。プロモートされたサイトのスモークテストを開始します。しかし、プロモートされたサイトがユーザーにメールを送信し始め、プッシュミラーが外部のGitリポジトリへの変更をプッシュするなどが発生します。ここでサイレントモードが登場します。サイトのプロモートの一部として有効にすることで、この問題を回避できます。
- GitLabのバックアップの検証: バックアップが機能していることを確認するために、別のテストインスタンスでバックアップの復元をテストする場合。サイレントモードを使用すると、無効なメールをユーザーに送信することを回避できます。
- ステージング環境のテスト: ユーザーまたは外部システムに影響を与える可能性のある送信通信をトリガーせずに、GitLabの機能をテストする必要がある場合。特に、本番データを使用してステージング環境をシードした場合。
サイレントモードは、以下のような目的には設計されていません:
- 本番環境: サイレントモードは意図的に多くのGitLab機能を中断します。サイレントモードは、予期しないエラーを引き起こす可能性があり、特に新機能で発生しやすくなります。サイレントモードでは、デフォルトで新しい通信をブロックすることで、安全側に倒す必要があります。
サイレントモードをオンにする
前提要件:
- 管理者アクセス権が必要です。
サイレントモードをオンにする方法は複数あります:
WEB UI
- 左側のサイドバーの下部で、管理者を選択します。
- 左側のサイドバーで、設定 > 一般を選択します。
- Silent Mode(サイレントモード)を展開し、Enable Silent Mode(サイレントモードを有効にする)切替をオンにします。
- 変更はすぐに保存されます。
API:
curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=true"::Gitlab::CurrentSettings.update!(silent_mode_enabled: true)
有効になるまでに最大1分かかる場合があります。イシュー405433は、この遅延を削除することを提案しています。
サイレントモードをオフにする
前提要件:
- 管理者アクセス権が必要です。
サイレントモードを無効にする方法は複数あります:
WEB UI
- 左側のサイドバーの下部で、管理者を選択します。
- 左側のサイドバーで、設定 > 一般を選択します。
- Silent Mode(サイレントモード)を展開し、Enable Silent Mode(サイレントモードを有効にする)切替をオフにします。
- 変更はすぐに保存されます。
API:
curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=false"::Gitlab::CurrentSettings.update!(silent_mode_enabled: false)
有効になるまでに最大1分かかる場合があります。イシュー405433は、この遅延を削除することを提案しています。
サイレントモードでのGitLab機能の動作
このセクションでは、サイレントモードが有効になっている場合のGitLabの現在の動作について説明します。サイレントモードの最初のイテレーションの作業は、エピック9826で追跡されます。
サイレントモードが有効になっている場合、設定が有効になっていること、およびAll outbound communications are blocked(すべての送信通信がブロックされている)ことを示すバナーが、すべてのユーザーに対してページの上部に表示されます。
停止される送信通信
次の機能からの送信通信は、サイレントモードによって停止されます。
| 機能 | 備考 |
|---|---|
| GitLab Duo | GitLab Duoの機能は、外部の言語言語モデルプロバイダーに接続できません。 |
| プロジェクトおよびグループWebhook | UI経由でWebhookテストをトリガーすると、HTTPステータス500応答が発生します。 |
| システムフック | |
| リモートミラー | リモートミラーへのプッシュはスキップされます。リモートミラーからのプルはスキップされます。 |
| 実行可能なインテグレーション | インテグレーションは実行されません。 |
| サービスデスク | 受信メールは引き続きイシューを提起しますが、メールをサービスデスクに送信したユーザーには、イシューの作成またはイシューへのコメントが通知されません。 |
| 送信メール | メールがGitLabによって送信されるはずの瞬間に、代わりにドロップされます。どこにもキューに入れられません。 |
| 送信HTTPリクエスト | 多くのHTTPリクエストは、機能が明示的にブロックまたはスキップされていない場合にブロックされます。これらは、クラスSilentModeBlockedErrorでエラーを生成する可能性があります。特定のエラーがサイレントモードでのテスト中に問題となる場合は、GitLabサポートにお問い合わせください。一般に、呼び出し元は、HTTPリクエストの作成を試みるのではなく、サイレントモードが有効になっている場合は終了する必要があります。例外は、サイレントモードの意図された用途に沿っている必要があります。 |
停止されない送信通信
次の機能からの送信通信は、サイレントモードによって停止されません。
| 機能 | 備考 |
|---|---|
| 依存プロキシ | キャッシュされていないイメージをプルすると、通常どおりソースからフェッチされます。プルレート制限を検討してください。 |
| ファイルフック | |
| サーバーフック | |
| 高度な検索 | 2つのGitLabインスタンスが同じ高度な検索インスタンスを使用している場合、両方とも検索データを変更できます。これは、たとえば、プライマリGeoサイトが稼働中にセカンダリGeoサイトをプロモートした後に発生する可能性のある、分割されたシナリオです。 |
| ClickHouseの呼び出し | ClickHouseのリクエストは、サイトの内部と見なされるため、停止されません。 |
| Snowplow | これらのリクエストを停止するための提案が、イシュー409661にあります。 |
| 非推奨のKubernetes接続 | これらのリクエストを停止するための提案があります。 |
| コンテナレジストリWebhook | これらのリクエストを停止するための提案があります。 |