IPAMコントローラーを使用したIPアドレス管理

最終公開日 : Oct 02, 2026
IPAMコントローラーは、NetScalerが提供するIPアドレス管理用のコンテナであり、Kubernetesクラスター内のポッドとしてNetScaler Ingress Controllerと並行して実行されます。LoadBalancerタイプのサービスの場合、IPAMコントローラーを使用して、指定されたIPアドレス範囲からサービスにIPアドレスを自動的に割り当てることができます。このIP範囲は、YAMLを使用してIPAMコントローラーを展開する際にYAMLファイルで指定できます。NetScaler Ingress Controllerは、サービスに割り当てられたIPアドレスをNetScaler MPXまたはVPXの仮想IPアドレス(VIP)として構成します。 このIPアドレスを使用して、サービスに外部からアクセスできます。

LoadBalancerタイプのサービスの概要

Kubernetes環境では、マイクロサービスは動的に作成および破棄される一連のポッドとして展開されます。マイクロサービスを参照するポッドのセットは常に変化するため、Kubernetesは、一連のポッドで実行されているマイクロサービスを公開するためのサービスとして知られる論理的な抽象化を提供します。サービスは、論理的なポッドのセットと、それらにアクセスするためのポリシーを定義します。
LoadBalancerタイプのサービスは、Kubernetesクラスター内のマイクロサービスを外部に公開する最も簡単な方法です。LoadBalancerタイプのサービスは、AWS、GCP、Azureなどのパブリッククラウド上のKubernetes展開でネイティブにサポートされています。クラウド展開では、LoadBalancerタイプのサービスを作成すると、クラウド管理のロードバランサーがサービスに割り当てられます。その後、サービスはロードバランサーを使用して公開されます。

LoadBalancerタイプのサービス向けNetScaler IPAMソリューション

Kubernetesクラスターをパブリッククラウドに展開するのではなく、ベアメタルまたはオンプレミスに展開したい状況がいくつかあるかもしれません。ベアメタルKubernetesクラスターでアプリケーションを実行している場合、イングレスを使用するよりもLoadBalancerタイプのサービスを使用してTCPまたはUDPトラフィックをルーティングする方がはるかに簡単です。HTTPトラフィックの場合でも、イングレスよりも便利な場合があります。ただし、ベアメタルKubernetesクラスターには、ロードバランサーの実装がネイティブに利用できません。NetScalerは、NetScaler Ingress ControllerとNetScalerを使用して、このようなサービスの負荷分散を行う方法を提供します。
LoadBalancerタイプのサービス向けNetScalerソリューションでは、Kubernetesクラスター内に展開されたNetScaler Ingress Controllerが、クラスター外に展開されたNetScalerを構成して、受信トラフィックの負荷分散を行います。NetScalerソリューションを使用すると、展開がベアメタル、オンプレミス、またはパブリッククラウドのいずれであるかに関係なく、Kubernetesクラスターへの受信トラフィックの負荷分散を行うことができます。NetScaler Ingress Controllerは、NetScalerのマルチテナンシーを可能にする柔軟なIPアドレス管理を提供するため、単一のNetScalerを使用して複数のサービスの負荷分散を行うだけでなく、イングレス機能も実行できます。したがって、ロードバランサーリソースの利用率を最大化し、運用コストを大幅に削減できます。

IPAMコントローラーを使用したIPアドレス管理

NetScaler IPAMコントローラーには、NetScalerが提供するVIP CRDが必要です。VIP CRDには、サービス名、名前空間、およびIPアドレスのフィールドが含まれています。VIP CRDは、NetScaler Ingress ControllerとIPAMコントローラー間の内部通信に使用されます。
次の図は、IPAMコントローラーを使用してサービスにIPアドレスを割り当てるサービスタイプロードバランサーの展開を示しています。
LoadBalancerタイプのサービス
Loadbalancerタイプの新しいサービスが作成されると、次のイベントが発生します。
  1. サービス内のloadBalancerIPフィールドが空の場合、NetScaler Ingress Controllerはサービス用のVIP CRDオブジェクトを作成します。
  2. IPAMコントローラーは、VIP CRDオブジェクトにIPアドレスを割り当てます。
  3. VIP CRDオブジェクトがIPアドレスで更新されると、NetScaler Ingress ControllerはNetScalerを自動的に構成します。
注:
NetScalerが提供するカスタムリソース定義 (CRD) は LoadBalancerタイプのサービスもサポートしています。つまり、CRDオブジェクトを作成し、そのCRDをサービスに適用する際に、サービス名としてLoadBalancerタイプのサービスを指定できます。

IPAMコントローラーによって割り当てられたIPアドレスを持つLoadBalancerタイプのサービスを公開する

このトピックでは、IPAMコントローラーによって割り当てられたIPアドレスを持つLoadBalancerタイプのサービスを公開する方法について説明します。
IPAMコントローラーからのIPアドレスを持つロードバランサータイプのサービスを公開するには、次の手順を実行します。

NetScaler Ingress Controllerを展開する

IPAMコントローラー引数を使用してNetScaler Ingress Controllerを展開するには、次の手順を実行します。
  1. 次のコマンドを使用して、NetScaler® Helmチャートリポジトリをローカルレジストリに追加します。
    helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
  2. 次のコマンドを使用して、NetScaler Ingress Controllerをインストールします。
    helm install netscaler-ingress-controller netscaler/netscaler-ingress-controller --set nsIP=<NS_IP>,license.accept=yes,adcCredentialSecret=<>,ingressClass[0]=netscaler,serviceClass[0]=netscaler,ipam=true -n netscaler
    Helmチャートを使用してNetScaler Ingress Controllerを展開および構成する方法の詳細については、Helmチャートリポジトリを参照してください。

IPAMコントローラーのデプロイ

  1. 次のコマンドを使用して、NetScaler Helmチャートリポジトリをローカルレジストリに追加します。
    helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
  2. 次のコマンドを使用して、NetScaler IPAMコントローラーをインストールします。
    helm install netscaler-ipam-controller netscaler/netscaler-ipam-controller --set vipRange='[{"Prod": ["10.1.2.0 - 10.1.2.255"]}]' -n netscaler

サンプルアプリケーションのデプロイ

Kubernetesクラスターにapacheアプリケーションをデプロイするには、次の手順を実行します。
注:
この例では、apacheアプリケーションを使用しています。任意のサンプルアプリケーションをデプロイできます。
  1. 次のコマンドを使用してサンプルアプリケーションをデプロイします。
      kubectl apply -f - <<EOF
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: apache
        namespace: netscaler
        labels:
          name: apache
      spec:
        selector:
          matchLabels:
            app: apache
        replicas: 2
        template:
          metadata:
            labels:
              app: apache
          spec:
            containers:
            - name: apache
              image: httpd:latest
              ports:
              - name: http
                containerPort: 80
              imagePullPolicy: IfNotPresent
        EOF
        ```
  2. 次のコマンドを使用して、Podが実行されていることを確認します。
    kubectl get pods

LoadBalancerタイプのサービスを使用してサンプルアプリケーションを公開する

LoadBalancerタイプのサービスを作成するには、次の手順を実行します。
  1. IPAMインストール時に指定されたProd VIP範囲からIPアドレスが割り当てられるapacheアプリケーションを公開するサービスをデプロイします。
      kubectl apply -f - <<EOF  
      apiVersion: v1
      kind: Service
      metadata:
        name: apache
        namespace: netscaler
        labels:
          name: apache
        annotations:
          service.citrix.com/class: 'netscaler'
          service.citrix.com/ipam-range: 'Prod'
      spec:
        externalTrafficPolicy: Local
        type: LoadBalancer
        ports:
        - name: http
          port: 80
          targetPort: http
        selector:
          app: apache

      EOF
    サービスを作成すると、IPAMコントローラーは、IPAMコントローラーのデプロイで定義したIPアドレス範囲からapacheサービスにIPアドレスを割り当てます。IPAMコントローラーによって割り当てられたIPアドレスは、サービス定義のstatus.loadBalancer.ingress:フィールドに提供されます。NetScaler Ingress Controllerは、サービスに割り当てられたIPアドレスをNetScalerの仮想IPアドレス(VIP)として構成します。
  2. 次のコマンドを使用してサービスを表示します。
kubectl get service apache --output yaml
出力:
サービスタイプ LoadBalancer の出力

サービスへのアクセス

IPAMコントローラーによってサービスに割り当てられたIPアドレスを使用して、apache サービスにアクセスできます。IPアドレスは、サービス定義のstatus.loadBalancer.ingress:フィールドで確認できます。サービスにアクセスするには、以下のcurlコマンドを使用します。
curl <IP_address>
応答は次のようになります:
<html><body><h1>It works!</h1></body></html>