5.2. MicroShift での Ingress 制御の設定


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

重要
  • config.yaml 設定ファイルは、組み込み設定よりも優先されます。config.yaml ファイルは、MicroShift サービスが起動するたびに読み取られます。
  • 設定スニペット YAML は、組み込みの設定と config.yaml 設定ファイルよりも優先されます。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • ノードへの root アクセス権限がある。
  • ノードが OVN-Kubernetes Container Network Interface (CNI)プラグインを使用している。

手順

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

    1. /etc/microshift/ ディレクトリーにある config.yaml.default ファイルのコピーを作成し、config.yaml という名前を付けてソースディレクトリーに保存することで、MicroShift config.yaml 設定ファイルを更新します。
    2. 設定スニペットを使用して、必要な Ingress 制御の設定を適用します。これを行うには、設定スニペット YAML ファイルを作成し、そのファイルを /etc/microshift/config.d/ 設定ディレクトリーに配置します。
  2. MicroShift YAML の ingress セクションのデフォルト値を有効な値に置き換えるか、必要なセクションを含む設定スニペットファイルを作成します。

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

    apiServer:
    # ...
    ingress:
      accessLogging:
        destination:
          container:
            maxLength: 1024
          syslog:
            address: ""
            facility: ""
            maxLength: 1024
            port: 0
          type: ""
        httpCaptureCookies:
          - matchType: ""
            maxLength: 0
            name: ""
            namePrefix: ""
        httpCaptureHeaders:
          request:
            - maxLength: 0
              name: ""
          response:
            - maxLength: 0
              name: ""
        httpLogFormat: ""
        status: Disabled
      certificateSecret: router-certs-custom
      clientTLS:
        allowedSubjectPatterns: []
        clientCA:
          name: ""
        clientCertificatePolicy: ""
      defaultHTTPVersion: 1
      forwardedHeaderPolicy: Append
      httpCompression:
        mimeTypes:
          - ""
      httpEmptyRequestsPolicy: Respond
      httpErrorCodePages:
          name: ""
      listenAddress: []
      logEmptyRequests: Log
      ports:
         http: 80
         https: 443
      routeAdmissionPolicy:
        namespaceOwnership: InterNamespaceAllowed
        wildcardPolicy: WildcardsDisallowed
      status: Managed
      tlsSecurityProfile:
        type:
        custom:
          ciphers:[]
          minTLSVersion:""
        intermediate: {}
        old: {}
      tuningOptions:
        clientFinTimeout: 1s
        clientTimeout: 30s
        headerBufferBytes: 0
        headerBufferMaxRewriteBytes: 0
        healthCheckInterval: 5s
        maxConnections: 0
        serverFinTimeout: 1s
        serverTimeout: 30s
        threadCount: 4
        tlsInspectDelay: 5s
        tunnelTimeout: 1h
    # ...
    Copy to Clipboard Toggle word wrap

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

    ingress

    MicroShift config.yaml ファイルの ingress セクションでは、OpenShift Container Platform IngressController API の実装の設定可能なパラメーターを定義します。この表の以下のパラメーターはすべて、MicroShift config.yamlingress セクションのサブセクションです。

    accessLogging

    この Ingress サブセクションでは、クライアント要求のログ方法を説明します。status フィールドが空の場合、アクセスロギングは無効になります。status フィールドが Enabled に設定されている場合、アクセス要求は accessLogging パラメーターで設定されたものとしてログに記録され、accessLogging.destination.type は自動的にコンテナーに設定され ます

    • 有効にすると、アクセスログは openshift-router ログの一部になります。MicroShift の sos report 手順は、この Pod からのログをキャプチャーします。

    accessLogging.destination

    ログの宛先。ログの宛先は、ローカルのサイドカーコンテナーまたはリモートにすることができます。デフォルト値は null です。

    accessLogging.destination.type

    ログの宛先のタイプ。有効な値は Container または Syslog です。

    • この値を Container に設定すると、ログがサイドカーコンテナーに移動する必要があることを指定します。宛先タイプが Container に設定されると、ログ と呼ばれるコンテナーが自動的に作成されます。コンテナーログを使用すると、ログの割合がコンテナーランタイムの容量やカスタムロギングソリューションの容量を超えるとログがドロップされる可能性があります。このサイドカーからログを読み取るカスタムロギングソリューションが必要です。
    • この値を Syslog に設定すると、ログが Syslog エンドポイントに送信されることを指定します。カスタム Syslog インスタンスを設定し、Syslog メッセージを受信できるエンドポイントを指定する必要があります。カスタム Syslog インスタンスが必要です。たとえば、カーネルロギングの使用開始 などです。

    accessLogging.destination.container

    コンテナーロギング先タイプのパラメーター 記述します。このサイドカーからログを読み取るカスタムロギングソリューションを設定する必要があります。

    accessLogging.destination.container.maxLength

    オプションの設定。デフォルト値は 1024 バイトです。メッセージの長さは 480 以上で、8192 バイトより大きくてはなりません。

    accessLogging.destination.syslog

    Syslog ロギング宛先タイプのパラメーターを記述します。Syslog メッセージを受信できるエンドポイントでカスタム Syslog インスタンスを設定する必要があります。

    accessLogging.destination.syslog.address

    Syslog 宛先タイプが設定されている場合の必須の設定。有効な値は、ログメッセージを受信する syslog エンドポイントの IP アドレスです。

    accessLogging.destination.syslog.facility

    Syslog 宛先タイプが設定されている場合のオプション設定。ログメッセージの syslog 機能を指定します。このフィールドが空の場合、ファシリティーは local1 になります。それ以外の場合は、このフィールドに kernusermaildaemon、allow、syslog、news、newsuucpcronauth 2'、ftpntp、audit、auditlocal0local1、local1、local2 local4、local4、local 6、または local7 のいずれかを指定する必要があります。

    accessLogging.destination.syslog.maxLength

    Syslog 宛先タイプが設定されている場合のオプション設定。Syslog メッセージの最大長。メッセージの長さは 480 以上で、4096 バイト以下である必要があります。このフィールドが空の場合には、最大長はデフォルト値の 1024 バイトに設定されます。

    accessLogging.destination.syslog.port

    Syslog 宛先タイプが設定されている場合の必須の設定。ログメッセージを受信する syslog エンドポイントの UDP ポート番号。デフォルト値は 0 です。

    httpCaptureCookies

    アクセスログにキャプチャーする HTTP Cookie を指定します。httpCaptureCookies フィールドが空の場合、アクセスログは Cookie をキャプチャーしません。デフォルト値は空です。ingress.accessLogging.httpCaptureCookies を設定すると、ingress アクセスロギングが自動的に有効になります。キャプチャーするすべての Cookie について、matchType および maxLength パラメーターも設定する必要があります。

    • 以下に例を示します。

        httpCaptureCookies:
        - matchType: Exact
          maxLength: 128
          name: MYCOOKIE
      Copy to Clipboard Toggle word wrap

    httpCaptureCookies.matchType

    クッキーのフィールド名がキャプチャーされた cookie 設定と完全に一致するか、キャプチャーされた cookie 設定の接頭辞であるかを指定します。有効な値は、完全文字列一致の場合は Exact、文字列接頭辞一致の接頭辞 です。

    • Exact 設定を使用する場合は、httpCaptureCookies.name フィールドで名前も指定する必要があります。
    • Prefix 設定を使用する場合は、httpCaptureCookies.namePrefix フィールドに接頭辞も指定する必要があります。たとえば、name Prefix がmush または "mushroom" という名前のクッキーをキャプチャーする場合の接頭辞:matchType の設定では、room という名前の 1 つではなく、mush または "mushroom" という名前のクッキーをキャプチャーします。最初に一致する Cookie がキャプチャーされます。

    httpCaptureCookies.maxLength

    ログに記録される cookie の最大長を指定します。これには、Cookie 名、Cookie 値、および 1 文字の区切り文字が含まれます。ログエントリーがこの長さを超えると、値はログメッセージで切り捨てられます。Ingress コントローラーは、要求の HTTP ヘッダーの合計の長さに別個のバインドを課す可能性があります。最小値は 1 バイトで、最大値は 1024 バイトです。デフォルト値は 0 です。

    httpCaptureCookies.name

    httpCaptureCookies.matchType パラメーターで設定されるクッキー名の一致に使用される正確な名前を指定します。値は、RFC 6265 セクション 4.1 で定義されている有効な HTTP Cookie 名である必要があります。最小長は 1 バイトで、最大長は 1024 バイトです。

    httpCaptureCookies.namePrefix

    httpCaptureCookies.matchType パラメーターに設定されるように、cookie 名の一致の接頭辞を指定します。値は、RFC 6265 セクション 4.1 で定義されている有効な HTTP Cookie 名である必要があります。最小長は 1 バイトで、最大長は 1024 バイトです。

    httpCaptureHeaders

    アクセスログに取得する必要のある HTTP ヘッダーを定義します。このフィールドはリストであり、リクエストおよび応答ヘッダーを個別に取得できるようにします。このフィールドが空の場合、ヘッダーはキャプチャされません。このオプションは、プレーンテキストの HTTP 接続と、入力コントローラーが暗号化を終了するセキュアな HTTP 接続にのみ適用されます(例:edge-terminated または reencrypt 接続)。TLS パススルー 接続のヘッダーをキャプチャすることはできません。ingress.accessLogging.httpCaptureHeaders パラメーターを設定すると、ingress アクセスロギングが自動的に有効になります。

    httpCaptureHeaders.request

    キャプチャーする HTTP リクエストヘッダーを指定します。このフィールドが空の場合、要求ヘッダーはキャプチャされません。

    httpCaptureHeaders.request.maxLength

    ヘッダー値の最大長を指定します。ヘッダー値がこの長さを超えると、値はログメッセージで切り捨てられます。最小値は 1 バイトです。Ingress コントローラーは、要求の HTTP ヘッダーの合計の長さに別個のバインドを課す可能性があります。

    httpCaptureHeaders.request.name

    ヘッダー名を指定します。値は、RFC 2616 セクション 4.2 で定義されている有効な HTTP ヘッダー名である必要があります。この値を設定する場合は、maxLength および name の値を指定する必要があります。

    httpCaptureHeaders.response

    キャプチャーする HTTP 応答ヘッダーを指定します。このフィールドが空の場合、応答ヘッダーはキャプチャされません。

    httpCaptureHeaders.response.maxLength

    ヘッダー値の最大長を指定します。ヘッダー値がこの長さを超えると、値はログメッセージで切り捨てられます。Ingress コントローラーは、要求の HTTP ヘッダーの合計の長さに別個のバインドを課す可能性があります。

    httpCaptureHeaders.response.name

    ヘッダー名を指定します。値は、RFC 2616 セクション 4.2 で定義されている有効な HTTP ヘッダー名である必要があります。

    httpLogFormat

    HTTP リクエストのログメッセージの形式を指定します。このフィールドが空の場合、ログメッセージはデフォルトの HTTP ログ形式を使用します。HAProxy のデフォルトの HTTP ログ形式については、HAProxy のドキュメント を参照してください

    status

    アクセスをログに記録するかどうかを指定します。有効な値は Enabled および Disabled です。デフォルト値は Disabled です。

    • ingress.accessLogging.httpCaptureHeaders または ingress.accessLogging.httpCaptureCookies のいずれかを設定する場合は、ingress.accessLogging.statusEnabled に設定する必要があります。
    • ingress.status フィールドを Enabled に設定すると、accessLogging.destination.type は自動的にコンテナーに設定され、ルーターはログコンテナーのすべての要求を ログ に記録します。
    • この値を Disabled に設定すると、ルーターはアクセスログに要求をログに記録しません。

    certificateSecret

    MicroShift Ingress コントローラーが提供するデフォルトの証明書を含む kubernetes.io/tls タイプのシークレットへの参照。ルートが独自の証明書を指定しない場合は、certificateSecret パラメーターが使用されます。使用されるすべてのシークレットには、tls.key キーファイルの内容と tls.crt 証明書ファイルの内容が含まれている必要があります。

    • certificateSecret パラメーターが設定されていない場合は、ワイルドカード証明書が自動的に生成され、使用されます。ワイルドカード証明書は、Ingress コントローラーのデフォルト domain とその subdomains に対して有効です。生成された認証局(CA)は、ノードのトラストストアと自動的に統合されます。
    • 使用中の生成された証明書とユーザー指定の証明書は、MicroShift に組み込まれた OAuth サーバーと自動的に統合されます。

    clientTLS

    ノードおよびサービスへのクライアントアクセスを認証します。その結果、相互 TLS 認証が有効になります。このパラメーターが設定されていない場合、クライアント TLS は有効になりません。クライアント TLS を使用するには、spec.clientTLS.clientCertificatePolicy および spec.clientTLS.clientCA パラメーターを設定する必要があります。

    clientTLS.AllowedSubjectPatterns

    要求をフィルタリングするために、有効なクライアント証明書の識別名と照合される正規表現のリストを指定するオプションのサブフィールド。このパラメーターは、クライアント認証がある場合に役立ちます。このパラメーターを使用すると、Ingress コントローラーは識別名に基づいて証明書を拒否します。Perl Compatible Regular Expressions (PCRE) 構文が必要です。clientTLS.AllowedSubjectPatterns を使用するには、spec.clientTLS.clientCertificatePolicy および spec.clientTLS.clientCA パラメーターを設定する必要があります。

    重要

    設定された場合、このフィールドには有効な式が含まれている必要があります。含まれていない場合、MicroShift サービスは失敗します。1 つ以上のパターンがクライアント証明書の識別名と一致している必要があります。一致しない場合、Ingress コントローラーは証明書を拒否し、接続を拒否します。

    clientTLS.clientCA

    openshift-ingress namespace 内の必須の config map を指定します。クライアント TLS を有効にするために必要です。config map には、ca-bundle.pem という名前の認証局 (CA) バンドルが含まれている必要があります。含まれていない場合、デフォルトルーターのデプロイメントは失敗します。

    clienttls.clientCA.name

    clientTLS.clientCA 値で参照される設定マップの metadata.name

    clientTLS.ClientCertificatePolicy

    有効な値は Required または Optional です。クライアント TLS を有効にするには、Required に設定します。Ingress コントローラーは、エッジで終了および再暗号化された TLS ルートのクライアント証明書のみをチェックします。Ingress コントローラーは、プレーンテキスト HTTP またはパススルー TLS ルートの証明書をチェックできません。

    defaultHTTPVersion

    Ingress コントローラーの HTTP バージョンを設定します。デフォルト値は、HTTP 1. 1 の 1 です。HTTP 2 および 3 にロードバランサーを設定することが推奨されます。

    forwardedHeaderPolicy

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

    • Append は、Ingress コントローラーが既存のヘッダーに追加することを指定することで、それらのヘッダーを保持します。'Append` はデフォルト値です。
    • Replace は、Ingress コントローラーによってヘッダーを設定するように指定して、既存のヘッダーを削除します。
    • IfNone は、ヘッダーがまだ設定されていない場合に Ingress コントローラーがヘッダーを設定することを指定します。
    • Never は、Ingress コントローラーによってヘッダーを設定しないように指定して、既存のヘッダーを保持します。

    httpCompression

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

    httpCompression.mimeTypes

    圧縮を適用する必要がある MIME タイプのリストを定義します。

    • たとえば、text/css; charset=utf-8text/htmltext/*image/svg+xmlapplication/octet-streamX-custom/customsub のように、type/subtype; [;attribute=value] という形式で指定します。
    • 有効な types は、application、image、message、multipart、text、video、または X- で始まるカスタムタイプです。MIME タイプとサブタイプの完全な表記は、RFC1341 (IETF Datatracker ドキュメント) を参照してください。

    httpEmptyRequestsPolicy

    リクエストを受信する前に接続がタイムアウトした場合に HTTP 接続をどのように処理するかを指定します。このフィールドに使用できる値は Respond および Ignore です。デフォルト値は Respond です。空の要求は通常、ロードバランサーの正常性プローブまたは事前接続から送信されるもので、多くの場合、無視しても問題ありません。ただし、ネットワークエラーおよびポートスキャンも、これらの要求を引き起こす可能性があります。したがって、このフィールドを Ignore に設定すると、ネットワークの問題の検出や診断および侵入の試みの検出が妨げられる可能性があります。

    • このポリシーが Respond に設定されている場合、Ingress コントローラーが HTTP 400 または 408 レスポンスを送信し、接続をログに記録し (アクセスログが有効な場合)、適切なメトリクスで接続をカウントします。
    • ポリシーを Ignore に設定すると、http-ignore-probes パラメーターが HAproxy プロセス設定に追加されます。このパラメーターが追加されると、Ingress コントローラーはレスポンスを送信せずに接続を閉じ、その後、接続をログに記録するか、メトリクスを増分します。

    logEmptyRequests

    リクエストを受信せず、ログに記録しない接続を指定します。有効な値は LogIgnore です。空の要求は通常、ロードバランサーの正常性プローブまたは事前接続から送信されるもので、多くの場合、無視しても問題ありません。ただし、ネットワークエラーおよびポートスキャンも、これらの要求を引き起こす可能性があります。したがって、このフィールドを Ignore に設定すると、ネットワークの問題の検出や診断および侵入の試みの検出が妨げられる可能性があります。デフォルト値は Log です。

    • この値を Log に設定すると、イベントがログに記録される必要があることを示します。
    • この値を Ignore に設定すると、HAproxy 設定の dontlognull オプションを設定します。

    httpErrorCodePages

    カスタムエラーコードページについて説明します。この設定を使用するには、httpErrorCodePages.name パラメーターを設定する必要があります。

    httpErrorCodePages.name

    カスタムのエラーコードページを指定します。503 および 404 ページコードに対してのみエラーをカスタマイズできます。エラーコードページをカスタマイズするには、ConfigMap 名を指定します。ConfigMap オブジェクトは openshift-ingress namespace にあり、error- page-<error code>.http 形式のキーが含まれる必要があります。<error code > は HTTP ステータスコードになります。ConfigMap の各値は、HTTP ヘッダーを含む完全な応答である必要があります。このパラメーターのデフォルト値は null です。

    ports

    デフォルトのルーターポートを定義します。

    ports.http

    デフォルトのルーター http ポート。1-65535 の範囲で指定する必要があります。デフォルト値は 80 です。

    ports.https

    デフォルトのルーター https ポート。1-65535 の範囲で指定する必要があります。デフォルト値は 443 です。

    routeAdmission

    namespace 全体にわたるクレームの許可または拒否など、新しいルート要求を処理するためのポリシーを定義します。

    routeAdmission.namespaceOwnership

    複数の namespace のホスト名要求の処理方法を記述します。デフォルトは InterNamespaceAllowed です。有効な値は次のとおりです。

    • Strict: ルートが複数の namespace 間で同じホスト名を要求することを許可しません。
    • InterNamespaceAllowed: ルートが複数の namespace 間で同じホスト名の異なるパスを要求することを許可します。

    routeAdmission.wildcardPolicy

    Ingress コントローラーが、設定されたワイルドカードポリシーを使用してルートを処理する方法を制御します。WildcardsAllowedWildcardsDisallowed は有効な値です。デフォルト値は WildcardsDisallowed です。

    • WildcardPolicyAllowed は、Ingress コントローラーがワイルドカードポリシーを持つルートを許可することを意味します。
    • WildcardPolicyDisallowed は、Ingress コントローラーがワイルドカードポリシーが None のルートのみを許可することを意味します。
    重要

    ワイルドカードポリシーを WildcardsAllowed から WildcardsDisallowed に更新すると、subdomain のワイルドカードポリシーを持つ許可されたルートが機能しなくなります。Ingress コントローラーは、これらのルートは、ワイルドカードポリシー None で再作成された後にのみ読み取ります。

    status

    デフォルトのルーターのステータス。有効な値は Managed または Removed です。

    tlsSecurityProfile

    tlsSecurityProfile は、Ingress コントローラーの TLS 接続の設定を指定します。これが設定されていない場合、デフォルト値は apiservers.config.openshift.io/cluster リソースをベースとして設定されます。Old プロファイルまたは Custom プロファイルの TLS 1.0 バージョンは、Ingress コントローラーによって自動的に 1.1 に変換されます。Intermediate がデフォルトの設定です。

    • Ingress コントローラーの最小 TLS バージョンは 1.1 です。TLS の最大バージョンは 1.3 です。
    注記

    TLSProfile ステータスは、設定されたセキュリティープロファイルの暗号と最小 TLS バージョンを表示します。プロファイルは意図に基づいているため、新しい暗号が開発されたり、既存の暗号が安全でないことが判明したりすると、時間の経過に応じて変更されます。特定のプロセスで使用できる暗号に応じて、使用可能なリストが削減される可能性があります。

    tlsSecurityProfile.custom

    ユーザー定義の TLS セキュリティープロファイル。このパラメーターおよび関連パラメーターを設定する場合は、細心の注意を払ってください。

    tlsSecurityProfile.custom.ciphers

    TLS ハンドシェイク中にネゴシエートされる暗号アルゴリズムを指定します。Operator は、オペランドがサポートしていないエントリーを削除する可能性があります。

    tlsSecurityProfile.custom.minTLSVersion

    TLS ハンドシェイク中にネゴシエートされる TLS プロトコルの最小バージョンを指定します。たとえば、TLS バージョン 1.1、1.2、1.3 を使用するには、値を VersionTLS11 に設定します。minTLSVersion の有効な最高値は VersionTLS12 です。

    tlsSecurityProfile.intermediate

    ほとんどのサービスにこの TLS プロファイルを使用できます。Intermediate compatibility (recommended).

    tlsSecurityProfile.old

    下位互換性のために使用されます。Old backward compatibility.

    tlsSecurityProfile.type

    有効な値は、IntermediateOld、または Custom です。Modern 値はサポートされていません。

    tuningOptions

    Ingress コントローラー Pod のパフォーマンスをチューニングするためのオプションを指定します。

    tuningOptions.clientFinTimeout

    サーバーが接続を閉じる前に、クライアント応答を待機している間に Ingress コントローラーが接続が開かれる期間を指定します。デフォルトのタイムアウトは 1s です。

    tuningOptions.clientTimeout

    クライアント応答を待機している間に、Ingress コントローラーが接続を開く期間を指定します。デフォルトのタイムアウトは 30s です。

    tuningOptions.headerBufferBytes

    Ingress コントローラー接続セッション用に予約されるメモリーの量 (バイト単位) を指定します。Ingress コントローラーで HTTP/2 が有効になっている場合、この値は少なくとも 16384 である必要があります。設定されていない場合、デフォルト値は 32768 バイトになります。

    重要

    このフィールドを設定することは推奨しません。headerBufferMaxRewriteBytes パラメーター値が小さすぎると、Ingress コントローラーが壊れる可能性があるためです。逆に、headerBufferMaxRewriteBytes の値が大きすぎると、Ingress コントローラーが必要以上に多くのメモリーを使用する可能性があります。

    tuningOptions.headerBufferMaxRewriteBytes

    Ingress コントローラー接続セッションの HTTP ヘッダーの書き換えと追加のために、headerBufferBytes から予約するメモリー量 (バイト単位) を指定します。headerBufferMaxRewriteBytes の最小値は 4096 です。受信 HTTP リクエストの headerBufferBytes は、headerBufferMaxRewriteBytes 値よりも大きくする必要があります。設定されていない場合、デフォルト値は 8192 バイトになります。

    重要

    このフィールドを設定することは推奨しません。headerBufferMaxRewriteBytes 値が小さすぎると Ingress コントローラーが破損する可能性があり、headerBufferMaxRewriteBytes 値が大きすぎると、Ingress コントローラーが必要以上に大量にメモリーを使用する可能性があるためです。

    tuningOptions.healthCheckInterval

    ルーターがヘルスチェック間で待機する時間を秒単位で指定します。デフォルトは 5s です。

    tuningOptions.maxConnections

    HAProxy プロセスで確立できる同時接続の最大数を指定します。この値を増やすと、追加のシステムリソースで各 Ingress コントローラー Pod がより多くの接続を処理できるようになります。0-12000 から 2000000 の範囲内の任意の値を使用でき、フィールドを空にすることも可能です。

    • このフィールドが空であるか、値が 0 の場合、Ingress コントローラーはデフォルト値の 50000 を使用します。
    • フィールド値が -1 の場合、HAProxy は、実行中のコンテナーで使用可能な ulimits に基づき最大値を動的に計算します。このプロセスにより計算値が大きくなり、現在のデフォルト値である 50000 と比較して、メモリー使用量が大幅に増加します。
    • フィールドの値が現在のオペレーティングシステムの制限よりも大きい場合、HAProxy プロセスは開始されません。
    • 個別の値を選択し、ルーター Pod が新しいノードに移行された場合、新しいノードに同一の ulimit が設定されていない可能性があります。このような場合、Pod は起動に失敗します。
    • container_memory_working_set_bytes{container="router",namespace="openshift-ingress"} メトリクスを使用すると、ルーターコンテナーのメモリー使用量を監視できます。
    • container_memory_working_set_bytes{container="router",namespace="openshift-ingress"}/container_processes{container="router",namespace="openshift-ingress"} メトリクスを使用すると、ルーターコンテナー内の個々の HAProxy プロセスのメモリー使用量を監視できます。

    tuningOptions.serverFinTimeout

    接続を閉じているクライアントへのサーバーレスポンスを待機している間、接続を開いたままにする時間を指定します。デフォルトのタイムアウトは 1s です。

    tuningOptions.serverTimeout

    サーバーの応答を待機している間に接続が開かれる期間を指定します。デフォルトのタイムアウトは 30s です。

    tuningOptions.threadCount

    HAProxy プロセスごとに作成するスレッドの数を指定します。より多くのスレッドを作成すると、より多くのシステムリソースを使用する代わりに、各 Ingress コントローラー Pod がより多くの接続を処理できるようになります。HAProxy ロードバランサーは、最大 64 スレッドをサポートします。このフィールドが空の場合、Ingress コントローラーはデフォルト値の 4 スレッドを使用します。

    重要

    このフィールドを設定することは推奨しません。HAProxy スレッドの数を増やすと、Ingress コントローラー Pod がより多くの CPU 時間を負荷発生時に使用できるようになり、他の Pod が実行に必要な CPU リソースを受け取れなくなるためです。スレッドの数を減らすと、Ingress コントローラーのパフォーマンスが低下する可能性があります。

    tuningOptions.tlsInspectDelay

    一致するルートを検出するためにルーターがデータを保持できる時間を指定します。この設定値が低すぎると、より適合性の高い証明書を使用している場合でも、ルーターがエッジ終端ルート、再暗号化ルート、またはパススルールート用のデフォルト証明書にフォールバックする可能性があります。デフォルトの検査遅延は 5s です。

    tuningOptions.tunnelTimeout

    トンネルがアイドル状態のときに、websocket を含むトンネル接続を開いたままにする時間を指定します。デフォルトのタイムアウトは 1h です。

  3. その他の必要な設定を完了したら、次のいずれかのコマンドを実行して MicroShift を起動または再起動します。

    $ sudo systemctl start microshift
    Copy to Clipboard Toggle word wrap
    $ sudo systemctl restart microshift
    Copy to Clipboard Toggle word wrap

検証

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

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

    $ oc get pods -n openshift-ingress
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                              READY   STATUS    RESTARTS   AGE
    router-default-8649b5bf65-w29cn   1/1     Running   0          6m10s
    Copy to Clipboard Toggle word wrap

5.2.1. Ingress コントローラーの certificateSecret 用のシークレットを作成する

MicroShift 設定ファイルの certificateSecret パラメーター値によって参照されるシークレットを作成するには、この手順を使用します。このシークレットには、Ingress コントローラーによって提供されるデフォルトの証明書が含まれています。

注記

使用中の証明書はすべて、MicroShift に組み込まれた OAuth サーバーに自動的に統合されます。

前提条件

  • MicroShift へのルートアクセス権がある。
  • OpenShift CLI (oc) がインストールされている。
  • 秘密鍵が暗号化されていないか、MicroShift にインポートするために秘密鍵が復号化されている。

手順

  1. ワイルドカード証明書チェーンおよびキーが含まれるシークレットを作成します。

    $ oc create secret tls <secret> 
    1
    
         --cert=</path/to/cert.crt> 
    2
    
         --key=</path/to/cert.key> 
    3
    
         -n openshift-ingress
    Copy to Clipboard Toggle word wrap
    1
    <secret> は、証明書チェーンと秘密鍵が含まれるシークレットの名前です。
    2
    </path/to/cert.crt> は、ローカルファイルシステム上の証明書チェーンへのパスです。
    3
    </path/to/cert.key> は、この証明書に関連付けられるプライベートキーへのパスです。
    重要

    証明書には、*.apps.<nodename>.<domain> を示す subjectAltName 拡張が含まれている必要があり ます。

  2. 新しく作成されたシークレットを使用して、MicroShift 設定 YAML の certificateSecret パラメーター値を更新します。
  3. その他の必要な設定を完了したら、次のいずれかのコマンドを実行して MicroShift を起動または再起動します。

    $ sudo systemctl start microshift
    Copy to Clipboard Toggle word wrap
    $ sudo systemctl restart microshift
    Copy to Clipboard Toggle word wrap

5.2.2. Ingress コントローラーの TLS セキュリティープロファイルの設定

MicroShift 設定 YAML でタイプを設定することで、Ingress コントローラーが使用する TLS セキュリティープロファイルを設定できます。

前提条件

  • MicroShift ノードへの root アクセスがある。

手順

  1. spec.tlsSecurityProfile フィールドを MicroShift YAML 設定ファイルに追加します。

     ...
    spec:
      tlsSecurityProfile:
        type: Custom 
    1
    
        custom: 
    2
    
          ciphers: 
    3
    
          - ECDHE-ECDSA-CHACHA20-POLY1305
          - ECDHE-RSA-CHACHA20-POLY1305
          - ECDHE-RSA-AES128-GCM-SHA256
          - ECDHE-ECDSA-AES128-GCM-SHA256
          minTLSVersion: VersionTLS11
     ...
    Copy to Clipboard Toggle word wrap
    1
    TLS セキュリティープロファイルタイプ (OldIntermediate、または Custom) を指定します。デフォルトは Intermediate です。
    2
    選択したタイプに適切なフィールドを指定します。
    • old: {}
    • intermediate: {}
    • custom:
    3
    custom タイプには、TLS 暗号のリストと最小許容 TLS バージョンを指定します。
    警告

    custom TLS 設定を選択する場合は、細心の注意を払ってください。自己署名 TLS 証明書を使用すると、セキュリティー上のリスクが生じる可能性があります。

  2. 変更を適用するためにファイルを保存します。
  3. 次のコマンドを実行して MicroShift を再起動します。

    $ sudo systemctl restart microshift
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat