Kubernetes スタートアッププローブ

デフォルトでは、エージェントは予備的な検査のために迅速な起動とパフォーマンス準備を優先します。ただし、ルールや設定データを読み込んだ後にのみトラフィックを検査したい場合、迅速な起動が必ずしも望ましいとは限りません。Kubernetes 環境では、Startup Probe を使用してエージェントコンテナの起動を遅延させ、エージェントがルールおよび設定データを読み込んだ後にのみ、コンテナが準備完了としてマークされるようにすることができます。

制約と考慮事項

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