DockerへのNetScaler CPXインスタンスの展開
NetScaler CPXインスタンスは、QuayコンテナレジストリでDockerイメージファイルとして利用できます。インスタンスを展開するには、QuayコンテナレジストリからNetScaler CPXイメージをダウンロードし、docker run
コマンドまたはDocker Composeツールを使用してインスタンスを展開します。
前提条件
以下を確認してください。
- Dockerホストシステムには少なくとも以下が必要です。
-
1 CPU
-
2 GB RAM
注:
NetScaler CPXのパフォーマンスを向上させるには、NetScaler CPXインスタンスが起動する処理エンジンの数を定義できます。追加する処理エンジンごとに、Dockerホストに同等の数のvCPUとGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加する場合、Dockerホストには4つのvCPUと4GBのメモリが含まれている必要があります。
-
-
DockerホストシステムがLinux Ubuntuバージョン14.04以降を実行していること。
-
Dockerバージョン1.12がホストシステムにインストールされていること。LinuxへのDockerのインストールについては、Docker Documentationを参照してください。
-
Dockerホストがインターネットに接続されていること。
注: NetScaler CPXは、Ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行すると問題が発生します。そのため、NetScaler CPXをUbuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行することはお勧めしません。
注: 以下のkubeletおよびkube-proxyバージョンにはいくつかのセキュリティ脆弱性があり、これらのバージョンでNetScaler 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
この脆弱性を軽減する方法については、この脆弱性を軽減するを参照してください。
QuayからのNetScaler CPXイメージのダウンロード
Quayコンテナレジストリからdocker pull
コマンドを使用してNetScaler CPXイメージをダウンロードし、お使いの環境に展開できます。QuayコンテナレジストリからNetScaler 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
NetScaler 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
最新のNetScaler CPXイメージは、Quayコンテナレジストリから展開できます。
docker run
コマンドを使用したNetScaler CPXインスタンスの展開
ホスト上で、ホストにロードしたNetScaler CPX Dockerイメージを使用して、DockerコンテナにNetScaler CPXインスタンスをインストールできます。docker run
コマンドを使用して、デフォルトのNetScaler CPX構成でNetScaler CPXインスタンスをインストールします。
次のdocker runコマンドを使用して、DockerコンテナにNetScaler CPXインスタンスをインストールします。
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-->
この例では、NetScaler CPX Dockerイメージに基づいてmycpx
という名前のコンテナを作成します。
–P
パラメーターは必須です。これは、NetScaler CPX Dockerイメージによってコンテナで公開されているポートをDockerにマッピングするように指示します。つまり、ポート9080、22、9443、および161/UDPを、ユーザー定義の範囲からランダムに選択されたDockerホスト上のポートにマッピングします。このマッピングは、競合を回避するために行われます。同じDockerホスト上に複数のNetScaler CPXコンテナを後で作成する場合、ポートマッピングは動的であり、コンテナが起動または再起動されるたびに設定されます。ポートは次のように使用されます。
- 9080はHTTPに使用されます
- 9443はHTTPSに使用されます
- 22はSSHに使用されます
- 161/UDPはSNMPに使用されます。
静的ポートマッピングが必要な場合は、-p
パラメーターを使用して手動で設定します。
--privileged=true
オプションは、コンテナを特権モードで実行するために使用されます。NetScaler CPXをホスト展開モードで実行している場合、NetScaler CPXにすべてのシステム特権を提供する必要があります。NetScaler CPXをシングルコアまたはマルチコアのブリッジモードで実行したい場合は、このオプションの代わりに--cap-add=NET_ADMIN
オプションを使用できます。--cap-add=NET_ADMIN
オプションを使用すると、NetScaler CPXコンテナを完全なネットワーク特権で実行できます。
**--net=host**
は、コンテナがホストネットワークスタックで実行されており、すべてのネットワークデバイスにアクセスできることを指定する標準のdocker run
コマンドオプションです。
注
NetScaler CPXをブリッジネットワークまたはなしネットワークで実行している場合は、このオプションを無視してください。
–e NS_NETMODE="HOST"
は、NetScaler CPXがホストモードで起動することを指定できるNetScaler CPX固有の環境変数です。NetScaler CPXがホストモードで起動すると、NetScaler CPXへの管理アクセス用にホストマシンに4つのデフォルトのiptablesルールを設定します。次のポートを使用します。
- 9995 (HTTP用)
- 9996 (HTTPS用)
- 9997 (SSH用)
- 9998 (SNMP用)
異なるポートを指定したい場合は、次の環境変数を使用できます。
- -e NS_HTTP_PORT=
- -e NS_HTTPS_PORT=
- -e NS_SSH_PORT=
- -e NS_SNMP_PORT=
注
NetScaler CPXをブリッジネットワークまたはなしネットワークで実行している場合は、この環境変数を無視してください。
–e CPX_CORES
は、オプションのNetScaler CPX固有の環境変数です。NetScaler CPXコンテナが起動する処理エンジンの数を定義することで、NetScaler CPXインスタンスのパフォーマンスを向上させるために使用できます。
注:
追加する処理エンジンごとに、Dockerホストに同等の数のvCPUとGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加する場合、Dockerホストには4つのvCPUと4GBのメモリが含まれている必要があります。
NetScaler CPXは1〜16コアをサポートできます。
–e EULA = yes
は必須のNetScaler CPX固有の環境変数であり、Citrixライセンスシステムコンポーネントで入手可能なエンドユーザーライセンス契約(EULA)を読み、理解したことを確認するために必要です。
–e PLATFORM=CP1000
パラメーターは、NetScaler CPXライセンスの種類を指定します。
Dockerをホストネットワークで実行している場合、-e CPX_NW_DEV
環境変数を使用して、専用のネットワークインターフェースをNetScaler CPXコンテナに割り当てることができます。ネットワークインターフェースは空白で区切って定義する必要があります。定義したネットワークインターフェースは、NetScaler CPXコンテナをアンインストールするまでNetScaler CPXコンテナによって保持されます。NetScaler CPXコンテナがプロビジョニングされると、割り当てられたすべてのネットワークインターフェースがNetScalerネットワーク名前空間に追加されます。
注
NetScaler CPXをブリッジネットワークで実行している場合、コンテナネットワークを変更する(たとえば、コンテナへの別のネットワーク接続を構成する、または既存のネットワークを削除する)ことができます。その後、更新されたネットワークを使用するためにNetScaler 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
は、NetScaler CPXコンテナのスループットパフォーマンスを制御できるNetScaler CPX固有の環境変数です。NetScaler CPXが処理する受信トラフィックを受け取らない場合、アイドル時にCPUを解放するため、スループットパフォーマンスが低下します。このようなシナリオでNetScaler CPXコンテナのスループットパフォーマンスを制御するには、CPX_CONFIG
環境変数を使用できます。CPX_CONFIG
環境変数には、JSON形式で次の値を指定する必要があります。
- NetScaler CPXコンテナがアイドル時にCPUを解放するようにしたい場合は、
{"YIELD” : “Yes”}
と定義します。 - NetScaler 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
パラメーターは、NetScaler CPXマウントディレクトリ/cpx
のマウントポイントを指定するオプションのパラメーターです。マウントポイントは、/cpx
ディレクトリをマウントするホスト上のディレクトリです。/cpx
ディレクトリには、ログ、構成ファイル、SSL証明書、およびコアダンプファイルが保存されます。この例では、マウントポイントは/var/cpx
で、NetScaler CPXマウントディレクトリは/cpx
です。
ライセンスを購入した場合、または評価ライセンスをお持ちの場合は、ライセンスをライセンスサーバーにアップロードし、–e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>
パラメーターを使用して、docker run
コマンドでライセンスサーバーの場所を指定できます。この場合、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
コマンドを使用したNetScaler CPXの軽量バージョンの展開
NetScalerは、ランタイムメモリ消費量が少ないNetScaler CPXの軽量バージョンを提供します。NetScaler CPXの軽量バージョンは、サービスメッシュ展開でサイドカーとして展開できます。
NetScaler CPXの軽量バージョンは、次の機能をサポートしています。
- アプリケーションの可用性
- L4ロードバランシングとL7コンテンツスイッチング
- SSLオフロード
- IPv6プロトコル変換
- アプリケーションセキュリティ
- L7リライトとレスポンダー
- シンプルな管理性
- Webロギング
- AppFlow
NetScaler 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-->
次の例では、NetScaler CPXイメージに基づいて軽量コンテナを作成します。
docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
<!--NeedCopy-->
デフォルトでは、NetScaler CPXの軽量バージョンではnewnslog
を使用したロギングは無効になっています。これを有効にするには、NetScaler CPXの軽量バージョンを起動する際にNS_ENABLE_NEWNSLOG
環境変数を1に設定する必要があります。
次の例は、NetScaler 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を使用したNetScaler CPXインスタンスの展開
DockerのComposeツールを使用して、単一のNetScaler CPXインスタンスまたは複数のNetScaler CPXインスタンスをプロビジョニングできます。Docker Composeを使用してNetScaler CPXインスタンスをプロビジョニングするには、まずComposeファイルを作成する必要があります。このファイルには、NetScaler CPXイメージ、NetScaler CPXインスタンス用に開きたいポート、およびNetScaler CPXインスタンスの特権が指定されます。
重要
ホストにDocker Composeツールがインストールされていることを確認してください。
複数のNetScaler CPXインスタンスをプロビジョニングするには:
- Composeファイルを作成します。ここで、
- service-nameは、プロビジョニングするサービスの名前です。
- image:repository:tagは、NetScaler CPXイメージのリポジトリとバージョンを示します。
- privileged: trueは、NetScaler CPXインスタンスにすべてのルート特権を提供します。
- cap_addは、NetScaler CPXインスタンスにネットワーク特権を提供します。
- **
**は、NetScaler CPXインスタンス用にマウントしたいDockerホスト上のディレクトリを示します。 - **
**は、NetScaler CPXインスタンスが起動する処理エンジンの数です。追加する処理エンジンごとに、Dockerホストに同等の数のvCPUとGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加する場合、Dockerホストには4つのvCPUと4GBのメモリが含まれている必要があります。
Composeファイルは通常、次のような形式に従います。
<container_name>:
image: <repository>:<tag>
ports:
- 9443
- 22
- 9080
- 161/udp
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:
image: quay.io/citrix/citrix-k8s-cpx-ingress:13.1-37.38
ports:
- 9443
- 22
- 9080
- 161/udp
tty: true
cap_add:
- NET_ADMIN
ulimits:
core: -1
volumes:
- /root/test:/cpx
environment:
- CPX_CORES=2
- EULA=yes
<!--NeedCopy-->