NetScaler Kubernetes Gateway ControllerをOpenShiftのCPXにNetScaler Operatorを使用してデプロイする

最終公開日 : Oct 02, 2026
このセットアップでは、NetScaler Kubernetes Gateway ControllerがOpenShiftクラスターにデプロイされたNetScaler CPXを構成します。

前提条件

  • Red Hat OpenShift Cluster (バージョン4.1以降)へのアクセス。
  • NetScaler Operatorをデプロイします。NetScaler Operatorのデプロイ方法については、NetScaler Operatorのデプロイを参照してください。
  • 任意のサービスモニターにエクスポートするには、次のコマンドを使用してサービスモニターCRDをインストールします。
    kubectl create -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/refs/heads/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
  • 直接Prometheusエクスポートを介して収集されたNetScaler CPXのメトリックを表示する場合は、Prometheus Operatorをインストールします。
  • Gateway API CRDがまだインストールされていない場合は、公式標準チャネルからインストールします。

NetScaler Kubernetes Gateway ControllerをNetScaler CPXのサイドカーとしてデプロイする

次の手順を実行します。
  1. OpenShift 4.xクラスターコンソールにログインします。
  2. コンソールを使用してCNNwebsiteアプリケーションをデプロイします。
    1. Workloads > Deployments > Create Deploymentに移動し、次のYAMLファイルを使用してデプロイメントを作成します。
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: cnn-website
        labels:
          name: cnn-website
          app: cnn-website
      spec:
        selector:
          matchLabels:
            app: cnn-website
        replicas: 2
        template:
          metadata:
            labels:
              name: cnn-website
              app: cnn-website
          spec:
            containers:
            - name: cnn-website
              image: quay.io/sample-apps/cnn-website:v1.0.0
              ports:
              - name: http-80
                containerPort: 80
              - name: https-443
                containerPort: 443
      デプロイメントの作成
    2. Workloads > Podsセクションに移動し、CNNwebsiteアプリケーションのPodが稼働していることを確認します。
      ポッド
  3. CNNwebsiteアプリケーションのサービスを作成します。Networking > Services > Create Serviceに移動し、次のYAMLファイルを使用します。
    apiVersion: v1
    kind: Service
    metadata:
      name: cnn-website
      labels:
        app: cnn-website
    spec:
      type: NodePort
      ports:
      - name: http-80
        port: 80
        targetPort: 80
      - name: https-443
        port: 443
        targetPort: 443
      selector:
        name: cnn-website
  4. CNNwebsiteアプリケーション用に、自己署名証明書、ゲートウェイクラス、ゲートウェイ、およびHTTPルートを作成します。
    1. TLS構成のためにGateway-Listenerで使用する自己署名SSL証明書とキーを作成します。次のコマンドは、自己署名証明書を作成するための単なるサンプルコマンドであり、アプリケーションのホスト名がexample.comであると仮定しています。
      openssl genrsa -out cnnwebsite_key.pem 2048

      openssl req -new -key cnnwebsite_key.pem -out cnnwebsite_csr.pem -subj "/CN=example.com"

      openssl x509 -req -in cnnwebsite_csr.pem -sha256 -days 365 -extensions v3_ca -signkey cnnwebsite_key.pem -CAcreateserial -out cnnwebsite_cert.pem

      oc create secret tls app1-secret --key cnnwebsite_key.pem --cert cnnwebsite_cert.pem
    2. ゲートウェイクラス、ゲートウェイ、およびHTTPルートを展開します。
      apiVersion: gateway.networking.k8s.io/v1
      kind: Gateway
      metadata:
        name: example-gateway
      spec:
        gatewayClassName: example-gateway-class
        listeners:
        - name: http
          protocol: HTTP
          port: 80
        - name: https
          protocol: HTTPS
          port: 443
          tls:
            mode: Terminate
            certificateRefs:
            - kind: Secret
              name: app1-secret
      ---
      apiVersion: gateway.networking.k8s.io/v1
      kind: HTTPRoute
      metadata:
        name: example-route
      spec:
        parentRefs:
        - name: example-gateway
        hostnames:
          - "example.com"
        rules:
        - matches:
          - path:
              type: PathPrefix
              value: /
          backendRefs:
          - name: cnn-website
            namespace: default
            port: 443
  5. Operators > Installed Operatorsに移動し、NetScaler Operatorをクリックします。
    インストールされているオペレーター
  6. NetScaler K8s Gateway Controllerタブをクリックし、Create NetScalerCPXWithK8sGatewayControllerを選択します。
    オペレーターの詳細
    Kubernetes Gateway Controller YAML定義を含むNetScaler CPXが表示されます。必要に応じて、ボタンを選択し、フォームでパラメーターを更新できます。
    CPX k8 Gatewayコントローラーの作成
  7. インストール中に構成できる必須およびオプションのパラメーターを一覧表示する次の表を参照してください。
    gatewayController:
      entityPrefix: gwy
      gatewayControllerName: "citrix.com/nscpxgw-controller"

    accept License: yes

    service:
      annotations: {}
      spec:
        type: NodePort
        ports:
          - port: 80
            targetPort: 80
            protocol: TCP
            name: http
          - port: 443
            targetPort: 443
            protocol: TCP
            name: https
    パラメーター 必須またはオプション デフォルト値 説明
    acceptLicense 必須 いいえ NetScaler Ingress Controller EULA を承諾するには「はい」に設定します。
    アフィニティ 任意 該当なし Pod の割り当て用アフィニティラベル。
    nodeSelector 任意 該当なし NetScaler Ingress Controller の展開における nodeSelector オプションに使用するノードラベルのキーと値のペア。
    podAnnotations 任意 N/A ポッドに追加するアノテーションのマップ。
    replicaCount オプション 1 デプロイされるCPX-NSICポッドの数。cpxBgpRouter : true の場合、CPXはDaemonSetとしてデプロイされるため、replicaCountは1になります。
    許容 オプション N/A CPX-NetScaler K8s Gatewayデプロイメントのトレランスを指定します。
    NetScaler コンソール設定
    パラメータ 必須またはオプション デフォルト値 説明
    ADMIP 任意 N/A NetScaler Console (旧 NetScaler Console) の IP アドレス。
    bandWidth 任意 1000 NetScaler CPX の希望する帯域幅容量 (Mbps)。
    bandWidthLicense 任意 偽 NetScaler CPX で帯域幅ベースのライセンスを使用する場合は、このパラメーターを true に設定します。
    cpxCores 任意 1 NetScaler CPXに必要なvCPUの数。
    licenseEdition オプション PLATINUM 指定可能な値は、Standard、Platinum、Enterpriseです。
    licenseServerIP オプション N/A NetScaler CPXをライセンスするためのNetScaler Console (旧NetScaler Console) のIPアドレス。詳細については、「ライセンス」を参照してください。
    licenseServerPort オプション 27000 デフォルト以外のポートが使用されている場合のNetScaler Console (旧NetScaler Console) ポート。
    loginSecret オプション N/A NetScaler Console にログインするためのシークレットキー。
    プラットフォーム オプション 偽 CP1000プラットフォームライセンスを有効にするには、trueに設定します。
    vCPULicense オプション N/A NetScaler CPX に vCPU ベースのライセンスを使用する場合は、値を true に設定します。
    licensingMode オプション プール ライセンスモードを pool または las に設定します。licensingMode が las の場合は、ADMIP、loginSecret、bandWidth、および licenseEdition を設定します。pool の場合は、licenseServerIP と bandWidthLicense または vCPULicense のいずれかを設定します。
    エクスポーター
    パラメータ 必須またはオプション デフォルト値 説明
    必須 オプション フォールス NetScaler CPX のメトリクスをプルするために、NetScaler Ingress Controller とともに NetScaler Stats 用のエクスポーターを実行するには、このパラメーターを true に設定します。
    イメージ オプション quay.io/netscaler/netscaler-adc-metrics-exporter@sha256:3d54b9151c742c00117be74e1ffd54430358e4cf628fe1f02d503088583f678 Quay.io でホストされているメトリクスエクスポーターイメージ。
    pullPolicy オプション IfNotPresent エクスポーターのイメージプルポリシー。
    リソース オプション {} メトリクスエクスポーターコンテナのCPU/メモリリソース。
    ports.containerPort オプション 8888 エクスポーターコンテナのポート。
    extraVolumes オプション N/A 追加のvolumeMounts用の追加ボリューム。
    imagePullSecrets オプション N/A プライベートなDockerレジストリまたはリポジトリからイメージをプルするために使用されるKubernetesシークレットのリスト。詳細については、「プライベートレジストリからイメージをプルする」を参照してください。
    ゲートウェイコントローラー
    パラメータ 必須またはオプション デフォルト値 説明
    disableAPIServerCertVerify オプション 偽 APIサーバーの証明書検証を無効にするには、このパラメータをtrueに設定します。
    enableLivenessProbe オプション 真 NetScaler Ingress Controllerの活性プローブ設定を無効にするには、このパラメータをfalseに設定します。
    enableReadinessProbe 任意 トゥルー NetScaler Ingress ControllerのReadinessプローブ設定。
    entityPrefix 任意 該当なし NetScaler CPX上のリソースのプレフィックス。
    extraVolumeMounts 任意 該当なし 該当なし
    gatewayControllerName 必須 該当なし ゲートウェイコントローラーの名前を指定します。
    イメージ 必須 quay.io/netscaler/netscaler-k8s-ingress-controller@sha256:2ff38654476234bfe2c3908932702b90c8ec6ed3cfb7c7f467dc6181df0f1adf Quay.io でホストされている NetScaler Ingress Controller イメージ。
    jsonLog オプション いいえ ログメッセージを JSON 形式で出力する必要がある場合は、このパラメーターを true に設定します。
    kubernetesURL オプション N/A NetScaler Ingress Controller がイベントを登録するために使用する kube-apiserver の URL。指定しない場合、内部の kube-apiserver IP アドレスが使用されます。
    livenessProbe.initialDelaySeconds オプション 30 Kubernetesが最初の活性チェックを実行する前に待機する時間(秒単位)。
    livenessProbe.periodSeconds オプション 60 初期遅延の後、Kubernetesは60秒ごとに活性チェックを実行します。
    logLevel オプション INFO NSICによって生成されるログを制御するためのログレベル。サポートされているレベル:CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE、およびNONE。
    OpenShift オプション はい OpenShift環境を使用していない場合は、このパラメータをfalseに設定します。
    optimizeEndpointBinding オプション フォールス バックエンドエンドポイントを単一のAPI呼び出しでサービスグループにバインドできるようにするには、trueに設定します。アプリケーションあたりのエンドポイントが多い場合に推奨されます。(NetScaler >=13.0-45.7)
    pullPolicy 必須 IfNotPresent NetScaler Ingress Controllerのイメージプルポリシー。
    readinessProbe オプション N/A Readinessプローブの設定。
    リソース オプション {} NetScaler Ingress ControllerコンテナのCPUおよびメモリのリソース。
    routeLabels 任意 N/A OpenShift クラスター内の routeSharding のため、NetScaler Ingress Controller によって使用されるルートラベルセレクター。
    NetScaler CPX 設定
    パラメーター 必須または任意 デフォルト値 説明
    cpxCommands 任意 N/A CPX がインスタンス化されるときに適用される、ユーザーが提供する NetScaler 起動設定。動的ではありません。ConfigMap への変更は、ポッドが再起動されるまで反映されません。
    cpxLicenseAggregator 任意 N/A CPXのライセンス供与に使用するCPXライセンスアグリゲーターのIPアドレスまたはFQDN (使用する場合)。
    cpxShellCommands オプション N/A CPXがインスタンス化されたときに適用される、ユーザー指定の起動コマンド。動的ではないため、変更にはPodの再起動が必要です。
    enableLivenessProbe オプション はい NetScaler CPXのライブネスプローブ設定を無効にするには、falseに設定します。
    enableStartupProbe オプション はい NetScaler CPXのスタートアッププローブ設定を無効にするには、falseに設定します。
    extraVolumeMounts オプション 該当なし CPX の追加ボリュームマウント。
    hostName オプション 該当なし CPX に設定するホスト名。
    イメージ 必須 quay.io/netscaler/netscaler-cpx@sha256:04defadf6311259d6ada5380498ed7afe8035b11ee3c1d7b456faa94472b5550 Quay.io でホストされている NetScaler CPX イメージ。
    livenessProbe オプション 該当なし NetScaler CPX の活性プローブ設定。
    mgmtHttpPort 任意 9080 NodePort CPXサービスに使用されるHTTPポート。
    mgmtHttpsPort 任意 9443 NodePort CPXサービスに使用されるHTTPSポート。
    nitroReadTimeout 任意 20 NITRO読み取りタイムアウト(秒単位)。
    nsHTTP2ServerSide 任意 OFF NetScalerサービスグループ構成でHTTP/2を有効にするには、ONに設定します。
    nsProtocol オプション HTTP NetScaler CPXとNetScaler Ingress Controller間の通信に使用されるプロトコル。
    pullPolicy 必須 IfNotPresent NetScaler CPXイメージのプルポリシー。
    service.annotations オプション N/A CPXサービスのアノテーションの辞書(例:アノテーションを介してTLSシークレットを公開するため)。
    service.spec オプション N/A CPXのサービス仕様。CPXをNodePortとして公開するには、service.spec.type: NodePortを設定し、service.citrix.com/secretアノテーションを使用してTLSシークレットを参照します。
    startupProbe オプション N/A NetScaler CPXのスタートアッププローブ設定。
  8. 必要なパラメータの値を更新した後、作成をクリックします。Kubernetes Gateway Controllerが搭載されたNetScaler CPXが正常にデプロイされ、初期化されていることを確認してください。
    CPX k8 Gateway Controllerインスタンスの作成
  9. NetScaler CPXのサービスアカウントに特権セキュリティコンテキスト制約をアタッチします (特権ポッドとして実行されるため)。次のコマンドを使用します:
    • NetScaler CPXがデプロイされている名前空間で、次のコマンドを使用してNetScaler CPXが使用するサービスアカウント名を取得します: oc get sa
    • NetScaler CPXのサービスアカウントに特権SCCをアタッチします:
      oc adm policy add-scc-to-user privileged system:serviceaccount:<namespace>:<CPX-ServiceAccount-Name retrieved in the previous step>
  10. ワークロード > ポッドセクションに移動し、netscaler-cpx-with-gateway-controllerポッドが稼働していることを確認します。
    ポッド作成成功
  11. トラフィックを送信してデプロイを検証します。
    1. 次のコマンドを使用して NodePort の詳細を取得します: oc get svc
    2. cpx-service NodePort を使用し、次のコマンドに示すようにトラフィックを送信します: curl https://example.com:<NodePort> --resolve example.com:<NodePort>:<Master-Node-IP>
      上記の cURL コマンドは次の出力を返す必要があります: <html><body><h1>It works!</h1></body></html>