DockerでのCitrix ADC CPXインスタンスの展開

Citrix ADC CPXインスタンスは、QuayコンテナレジストリでDockerイメージファイルの形式で提供されます。インスタンスを展開するには、Citrix ADC CPXイメージをQuaryコンテナレジストリからダウンロードし、docker runコマンドまたはDocker Composeツールを使用してインスタンスを展開します。

前提条件

以下の点について確認してください:

  • Dockerホストシステムが少なくとも次のものを備えていること:
    • CPU 1つ

    • 2GBのRAM

      注:Citrix ADC CPXのパフォーマンスを向上させるために、Citrix ADC CPXインスタンスを起動する処理エンジンの数を定義できます。処理エンジンを追加するごとに、Dockerホストにエンジンと同じ数のvCPUとGBのメモリが備えられていることを確認してください。たとえば、4つの処理エンジンを追加する場合は、Dockerホストは4つのvCPUと4GBのメモリを備えている必要があります。

  • DockerホストシステムがLinux Ubuntuのバージョン14.04以降を実行している。

  • Dockerバージョン1.12がLinuxホストシステムにインストールされている。LinuxでのDockerのインストールについて詳しくは、Dockerのドキュメントを参照してください。

  • Dockerホストからインターネットに接続できる。

    :ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行中に、Citrix ADC CPXで問題が発生します。したがって、Citrix ADC CPXをubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行することはお勧めしません。

    :次のkubeletおよびkube-proxyバージョンにはセキュリティの脆弱性があり、 これらのバージョンでCitrix ADC CPXを使用することはお勧めしません:

    • kubelet/kube-proxy v1.18.0-1.18.3
    • kubelet/kube-proxy v1.17.0-1.17.6
    • kubelet/kube-proxy <=1.16.10

    この脆弱性を軽減する方法については、Mitigate this vulnerabilityを参照してください。

QuayからのCitrix ADC CPXイメージのダウンロード

docker pullコマンドを使用してQuayコンテナレジストリからCitrix ADC CPXイメージをダウンロードし、環境に展開できます。次のコマンドを使用して、QuayコンテナレジストリからCitrix ADC CPXイメージをダウンロードします。

    docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-xx.xx

たとえば、バージョン13.0-64.35をダウンロードする場合は、次のコマンドを使用します:

    docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-64.35

次のコマンドを使用して、Citrix ADC CPXイメージがDockerイメージにインストールされているかどうかを確認します:

    root@ubuntu:~# docker images | grep 'citrix-k8s-cpx-ingress'
    quay.io/citrix/citrix-k8s-cpx-ingress                  13.0-64.35          952a04e73101        2 months ago        469 MB

Quayコンテナレジストリから最新のCitrix ADC CPXイメージを展開できます。

:Citrix ADC CPXの最新機能を使用するためには、Quayコンテナレジストリの最新のCitrix ADC CPXイメージを使用することをお勧めします。

docker runコマンドを使用したCitrix ADC CPXインスタンスの展開

ホストにロードしたCitrix ADC CPX Dockerイメージを使用して、ホスト上でDockerコンテナにCitrix ADC CPXインスタンスをインストールできます。docker runコマンドを使用して、Citrix ADC CPXインスタンスをデフォルトのCitrix ADC CPX構成でインストールします。

重要:

https://www.citrix.com/products/netscaler-adc/cpx-express.htmlからCitrix ADC CPX Expressをダウンロードした場合は、https://www.citrix.com/products/netscaler-adc/cpx-express.htmlのエンドユーザーライセンス契約書(EULA)を読み、Citrix ADC CPXインスタンスを展開する場合にEULAに同意してください。

次のdocker runコマンドを使用して、Citrix ADC CPXインスタンスをDockerコンテナにインストールします:

docker run -dt -P --privileged=true –net=host –e NS_NETMODE=”HOST” -e CPX_CORES=<number of cores> --name <container_name> --ulimit core=-1 -e CPX_NW_DEV='<INTERFACES>' -e CPX_CONFIG=’{“YIELD”:”NO”}’ -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT> e PLATFORM=CP1000 -v <host_dir>:/cpx <REPOSITORY>:<TAG>
<!--NeedCopy-->
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 -v /var/cpx:/cpx --name cpx_host cpx:13.0-x.x
<!--NeedCopy-->

この例では、Citrix ADC CPX Dockerイメージに基づいて、「mycpx」という名前のコンテナを作成します。

-Pパラメーターは必ず指定する必要があります。これはDockerに、Citrix ADC CPX Dockerイメージによってコンテナに公開されているポートをマップするように指示します。つまり、ポート9080、22、9443、および 161/UDPをユーザー定義の範囲からランダムに選択されたDockerホスト上のポートにマッピングすることを意味します。このマッピングは競合を防ぐために行われます。後で同じDockerホストに複数のCitrix ADC CPXコンテナを作成する場合。ポートマッピングは動的であり、コンテナが起動または再起動するごとに設定されます。ポートは次のように使用されます。

  • 9080はHTTP用
  • 9443はHTTPS用
  • 22はSSH用
  • 161/UDPはSNMP用。

静的なポートマッピングを行う場合は、-pパラメーターを使用して手動でポートを設定します。

--privileged=trueオプションは、コンテナを特権モードで実行するために使用されます。展開のホストモードでCitrix ADC CPXを実行している場合は、すべてのシステム特権をCitrix ADC CPXに提供する必要があります。Citrix ADC CPXをシングルコアまたは複数のコアでブリッジモードで実行する場合は、このオプションの代わりに--cap-add=NET_ADMINオプションを使用できます。--cap-add=NET_ADMINオプションを使用すると、完全なネットワーク特権でCitrix ADC CPXコンテナを実行できます。

**--net=hostは標準的なdocker runコマンドオプションで、コンテナがホストネットワークスタックで実行され、すべてのネットワークデバイスへのアクセス権を持つよう指定します。

ブリッジネットワークでまたはネットワークのない状態でCitrix ADC CPXを実行している場合は、このオプションは使用しません。

-e NS_NETMODE="HOST"はCitrix ADC CPX固有の環境変数で、Citrix ADC CPXインスタンスがホストモードで起動するように指定できます。Citrix ADC CPXがホストモードで起動すると、Citrix ADC CPXへの管理アクセスのために、ホストマシン上に4つのデフォルトiptable規則が構成されます。この場合は次のポートを使用します:

  • 9995はHTTP用
  • 9996はHTTPS用
  • 9997はSSH用
  • 9998はSNMP用

異なるポートを指定する場合は、次の環境変数を使用できます。

  • -e NS_HTTP_PORT =
  • -e NS_HTTPS_PORT =
  • -e NS_SSH_PORT =
  • -e NS_SNMP_PORT =

ブリッジネットワークでまたはネットワークのない状態でCitrix ADC CPXを実行している場合は、この環境変数は使用しません。

-e CPX_CORESは、Citrix ADC CPX固有のオプションの環境変数です。このオプションを使用して、Citrix ADC CPXコンテナを起動する処理エンジンの数を定義することで、Citrix ADC CPXインスタンスのパフォーマンスを改善できます。

:Citrix ADC CPXは、1〜16コアをサポートできます。

処理エンジンを追加するごとに、Dockerホストにエンジンと同じ数のvCPUとGBのメモリが備えられていることを確認してください。たとえば、4つの処理エンジンを追加する場合は、Dockerホストは4つのvCPUと4GBのメモリを備えている必要があります。

-e EULA = yesはCitrix ADC CPX固有の必須の環境変数で、https://www.citrix.com/products/netscaler-adc/cpx-express.htmlにあるエンドユーザーライセンス契約書(EULA)を読んで理解したことを確認する必要があります。

-e PLATFORM=CP1000パラメーターは、Citrix ADC CPXライセンスの種類を指定します。

ホストネットワークでDockerを実行している場合は、-e CPX_NW_DEV環境変数を使用して、Citrix ADC CPXコンテナに専用ネットワークインターフェイスを割り当てることができます。ネットワークインターフェイスはスペースで区切って定義する必要があります。定義したネットワークインターフェイスは、Citrix ADC CPXコンテナをアンインストールするまでCitrix ADC CPXコンテナによって保持されます。Citrix ADC CPXコンテナがプロビジョニングされる際に、割り当てられたすべてのネットワークインターフェイスがCitrix ADCネットワーク名前空間に追加されます。

ブリッジネットワークでCitrix ADC CPXを実行している場合は、コンテナへの別のネットワーク接続を構成したり、既存のネットワークを削除したりするなど、コンテナネットワークを変更できます。次に、Citrix ADC CPXコンテナを再起動して、更新されたネットワークを使用するようにしてください。

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.x
<!--NeedCopy-->

-e CPX_CONFIGはCitrix ADC CPXコンテナのスループットパフォーマンスを制御可能にするCitrix ADC CPX固有の環境変数です。Citrix ADC CPXが処理すべき受信トラフィックをまったく受け取らないときは、このアイドル時間中にCPUが解放されてスループットパフォーマンスが低下します。このような場合は、CPX_CONFIG環境変数を使用して、Citrix ADC CPXコンテナのスループットパフォーマンスを制御できます。CPX_CONFIG環境変数には、JSON形式で次のような値を入れる必要があります:

  • Citrix ADC CPXコンテナでアイドル時にCPUを解放する場合は、次のように定義します。{"YIELD” : “Yes”}
  • Citrix ADC CPXコンテナがアイドル状態のCPUの解放を回避して高スループットのパフォーマンスを得ることができるようにする場合は、次のように定義します。 {“YIELD” : “No”}
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.x
<!--NeedCopy-->
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"Yes"}' -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.x
<!--NeedCopy-->

–vパラメーターは、Citrix ADC CPXマウントディレクトリ/cpxのマウントポイントを指定するオプションパラメーターです。マウントポイントはホスト上のディレクトリであり、そこに/cpxディレクトリをマウントします。/cpxディレクトリには、ログ、構成ファイル、SSL証明書、コアダンプファイルが保存されています。この例では、マウントポイントは/var/cpxで、Citrix ADC CPXマウントディレクトリは/cpxです。

ライセンスを購入した場合、または評価ライセンスを所有している場合は、そのライセンスをライセンスサーバーにアップロードして、docker runコマンドを-e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>パラメーターを使用してライセンスサーバーの場所を指定できます。この場合は、EULAを承認する必要はありません。

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.x
<!--NeedCopy-->

場所:

  • LS_IP_ADDRESSは、ライセンスサーバーのIPアドレスです。
  • LS_PORTは、ライセンスサーバーのポートです。

次のコマンドを使用すると、システムで実行されているイメージと、標準ポートにマップされたポートを表示できます: docker ps

docker runコマンドを使用したCitrix ADC CPXの軽量バージョンの展開

Citrixは、より少ないランタイムメモリを消費するCitrix ADC CPXの軽量バージョンを提供します。Citrix ADC CPXの軽量バージョンは、サービスメッシュ展開のサイドカーとして展開できます。

Citrix ADC CPXの軽量バージョンは、次の機能をサポートしています:

  • アプリケーションの可用性
    • L4の負荷分散およびL7のコンテンツスイッチ
    • SSLオフロード
    • IPv6プロトコル変換
  • アプリケーションのセキュリティ
    • L7の書き換えおよびレスポンダー
  • 簡単な管理機能
    • Webログ
    • AppFlow

Citrix ADC CPXの軽量バージョンをインスタンス化するには、Docker runコマンドの実行中にNS_CPX_LITE環境変数を設定します。

docker run -dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes --name <container_name> --ulimit core=-1 <REPOSITORY>:<TAG>
<!--NeedCopy-->

次の例では、Citrix ADC CPXイメージに基づいて、軽量コンテナを作成します。

docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
<!--NeedCopy-->

デフォルトでは、newnslogを使用したログ記録は、軽量バージョンのCitrix ADC CPXでは無効になっています。これを有効にするには、Citrix ADC CPXの軽量バージョンを設定するときに、NS_ENABLE_NEWNSLOG環境変数を1に設定する必要があります。

次の例は、軽量バージョンのCitrix ADC CPXを展開しているときに、newnslogを使用してログを有効にする方法を示しています。

docker run -dt --privileged=true --ulimit core=-1 -e EULA=yes -e NS_CPX_LITE=1 -e NS_ENABLE_NEWNSLOG=1 cpx:<tag>
<!--NeedCopy-->

注: CPXの軽量バージョンは、シングルコアのみをサポートします(CPX_CORES=1)。

Docker Composeを使用したCitrix ADC CPXインスタンスの展開

Docker Composeツールを使用して、単一または複数のCitrix ADC CPXインスタンスをプロビジョニングできます。Docker Composeを使用してCitrix ADC CPXインスタンスをプロビジョニングするには、最初にComposeファイルを作成する必要があります。このファイルは、Citrix ADC CPXイメージ、Citrix ADC CPXインスタンス用に開くポート、およびCitrix ADC CPXインスタンス用の特権を指定します。

重要

Docker Composeツールをホストにインストールしていることを確認してください。

複数のCitrix ADC CPXインスタンスをプロビジョニングするには:

  1. 次の場所にComposeファイルを作成します:
  • <service-name> は、プロビジョニングするサービスの名前です。
  • image:<repository>:<tag>は、Citrix ADC CPXイメージのリポジトリとバージョンを示します。
  • privileged: trueは、Citrix ADC CPXインスタンスのすべてのroot特権を提供します。
  • cap_addは、Citrix ADC CPXインスタンスにネットワーク特権を提供します。
  • <host_directory_path>は、Citrix ADC CPXインスタンスをマウントするDockerホストのディレクトリを指定します。
  • <number_processing_engine>は、Citrix ADC CPXインスタンスを起動する処理エンジンの数です。処理エンジンを追加するごとに、Dockerホストにエンジンと同じ数のvCPUとGBのメモリが備えられていることを確認してください。たとえば、4つの処理エンジンを追加する場合は、Dockerホストは4つのvCPUと4GBのメモリを備えている必要があります。

Composeファイルは、一般的に次のような形式に従います:

    <service-name>:
    container_name:
    image: <repository>:<tag>
    ports:
        - 22
        - 9080
        - 9443
        - 161/udp
        - 35021-35030
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - <host_directory_path>:/cpx
    environment:
        - EULA=yes
        - CPX_CORES=<number_processing_engine>
        - CPX_CONFIG='{"YIELD":"Yes"}'
<!--NeedCopy-->
    CPX_0:
    container_name: CPX_0
    image: cpx:13.0-x.x
    ports:
        -  9443
        -  22
        -  9080
        -  161/udp
        -  35021-35030
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - /root/test:/cpx
    environment:
        -  CPX_CORES=2
        -  EULA=yes
<!--NeedCopy-->

単一のCitrix ADC CPXインスタンスをプロビジョニングする場合は、次の行をcomposeファイルに追加する必要があります(name_of_containerはコンテナ名です):container_name:<name_of_container>

複数のCitrix ADC CPXインスタンスをプロビジョニングには次のコマンドを実行します: docker-compose -f <compose_file_name> scale <service-name>=<number of instances> up –d docker-compose -f docker-compose.yml scale cpxlb=3 up –d

単一のCitrix ADC CPXインスタンスをプロビジョニングする場合は、次のコマンドを実行します: docker-compose -f <compose_file_name> up –d

DockerでのCitrix ADC CPXインスタンスの展開