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

最終公開日 : Oct 02, 2026
このセットアップでは、NetScaler Kubernetes Gateway Controller は、OpenShift クラスターの外部にある NetScaler MPX、NetScaler VPX、または NetScaler BLX を構成します。

前提条件

  • Red Hat OpenShift Cluster (バージョン 4.1 以降)。
  • NetScaler Operator をデプロイします。NetScaler Operator のデプロイ方法については、NetScaler Operator のデプロイ を参照してください。
  • NetScaler K8s Gateway Controller が NetScaler と通信する必要がある IP アドレスを特定します。この IP アドレスは、NetScaler のデプロイの種類に応じて、次のいずれかになります。
    • NSIP (スタンドアロンアプライアンスの場合) - スタンドアロン NetScaler アプライアンスの管理 IP アドレスです。詳細については、NetScaler での IP アドレス指定 を参照してください。
    • SNIP (高可用性モードのアプライアンスの場合) - サブネット IP アドレスです。詳細については、NetScaler の IP アドレス指定 を参照してください。
    • CLIP (クラスターモードのアプライアンスの場合) - クラスター化された NetScaler デプロイのクラスター管理 IP (CLIP) アドレスです。詳細については、クラスターの IP アドレス指定 を参照してください。
  • イングレスデバイスとして使用される NetScaler VPX、NetScaler MPX、または NetScaler BLX のユーザー名とパスワード。NetScaler K8s Gateway Controller が NetScaler VPX または NetScaler MPX を構成できるように、NetScaler には特定の権限を持つシステムユーザーアカウント (非デフォルト) が必要です。NetScaler でシステムユーザーアカウントを作成する手順については、NetScaler で NetScaler Ingress Controller 用のシステムユーザーアカウントを作成する を参照してください。
  • ユーザー名とパスワードを環境変数としてコントローラーに直接渡すことも、OpenShift シークレットを使用することもできます (推奨)。次のコマンドを使用してユーザー名とパスワードのシークレットを作成するには、<username> と <password> を必要な値に変更します。
    oc create secret  generic nslogin --from-literal=username=<username> --from-literal=password=<password>`
  • 任意のサービスモニターにエクスポートするには、次のコマンドを使用してサービスモニター CRD をインストールします。
    oc create -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/refs/heads/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
  • Gateway API CRD がまだインストールされていない場合は、公式標準チャネル からインストールします。

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

次の手順を実行します。
  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
      ---
      デプロイの作成 (/en-us/netscaler-kubernetes-gateway-controller/media/create-deployment.png)
    2. Workloads > Pods セクションに移動し、CNNwebsite アプリケーションのポッドが稼働していることを確認します。
      ポッド (/en-us/netscaler-kubernetes-gateway-controller/media/pods.png)
  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: GatewayClass
      metadata:
        name: example-gateway-class
      spec:
        controllerName: citrix.com/nsgw-controller
      ---
      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
        addresses:
          - type: IPAddress
            value: 4.4.4.4 # VIP
      ---
      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
      ゲートウェイクラス (/en-us/netscaler-kubernetes-gateway-controller/media/gwclass-gateway-route.png)
  5. Operators > Installed Operators に移動し、NetScaler Operator をクリックします。
    オペレーター (/en-us/netscaler-kubernetes-gateway-controller/media/installedoperators.png)
  6. NetScaler K8s Gateway Controller タブをクリックし、Create NetScalerK8sGatewayController を選択します。
    ネットスケーラー クバネティス ゲートウェイ コレクター タブ
    NetScaler K8s Gateway ControllerのYAML定義が表示されます。必要に応じて、「フォームビュー」ボタンを選択し、フォームでパラメータを更新できます。
    ネットスケーラー キューバネティス ゲートウェイ コレクター YAML定義(/en-us/netscaler-kubernetes-gateway-controller/media/create-ns-kub-gw-cntrl.png)
  7. インストール中に構成できる必須およびオプションのパラメータを一覧表示する以下の表を参照してください。
    netscaler:
      adcCredentialSecret: "nslogin"
      nsIP: "4.4.4.10"  
    # NetScaler Management IP or SNIP with Management access enabled for HA and CLIP for NetScaler Cluster

    gatewayController:
      entityPrefix: gwy
      gatewayControllerName: "citrix.com/nsgw-controller"

    acceptLicense:yes
    パラメータ 必須またはオプション デフォルト値 説明
    acceptLicense 必須 no NetScaler K8s Gateway Controller EULAに同意するには、この値を「Yes」に設定します。
    アフィニティ オプション N/A ポッドの割り当て用アフィニティラベル。
    extraVolumes オプション N/A マウントする追加のVolumeMounts。
    imagePullSecrets オプション N/A プライベートDockerレジストリまたはリポジトリからイメージをプルするために使用されるKubernetesシークレットのリスト。
    nodeSelector オプション N/A NetScaler K8s Gateway ControllerのデプロイでnodeSelectorオプションに使用されるノードラベルのキー:値ペア。このシークレットの作成方法の詳細については、「プライベートレジストリからイメージをプルする」を参照してください。
    podAnnotations オプション N/A ポッドに追加するアノテーションのマップ。
    許容 オプション 該当なし NetScaler K8s Gateway Controllerデプロイメントのトレランス。
    エクスポーター
    パラメータ 必須またはオプション デフォルト値 説明
    extraVolumeMounts オプション 該当なし エクスポーターコンテナにマウントされる追加のVolumeMounts。
    イメージ 任意 quay.io/netscaler/netscaler-adc-metrics-exporter@sha<sha value of the latest release> Quay.ioでホストされているメトリクスエクスポーターイメージ。
    必須 任意 偽 NetScaler MPX/VPX/BLXのメトリクスをプルするために、NetScaler K8s Gateway ControllerとともにNetScaler Stats用エクスポーターを実行するには、trueに設定します。
    pullPolicy 任意 IfNotPresent エクスポーターイメージのプルポリシー。
    ports.containerPort 任意 8888 エクスポーターコンテナポート。
    リソース オプション 該当なし メトリクスエクスポーターコンテナのCPU/メモリリソース。
    serviceMonitorExtraLabels オプション 該当なし エクスポーターが有効な場合のサービスモニターの追加ラベル。
    ゲートウェイコントローラー
    パラメータ 必須またはオプション デフォルト値 説明
    clusterName オプション N/A NetScaler K8s Gateway ControllerがデプロイされているKubernetesクラスターの一意の識別子。
    disableAPIServerCertVerify オプション いいえ APIサーバー証明書の検証を無効にするには、このパラメーターをTrueに設定します。
    enableLivenessProbe オプション はい NetScaler K8s Gateway Controllerの活性プローブ設定を無効にするには、falseに設定します。
    enableReadinessProbe オプション はい NetScaler K8s Gateway Controllerの準備プローブ設定を無効にするには、falseに設定します。
    entityPrefix 任意 該当なし NetScaler MPXまたはNetScaler VPX上のリソースのプレフィックス。
    gatewayControllerName 必須 該当なし ゲートウェイコントローラーの名前。
    イメージ 必須 quay.io/netscaler/netscaler-k8s-ingress-controller@sha<sha value of latest release> Quay.ioでホストされているNetScaler K8s Gateway Controllerイメージ。
    extraVolumeMounts 任意 該当なし NetScaler K8s Gateway Controllerコンテナにマウントされる追加のVolumeMounts。
    jsonLog オプション いいえ ログメッセージをJSON形式で出力する必要がある場合は、この引数をtrueに設定します。
    kubernetesURL オプション N/A NetScaler K8s Gateway Controllerがイベントを登録するために使用するkube-apiserverのURL。指定しない場合、コントローラーは内部kube-apiserver IPアドレスを使用します。
    livenessProbe オプション N/A NetScaler K8s Gateway Controllerの活性プローブ設定。
    logLevel オプション INFO NetScaler K8s Gateway Controllerによって生成されるログを制御するためのログレベル。サポートされているレベル: CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE、およびNONE。
    nodeWatch オプション いいえ NetScaler MPX/VPXからKubernetesクラスター内のポッドへのネットワークルートを自動的に構成するには、trueに設定します。詳細については、NetScalerインスタンスでルートを自動的に構成するを参照してください。
    nsncPbr オプション いいえ NetScaler Node Controllerがポリシーベースルーティング (PBR) を構成していることをコントローラーに通知するには、trueに設定します。詳細については、NSNC-PBR-SUPPORTを参照してください。
    OpenShift オプション はい OpenShift環境を使用していない場合は、falseに設定します。
    optimizeEndpointBinding オプション 偽 true に設定すると、バックエンドエンドポイントを単一の API 呼び出しでサービスグループにバインドできるようになります。アプリケーションごとに多数のエンドポイントが存在する場合に推奨されます。NetScaler >=13.0–45.7 に適用されます。
    podIPsforServiceGroupMembers オプション 偽 true の場合、ノード IP とノードポートの代わりに、Pod IP と Pod ポートを LoadBalancer/NodePort サービスのサービスグループメンバーとして追加します。NetScaler とクラスター Pod (nodeWatch または NSNC) 間のルートが必要です。
    pullPolicy 必須 IfNotPresent NetScaler K8s Gateway Controller のイメージプルポリシー。
    readinessProbe オプション N/A NetScaler K8s Gateway Controller のレディネスプローブ設定。
    リソース 任意 該当なし NetScaler K8s Gateway Controllerコンテナ向けのCPUおよびメモリリソース。
    NetScaler
    パラメータ 必須または任意 デフォルト値 説明
    adcCredentialSecret 必須 該当なし NetScaler K8s Gateway ControllerがNetScalerに接続するために必要なシークレット。
    nitroReadTimeout 任意 20 NITRO読み取りタイムアウト(秒単位)。
    nsIP 必須 N/A NetScaler IPアドレス。
    nsPort 任意 443 NetScaler K8s Gateway ControllerがNetScalerと通信するために使用するポート。HTTPにはポート80を使用できます。
    nsProtocol 任意 N/A NetScaler K8s Gateway ControllerがNetScalerと通信するために使用するプロトコル。HTTPにはポート80を使用できます。
    nsSNIPS 任意 N/A 静的ルートの代わりにPBRルートを作成するために使用されるNetScaler上のサブネットIPアドレスのリスト(PBRサポート)。
    nsVIP 任意 N/A NetScaler上の仮想IPアドレス。
  8. 必要なパラメータの値を更新したら、作成をクリックします。
    NetScaler K8s Gateway Controllerが正常にデプロイされ、初期化されていることを確認します。
    ネットスケーラー クバネティス ゲートウェイ コレクター YAML定義(/en-us/netscaler-kubernetes-gateway-controller/media/gwcontrollerinstance.png)
  9. ワークロード > Podsセクションに移動し、NetScaler Kubernetes Gateway Controllerポッドが稼働していることを確認します。
    Pod作成成功(/en-us/netscaler-kubernetes-gateway-controller/media/podgwcntrlr.png)
  10. トラフィックを送信してデプロイメントを確認します。
    curl –kv https://example.com --resolve example.com:443:<VIP>
注:
アプリケーションにClusterIPタイプのサービスを使用している場合、OpenShiftクラスター内のポッドネットワークがNetScaler VPX、NetScaler MPX、またはNetScaler BLXから到達可能であることを確認してください。NetScaler K8s Gateway Controllerを使用して静的ルートを自動的に構成するには、静的ルートの構成を参照してください。