5.2. MicroShift での Ingress 制御の設定
MicroShift サービス設定ファイルを更新することで、詳細な Ingress 制御の設定を使用できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - ノードへの root アクセス権限がある。
- ノードが OVN-Kubernetes Container Network Interface (CNI)プラグインを使用している。
手順
次のどちらかの方法で Ingress 制御の設定を適用します。
/etc/microshift/ディレクトリーにあるconfig.yaml.defaultファイルのコピーを作成し、config.yamlという名前を付けてソースディレクトリーに保存することで、MicroShiftconfig.yaml設定ファイルを更新します。-
これを作成すると、
config.yamlファイルは組み込み設定よりも優先されます。設定ファイルは、MicroShift サービスが起動するたびに読み取られます。
-
これを作成すると、
設定スニペットを使用して、必要な Ingress 制御の設定を適用します。これを行うには、設定スニペット YAML ファイルを作成し、そのファイルを
/etc/microshift/config.d/設定ディレクトリーに配置します。-
設定スニペット YAML は、組み込みの設定と
config.yaml設定ファイルよりも優先されます。詳細は、「関連情報」のリンクを参照してください。
-
設定スニペット YAML は、組み込みの設定と
MicroShift YAML の
networkセクションのデフォルト値を有効な値に置き換えるか、必要なセクションを含む設定スニペットファイルを作成します。デフォルト値を含む Ingress コントローラー設定フィールド
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表5.1 Ingress コントローラー設定フィールドの定義表 パラメーター 説明 defaultHTTPVersionIngress コントローラーの HTTP バージョンを設定します。HTTP 1.1 の場合、デフォルト値は
1です。forwardedHeaderPolicyIngress コントローラーが
Forwarded、X-Forwarded-For、X-Forwarded-Host、X-Forwarded-Port、X-Forwarded-Proto、およびX-Forwarded-Proto-VersionHTTP ヘッダーを設定するタイミングと方法を指定します。次の値が有効です。-
Appendは、Ingress コントローラーによって既存のヘッダーを追加するように指定して、既存のヘッダーを保持します。 -
Replaceは、Ingress コントローラーによってヘッダーを設定するように指定して、既存のヘッダーを削除します。 -
IfNoneは、ヘッダーがまだ設定されていない場合に Ingress コントローラーによってヘッダーを設定するように指定して、ヘッダーセットを設定します。 -
Neverは、Ingress コントローラーによってヘッダーを設定しないように指定して、既存のヘッダーを保持します。
httpCompressionHTTP トラフィック圧縮のポリシーを定義します。
-
httpCompression.mimeTypesは、圧縮を適用する MIME タイプのリストまたは 1 つの MIME タイプを定義します。(例:text/css; charset=utf-8,text/html,text/*,image/svg+xml,application/octet-stream,X-custom/customsub, using the format pattern,type/subtype; [;attribute=value])typesは、アプリケーション、イメージ、メッセージ、マルチパート、テキスト、ビデオ、または先頭にX-が付いたカスタムタイプです。MIME タイプとサブタイプの完全な表記は、RFC1341 (IETF Datatracker ドキュメント) を参照してください。
httpEmptyRequestsPolicyリクエストを受信する前に接続がタイムアウトした場合に HTTP 接続をどのように処理するかを指定します。このフィールドに使用できる値は
RespondおよびIgnoreです。デフォルト値はRespondです。有効な値は次のとおりです。-
Respondを指定すると、Ingress コントローラーが HTTP400または408レスポンスを送信し、接続をログに記録し (アクセスログが有効な場合)、適切なメトリクスで接続をカウントします。 -
Ignoreを指定すると、HAproxy設定にhttp-ignore-probesパラメーターが追加されます。このフィールドがIgnoreに設定されている場合、Ingress コントローラーはレスポンスを送信せず、接続をログに記録せず、メトリクスの値を増やさずに接続を閉じます。
通常、空のリクエスト接続は、ロードバランサーのヘルスプローブや Web ブラウザーの事前接続から発生するため、無視しても問題ありません。しかし、このような空のリクエストは、ネットワークエラーやポートスキャンによっても作成されることがあります。そのため、このフィールドを
Ignoreに設定すると、問題の検出や診断だけでなく、侵入の試みの検出も妨げられる可能性があります。logEmptyRequestsリクエストを受信せず、ログに記録しない接続を指定します。通常、このような空のリクエストは、ロードバランサーのヘルスプローブや Web ブラウザーの投機的な接続 (事前接続など) から発生します。このような種類の空のリクエストをログに記録することは、望ましくない場合もあります。しかし、空のリクエストは、ネットワークエラーやポートスキャンによっても作成されることがあります。そのため、このフィールドを
Ignoreに設定すると、問題の検出や診断だけでなく、侵入の試みの検出も妨げられる可能性があります。有効な値は次のとおりです。
-
Log: イベントをログに記録することを指定します。 -
Ignore:HAproxy設定でdontlognullオプションが設定されます。
tuningOptionsIngress コントローラー Pod のパフォーマンスをチューニングするためのオプションを指定します。
-
tuningOptions.clientFinTimeoutパラメーターは、接続を閉じているサーバーへのクライアントレスポンスを待機している間、接続を開いたままにする時間を指定します。デフォルトのタイムアウトは1sです。 -
tuningOptions.clientTimeoutパラメーターは、クライアントのレスポンスを待機している間、接続を開いたままにする時間を指定します。デフォルトのタイムアウトは30sです。 tuningOptions.headerBufferBytesパラメーターは、Ingress Controller 接続セッション用に予約するメモリーの量をバイト単位で指定します。Ingress Controller で HTTP / 2 が有効になっている場合、この値は少なくとも16384である必要があります。設定されていない場合、デフォルト値は32768バイトになります。重要このフィールドを設定することは推奨しません。
headerBufferMaxRewriteBytesパラメーター値が小さすぎると、Ingress コントローラーが壊れる可能性があるためです。逆に、headerBufferMaxRewriteBytesの値が大きすぎると、Ingress コントローラーが必要以上に多くのメモリーを使用する可能性があります。-
tuningOptions.headerBufferMaxRewriteBytesパラメーターは、Ingress Controller 接続セッションの HTTP ヘッダーの書き換えと追加のために、headerBufferBytesから予約するメモリーの量をバイト単位で指定します。headerBufferMaxRewriteBytesの最小値は4096です。受信 HTTP リクエストのheaderBufferBytes値は、headerBufferMaxRewriteBytes値よりも大きくする必要があります。 設定されていない場合、デフォルト値は
8192バイトになります。重要このフィールドを設定することは推奨しません。
headerBufferMaxRewriteBytesパラメーター値が小さすぎると、Ingress コントローラーが壊れる可能性があるためです。逆に、headerBufferMaxRewriteBytesの値が大きすぎると、Ingress コントローラーが必要以上に多くのメモリーを使用する可能性があります。-
tuningOptions.healthCheckIntervalパラメーターは、ルーターがヘルスチェックの間隔として待機する時間を指定します。デフォルトは5sです。 -
tuningOptions.serverFinTimeoutパラメーターは、接続を閉じているクライアントへのサーバーレスポンスを待機している間、接続を開いたままにする時間を指定します。デフォルトのタイムアウトは1sです。 -
tuningOptions.serverTimeoutパラメーターは、サーバーのレスポンスを待機している間、接続を開いたままにする時間を指定します。デフォルトのタイムアウトは30sです。 tuningOptions.threadCountパラメーターは、HAProxy プロセスごとに作成するスレッドの数を指定します。より多くのスレッドを作成すると、使用されるシステムリソースを増やすことで、各 Ingress コントローラー Pod がより多くの接続を処理できるようになります。HAProxyは最大64スレッドをサポートしています。このフィールドが空の場合、デフォルト値の4スレッドが使用されます。重要このフィールドを設定することは推奨しません。
HAProxyスレッドの数を増やすと、Ingress コントローラー Pod がより多くの CPU 時間を負荷発生時に使用できるようになり、他の Pod が実行に必要な CPU リソースを受け取れなくなるためです。-
tuningOptions.tlsInspectDelayパラメーターは、一致するルートを検出するためにルーターがデータを保持できる時間を指定します。この設定値が短すぎると、より適合性の高い証明書を使用している場合でも、ルーターがエッジ終端ルート、再暗号化ルート、またはパススルールート用のデフォルト証明書にフォールバックする可能性があります。デフォルトの検査遅延は5sです。 -
tuningOptions.tunnelTimeoutパラメーターは、トンネルがアイドル状態の間、WebSocket を含むトンネル接続を開いたままにする時間を指定します。デフォルトのタイムアウトは1hです。
-
その他の必要な設定を完了したら、次のいずれかのコマンドを実行して MicroShift を起動または再起動します。
sudo systemctl start microshift
$ sudo systemctl start microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo systemctl restart microshift
$ sudo systemctl restart microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Ingress 設定の変更を行い、MicroShift を再起動した後、ルーター Pod の経過時間をチェックして、変更が適用されたことを確認できます。
ルーター Pod のステータスを確認するには、次のコマンドを実行します。
oc get pods -n openshift-ingress
$ oc get pods -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE router-default-8649b5bf65-w29cn 1/1 Running 0 6m10s
NAME READY STATUS RESTARTS AGE router-default-8649b5bf65-w29cn 1/1 Running 0 6m10sCopy to Clipboard Copied! Toggle word wrap Toggle overflow