デュアルティアイングレス

最終公開日 : Oct 02, 2026
デュアルティア展開では、NetScaler VPX または NetScaler MPX が Kubernetes クラスターの外部(ティア1)に展開され、NetScaler CPX は Kubernetes クラスターの内部(ティア2)に展開されます。
ティア1のNetScaler MPXまたはNetScaler VPXデバイスは、クライアントからのトラフィック(南北)をティア2のNetScaler CPXにプロキシします。ティア2のNetScaler CPXは、そのトラフィックをKubernetesクラスター内のマイクロサービスにルーティングします。スタンドアロンポッドとして展開されたNetScaler Ingress Controllerは、ティア1のNetScalerを設定します。そして、1つ以上のNetScaler CPXポッド内のサイドカーNetScaler Ingress Controllerは、同じポッド内の関連するNetScaler CPXを設定します。
デュアルティア展開は、ベアメタル環境のKubernetes、またはAWS、GCP、Azureなどのパブリッククラウドにセットアップできます。
デュアルティア

デュアルティアイングレス展開

前提条件

  • クラウドまたはオンプレミスにKubernetesクラスターを作成します。クラウド内のKubernetesクラスターは、マネージドKubernetes(例:GKE、EKS、AKS)またはカスタム作成されたKubernetes展開のいずれかです。

デュアルティアイングレス展開

  1. Kubernetesクラスターの外部で、NetScaler MPXまたはNetScaler VPXをマルチNIC展開モードで展開します。
  2. スタンドアロンのNetScaler Ingress Controllerを展開して、NetScaler VPXを設定し、クライアント要求をKubernetesクラスター内のCPXサービスに転送するようにします。
    スタンドアロンのNetScaler Ingress Controllerの展開方法については、Unified Ingressを参照してください。ステップ8でNetScaler VPXを設定するために展開されたイングレスリソースが同じイングレスクラスを使用するため、このNSICインスタンスのingressClassをnsic-vpxとして設定します。
  3. クラウド展開では、ティア1のNetScaler VPXでMAC-Based Forwarding modeを有効にします。NetScaler VPXはマルチNICモードで展開されているため、POD CNIネットワークまたはクライアントネットワークに到達するための戻りルートがありません。したがって、このシナリオを処理するために、ティア1のNetScaler VPXでMAC-Based Forwardingモードを有効にする必要があります。
  4. 次のコマンドを使用して、サンプルマイクロサービスをデプロイします。
    kubectl apply -f - <<EOF
    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
    ---
    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
    EOF
  5. NetScaler CPX をティア2インgressとして、NetScaler Ingress Controller をサイドカーとしてデプロイします。
    1. 次のコマンドを使用して、NetScaler Helm チャートリポジトリをローカルレジストリに追加します。
      helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
    2. 次のコマンドを使用して、NetScaler Ingress Controller とともに NetScaler CPX をインストールします。
      helm install netscaler-cpx-with-ingress-controller netscaler/netscaler-cpx-with-ingress-controller --set license.accept=yes,serviceType.nodePort.enabled=True,ingressClass[0]=cpx
    注:
    各パラメータをコマンドライン引数として指定する代わりに、helm install コマンドで values.yaml ファイルを使用して、設定可能なパラメータの値を指定することもできます。例えば、,
    helm install netscaler-cpx-with-ingress-controller netscaler/netscaler-cpx-with-ingress-controller -f values.yaml
    NSIC インストール時のCPXで設定できる必須およびオプションのパラメータについては、構成を参照してください。
  6. 証明書を使用してKubernetesシークレットを作成し、ingressオブジェクトがデプロイされたときに証明書をNetScalerにコピーします。CPXとVPXの両方のingressリソースで同じシークレットを使用できます。この手順では、tls-secretを使用します。Kubernetesシークレットの生成方法については、Kubernetesシークレットの生成を参照してください。
  7. 次のコマンドを使用して、Kubernetesクラスター内のNetScaler VPXまたはNetScaler MPXからNetScaler CPXにトラフィックをルーティングするingressオブジェクトを作成します。
    kubectl apply -f - <<EOF
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        ingress.citrix.com/frontend-ip: <NSVIP> # vserver IP
        ingress.citrix.com/secure_backend: "True"
      name: vpxingress
      spec:
        tls:
          - secretName: tls-secret
        ingressClassName: nsic-vpx
        rules:
        - host: cnnwebsite.com
          http:
            paths:
            - backend:
                service:
                  name: netscaler-cpx-with-ingress-controller-cpx-service
                  port:
                    number: 443
              path: /
              pathType: Prefix
    ---
    apiVersion: networking.k8s.io/v1
    kind: IngressClass # If Helm chart is used to deploy NSIC, you need not create IngressClass
    metadata:
      name: nsic-vpx
    spec:
      controller: citrix.com/ingress-controller
  8. 次のコマンドを使用して、ティア2のNetScaler CPX用のingressオブジェクトを作成し、マイクロサービスアプリケーションにトラフィックをルーティングします。
    kubectl apply -f - <<EOF
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    apiVersion: networking.k8s.io/v1
    metadata:
      annotations:
      name: cpxingress
    spec:
      tls:
        - secretName: tls-secret
      ingressClassName: cpx
      rules:
        - host: cnnwebsite.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: cnn-website
                    port:
                      number: 80
    ---
    apiVersion: networking.k8s.io/v1
    kind: IngressClass # If Helm chart is used to deploy CPX with NSIC, you need not create IngressClass
    metadata:
      name: cpx
    spec:
      controller: citrix.com/ingress-controller
    EOF
  9. cnn-website アプリケーションにトラフィックを送信するには、次の手順を実行します。
    Windowsの場合:
    1. 管理者としてメモ帳を開きます。
    2. c:\Windows\System32\Drivers\etc\hosts に VIP cnnwebsite.com エントリを追加します。
    MACまたはLinuxの場合:
    1. 次のコマンドを使用して、ファイルエディターでホストファイルを開きます: sudo nano /etc/hosts。
    2. VIP cnnwebsite.comエントリを追加します。
  10. 次のコマンドを使用してトラフィックを送信します:
    curl  -kv https://cnn-website
警告:
KubernetesクラスターにNSICポッドのレプリカを作成しないでください。replicatset>1を指定してNSICポッドのレプリカを作成すると、同じAPP_PREFIXがNSICポッド間で共有され、各インスタンスが同じリソースを構成しようとするため、NSIC/VPXで予期しない動作が発生します。