3.2. MicroShift での Ingress 制御の設定


MicroShift サービス設定ファイルを更新することで、詳細な Ingress 制御の設定を使用できます。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • クラスターへの root アクセス権限がある。
  • クラスターが OVN-Kubernetes ネットワークプラグインを使用している。

手順

  1. 次のどちらかの方法で Ingress 制御の設定を適用します。

    1. /etc/microshift/ ディレクトリーにある config.yaml.default ファイルのコピーを作成し、config.yaml という名前を付けてソースディレクトリーに保存することで、MicroShift config.yaml 設定ファイルを更新します。

      • これを作成すると、config.yaml ファイルは組み込み設定よりも優先されます。設定ファイルは、MicroShift サービスが起動するたびに読み取られます。
    2. 設定スニペットを使用して、必要な Ingress 制御の設定を適用します。これを行うには、設定スニペット YAML ファイルを作成し、そのファイルを /etc/microshift/config.d/ 設定ディレクトリーに配置します。

      • 設定スニペット YAML は、組み込みの設定と config.yaml 設定ファイルよりも優先されます。詳細は、「関連情報」のリンクを参照してください。
  2. MicroShift YAML の network セクションのデフォルト値を有効な値に置き換えるか、必要なセクションを含む設定スニペットファイルを作成します。

    デフォルト値を含む Ingress コントローラー設定フィールド

    apiServer:
    # ...
    ingress:
        defaultHTTPVersion: 1
        forwardedHeaderPolicy: Append
        httpCompression:
            mimeTypes:
                - ""
        httpEmptyRequestsPolicy: Respond
    # ...
        logEmptyRequests: Log
    # ...
        tuningOptions:
            clientFinTimeout: 1s
            clientTimeout: 30s
            headerBufferBytes: 0
            headerBufferMaxRewriteBytes: 0
            healthCheckInterval: 5s
            maxConnections: 0
            serverFinTimeout: 1s
            serverTimeout: 30s
            threadCount: 4
            tlsInspectDelay: 5s
            tunnelTimeout: 1h
    # ...

    表3.1 Ingress コントローラー設定フィールドの定義表
    パラメーター説明

    defaultHTTPVersion

    Ingress コントローラーの HTTP バージョンを設定します。HTTP 1.1 の場合、デフォルト値は 1 です。

    forwardedHeaderPolicy

    Ingress コントローラーが ForwardedX-Forwarded-ForX-Forwarded-HostX-Forwarded-PortX-Forwarded-Proto、および X-Forwarded-Proto-Version HTTP ヘッダーを設定するタイミングと方法を指定します。次の値が有効です。

    • Append は、Ingress コントローラーによって既存のヘッダーを追加するように指定して、既存のヘッダーを保持します。
    • Replace は、Ingress コントローラーによってヘッダーを設定するように指定して、既存のヘッダーを削除します。
    • IfNone は、ヘッダーがまだ設定されていない場合に Ingress コントローラーによってヘッダーを設定するように指定して、ヘッダーセットを設定します。
    • Never は、Ingress コントローラーによってヘッダーを設定しないように指定して、既存のヘッダーを保持します。

    httpCompression

    HTTP トラフィック圧縮のポリシーを定義します。

    • 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 コントローラーが HTTP 400 または 408 レスポンスを送信し、接続をログに記録し (アクセスログが有効な場合)、適切なメトリクスで接続をカウントします。
    • Ignore を指定すると、HAproxy 設定に http-ignore-probes パラメーターが追加されます。このフィールドが Ignore に設定されている場合、Ingress コントローラーはレスポンスを送信せず、接続をログに記録せず、メトリクスの値を増やさずに接続を閉じます。

    通常、空のリクエスト接続は、ロードバランサーのヘルスプローブや Web ブラウザーの事前接続から発生するため、無視しても問題ありません。しかし、このような空のリクエストは、ネットワークエラーやポートスキャンによっても作成されることがあります。そのため、このフィールドを Ignore に設定すると、問題の検出や診断だけでなく、侵入の試みの検出も妨げられる可能性があります。

    logEmptyRequests

    リクエストを受信せず、ログに記録しない接続を指定します。通常、このような空のリクエストは、ロードバランサーのヘルスプローブや Web ブラウザーの投機的な接続 (事前接続など) から発生します。このような種類の空のリクエストをログに記録することは、望ましくない場合もあります。しかし、空のリクエストは、ネットワークエラーやポートスキャンによっても作成されることがあります。そのため、このフィールドを Ignore に設定すると、問題の検出や診断だけでなく、侵入の試みの検出も妨げられる可能性があります。

    有効な値は次のとおりです。

    • Log: イベントをログに記録することを指定します。
    • Ignore: HAproxy 設定で dontlognull オプションが設定されます。

    tuningOptions

    Ingress コントローラー 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 です。
  3. その他の必要な設定を完了したら、次のいずれかのコマンドを実行して MicroShift を起動または再起動します。

    $ sudo systemctl start microshift
    $ sudo systemctl restart microshift

検証

Ingress 設定の変更を行い、MicroShift を再起動した後、ルーター Pod の経過時間をチェックして、変更が適用されたことを確認できます。

  • ルーター Pod のステータスを確認するには、次のコマンドを実行します。

    $ oc get pods -n openshift-ingress

    出力例

    NAME                              READY   STATUS    RESTARTS   AGE
    router-default-8649b5bf65-w29cn   1/1     Running   0          6m10s

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.