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で実行すると問題が発生します。そのため、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イメージのダウンロード
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 --name <cpx_container_name> <REPOSITORY>:<CPX-IMAGE_TAG_IN_QUAY>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 quay.io/citrix/citrix-k8s-cpx-ingress:14.1-x.x
mycpxという名前のコンテナを作成します。
-Pパラメーターは必須です。これは、NetScaler CPX Dockerイメージによってコンテナで公開されているポートをマッピングするようにDockerに指示します。つまり、ポート9080、22、9443、および161/UDPを、ユーザー定義の範囲からランダムに選択されたDockerホスト上のポートにマッピングします。このマッピングは、競合を避けるために行われます。同じDockerホスト上に複数のNetScaler CPXコンテナを後で作成する場合。ポートマッピングは動的であり、コンテナが起動または再起動されるたびに設定されます。ポートは次のように使用されます。
-
9080はHTTPに使用されます
-
9443はHTTPSに使用されます
-
22 SSH に使用されます
-
161/UDP は SNMP に使用されます。
--privileged=true オプションは、コンテナを特権モードで実行するために使用されます。NetScaler CPX をデプロイのホストモードで実行している場合は、NetScaler CPX にすべてのシステム特権を付与する必要があります。
--cap-add=NET_ADMIN オプションを使用できます。--cap-add=NET_ADMIN オプションを使用すると、NetScaler CPX コンテナを完全なネットワーク特権で実行できます。--cap-add=NET_ADMIN オプションを使用する場合は、docker run コマンドで --sysctl kernel.shmmax=1073741824 --sysctl net.ipv6.conf.default.accept_dad=0 --sysctl kernel.core_pattern=/var/crash/core.%e.%p.%s オプションを使用して、追加のシステム制御設定を手動で行います。これらの追加のシステム制御設定は、非特権モードでは自動的に行われません。
**--net=host は、コンテナがホストネットワークスタックで実行され、すべてのネットワークデバイスにアクセスできることを指定する標準の docker run コマンドオプションです。
-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=
-e CPX_CORES は、オプションの NetScaler CPX 固有の環境変数です。NetScaler CPX コンテナが起動する処理エンジンの数を定義することで、NetScaler CPX インスタンスのパフォーマンスを向上させるために使用できます。
-
追加する処理エンジンごとに、Docker ホストに同等の数の vCPU と GB 単位のメモリが含まれていることを確認してください。たとえば、4 つの処理エンジンを追加する場合は、Docker ホストに 4 つの vCPU と 4 GB のメモリが含まれている必要があります。
-
NetScaler CPX は 1 ~ 16 コアをサポートできます。
-e EULA = yes は必須の NetScaler CPX 固有の環境変数であり、The Citrix licensing system components で入手可能なエンドユーザーライセンス契約 (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 を解放するため、スループットパフォーマンスが低下します。このようなシナリオでは、CPX_CONFIG 環境変数を使用して NetScaler CPX コンテナのスループットパフォーマンスを制御できます。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と4GBのメモリが含まれている必要があります。
<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