HTTPルート

最終公開日 : Oct 02, 2026
HTTPRoute は、コンテンツスイッチングのルーティング決定を定義するカスタムリソースです。 現在、HTTPRoute は以下のルーティングをサポートしています。
  • ホスト名ベースのルーティング
  • パスベースのルーティング
  • HTTPヘッダー名ベースのルーティング
  • HTTPヘッダー値ベースのルーティング。
  • Cookieベースのルーティング
  • クエリパラメータベースのルーティング
  • HTTPメソッドベースのルーティング
  • NetScalerポリシー式を使用したルーティング
HTTPRouteオブジェクトの一部として、1つ以上のルールを定義でき、各ルールはルーティングのマッチング条件として機能します。受信HTTPリクエストに対してマッチング条件が満たされた場合、各ルールに対してアクションが定義されます。アクションは、トラフィックがバックエンドサービスにロードバランスされる「バックエンド」か、リダイレクト応答がクライアントに返送される「リダイレクト」のいずれかです。「バックエンド」アクションはADCでコンテンツスイッチングポリシーを作成し、「リダイレクト」アクションはADCでレスポンダーポリシーを作成します。
以下の表で説明されているように、マッチング条件には3つの異なる方法があります。
マッチング条件 説明
exact 受信リクエストと完全に一致します。この条件では大文字と小文字は区別されません。
prefix 受信リクエストのプレフィックスと一致します。この条件では大文字と小文字は区別されません。例: /a は /a/b および /a/c と一致しますが、/c/a とは一致しません。
contains 受信リクエストに指定されたキーワードが含まれている場合に一致します。この条件では大文字と小文字が区別されます。
このトピックでは、HTTPRoute CRD オブジェクトのサンプルと、HTTPRoute CRD のさまざまな属性について説明します。完全な CRD 定義については、HTTPRoute.yaml を参照してください。

HTTP CRD オブジェクトの例

以下は、HTTP CRD オブジェクトのサンプルです。
apiVersion: citrix.com/v1
kind: HTTPRoute
metadata:
  name: test-route
  labels:
    domain: abc.com
spec:
  hostname:
  - abc.com
  rules:
  - name: exactpath
    match:
    - path:
        exact: /resources
    action:
      backend:
        kube:
          service: resource
          port: 80
  - name: prefixpath
    match:
    - path:
        prefix: /cart
    action:
      backend:
        kube:
          service: cart
          port: 80
  - name: header
    match:
    - headers:
      - headerName:
          contains: Mobile
    action:
      backend:
        kube:
          service: mobile
          port: 443
          backendConfig:
            secureBackend: true
            lbConfig:
              lbmethod: ROUNDROBIN
その他の例については、HTTP ルートの例 を参照してください。

HTTPRoute.spec

HTTPRoute カスタムリソースは、HTTP ルーティング仕様を表す spec フィールドを定義します。この仕様には、定義された各ルールのアクションを含むルールのリストがあります。
次の表は、HTTPRoute.spec 属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
hostname サーバーのホスト名リストを指定します。ホスト名は、RFC 1123 で定義されている有効なサブドメインである必要があります(例: test.example.com)。*.example.com の形式のワイルドカードホスト名も有効です。その場合、example.com の任意のサブドメインがマッチングの対象となります。デフォルト値は * で、これはすべての受信 HTTP リクエストに一致することを意味します。 文字列 はい
rules アクションに関連付けられた、マッチングルーティング基準を持つルールリストを指定します。 [ ] ルール いいえ

HTTPRoute.rules

次の表は、HTTPRoute.rules 属性のさまざまなフィールドについて説明します。
フィールド 説明 型 必須
name ルールを表す名前を指定します。このフィールドは、NetScaler のコンテンツルーティングポリシー名で識別子として使用されます。注: 各ルールについて、名前は一意である必要があります。 文字列 はい
注: 各ルールについて、名前は一意である必要があります。
action 一致するルールのアクションを指定します。 rules.action はい
match 同じアクションを持つ一致するルートのリスト。複数のエントリが存在する場合、この一致ルールは OR 条件として扱われ、いずれかの一致に対して同じアクションが選択されます。 [ ] rules.match いいえ

HTTPRoute.rules.match

次の表は、HTTPRoute.rules.match 属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
path URLパスベースのルーティングルールを指定します。 HTTPRoute.rules.match.path いいえ
headers コンテンツルーティングのヘッダーベースの一致のリストを指定します。複数のルールがある場合、この一致条件はAND条件として扱われ、すべてのルールが一致する必要があります。 [ ] HTTPRoute.rules.match.headers いいえ
cookies コンテンツルーティングのCookieベースの一致のリストを指定します。複数のルールがある場合、この一致条件はAND条件として扱われ、すべてのルールが一致する必要があります。 [ ] HTTPRoute.rules.match.cookies いいえ
queryParams コンテンツルーティングのクエリパラメータのリストを指定します。複数のルールがある場合、このマッチング条件はAND条件として扱われ、すべてのルールが一致する必要があります。 [ ] HTTPRoute.rules.match.queryParams いいえ
method HTTPメソッドベースのルーティングルールを指定します。可能なオプションは、GET、POST、PUTなどです。一致するメソッドを持つHTTPリクエストに対してアクションが選択されます。 文字列 いいえ
policyExpression NetScalerポリシー式ベースのルーティングルールを指定します。コンテンツルーティングルールには、任意のカスタムNetScalerポリシー式を指定できます。NetScaler Ingress Controllerは式の正確性をチェックしません。したがって、式の正確性を確認する必要があります。ポリシー式の詳細については、Expression Prefixを参照してください。例: HTTP.REQ.URL.PATH.GET(1).EQ("foo") 文字列 いいえ

HTTPRoute.rules.match.path

この属性は、コンテンツルーティングのパスベースのマッチングを指定します。
HTTPRoute.rules.match.path属性の例を次に示します。
     match:
     - path:
         prefix: /resources
     action:
       backend:
         kube:
           service: resource
           port: 80
---
     match:
     - path:
         regex: '/foo/[A-Z0-9]{3}'
     action:
       backend:
         kube:
           service: resource
           port: 80
次の表は、HTTPRoute.rules.match.path属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
prefix パスのプレフィックス式を照合基準として指定します。HTTPリクエストの開始パスが指定されたパスと一致する場合、照合を実行します。たとえば、/aはURL /aおよび/a/bと一致します。 文字列 いいえ
exact 正確なパスを照合基準として指定します。リクエストパスが指定されたパスと完全に一致する場合にのみ照合を実行します。 文字列 いいえ
regex パスのマッチング条件として正規表現を指定します。指定された正規表現が受信リクエストと一致する場合にマッチングを実行します。Perl互換正規表現(PCRE)形式の正規表現のみがサポートされています。NetScalerでサポートされている正規表現の詳細については、正規表現を参照してください。 文字列 いいえ

HTTPRoute.rules.match.headers

この属性は、コンテンツルーティングのためのヘッダーベースのマッチングを表します。
次の表は、HTTPRoute.rules.match.headers属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
headerName コンテンツルーティングのマッチング条件としてヘッダー名を指定します。ヘッダーが存在する場合、マッチングに使用されます。この場合、ヘッダー値はマッチングの対象になりません。 HTTPRoute.rules.match.headers.headerName いいえ
headerValue コンテンツルーティングの一致条件としてヘッダー名と値を指定します。名前の場合は、正確な名前が一致条件となり、値の一致条件は、exact、regex、またはcontains式として指定できます。 HTTPRoute.rules.match.headers.headerValue いいえ

HTTPRoute.rules.match.headers.headerName

この属性は、コンテンツルーティングのためのヘッダー名に基づいた一致を表します。
以下の例は、HTTPRoute.rules.match.headers.headerName属性の設定に関するサンプルスニペットを示しています。
    match:
    - headers:
      - headerName:
        exact: mobile
    action:
      backend:
        kube:
          service: mobile-service
          port: 80
---
    match:
    - headers:
       - headerName:
         regex: "Header-[a-z]{1}"
    action:
      backend:
        kube:
          service: resource-service
          port: 80
以下の表は、HTTPRoute.rules.match.headers.headerName属性内のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
exact ルーティングの一致条件として、正確なヘッダー名を指定します。 文字列 いいえ
contains contains文字列で指定された文字列を、ヘッダー名の照合基準として指定します。 文字列 いいえ
regex 正規表現を照合基準として指定します。ヘッダー名が指定された正規表現と一致する場合に照合を実行します。PCRE形式の正規表現のみがサポートされています。 文字列 いいえ
not この属性のデフォルト値はfalseです。この値がtrueの場合、ヘッダー名は受信リクエストに存在してはなりません。 ブール値 いいえ

HTTPRoute.rules.match.headers.headerValue

この属性は、コンテンツルーティングのためのヘッダー名と値の照合を表します。ヘッダー名は完全に一致し、値は指定されたフィールドに従って照合されます。
次の例は、HTTPRoute.rules.match.headers.headerValue属性設定のサンプルスニペットを示しています。

     match:
     - headers:
       - headerValue:
           name: Origin
           exact: mobile
           not: true
     action:
       backend:
         kube:
           service: mobile
           port: 80
---
     match:
     - headers:
       - headerValue:
           name: Origin
           prefix: header1
     action:
       backend:
         kube:
           service: service1
           port: 80
---
     match:
     - headers:
       - headerValue:
           name: Origin
           regex: "[a-z]{1}"
     action:
       backend:
         kube:
           service: example
           port: 80
次の表は、HTTPRoute.rules.match.headers.headerValue 属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
name 値と一致する必要があるヘッダーの名前を指定します。ヘッダーの値を照合するには、exact、contains、および regex フィールドが使用されます。exact、contains、および regex のいずれのフィールドも存在しない場合、その名前の任意の値が照合されます。 文字列 はい
exact 名前フィールドを持つHTTPヘッダーの値が正確に一致する場合に照合します。 文字列 いいえ
contains 名前フィールドを持つHTTPヘッダーの値が指定された文字列を含む場合に照合します。 文字列 いいえ
regex nameフィールドを持つHTTPヘッダーの値が正規表現と一致する場合にマッチします。PCRE形式の正規表現のみがサポートされています。 文字列 いいえ
not この属性のデフォルト値はfalseです。この値がtrueの場合、ヘッダー名は値と一致してはなりません。 ブール値 いいえ

HTTPRoute.rules.match.cookies

この属性は、コンテンツルーティングにおけるCookieベースのマッチングを表します。HTTPリクエストのCookieヘッダーがマッチングに使用されます。nameフィールドを持つCookieは、値が存在する場合にその値と照合されます。値が指定されていない場合は、任意の値と照合されます。
以下の例は、HTTPRoute.rules.match.cookies属性設定のサンプルスニペットを示しています。
     match:
     - cookies:
       - name: version
         contains: v1
     action:
       backend:
         kube:
           service: v1-app
           port: 80
---
     match:
     - cookies:
       - name: version
         exact: v1
     action:
       backend:
         kube:
           service: v1-app
           port: 80
---
     match:
     - cookies:
       - name: version
         regex: '[a-z]{1}'
     action:
       backend:
         kube:
           service: v1-app
           port: 80
以下の表は、HTTPRoute.rules.match.cookies属性の様々なフィールドを説明しています。
フィールド 説明 タイプ 必須
name 値がマッチングに使用されるクッキーの名前を指定します。exact、regex、contains のようなマッチング条件がクッキー名に存在しない場合、その名前が存在すれば、クッキー名の任意の値がマッチングされます。 文字列 はい
exact 名前フィールドを持つクッキーの値が完全に一致する場合にマッチします。 文字列 いいえ
contains 名前フィールドを持つクッキーの値が指定された文字列を含む場合にマッチします。 文字列 いいえ
regex 名前フィールドを持つCookieの値が正規表現と一致する場合にマッチします。PCRE形式の正規表現のみがサポートされています。 文字列 いいえ
not この属性のデフォルト値はfalseです。この値がtrueの場合、名前を持つCookieは存在する必要がありますが、値と一致してはいけません。 ブール値 いいえ

HTTPRoute.rules.match.queryParams

この属性は、コンテンツルーティングのためのURLマッチングにおけるHTTPクエリパラメータを表します。

    match:
     - queryParams:
       - name: version
         contains: v1
    action:
      backend:
        kube:
          service: v1-app
          port: 80
---
    match:
    - queryParams:
      - name: version
        regex: '[a-z]{1}'
    action:
      backend:
        kube:
          service: v1-app
          port: 80
---
     match:
     - queryParams:
      - name: version
        exact: v1
        not: true
     action:
       backend:
        kube:
          service: mobile
          port: 80
次の例は、HTTPRoute.rules.match.cookies属性設定のサンプルスニペットを示しています。
フィールド 説明 型 必須
name 値が照合されるクエリパラメータの名前を指定します。exact、regex、contains のような条件がどれも存在しない場合、クエリパラメータの名前が存在すれば、その名前の任意の値が照合されます。 文字列 はい
exact 名前フィールドを持つクエリパラメータの値が完全に一致する場合に照合されます。 文字列 いいえ
contains 名前フィールドを持つクエリパラメータの値が指定された文字列を含む場合に照合されます。 文字列 いいえ
regex 名前フィールドを持つクエリパラメータの値が正規表現に一致する場合に照合されます。PCRE形式の正規表現のみがサポートされています。 文字列 いいえ
not この属性のデフォルト値はfalseです。この値がtrueの場合、名前を持つクエリパラメータは存在する必要がありますが、値と一致してはいけません。 ブール値 いいえ

HTTPRoute.rules.action

この属性は、マッチングルールのアクションを表します。
次の表は、HTTPRoute.rules.action属性のさまざまなフィールドについて説明します。
フィールド 説明 タイプ 必須
backend このフィールドのデフォルトアクションは、トラフィックをバックエンドサービスに送信することです。バックエンドまたはリダイレクトのいずれかが必要です。 rules.action.backend いいえ
redirect デフォルトのアクションはトラフィックをリダイレクトすることです。バックエンドまたはリダイレクトのいずれかが必要です。 rules.action.redirect いいえ

HTTPRoute.rules.action.backend

この属性は、トラフィックをバックエンドサービスにルーティングすることを表します。 次の表は、HTTPRoute.rules.action.backend 属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
kube バックエンドサービス用のKubernetesサービス情報を指定します。 action.backend.kube

HTTPRoute.rules.action.backend.kube

この属性は、デフォルトのバックエンドのKubernetesサービスを表します。サービスはHTTPRouteリソースと同じ名前空間に属している必要があります。サービスがNodePortまたはLoadbalancerタイプの場合、ポッドを持つそれらのノードのノードIPアドレスとNodePortのリストが、7でバックエンドサービスとして使用されます。
HTTPRoute.rules.action.backend.kube属性の例を次に示します。
kube:
  service: service
  namespace: default
  port: 80
  backendConfig:
    lbConfig:
      lbmethod: ROUNDROBIN
    servicegroupConfig:
      clttimeout: '20'
次の表は、HTTPRoute.rules.action.backend.kube属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
service デフォルトのバックエンドのKubernetesサービスの名前を指定します。 文字列 はい
port デフォルトのバックエンドのKubernetesサービスのポート番号を指定します。 整数 はい
backendConfig デフォルトのバックエンドのバックエンド構成を指定します。 BackendConfig いいえ

BackendConfig

この属性は、NetScaler のバックエンド構成を表します。 以下は、BackendConfig 属性構成の例です。
backendConfig:
 sercureBackend: true
 lbConfig:
   lbmethod: ROUNDROBIN
 servicegroupConfig:
   clttimeout: '20'
次の表は、BackendConfig 属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
secureBackend 通信がセキュアかどうかを指定します。secureBackend フィールドの値が true の場合、バックエンドとの通信にはセキュアな通信が使用されます。デフォルト値は false で、これはバックエンド通信に HTTP が使用されることを意味します。
lbConfig 指定されたバックエンドの NetScaler ロードバランシング仮想サーバー構成を指定します。例に示すようにキーと値のペアを指定して、バックエンドの LBVserver 構成を設定できます。すべての有効な構成については、LB virtual server configurations を参照してください。 オブジェクト いいえ
servicegroupConfig 指定されたバックエンドのNetScalerサービスグループ構成を指定します。例に示すように、バックエンドのサービスグループ構成を設定するキーと値のペアを指定できます。すべての有効な構成については、サービスグループ構成を参照してください。 オブジェクト いいえ

HTTPRoute.rules.action.redirect

この属性はリダイレクトアクションを表します。
action:
  redirect:
   httpsRedirect: true
   responseCode: 302
次の表は、HTTPRoute.rules.action.redirect属性のさまざまなフィールドについて説明しています。
フィールド 説明 タイプ 必須
httpsRedirect このフィールドがyesに設定されている場合、HTTPトラフィックをHTTPSにリダイレクトします。他のURL部分を変更せずに、スキームのみがHTTPSに変更されます。httpsRedirect、hostRedirect、またはtargetExpressionのいずれかが必要です。 ブール値 いいえ
hostRedirect URLのホスト名部分をこの属性に設定された値に書き換え、トラフィックをリダイレクトします。URLの他の部分はリダイレクト中に変更されません。 文字列 いいえ
targetExpression リダイレクト用のNetScaler式を指定します。例えば、HTTPからHTTPSへトラフィックをリダイレクトするには、以下の式を使用できます: ""https://"+HTTP.REQ.HOSTNAME + HTTP.REQ.URL.HTTP_URL_SAFE"。 文字列 いいえ
responseCode レスポンスコードを指定します。デフォルトのレスポンスコードは302で、この属性を使用してカスタマイズできます。 整数 いいえ