NetScaler Kubernetes Ingress Controller を OpenShift ルータープラグインとして展開する

最終公開日 : Oct 02, 2026
OpenShift クラスターでは、外部クライアントがサービスにアクセスする方法が必要です。OpenShift は、クラスター内で実行されているサービスと通信するための次の2つのリソースを提供します。
  • ルート
  • イングレス
ルートは、特定のドメイン名でサービスを公開するか、ドメイン名をサービスに関連付けます。OpenShift ルーターは、ルートで指定されたルールに従って、外部リクエストをクラスター内のサービスにルーティングします。OpenShift ルーターを使用する場合、トラフィックが OpenShift ルーターに到達するように外部 DNS を構成する必要があります。
NetScaler Ingress Controller は、環境に展開された NetScaler と統合するためのルータープラグインとして展開できます。この展開により、OpenShift で NetScaler の高度な負荷分散およびトラフィック管理機能を使用できるようになります。

サポートされているルートタイプ

OpenShift ルートは、セキュリティで保護されている場合と保護されていない場合があります。セキュリティで保護されたルートは、ルートの TLS 終端を指定します。
NetScaler Ingress Controller は、次の OpenShift ルートをサポートしています。
  • 保護されていないルート: 保護されていないルートの場合、HTTP トラフィックは暗号化されません。
  • エッジ終端: エッジ終端の場合、TLS はルーターで終端されます。ルーターから内部ネットワーク経由でエンドポイントへのトラフィックは暗号化されません。
  • パススルー終端: パススルー終端では、ルーターは TLS オフロードに関与せず、暗号化されたトラフィックは直接宛先に送信されます。
  • 再暗号化終端: 再暗号化終端では、ルーターは TLS 接続を終端しますが、その後、エンドポイントへの別の TLS 接続を確立します。
ルートの詳細については、OpenShift ドキュメントを参照してください。

展開オプション

OpenShiftクラスターの外部にアプライアンス(NetScaler MPXまたはVPX)をデプロイするか、クラスター内にNetScaler CPXポッドをデプロイできます。NetScaler Ingress Controllerは、NetScalerをOpenShiftと統合し、ルートルールから自動的に構成します。
ルータープラグインの2つのデプロイモード:
  • サイドカー: NetScaler Ingress Controllerを、NetScaler CPXと同じポッド内でサイドカーコンテナとして実行します。イングレスがCPXを構成します。
  • スタンドアロンポッド: NetScaler Ingress Controllerをスタンドアロンで実行し、クラスター外のNetScaler MPXまたはVPXアプライアンスを制御します。
NetScaler Ingress ControllerでOpenShiftイングレスを制御する方法については、Kubernetesデプロイ手順を参照してください。
NetScalerを使用して、OpenShiftコントロールプレーン(マスターノード)のロードバランシングを行うことができます。NetScalerは、NetScalerを構成するためのTerraformベースの自動化を提供します。OpenShiftコントロールプレーンのロードバランサーとしてのNetScalerを参照してください。

代替バックエンドのサポート

OpenShift代替バックエンドはNetScaler Ingress Controllerでサポートされています。NetScalerはルート定義の重みに従って構成され、トラフィックはそれらの重みに基づいてサービスポッド間で分散されます。
代替バックエンドを持つルートマニフェストの例:
kind: Route
apiVersion: route.openshift.io/v1
metadata:
  name: r1
  labels:
    name: apache
  annotations:
    route.citrix.com/frontend-ip: "<Frontend-ip>"
spec:
  host: some.alternate-backends.com
  to:
    kind: Service
    name: apache-1
    weight: 30
  alternateBackends:
    - kind: Service
      name: apache-2
      weight: 20
    - kind: Service
      name: apache-3
      weight: 50
  port:
    targetPort: 80
  wildcardPolicy: None
このルートの場合:トラフィックの30%がapache-1に、20%がapache-2に、50%がapache-3に送られます。

OpenShiftでサポートされているCitrixコンポーネント

Citrixコンポーネント バージョン
NetScaler イングレスコントローラー 最新
NetScaler VPX 12.1 50.x 以降
NetScaler CPX 13.0–36.28 以降
注:
NetScaler Ingress Controller 用に提供される CRDs は、OpenShift ルートではサポートされていません。CRD を使用するには、OpenShift イングレスを使用してください。

例

次の例では、アプリケーションの負荷分散を行うために、NetScaler Ingress Controller をルータープラグインとして展開します。
  1. サンプルアプリケーション (apache.yaml) を展開し、それを公開します。
    oc create -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/openshift/manifest/apache.yaml
    注:
    OpenShift では Apache Pod が失敗する可能性があります。これは、それらが root として実行されるか、ポート 80 にバインドされることが多いためです。回避策として、Pod のデフォルトサービスアカウントを特権 SCC に追加し、anyuid を追加します。
    oc adm policy add-scc-to-user privileged system:serviceaccount:default:default oc adm policy add-scc-to-group anyuid system:authenticated
    apache.yaml ファイルの内容は次のとおりです。
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        name: apache-only-http
      name: apache-only-http
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: apache-only-http
      template:
        metadata:
          labels:
            app: apache-only-http
        spec:
          containers:
          - image: quay.io/sample-apps/apache:1.0.0
            imagePullPolicy: IfNotPresent
            name: apache-only-http
            ports:
            - containerPort: 80
              protocol: TCP
            - containerPort: 5080
              protocol: TCP
            - containerPort: 5081
              protocol: TCP
            - containerPort: 5082
              protocol: TCP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        name: apache-only-ssl
      name: apache-only-ssl
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: apache-only-ssl
      template:
        metadata:
          labels:
            app: apache-only-ssl
        spec:
          containers:
          - image: quay.io/sample-apps/apache:1.0.0
            imagePullPolicy: IfNotPresent
            name: apache-only-ssl
            ports:
            - containerPort: 443
              protocol: TCP
            - containerPort: 5443
              protocol: TCP
            - containerPort: 5444
              protocol: TCP
            - containerPort: 5445
              protocol: TCP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-apache-multi-http
    spec:
      ports:
      - name: apache-http-6080
        port: 6080
        targetPort: 5080
      - name: apache-http-6081
        port: 6081
        targetPort: 5081
      - name: apache-http-6082
        port: 6082
        targetPort: 5082
      selector:
        app: apache-only-http
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-apache-multi-ssl
    spec:
      ports:
      - name: apache-ssl-6443
        port: 6443
        targetPort: 5443
      - name: apache-ssl-6444
        port: 6444
        targetPort: 5444
      - name: apache-ssl-6445
        port: 6445
        targetPort: 5445
      selector:
        app: apache-only-ssl
    ---
  2. 「NetScaler Ingress Controller を Pod として展開する」の手順を使用して、NetScaler VPX 用の NetScaler Ingress Controller を OpenShift クラスターにスタンドアロン Pod として展開します。
    注:
    OpenShiftクラスターにNetScaler CPXと共にNetScaler Ingress Controllerを展開するには、「NetScaler CPXをサイドカーとしてNetScaler Ingress Controllerを展開する」の手順を実行します。
  3. アプリケーションを公開するためのOpenShiftルートを作成します。オプションは次のとおりです。
    1. 保護されていないOpenShiftルート unsecured-route.yaml` を作成するには、次のコマンドを使用します。
      apiVersion: v1
      kind: Route
      metadata:
        name: unsecured-route
      spec:
        host: unsecured-route.openshift.citrix-cic.com
        path: "/"
        to:
          kind: Service
          name: svc-apache-multi-http
      oc create -f unsecured-route.yaml
    2. エッジ終端で保護されたOpenShiftルート secured-edge-route.yaml を作成するには、次のコマンドを使用します。
      apiVersion: v1
      kind: Route
      metadata:
        name: secured-edge-route
      spec:
        host: secured-edge-route.openshift.citrix-cic.com
        path: "/"
        to:
          kind: Service
          name: svc-apache-multi-http
        tls:
          termination: edge

          key: |-
            ----BEGIN RSA PRIVATE KEY-----

                [...]

            -----END RSA PRIVATE KEY-----

          certificate: |-
            -----BEGIN CERTIFICATE-----
                [...]
            -----END CERTIFICATE-----
      oc create -f secured-route-edge.yaml
    3. パススルー終端で保護されたOpenShiftルート secured-passthrough-route.yaml を作成するには、次のコマンドを使用します。
      apiVersion: v1
      kind: Route
      metadata:
        name: secured-passthrough-route
      spec:
        host: secured-passthrough-route.openshift.citrix-cic.com
        to:
          kind: Service
          name: svc-apache-multi-ssl
        tls:
          termination: passthrough
      oc create -f secured-passthrough-route.yaml
    4. 再暗号化終端で保護されたOpenShiftルート secured-reencrypt-route.yaml を作成するには、次のコマンドを使用します。
      apiVersion: v1
      kind: Route
      metadata:
        name: secured-reencrypt-route
      spec:
        host: secured-reencrypt-route.openshift.citrix-cic.com
        path: "/"
        to:
          kind: Service
          name: svc-apache-multi-ssl
        tls:
          termination: reencrypt

          key: |-
            -----BEGIN RSA PRIVATE KEY-----
                  [...]
            -----END RSA PRIVATE KEY-----

          certificate: |-
            -----BEGIN CERTIFICATE-----
                  [...]
            -----END CERTIFICATE-----

          destinationCACertificate: |-
            -----BEGIN CERTIFICATE-----
                  [...]
            -----END CERTIFICATE-----
      oc create -f secured-reencrypt-route.yaml
    注:
    パススルー終端で保護されたOpenShiftルートの場合、デフォルトの証明書を含める必要があります。
  4. 次のコマンドを使用してアプリケーションにアクセスします。
    curl http://<VIP of NetScaler VPX>/ -H 'Host: < host-name-as-per-the-host-configuration-in-route >'