Kubernetes IngressのHTTPRoute CRDを使用した高度なコンテンツルーティング

最終公開日 : Oct 02, 2026
KubernetesネイティブのIngressは、NetScaler Ingress Controllerでサポートされている基本的なホストおよびパスベースのルーティングを提供します。 NetScalerは、高度なルーティング機能をサポートするために、コンテンツルーティングCRDを使用する代替アプローチも提供します。コンテンツルーティングCRDには、Listener CRDとHTTPRoute CRDが含まれます。これらのCRDは、正規表現ベースの式や、クエリパラメータ、Cookie、HTTPヘッダー、その他のNetScalerカスタム式に基づくコンテンツスイッチングなど、高度なコンテンツルーティング機能を提供します。
Ingressバージョンnetworking.k8s.io/v1では、Kubernetesはリソースバックエンドのサポートを導入しています。リソースバックエンドは、Ingressオブジェクトと同じ名前空間内の別のKubernetesリソースへのObjectRefです。
現在、NetScalerはIngressのリソースバックエンドとしてHTTPルートCRDリソースの設定をサポートしています。デフォルトでは、Ingressはパスおよびホストベースのルーティングのような限られたコンテンツルーティング機能のみをサポートしています。この機能により、Ingressに高度なコンテンツルーティング機能を拡張し、さまざまなコンテンツスイッチングオプションを設定できます。特定のドメインの場合、Kubernetes Ingress APIのサードパーティ互換性サポートを失うことなく、HTTPRouteカスタムリソースを使用してコンテンツスイッチングを設定できます。
アーキテクチャ
注:
  • この機能は、Kubernetes 1.19以降のバージョンで利用可能なKubernetes Ingressバージョンnetworking.k8s.io/v1をサポートしています。
  • 同じドメインでIngressパスルーティングとHTTPRouteが使用されている場合、HTTPRouteリソースからのすべてのコンテンツルーティングポリシーは、Ingressベースのコンテンツルーティングポリシーよりも優先度が低くなります。したがって、高度なコンテンツルーティングが必要な場合は、特定のドメインに対してHTTPRouteリソースのすべてのコンテンツスイッチングポリシーを設定することをお勧めします。

HTTPRoute CRDを使用してKubernetes Ingressの高度なコンテンツルーティングを設定する

この手順では、高度なコンテンツルーティングをサポートするために、HTTPRouteリソースをリソースバックエンドとしてデプロイする方法を示します。

前提条件

  • KubernetesクラスターでIngress APIバージョンnetworking.k8s.io/v1が利用可能であることを確認してください。
  • HTTPRoute CRDがデプロイされていることを確認してください。

Ingressリソースをデプロイする

YAMLファイルで、リソースバックエンドがHTTPRouteカスタムリソースを指すようにIngressリソースを定義します。証明書、フロントエンドプロファイル、フロントエンドIPアドレス、Ingressクラスなど、すべてのフロントエンド設定をIngressリソースの一部として指定します。
以下は、sample-ingress.yamlという名前のIngressリソースのサンプルです。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kuard-ingress
  annotations:
    ingress.citrix.com/frontend-ip: "x.x.x.x"
    ingress.citrix.com/insecure-termination: "redirect"
spec:
  ingressClassName: citrix
  tls:
  - secretName: web-ingress-secret
  rules:
  - host: kuard.example.com
    http:
      paths:
      - pathType: ImplementationSpecific
        backend:
          resource:
            apiGroup: citrix.com
            kind: HTTPRoute
            name: kuard-example-route
YAMLファイルでIngressリソースを定義した後、次のコマンドを使用してYAMLファイルをデプロイします。ここで、sample-ingress.yamlはYAMLファイルの定義です。
kubectl apply -f sample-ingress.yaml
この例では、ドメインkuard.example.comのコンテンツスイッチングポリシーは、kuard-example-routeという名前のHTTPRouteカスタムリソースの一部として定義されています。Certificates、frontend-ip、およびingress classはIngressリソースの一部として指定されています。ロードバランシング方法やサービスグループ構成などのバックエンドアノテーションは、HTTPRouteカスタムリソースの一部として指定されています。

HTTPRouteリソースをデプロイする

YAMLファイルでHTTPルート構成を定義します。YAMLファイルでは、kindフィールドでHTTPRouteを使用し、specセクションでHTTPルート構成の要件に基づいてHTTPRoute CRD属性を追加します。
APIの説明と例の詳細については、HTTPRouteドキュメントを参照してください。
以下は、HTTPRouteリソース構成のサンプルです。この例は、さまざまなKubernetesバックエンドマイクロサービスに対してクエリパラメータベースのコンテンツスイッチングを使用する方法を示しています。
apiVersion: citrix.com/v1
kind: HTTPRoute
metadata:
   name: kuard-example-route
spec:
  hostname:
  - kuard.example.com
  rules:
  - name: kuard-blue
    match:
    - queryParams:
      - name: version
        contains: v2
    action:
      backend:
        kube:
          service: kuard-blue
          port: 80
  - name: kuard-green
    match:
    - queryParams:
      - name: version
        contains: v3
    action:
      backend:
        kube:
          service: kuard-green
          port: 80
  - name: kuard-default
    match:
    - path:
       prefix: /
    action:
      backend:
        kube:
          service: kuard-purple
          port: 80
YAMLファイルでHTTPルートを定義したら、YAMLファイルをデプロイします。この例では、httprouteがYAML定義です。
kubectl apply -f httproute.yaml