Bereitstellen einer NetScaler CPX-Instanz in Docker

NetScaler CPX-Instanzen sind als Docker-Image-Datei in der Quay-Container-Registrierung verfügbar. Um eine Instanz bereitzustellen, laden Sie das NetScaler CPX-Image aus der Quay-Container-Registrierung herunter und stellen Sie die Instanz dann mithilfe des docker run-Befehls 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, die die NetScaler CPX-Instanz starten soll. Stellen Sie für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, sicher, dass der Docker-Host die entsprechende Anzahl an 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.

  • Auf dem Docker-Hostsystem Linux Ubuntu Version 14.04 oder höher ausgeführt wird.

  • 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 Schwachstelle finden Sie unter Diese Schwachstelle beheben.

Herunterladen des NetScaler CPX-Images von Quay

Sie können das NetScaler CPX-Image aus der Quay-Container-Registrierung 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-Registrierung 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-Registrierung bereitstellen.

Bereitstellen der NetScaler CPX-Instanz mithilfe des Befehls 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. Installieren Sie mithilfe des Befehls docker run die NetScaler CPX-Instanz mit der Standardkonfiguration von NetScaler CPX.

Installieren Sie die NetScaler CPX-Instanz im 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 durch das NetScaler CPX Docker-Image freigegebenen Ports zuzuordnen. Das bedeutet, die Ports 9080, 22, 9443 und 161/UDP den Ports auf dem Docker-Host zuzuordnen, 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.

Die **--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.

Die -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 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 in einem Bridge- oder None-Netzwerk ausführen.

Die -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:

  • Stellen Sie für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, sicher, dass der Docker-Host die entsprechende Anzahl an vCPUs und die entsprechende Speichermenge 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.

Die -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 Container-Netzwerk ändern, z. B. eine andere Netzwerkverbindung zum Container konfigurieren oder ein vorhandenes Netzwerk 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 -e CPX_CONFIG ist eine NetScaler CPX-spezifische Umgebungsvariable, mit der Sie die Durchsatzleistung des NetScaler CPX-Containers steuern können. Wenn der NetScaler CPX keinen eingehenden Datenverkehr zur Verarbeitung empfängt, gibt er 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 in Leerlaufszenarien die CPU 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-Mountverzeichnisses, /cpx, angibt. Ein Mountpunkt ist ein Verzeichnis auf dem Host, in dem 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-Mountverzeichnis /cpx.

Wenn Sie eine Lizenz erworben haben oder über eine Evaluierungslizenz verfügen, können Sie die Lizenz auf einen Lizenzserver hochladen und den Speicherort des Lizenzservers mit dem Befehl docker run 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 eingesetzt werden.

Die leichtere Version von NetScaler CPX unterstützt die folgenden Funktionen:

  • Anwendungsverfügbarkeit
    • L4-Lastenausgleich und L7-Inhaltsumschaltung
    • SSL-Offloading
    • IPv6-Protokollübersetzung
  • Anwendungssicherheit
    • L7-Rewrite und Responder
  • Einfache Verwaltbarkeit
    • Web-Protokollierung
    • AppFlow®

Um die schlankere 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 die Protokollierung mit newnslog in der schlankeren Version von NetScaler CPX deaktiviert. Um sie zu aktivieren, müssen Sie die Umgebungsvariable NS_ENABLE_NEWNSLOG auf 1 setzen, während Sie die schlankere Version von NetScaler CPX starten.

Das folgende Beispiel zeigt, wie die Protokollierung mit newnslog aktiviert wird, während die schlankere 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 schlankere 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:

  1. Schreiben Sie eine Compose-Datei, in der:
  • <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. Stellen Sie für jede zusätzliche Verarbeitungseinheit 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-->