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と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 イメージをダウンロードする
Quay コンテナレジストリから NetScaler CPX イメージを
docker pull コマンドを使用してダウンロードし、お使いの環境に展開できます。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
Quay コンテナレジストリ から最新の NetScaler CPX イメージを展開できます。
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>
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
この例では、NetScaler CPX Docker イメージに基づいて
mycpx という名前のコンテナを作成します。
-P パラメータは必須です。これは、NetScaler CPX Docker イメージによってコンテナで公開されているポートをマップするように Docker に指示します。つまり、ポート 9080、22、9443、および 161/UDP を、ユーザー定義の範囲からランダムに選択された Docker ホスト上のポートにマップします。このマッピングは、競合を回避するために行われます。同じ Docker ホスト上に複数の NetScaler CPX コンテナを後で作成する場合。ポートマッピングは動的であり、コンテナが起動または再起動されるたびに設定されます。ポートは次のように使用されます。
-
9080 は HTTP に使用されます
-
9443 は HTTPS に使用されます
-
SSHに使用される22
-
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をブリッジまたはnoneネットワークで実行している場合は、このオプションを無視してください。
-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=
注
NetScaler CPXをブリッジネットワークまたはnoneネットワークで実行している場合は、この環境変数を無視してください。
-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固有の環境変数であり、The Citrix licensing system components で入手可能なエンドユーザーライセンス契約 (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
-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.x
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
–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の軽量バージョンの展開
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>
次の例は、NetScaler CPXイメージに基づいて軽量コンテナを作成する方法を示しています。
docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
デフォルトでは、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>
注: CPXの軽量バージョンはシングルコアのみをサポートします (CPX_CORES=1)。
Docker Compose を使用した NetScaler CPX インスタンスの展開
Docker の Compose ツールを使用して、単一の NetScaler CPX インスタンスまたは複数の NetScaler CPX インスタンスをプロビジョニングできます。Docker Compose を使用して NetScaler CPX インスタンスをプロビジョニングするには、まずコンポーズファイルを作成する必要があります。このファイルには、NetScaler CPX イメージ、NetScaler CPX インスタンス用に開きたいポート、および NetScaler CPX インスタンスの特権が指定されます。
重要
ホストに Docker Compose ツールがインストールされていることを確認してください。
複数の NetScaler CPX インスタンスをプロビジョニングするには:
-
コンポーズファイルを作成します。その中で:
-
\<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