DockerでNetScaler CPXインスタンスを展開する
docker runコマンドまたはDocker composeツールを使用してインスタンスを展開します。
前提条件
-
Dockerホストシステムには、少なくとも以下が必要です。
-
1 CPU
-
2 GB RAM注:NetScaler CPXのパフォーマンスを向上させるために、NetScaler CPXインスタンスが起動する処理エンジンの数を定義できます。追加する処理エンジンごとに、Dockerホストに同等のvCPU数とGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加する場合、Dockerホストには4つのvCPUと4 GBのメモリが含まれている必要があります。
-
-
Dockerホストシステムは、Linux Ubuntuバージョン14.04以降を実行していること。
-
ホストシステムにDockerバージョン1.12がインストールされていること。LinuxへのDockerのインストールについては、Docker Documentationを参照してください。
-
Dockerホストがインターネットに接続されていること。注: NetScaler CPXは、ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行すると問題が発生します。したがって、ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericでNetScaler CPXを実行することはお勧めしません。注: 以下の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 イメージをダウンロードする
docker pull コマンドを使用して、Quay コンテナレジストリから NetScaler CPX イメージをダウンロードし、お使いの環境にデプロイできます。Quay コンテナレジストリから NetScaler CPX イメージをダウンロードするには、次のコマンドを使用します。
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-xx.xx
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-64.35
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
docker run コマンドを使用して NetScaler CPX インスタンスをデプロイする
docker run コマンドを使用して、デフォルトの NetScaler CPX 構成で 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>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
mycpx という名前のコンテナを作成します。
-P パラメータは必須です。これは、NetScaler CPX Docker イメージによってコンテナで公開されているポートをマップするように Docker に指示します。つまり、ポート 9080、22、9443、および 161/UDP を、ユーザー定義の範囲からランダムに選択された Docker ホスト上のポートにマップします。このマッピングは、競合を回避するために行われます。同じ Docker ホスト上に複数の NetScaler CPX コンテナを後で作成する場合。ポートマッピングは動的であり、コンテナが起動または再起動されるたびに設定されます。ポートは次のように使用されます。
-
9080 は HTTP に使用されます
-
9443 は HTTPs に使用されます
-
SSHに使用される22
-
161/UDPはSNMPに使用されます。
--privileged=trueオプションは、コンテナを特権モードで実行するために使用されます。NetScaler CPXをホストモードで展開している場合、NetScaler CPXにすべてのシステム特権を付与する必要があります。NetScaler CPXをシングルコアまたはマルチコアでブリッジモードで実行したい場合は、このオプションの代わりに--cap-add=NET_ADMINオプションを使用できます。--cap-add=NET_ADMINオプションを使用すると、NetScaler CPXコンテナを完全なネットワーク特権で実行できます。
**--net=host は、コンテナがホストネットワークスタックで実行され、すべてのネットワークデバイスにアクセスできることを指定する標準のdocker runコマンドオプションです。
-e NS_NETMODE="HOST" は、NetScaler CPXがホストモードで起動されることを指定できるNetScaler CPX固有の環境変数です。NetScaler CPXがホストモードで起動すると、NetScaler CPXへの管理アクセス用にホストマシンに4つのデフォルトのiptablesルールを設定します。以下のポートを使用します。
-
HTTP用9995
-
HTTPS用9996
-
SSH用9997
-
SNMP用9998
-
-e NS_HTTP_PORT=
-
-e NS_HTTPS_PORT=
-
-e NS_SSH_PORT=
-
-e NS_SNMP_PORT=
-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のライセンスタイプを指定します。
-e CPX_NW_DEV 環境変数を使用して、専用のネットワークインターフェースをNetScaler CPXコンテナに割り当てることができます。ネットワークインターフェースは空白で区切って定義する必要があります。定義したネットワークインターフェースは、NetScaler CPXコンテナをアンインストールするまでNetScaler CPXコンテナによって保持されます。NetScaler CPXコンテナがプロビジョニングされると、割り当てられたすべてのネットワークインターフェースがNetScalerネットワーク名前空間に追加されます。
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
-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.xdocker 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
–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
-
LS_IP_ADDRESSはライセンスサーバーのIPアドレスです。 -
LS_PORTはライセンスサーバーのポートです。
docker ps
docker runコマンドを使用したNetScaler CPXの軽量バージョンの展開
-
アプリケーションの可用性
-
L4ロードバランシングとL7コンテンツスイッチング
-
SSLオフロード
-
IPv6プロトコル変換
-
-
アプリケーションセキュリティ
-
L7 リライトとレスポンダー
-
-
シンプルな管理性
-
Web ロギング
-
AppFlow®
-
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>
docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
newnslog を使用したロギングは無効になっています。これを有効にするには、NetScaler CPX の軽量バージョンを起動する際に、NS_ENABLE_NEWNSLOG 環境変数を 1 に設定する必要があります。
newnslog を使用したロギングを有効にする方法を示しています。
docker run -dt --privileged=true --ulimit core=-1 -e EULA=yes -e NS_CPX_LITE=1 -e NS_ENABLE_NEWNSLOG=1 cpx:<tag>
Docker Compose を使用した NetScaler CPX インスタンスの展開
-
Compose ファイルを作成します。その際、以下を指定します。
-
\<service-name> は、プロビジョニングするサービスの名前です。
-
image:\<repository>:\<tag> は、NetScaler CPX イメージのリポジトリとバージョンを示します。
-
privileged: true は、NetScaler CPX インスタンスにすべてのルート権限を提供します。
-
cap_add は、NetScaler CPX インスタンスにネットワーク権限を提供します。
-
\<host_directory_path> は、NetScaler CPX インスタンスにマウントする Docker ホスト上のディレクトリを示します。
-
\<number_processing_engine> は、NetScaler CPX インスタンスで起動する処理エンジンの数です。追加の処理エンジンごとに、Docker ホストに同等の数の vCPU と GB 単位のメモリが含まれていることを確認してください。たとえば、4 つの処理エンジンを追加する場合、Docker ホストには 4 つの vCPU と 4 GB のメモリが含まれている必要があります。
<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"}'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