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 mit dem Befehl docker run
oder dem Docker Compose-Tool 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, die die NetScaler CPX-Instanz starten soll. Für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, stellen Sie sicher, dass der Docker-Host die entsprechende Anzahl an vCPUs und die entsprechende Menge an Arbeitsspeicher in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Arbeitsspeicher 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 auf Ubuntu Version 16.04.5, Kernel Version 4.4.0-131-generic. Daher wird nicht empfohlen, NetScaler CPX auf 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 Diese Sicherheitslücke beheben.
Herunterladen des NetScaler CPX-Images von Quay
Sie können das NetScaler CPX-Image aus der Quay Container Registry mit dem Befehl 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 den 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.
Bereitstellen der NetScaler CPX-Instanz mit dem Befehl docker run
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 Standardkonfiguration von NetScaler CPX zu installieren.
Installieren Sie die NetScaler CPX-Instanz auf dem Docker-Container mit dem folgenden Befehl 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 <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-->
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 vom NetScaler CPX Docker-Image exponierten Ports zuzuordnen. Das bedeutet, die Ports 9080, 22, 9443 und 161/UDP werden den Ports auf dem Docker-Host zugeordnet, die zufällig aus dem benutzerdefinierten Bereich ausgewählt werden. Diese Zuordnung erfolgt, um Konflikte zu vermeiden, wenn 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. Wenn Sie NetScaler CPX im Bridge-Modus mit einem oder mehreren Kernen ausführen möchten, können Sie stattdessen die Option --cap-add=NET_ADMIN
verwenden. Die Option --cap-add=NET_ADMIN
ermöglicht es Ihnen, den NetScaler CPX-Container mit vollen Netzwerkberechtigungen auszuführen.
Der Befehl **--net=host
ist eine Standard-Docker-Run-Befehlsoption, 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.
-e NS_NETMODE="HOST"
ist eine NetScaler CPX-spezifische Umgebungsvariable, die es Ihnen ermöglicht, anzugeben, dass NetScaler CPX im Host-Modus gestartet wird. Sobald NetScaler CPX im Host-Modus startet, 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.
-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, die der NetScaler CPX-Container starten soll.
Hinweise:
Für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, stellen Sie sicher, dass der Docker-Host die entsprechende Anzahl an vCPUs und die entsprechende Menge an Arbeitsspeicher in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Arbeitsspeicher enthalten.
NetScaler CPX kann 1 bis 16 Kerne unterstützen.
-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 Citrix-Lizenzsystemkomponenten 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 in einem Bridge-Netzwerk ausführen, können Sie das Containernetzwerk ändern, z. B. eine andere Netzwerkverbindung zum Container konfigurieren oder eine bestehende 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-->
-e CPX_CONFIG
ist eine NetScaler CPX-spezifische Umgebungsvariable, die es Ihnen ermöglicht, die Durchsatzleistung des NetScaler CPX-Containers zu steuern. 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 im Leerlauf die CPU freigeben soll, definieren Sie
{"YIELD” : “Yes”}
- Wenn der NetScaler CPX-Container die CPU im Leerlauf 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 Mountpunkt des NetScaler CPX-Mount-Verzeichnisses, /cpx
, angibt. Ein Mountpunkt 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 Mountpunkt /var/cpx
und das NetScaler CPX-Mount-Verzeichnis ist /cpx
.
Wenn Sie eine Lizenz erworben haben oder eine Evaluierungslizenz besitzen, können Sie die Lizenz auf einen Lizenzserver hochladen und den Speicherort des Lizenzservers mit dem Docker-Run-Befehl unter Verwendung des Parameters -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>
angeben. 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.
Bereitstellen einer leichteren Version von NetScaler CPX mit dem Befehl docker run
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
beim Ausführen des Docker run
-Befehls.
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 leichtgewichtigen 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
beim Bereitstellen der leichteren Version von NetScaler CPX aktiviert 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 mit 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 mit 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, die die NetScaler CPX-Instanz starten soll. Für jede zusätzliche Verarbeitungseinheit stellen Sie sicher, dass der Docker-Host die entsprechende Anzahl an vCPUs und die entsprechende Menge an Arbeitsspeicher in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Arbeitsspeicher 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-->