Kubernetes スタートアッププローブ
- English
- 日本語
デフォルトでは、エージェントは予備的な検査のために迅速な起動とパフォーマンス準備を優先します。ただし、ルールや設定データを読み込んだ後にのみトラフィックを検査したい場合、迅速な起動が必ずしも望ましいとは限りません。Kubernetes 環境では、Startup Probe を使用してエージェントコンテナの起動を遅延させ、エージェントがルールおよび設定データを読み込んだ後にのみ、コンテナが準備完了としてマークされるようにすることができます。
制約と考慮事項
スタートアッププローブは、エージェントバージョン
4.51.0以上で利用可能です。Startup Probe のチューニングに関する詳細は、プローブの設定に関する Kubernetes ドキュメントを参照してください。
Startup Probe を設定する
Startup Probe の設定方法には、httpGet チェックを使用する方法と、ファイルベースの Startup Probe を使用する方法の2つがあります。
HTTP Startup Probe を設定する
エージェントのエンドポイントが httpGet チェックに応答するようにするには、SIGSCI_STARTUP_PROBE_LISTENER 環境変数を、使用したいアドレスに設定します。 次に、同じプロンプトで、パスを /startup に設定した startupProbe httpGet 定義を追加します。
エージェントがルールを読み込むまでの間、エージェントエンドポイントは HTTP 503 (Service Unavailable) レスポンスを返します。ルールの読み込みが完了すると、HTTP 200 レスポンスを返すようになります。
Startup Probe にポート 2024 を使用する例の差分は次のとおりです。
containers: - name: sigsci-agent image: signalsciences/sigsci-agent:latest ports:+ - name: "startup-port"+ containerPort: 2024 env:+ - name: SIGSCI_STARTUP_PROBE_LISTENER+ value: "0.0.0.0:2024"+ startupProbe:+ httpGet:+ path: /startup+ port: startup-port+ failureThreshold: 90+ periodSeconds: 2ファイルベースの Startup Probe を設定する
HTTP ベースのプローブを使用したくない場合、エージェントにコンテナ内でファイルを作成させ、そのファイルの存在を exec チェックで確認することで、準備完了状態を示すように設定できます。
ファイルベースの Startup Probe を設定するには、ルールの読み込み完了後にエージェントがファイルを作成するパスとして、SIGSCI_STARTUP_PROBE_FILEPATH 環境変数を設定します。その後、exec コマンドを使用して、そのファイルの存在を確認します。
エージェントが設定データの読み込みを完了すると、ファイルが作成されます。設定データの読み込みが完了するまでの間、Startup Probe は Startup probe failed: cat: can't open '/sigsci/tmp/startup': No such file or directory というメッセージを含む Kubernetes の警告イベントを生成する場合がありますが、これはファイルベースの Startup Probe を使用する場合の想定された動作です。
Startup Probe に /sigsci/tmp/startup を使用する例の差分は次のとおりです。
containers: - name: sigsci-agent image: signalsciences/sigsci-agent:latest env:+ - name: SIGSCI_STARTUP_PROBE_FILEPATH+ value: "/sigsci/tmp/startup"+ startupProbe:+ exec:+ command:+ - cat+ - /sigsci/tmp/startup+ failureThreshold: 90+ periodSeconds: 2