Bereitstellen einer NetScaler CPX-Instanz in Docker
NetScaler CPX-Instanzen sind als Docker-Image-Datei in der Quay-Container-Registry verfügbar. Um eine Instanz bereitzustellen, laden Sie das NetScaler CPX-Image aus der Quay-Container-Registry herunter und stellen Sie die Instanz dann mithilfe des Befehls docker run
oder des Docker Compose-Tools bereit.
Voraussetzungen
Stellen Sie sicher, dass:
- Das Docker-Hostsystem mindestens Folgendes aufweist:
- 1 CPU
-
2 GB RAM
Hinweis:
Für eine bessere NetScaler CPX-Leistung können Sie die Anzahl der Verarbeitungseinheiten definieren, mit denen die NetScaler CPX-Instanz gestartet werden soll. Stellen Sie für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, sicher, dass der Docker-Host die entsprechende Anzahl von vCPUs und die Speichermenge in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Speicher enthalten.
-
Das Docker-Hostsystem Linux Ubuntu Version 14.04 oder höher ausführt.
-
Docker Version 1.12 auf dem Hostsystem installiert ist. Informationen zur Docker-Installation unter Linux finden Sie in der Docker-Dokumentation.
-
Der Docker-Host über Internetkonnektivität verfügt.
Hinweis: NetScaler CPX hat Probleme beim Ausführen unter Ubuntu Version 16.04.5, Kernel-Version 4.4.0-131-generic. Daher wird nicht empfohlen, NetScaler CPX unter Ubuntu Version 16.04.5, Kernel-Version 4.4.0-131-generic auszuführen.
Hinweis: Die folgenden kubelet- und kube-proxy-Versionen weisen einige Sicherheitslücken auf, und es wird nicht empfohlen, NetScaler CPX mit diesen Versionen zu verwenden:
- kubelet/kube-proxy v1.18.0-1.18.3
- kubelet/kube-proxy v1.17.0-1.17.6
- kubelet/kube-proxy <=1.16.10
Informationen zur Behebung dieser Sicherheitslücke finden Sie unter Beheben dieser Sicherheitslücke.
Herunterladen des NetScaler CPX-Images von Quay
Sie können das NetScaler CPX-Image aus der Quay-Container-Registry mithilfe des Befehls docker pull
herunterladen und in Ihrer Umgebung bereitstellen. Verwenden Sie den folgenden Befehl, um das NetScaler CPX-Image aus der Quay-Container-Registry herunterzuladen:
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-xx.xx
Wenn Sie beispielsweise die Version 13.0-64.35 herunterladen möchten, verwenden Sie den folgenden Befehl:
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-64.35
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob das NetScaler CPX-Image in Docker-Images installiert ist:
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
Sie können das neueste NetScaler CPX-Image aus der Quay-Container-Registry bereitstellen.
docker run
Bereitstellen der NetScaler CPX-Instanz mithilfe des Befehls Auf dem Host können Sie eine NetScaler CPX-Instanz im Docker-Container installieren, indem Sie das NetScaler CPX Docker-Image verwenden, das Sie auf den Host geladen haben. Verwenden Sie den Befehl docker run
, um die NetScaler CPX-Instanz mit der Standard-NetScaler CPX-Konfiguration zu installieren.
Installieren Sie die NetScaler CPX-Instanz auf dem Docker-Container mithilfe des folgenden Befehls docker run:
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>
<!--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 quay.io/citrix/citrix-k8s-cpx-ingress:14.1-x.x
<!--NeedCopy-->
Dieses Beispiel erstellt einen Container namens mycpx
basierend auf dem NetScaler CPX Docker-Image.
Der Parameter -P
ist obligatorisch. Er weist Docker an, die im Container durch das NetScaler CPX Docker-Image freigegebenen Ports zuzuordnen. Das bedeutet, dass die Ports 9080, 22, 9443 und 161/UDP den Ports auf dem Docker-Host zugeordnet werden, die zufällig aus dem benutzerdefinierten Bereich ausgewählt werden. Diese Zuordnung erfolgt, um Konflikte zu vermeiden, falls Sie später mehrere NetScaler CPX-Container auf demselben Docker-Host erstellen. Die Portzuordnungen sind dynamisch und werden jedes Mal festgelegt, wenn der Container gestartet oder neu gestartet wird. Die Ports werden wie folgt verwendet:
- 9080 wird für HTTP verwendet
- 9443 wird für HTTPS verwendet
- 22 wird für SSH verwendet
- 161/UDP wird für SNMP verwendet.
Wenn Sie statische Portzuordnungen wünschen, verwenden Sie den Parameter -p
, um diese manuell festzulegen.
Die Option --privileged=true
wird verwendet, um den Container im privilegierten Modus auszuführen. Wenn Sie NetScaler CPX im Host-Bereitstellungsmodus ausführen, müssen Sie NetScaler CPX alle Systemberechtigungen erteilen.
Um NetScaler CPX im Bridge-Modus mit einem oder mehreren Kernen auszuführen, können Sie die Option --cap-add=NET_ADMIN
anstelle des privilegierten Modus verwenden. Die Option --cap-add=NET_ADMIN
ermöglicht es Ihnen, den NetScaler CPX-Container mit vollen Netzwerkprivilegien auszuführen. Mit der Option --cap-add=NET_ADMIN
verwenden Sie die Option --sysctl kernel.shmmax=1073741824 --sysctl net.ipv6.conf.default.accept_dad=0 --sysctl kernel.core_pattern=/var/crash/core.%e.%p.%s
im Befehl docker run
, um die zusätzlichen Systemsteuerungseinstellungen manuell vorzunehmen. Diese zusätzlichen Systemsteuerungseinstellungen werden in nicht-privilegierten Modi nicht automatisch vorgenommen.
Die Option **--net=host
ist eine Standardoption des Befehls docker run
, die angibt, dass der Container im Host-Netzwerk-Stack ausgeführt wird und Zugriff auf alle Netzwerkgeräte hat.
Hinweis
Ignorieren Sie diese Option, wenn Sie NetScaler CPX im Bridge- oder None-Netzwerk ausführen.
Die Umgebungsvariable -e NS_NETMODE="HOST"
ist eine NetScaler CPX-spezifische Umgebungsvariable, mit der Sie angeben können, dass NetScaler CPX im Host-Modus gestartet wird. Sobald NetScaler CPX im Host-Modus gestartet wird, konfiguriert es 4 Standard-iptables-Regeln auf einer Hostmaschine für den Verwaltungszugriff auf NetScaler CPX. Es verwendet die folgenden Ports:
- 9995 für HTTP
- 9996 für HTTPS
- 9997 für SSH
- 9998 für SNMP
Wenn Sie andere Ports angeben möchten, können Sie die folgenden Umgebungsvariablen verwenden:
- -e NS_HTTP_PORT=
- -e NS_HTTPS_PORT=
- -e NS_SSH_PORT=
- -e NS_SNMP_PORT=
Hinweis
Ignorieren Sie diese Umgebungsvariable, wenn Sie NetScaler CPX im Bridge- oder None-Netzwerk ausführen.
Die Umgebungsvariable -e CPX_CORES
ist eine optionale NetScaler CPX-spezifische Umgebungsvariable. Sie können sie verwenden, um die Leistung der NetScaler CPX-Instanz zu verbessern, indem Sie die Anzahl der Verarbeitungseinheiten definieren, mit denen der NetScaler CPX-Container gestartet werden soll.
Hinweise:
Stellen Sie für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, sicher, dass der Docker-Host die entsprechende Anzahl von vCPUs und die Speichermenge in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Speicher enthalten.
NetScaler CPX kann 1 bis 16 Kerne unterstützen.
Die Umgebungsvariable -e EULA = yes
ist eine obligatorische NetScaler CPX-spezifische Umgebungsvariable, die erforderlich ist, um zu überprüfen, ob Sie die Endbenutzer-Lizenzvereinbarung (EULA) gelesen und verstanden haben, die unter: Die Komponenten des Citrix-Lizenzierungssystems verfügbar ist.
Der Parameter -e PLATFORM=CP1000
gibt den NetScaler CPX-Lizenztyp an.
Wenn Sie Docker in einem Host-Netzwerk ausführen, können Sie dem NetScaler CPX-Container dedizierte Netzwerkschnittstellen mithilfe der Umgebungsvariablen -e CPX_NW_DEV
zuweisen. Sie müssen die Netzwerkschnittstellen durch ein Leerzeichen getrennt definieren. Die von Ihnen definierten Netzwerkschnittstellen werden vom NetScaler CPX-Container gehalten, bis Sie den NetScaler CPX-Container deinstallieren. Wenn der NetScaler CPX-Container bereitgestellt wird, werden alle zugewiesenen Netzwerkschnittstellen zum NetScaler-Netzwerk-Namespace hinzugefügt.
Hinweis
Wenn Sie NetScaler CPX im Bridge-Netzwerk ausführen, können Sie das Containernetzwerk ändern, z. B. eine andere Netzwerkverbindung zum Container konfigurieren oder eine vorhandene Netzwerkverbindung entfernen. Stellen Sie dann sicher, dass Sie den NetScaler CPX-Container neu starten, um das aktualisierte Netzwerk zu verwenden.
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-->
Die Umgebungsvariable -e CPX_CONFIG
ist eine NetScaler CPX-spezifische Umgebungsvariable, mit der Sie die Durchsatzleistung des NetScaler CPX-Containers steuern können. Wenn NetScaler CPX keinen eingehenden Datenverkehr zur Verarbeitung empfängt, gibt es die CPU während dieser Leerlaufzeit frei, was zu einer geringen Durchsatzleistung führt. Sie können die Umgebungsvariable CPX_CONFIG
verwenden, um die Durchsatzleistung des NetScaler CPX-Containers in solchen Szenarien zu steuern. Sie müssen der Umgebungsvariablen CPX_CONFIG
die folgenden Werte im JSON-Format bereitstellen:
- Wenn der NetScaler CPX-Container die CPU in Leerlaufszenarien freigeben soll, definieren Sie
{"YIELD” : “Yes”}
- Wenn der NetScaler CPX-Container die CPU in Leerlaufszenarien nicht freigeben soll, um eine hohe Durchsatzleistung zu erzielen, definieren Sie
{“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-->
Der Parameter -v
ist ein optionaler Parameter, der den Mount-Punkt des NetScaler CPX-Mount-Verzeichnisses, /cpx
, angibt. Ein Mount-Punkt ist ein Verzeichnis auf dem Host, in das Sie das Verzeichnis /cpx
mounten. Das Verzeichnis /cpx
speichert die Protokolle, Konfigurationsdateien, SSL-Zertifikate und Core-Dump-Dateien. Im Beispiel ist der Mount-Punkt /var/cpx
und das NetScaler CPX-Mount-Verzeichnis ist /cpx
.
Wenn Sie eine Lizenz erworben oder eine Evaluierungslizenz haben, können Sie die Lizenz auf einen Lizenzserver hochladen und den Lizenzserver-Speicherort mit dem Befehl docker run
angeben, indem Sie den Parameter -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>
verwenden. In diesem Fall müssen Sie die EULA nicht akzeptieren.
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-->
Dabei gilt:
-
LS_IP_ADDRESS
ist die IP-Adresse des Lizenzservers. -
LS_PORT
ist der Port des Lizenzservers.
Sie können die auf Ihrem System ausgeführten Images und die den Standardports zugeordneten Ports mit dem Befehl docker ps
anzeigen:
docker run
Bereitstellen einer leichteren Version von NetScaler CPX mithilfe des Befehls NetScaler bietet eine leichtere Version von NetScaler CPX, die weniger Laufzeitspeicher verbraucht. Die leichtere Version von NetScaler CPX kann als Sidecar in Service-Mesh-Bereitstellungen bereitgestellt werden.
Die leichtere Version von NetScaler CPX unterstützt die folgenden Funktionen:
- Anwendungsverfügbarkeit
- L4-Lastverteilung und L7-Inhaltsumschaltung
- SSL-Offloading
- IPv6-Protokollübersetzung
- Anwendungssicherheit
- L7-Rewrite und Responder
- Einfache Verwaltbarkeit
- Web-Logging
- AppFlow
Um die leichtere Version von NetScaler CPX zu instanziieren, setzen Sie die Umgebungsvariable NS_CPX_LITE
während der Ausführung des Befehls Docker run
.
docker run -dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes --name <container_name> --ulimit core=-1 <REPOSITORY>:<TAG>
<!--NeedCopy-->
Das folgende Beispiel erstellt einen schlanken Container basierend auf dem NetScaler CPX-Image.
docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
<!--NeedCopy-->
Standardmäßig ist das Logging mit newnslog
in der leichteren Version von NetScaler CPX deaktiviert. Um es zu aktivieren, müssen Sie die Umgebungsvariable NS_ENABLE_NEWNSLOG
auf 1 setzen, während Sie die leichtere Version von NetScaler CPX starten.
Das folgende Beispiel zeigt, wie das Logging mit newnslog
aktiviert wird, während die leichtere Version von NetScaler CPX bereitgestellt wird.
docker run -dt --privileged=true --ulimit core=-1 -e EULA=yes -e NS_CPX_LITE=1 -e NS_ENABLE_NEWNSLOG=1 cpx:<tag>
<!--NeedCopy-->
Hinweis: Die leichtere Version von CPX unterstützt nur einen einzelnen Kern (CPX_CORES=1).
Bereitstellen von NetScaler CPX-Instanzen mithilfe von Docker Compose
Sie können das Compose-Tool von Docker verwenden, um eine einzelne NetScaler CPX-Instanz oder mehrere NetScaler CPX-Instanzen bereitzustellen. Um NetScaler CPX-Instanzen mithilfe von Docker Compose bereitzustellen, müssen Sie zuerst eine Compose-Datei schreiben. Diese Datei gibt das NetScaler CPX-Image, die Ports, die Sie für die NetScaler CPX-Instanz öffnen möchten, und die Berechtigungen für Ihre NetScaler CPX-Instanz an.
Wichtig
Stellen Sie sicher, dass Sie das Docker Compose-Tool auf dem Host installiert haben.
So stellen Sie mehrere NetScaler CPX-Instanzen bereit:
- Schreiben Sie eine Compose-Datei, wobei:
- <service-name> ist der Name des Dienstes, den Sie bereitstellen möchten.
- image:<repository>:<tag> bezeichnet das Repository und die Versionen des NetScaler CPX-Images.
- privileged: true gewährt der NetScaler CPX-Instanz alle Root-Berechtigungen.
- cap_add gewährt der NetScaler CPX-Instanz Netzwerkberechtigungen.
- <host_directory_path> bezeichnet das Verzeichnis auf dem Docker-Host, das Sie für die NetScaler CPX-Instanz mounten möchten.
- <number_processing_engine> ist die Anzahl der Verarbeitungseinheiten, mit denen die NetScaler CPX-Instanz gestartet werden soll. Stellen Sie für jede zusätzliche Verarbeitungseinheit sicher, dass der Docker-Host die entsprechende Anzahl von vCPUs und die Speichermenge in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Speicher enthalten.
Die Compose-Datei folgt im Allgemeinen einem ähnlichen Format wie:
<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-->