NetScaler Ingressコントローラー

LoadBalancer タイプのサービスを公開する

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

Kubernetes 環境では、マイクロサービスは動的に作成および破棄される一連の Pod としてデプロイされます。マイクロサービスを参照する Pod のセットは常に変化しているため、Kubernetes は service と呼ばれる論理的な抽象化を提供して、一連の Pod で実行されているマイクロサービスを公開します。サービスは、ポッドの論理セットと、それらにアクセスするためのポリシーを定義します。

LoadBalancer タイプのサービスは、Kubernetes クラスター内のマイクロサービスを外部に公開する最も簡単な方法です。LoadBalancer タイプのサービスは、AWS、GCP、Azure などのパブリッククラウド上の Kubernetes 展開でネイティブにサポートされます。クラウド展開では、LoadBalancer タイプのサービスを作成すると、クラウドマネージドロードバランサーがサービスに割り当てられます。その後、ロードバランサーを使用してサービスが公開されます。

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

Kubernetes クラスターをパブリッククラウドにデプロイするのではなく、ベアメタルまたはオンプレミスに Kubernetes クラスターをデプロイしたい場合がいくつかあります。ベアメタル Kubernetes クラスターでアプリケーションを実行している場合、Ingressを使用するよりも、TCP または UDP トラフィックのルーティングがタイプLoadBalancerのサービスを使用する方がはるかに簡単です。HTTP トラフィックの場合でも、Ingress よりも便利な場合があります。ただし、ベアメタル Kubernetes クラスタではネイティブに利用できるロードバランサの実装はありません。NetScalerには、NetScaler Ingress Controller とNetScalerを使用してこのようなサービスの負荷分散を行う方法が用意されています。

Citrix のタイプLoadBalancerのサービス向けソリューションでは 、Kubernetesクラスター内に展開されたNetScaler Ingress Controllerが、受信トラフィックの負荷分散を行うようにクラスターの外部に展開されたNetScalerを構成します。Citrix ソリューションを使用すると、展開がベアメタル、オンプレミス、パブリッククラウドのいずれであっても、Kubernetes クラスターへの着信トラフィックの負荷を分散できます。NetScaler Ingress Controllerは、NetScalerのマルチテナントを可能にする柔軟なIPアドレス管理を提供するため、1つのNetScalerを使用して複数のサービスの負荷分散やIngress機能の実行を行うことができます。したがって、ロードバランサーリソースの使用率を最大化し、運用コストを大幅に削減できます。

ロードバランサーと Kubernetes Ingress タイプのサービス

次の表は、Kubernetes Ingress と LoadBalancer タイプのサービスの比較をまとめたもので、要件に基づいて適切なオプションを選択するのに役立ちます。

サービスの種類 LoadBalancer イングレス
サービスをよりシンプルかつ迅速に公開する方法です。必要なのは、 サービス定義でサービスタイプをtype=LoadBalancerとして指定することだけです。 Ingress は高度な機能を提供しますが、実装にはさらに多くの手順が必要です。サービス定義に加えて Ingress オブジェクトを記述する必要があります。また、Ingressを定義する際に間違いを犯す可能性が高くなります。
サービスごとに個別の IP アドレスが必要です。 1 つの IP アドレスを使用して複数のサービスを公開する方法を提供します。
HTTP、TCP、UDP のいずれであっても、指定されたポートに着信するすべての種類のトラフィックをサービスに転送します。高度なルーティングを実行するためのフィルタリングやオプションはありません。 LoadBalancer タイプのサービスに比べて機能が豊富でパワフル。Ingress には複数のルーティングオプションがあります。たとえば、Ingress を使用すると、バックエンドサービスへのパスベースおよびサブドメインベースのルーティングを実行できます。

LoadBalancer タイプのサービス向けCitrix ソリューションはベアメタルクラスターでどのように機能しますか

デフォルトでは、タイプLoadBalancerのサービスは、ベアメタル Kubernetes クラスター内のサービスの NodePorts を公開するだけです。外部ロードバランサーは設定されません。

NetScalerは、IP管理と外部ロードバランサー構成の両方を提供することにより、ベアメタルKubernetesクラスター内のタイプLoadBalancerのサービス向けのエンドツーエンドソリューションを提供します。Citrix のソリューションでは、タイプLoadBalancerのサービスがベアメタルクラスターで作成されると、NetScaler Ingress ControllerはKubernetesクラスター(Tier-1)の外にあるNetScalerを負荷分散仮想サーバーで構成します。負荷分散仮想サーバーは、CitrixのIPAMコントローラーによって自動的に割り当てられるか、またはサービス定義でspec.loadBalancerIPフィールドを使用して手動で指定されたIPアドレスで構成されます 。サービスに IP アドレスを設定すると、設定された IP アドレスを使用してサービスに外部からアクセスできます。

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

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

IPAMコントローラーには、 NetScalerが提供するVIPカスタムリソース定義 (CRD)が必要です。VIP CRD には、サービス名、名前空間、IP アドレスのフィールドが含まれています。VIP CRDは、NetScalerイングレスコントローラーとIPAMコントローラー間の内部通信に使用されます。

次の図は、IPAMコントローラーを使用してサービスに IP アドレスを割り当てる、サービスタイプのロードバランサの展開を示しています。

ロードバランサーの種類のサービス

新しいタイプLoadbalancerのサービスが作成されると、次のイベントが発生します。

  1. NetScaler Ingress Controllerは、サービスのloadBalancerIPフィールドが空になると必ずサービスのVIP CRDオブジェクトを作成します。
  2. IPAMコントローラーは VIP CRD オブジェクトに IP アドレスを割り当てます。
  3. VIP CRDオブジェクトがIPアドレスで更新されると、NetScaler Ingress Controllerが自動的にNetScalerを構成します。

注:

Citrix が提供するカスタムリソース定義(CRD)は、 次の種類LoadBalancerのサービスもサポートしています。つまり、CRD オブジェクトを作成して CRD をサービスに適用するときに、タイプLoadBalancerのサービスをサービス名として指定できます。

IPAMコントローラーソリューションは、 Infobloxなどの ExternalDNS プロバイダーとソリューションを簡単に統合できるように設計されています。ExternalDNS の詳細については、「 ExternalDNS との相互運用性」を参照してください。

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

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

IPAMコントローラーからの IP アドレスを持つロードバランサタイプのサービスを公開するには、次の手順を実行します。

  1. VIP CRD を展開する
  2. NetScaler Ingress Controllerの展開
  3. IPAMコントローラーを展開します。
  4. サンプルアプリケーションを展開します。
  5. アプリケーションを公開するタイプLoadBalancerのサービスを作成します。
  6. サービスにアクセスします。

ステップ 1: VIP CRD を展開する

次の手順を実行して、NetScaler IngressコントローラーとIPAMコントローラー間の通信を可能にするNetScaler VIP CRDを展開します。

 kubectl create -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/crd/vip/vip.yaml

VIP CRD の詳細については、 VIP カスタムリソース定義を参照してください

ステップ2: NetScalerIngress Controller をデプロイする

次の手順を実行して、IPAMコントローラー引数を使用してNetScaler Ingress Controller をデプロイします。

  1. 次のコマンドを使用して、citrix-k8s-ingress-controller.yamlをダウンロードします。

    wget  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/baremetal/citrix-k8s-ingress-controller.yaml
    
  2. NetScalerIngress Controller YAMLファイルを編集します。

    • 要件に応じて、環境変数の値を指定します。環境変数の指定の詳細については、「 Deploy NetScaler Ingress Controller」を参照してください。

    • 次を使用して IPAMコントローラーを引数として指定します。

         args:
         - --ipam
           citrix-ipam-controller
      

    IPAMコントローラー引数を含むNetScalerIngress Controller YAMLファイルのサンプルを以下に示します。

    注:

    この YAML はデモンストレーションのみを目的としており、フルバージョンではありません。常に最新バージョンの YAML を使用し、必要に応じて編集してください。

    apiVersion: v1
    kind: Pod
    metadata:
      name: cic-k8s-ingress-controller
      labels:
        app: cic-k8s-ingress-controller
    spec: 
      serviceAccountName: cic-k8s-role
      containers:
      - name: cic-k8s-ingress-controller
        image: "quay.io/citrix/citrix-k8s-ingress-controller:1.34.16"
        env:
        # Set NetScaler NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled) 
          - name: "NS_IP"
            value: "x.x.x.x"
            # Set the username
          - name: "NS_USER"
            valueFrom:
              secretKeyRef:
                name: nslogin
                key: username
            # Set user password
          - name: "NS_PASSWORD"
            valueFrom:
              secretKeyRef:
                name: nslogin
                key: password
            # Set log level
          - name: "EULA"
            value: "yes"
        args:
          - --ingress-classes
            citrix
          - --feature-node-watch
            false
          - --ipam
            citrix-ipam-controller
        imagePullPolicy: Always
    
  3. 次のコマンドを使用して、編集したYAMLファイルを使用してNetScaler Ingress Controller をデプロイします。

    kubectl create -f citrix-k8s-ingress-controller.yaml
    

    NetScalerイングレスコントローラーを展開する方法の詳細については、「NetScalerIngress Controller デプロイ」を参照してください。

ステップ 3: IP アドレス管理コントローラの展開

IPAMコントローラーを展開するには、次の手順を実行します。

  1. citrix-ipam-controller.yaml ファイルをダウンロードします。

    マニフェストには、VIP_RANGEVIP_NAMESPACESの 2 つの環境変数が含まれています 。VIP_RANGEで有効な CIDR を使用して、適切なルーティング可能な IP 範囲を指定できます。必要に応じて、IPアドレス管理コントローラが特定の名前空間のサービスに対してのみアドレスを割り当てるように、 VIP_NAMESPACES で一連の名前空間を指定することもできます。

    詳細については、「 VIP_RANGE 」と「 VIP_NAMESPACES」を参照してください。

  2. 次のコマンドを使用して IPAMコントローラーを展開します。

    kubectl create -f citrix-ipam-controller.yaml
    

ステップ 4: サンプルアプリケーションをデプロイする

Kubernetesクラスタにapacheアプリケーションをデプロイするには、次の手順を実行します。

注:

この例では、apache アプリケーションが使用されています。任意のサンプルアプリケーションをデプロイできます。

  1. 以下の設定で、apache-deployment.yamlという名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: apache
      labels:
       name: apache
    spec:
      selector:
        matchLabels:
          app: apache
      replicas: 8
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - name: apache
            image: httpd:latest
            ports:
            - name: http
              containerPort: 80
            imagePullPolicy: IfNotPresent
    
  2. 以下のコマンドを使用して、apache アプリケーションをデプロイします。

    kubectl create -f apache-deployment.yaml
    
  3. 以下を使用して Pod が実行中であることを確認します。

    kubectl get pods
    

    出力:

    NAME                      READY   STATUS   RESTARTS   AGE
    apache-7db8f797c7-2x6jc   1/1     Running   0          8s
    apache-7db8f797c7-cdgmw   1/1     Running   0          8s
    apache-7db8f797c7-lh447   1/1     Running   0          8s
    apache-7db8f797c7-m7mhd   1/1     Running   0          8s
    apache-7db8f797c7-m9rn7   1/1     Running   0          8s
    apache-7db8f797c7-r9jgz   1/1     Running   0          8s
    apache-7db8f797c7-vwhc8   1/1     Running   0          8s
    apache-7db8f797c7-zslwv   1/1     Running   0          8s
    

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

次の操作を実行して、タイプ LoadBalancerのサービス (apache) を作成します。

  1. 以下の設定で、apache-service.yamlという名前のファイルを作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      type: LoadBalancer
      ports:
      - name: http
        port: 80
        targetPort: http
      selector:
        app: apache
    
  2. 以下のコマンドを使用して、サービスをデプロイします。

    kubectl create -f apache-service.yaml
    

    サービスを作成すると、IPAMコントローラーは IPAMコントローラーの展開で定義した IP アドレス範囲から IP アドレスをapacheサービスに割り当てます。IPAMコントローラーによって割り当てられた IP アドレスは、サービス定義のstatus.loadBalancer.ingress:フィールドに表示されます。NetScaler Ingress Controllerは、サービスに割り当てられたIPアドレスをNetScalerの仮想IP(VIP)として構成します。

  3. 以下のコマンドを使用して、サービスを表示します。

    kubectl get service apache --output yaml
    

    出力:

    サービスタイプ LoadBalancer 出力

ステップ 6: サービスにアクセスする

IPAMコントローラーによってサービスに割り当てられた IP アドレスを使用して、apacheサービスにアクセスできます。IP アドレスは、サービス定義のstatus.loadBalancer.ingress:フィールドで確認できます。curl コマンドを使用してサービスにアクセスします。

curl <IP_address>

応答は次のようになります。

<html><body><h1>It works!</h1></body></html>

IP アドレスを指定して LoadBalancer タイプのサービスを公開する

サービス定義で IP アドレスを指定して、LoadBalancer タイプのサービスを手動で公開することもできます。

LoadBalancer タイプのサービスを手動で公開するには、サービス定義 YAML ファイルで IP アドレスを次のように指定します。

spec:
  type: LoadBalancer
  loadBalancerIP: "<ip-address>"

ロードバランサータイプのサービスを作成すると、NetScalerIngress Controllerは、 spec.loadBalancerIP フィールドで定義したIPアドレスを、NetScalerの仮想IP(VIP)アドレスとして構成します。

例:IP アドレスを指定して LoadBalancer タイプのサービスを使用して Apache アプリケーションを公開する

以下の手順に従います。

  1. 以下の設定で、apache-deployment.yamlという名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      selector:
        matchLabels:
          app: apache
      replicas: 8
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - name: apache
            image: httpd:latest
            ports:
            - name: http
              containerPort: 80
            imagePullPolicy: IfNotPresent
    
  2. 以下のコマンドを使用して、apache アプリケーションをデプロイします。

    kubectl create -f apache-deployment.yaml
    
  3. 以下を使用して Pod が実行中であることを確認します。

    kubectl get pods
    

    出力:

    NAME                      READY   STATUS   RESTARTS   AGE
    apache-7db8f797c7-2x6jc   1/1     Running   0          8s
    apache-7db8f797c7-cdgmw   1/1     Running   0          8s
    apache-7db8f797c7-lh447   1/1     Running   0          8s
    apache-7db8f797c7-m7mhd   1/1     Running   0          8s
    apache-7db8f797c7-m9rn7   1/1     Running   0          8s
    apache-7db8f797c7-r9jgz   1/1     Running   0          8s
    apache-7db8f797c7-vwhc8   1/1     Running   0          8s
    apache-7db8f797c7-zslwv   1/1     Running   0          8s
    
  4. タイプLoadBalancerのサービス (apache) を作成します。以下の設定でファイル名apache-service.yamlを作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      loadBalancerIP: "10.217.212.16"
      type: LoadBalancer
      ports:
        - name: http
          port: 80
          targetPort: http
      selector:
        app: apache
    
  5. 以下のコマンドを使用して、サービスをデプロイします。

    kubectl create -f apache-service.yaml
    

    サービス(apache)を作成すると、NetScaler Ingress ControllerはNetScaler VPX 仮想IPアドレス(VIP)として192.217.212.16を構成します。

  6. apache サービスに割り当てた IP アドレス (192.217.212.16) を使用して、サービスにアクセスします。curl コマンドを使用してサービスにアクセスします。

    curl 192.217.212.16
    

    応答は次のようになります。

    <html><body><h1>It works!</h1></body></html>
    

ユースケースの例:NetScaler デュアルティア展開で LoadBalancer タイプのサービスを使用してマイクロサービスを公開する

この例では、NetScaler デュアルティア展開で LoadBalancer タイプのサービスを使用して、Kubernetes にデプロイされたマイクロサービスをクラスター外のクライアントに公開する方法を示します。

NetScaler VPX、MPX、またはCPXをTier-1のロードバランサーとして展開し、マイクロサービスへの大規模なNorth-Southトラフィックを管理できます。Tier-2では、NetScaler CPXをNorth-Southおよびeast-westのトラフィック用のインテリジェントなL7マイクロサービスルーターとして展開できます。この例では、NetScaler VPX(タイプLoadBalancerのサービス )がティア1で使用され、NetScaler CPX(イングレス)がティア2で使用されています。

次の図は、この例のマイクロサービスの展開を示しています。展開には 3 つのサービスが含まれており、それぞれ青、赤、緑の色で強調表示されています。展開には 2 つのワーカーノードにまたがって実行される 12 個のポッドが含まれますこれらの展開は Kubernetes 名前空間を使用して論理的に分類されます。

マイクロサービス導入の例

前提条件

以下を用意してください:

LoadBalancer ソリューションタイプの Kubernetes サービスを使用してマイクロサービスをデプロイする

  1. 以下のコマンドを使用して、GitHub リポジトリをマスターノードにクローンします。

    git clone https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices.git
    
  2. マスターノードの CLI コンソールを使用して、以下のコマンドを使用して namespace を作成します。

    kubectl create -f namespace.yaml
    

    次のコマンドを使用して、Kubernetes クラスターに名前空間が作成されているかどうかを確認します。

    kubectl get namespaces
    

    コマンドの出力は次のようになります。

    Namespace

  3. Kubernetes ダッシュボードから、次のコマンドを使用してrbac.yamlをデフォルトの名前空間にデプロイします。

    kubectl create -f rbac.yaml 
    
  4. IP アドレスを Kubernetes サービスに自動的に割り当てるため、VIP CRD および IPAMコントローラーをデプロイします。次のコマンドを使用します:

    kubectl create -f vip.yaml
    kubectl create -f ipam_deploy.yaml
    
  5. 次のコマンドを使用して、hotdrinkcolddrink およびguestbookマイクロサービス用のNetScaler ADC CPXを展開します。

    kubectl create -f cpx.yaml -n tier-2-adc
    kubectl create -f hotdrink-secret.yaml -n tier-2-adc
    
  6. 以下のコマンドを使用してhotdrink beverage マイクロサービスをデプロイします。

    kubectl create -f team_hotdrink.yaml -n team-hotdrink
    kubectl create -f hotdrink-secret.yaml -n team-hotdrink
    
  7. 以下のコマンドを使用してcolddrink beverage マイクロサービスをデプロイします。

    kubectl create -f team_colddrink.yaml -n team-colddrink
    kubectl create -f colddrink-secret.yaml -n team-colddrink
    
  8. 以下のコマンドを使用して、guestbook マイクロサービスをデプロイします。

    kubectl create -f team_guestbook.yaml -n team-guestbook
    
  9. 階層1のNetScalerを自動化する前に、階層1のNetScalerにログオンして、構成がNetScaler Ingress Controller からプッシュされていないことを確認します。

  10. NetScaler Ingress Controllerを展開すると、NetScaler CPX構成がティア1のNetScalerに自動的にプッシュされます。cic_vpx.yamlで 、NetScaler VPX NS IPを使用してNS_IP環境変数の値を変更します。NetScalerIngress Controller 展開について詳しくは、「YAMLを使用してNetScalerIngress Controller をデプロイする」を参照してください。

    cic_vpx.yamlファイルを更新したら、以下のコマンドを使用してファイルをデプロイします。

    kubectl create -f cic_vpx.yaml -n tier-2-adc
    
  11. 次のコマンドを使用して、IPAMコントローラーがNetScaler ADC CPXサービスにIPアドレスを割り当てているかどうかを確認します。

    kubectl get svc -n tier-2-adc

  12. インターネットを使用してマイクロサービスにアクセスするには、ローカルマシンのホストファイルに次の DNS エントリを追加します。

     <frontend-ip from ingress_vpx.yaml> hotdrink.beverages.com
     <frontend-ip from ingress_vpx.yaml> colddrink.beverages.com
     <frontend-ip from ingress_vpx.yaml> guestbook.beverages.com
    

これで、次の URL を使用してマイクロサービスにアクセスできるようになりました。 https://hotdrink.beverages.com

コーヒー&ティーサービス

環境変数:IPAMコントローラー

このセクションでは、IPAMコントローラーの環境変数に関する情報を提供します。

VIP_RANGE

VIP_RANGE 環境変数を使用すると、IP アドレスの範囲を定義できます。IP アドレス範囲、または一意の名前に関連付けられた IP アドレス範囲を定義できます。

IP アドレス範囲

IP アドレスの範囲は、1 つのサブネットまたは複数のサブネットから定義できます。また、 - 文字を使用して IP アドレス範囲を定義することもできます。IPAMコントローラーは、この IP アドレス範囲の IP アドレスをサービスに割り当てます。

次の例は、 VIP_RANGE 環境変数で IP アドレス範囲を定義するさまざまな方法を示しています。

To define the IP address range from a subnet:

    - name: "VIP_RANGE"
      value: '["10.xxx.xxx.18/31"]'

To define the IP address range from multiple subnets, ensure that the values are valid CIDRs for the subnets:

    - name: "VIP_RANGE"
      value: '["10.217.212.18/31",  "10.217.212.20/31", "10.217.212.16/30", "10.217.212.0/24"]'

Also, you can use dash (`-`) to define the IP address range:

    - name: "VIP_RANGE"
      value: '["10.217.212.18 - 10.217.212.21",  “10.217.212.27 - 10.217.212.31",  “10.217.213.24 - 10.217.213.32" ]'

一意の名前に関連付けられた IP アドレス範囲

IP アドレス範囲に一意の名前を割り当て、その範囲をVIP_RANGE環境変数で定義できます。IP アドレス範囲をこのように割り当てると、IP アドレス範囲を区別できます。タイプLoadBalancerのサービスを作成するときに、サービス定義内のservice.citrix.com/ipam-rangeアノテーションを使用して、IP アドレスの割り当てに使用する IP アドレス範囲を指定できます。

たとえば、DevTestProdの 3 つのドメインがあり 、 管理する専用のワークロードがあります。各チームがマイクロサービストラフィックを負荷分散するために個別の IP アドレス範囲を必要とする場合は、IP アドレス範囲に一意の名前を割り当てることができます。その後、サービス定義内のservice.citrix.com/ipam-rangeアノテーションに名前を定義できます。service.citrix.com/ipam-range = 'Dev'で定義したサービスには、Devに関連付けられた IP アドレス範囲の IP アドレスが割り当てられます 。

次の例は、VIP_RANGE 環境変数で一意の名前に関連付けられた IP アドレス範囲を定義するさまざまな方法を示しています。

    - name: "VIP_RANGE"
      value: '[{"Prod": ["10.1.2.0/24"]}, {"Test": ["10.1.3.0/24"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'

また、-文字を使用して IP アドレス範囲を定義することもできます。

    - name: "VIP_RANGE"
      value: '[{"Prod": ["10.1.2.0 - 10.1.2.255"]}, {"Test": ["10.1.3.0 - 10.1.3.255"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'

service.citrix.com/ipam-range アノテーションの使用方法を示すサービス定義の例を次に示します。この例では、アノテーションを使用して、一意の名前Devに関連付けられた IP アドレス範囲から IP アドレスをサービスに割り当てます。

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.citrix.com/ipam-range: "Dev"
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      type: LoadBalancer
      selector:
        name: apache
      ports:
      - name: http
        port: 80
        targetPort: http
      selector:
        app: apache

VIP_NAMESPACES

VIP_NAMESPACES 環境変数を使用すると、IPAMコントローラーが一連のネームスペースに対してのみ動作するように定義できます。IPAMコントローラーは、環境変数で指定された名前空間から作成されたサービスにのみ IP アドレスを割り当てます。

次の例は、VIP_NAMESPACES 環境変数で名前空間を指定する方法を示しています。

    - name: "VIP_NAMESPACES"
      value: 'default kube-system'

IPAMコントローラーは、defaultおよびkube-system名前空間から作成されたサービスに IP アドレスを割り当てます。

注:

VIP_NAMESPACES 環境変数を使用しない場合、または値を設定しない場合、IPAMコントローラーはすべての名前空間から作成されたサービスに IP アドレスを割り当てます。