Déploiement d’une instance NetScaler CPX dans Docker

Les instances NetScaler CPX sont disponibles sous forme de fichier image Docker dans le registre de conteneurs Quay. Pour déployer une instance, téléchargez l’image NetScaler CPX depuis le registre de conteneurs Quay, puis déployez l’instance à l’aide de la docker run commande ou de l’outil de composition Docker.

Logiciels requis

Assurez-vous que :

  • Le système hôte Docker possède au moins :
    • 1 PROCESSEUR

    • 2 Go de RAM

      Remarque :Pour améliorer les performances de NetScaler CPX, vous pouvez définir le nombre de moteurs de traitement que vous souhaitez que l’instance NetScaler CPX démarre. Pour chaque moteur de traitement supplémentaire que vous ajoutez, assurez-vous que l’hôte Docker contient le nombre équivalent de vCPU et la quantité de mémoire en Go. Par exemple, si vous souhaitez ajouter 4 moteurs de traitement, l’hôte Docker doit contenir 4 vCPU et 4 Go de mémoire.

  • Le système hôte Docker exécute Linux Ubuntu version 14.04 ou ultérieure.

  • La version 1.12 de Docker est installée sur le système hôte. Pour plus d’informations sur l’installation de Docker sur Linux, consultez ladocumentation Docker.

  • L’hôte Docker dispose d’une connexion Internet.

    Remarque : NetScaler CPX rencontre des problèmes lors de l’exécution sur Ubuntu version 16.04.5, version du noyau 4.4.0-131-generic. Il n’est donc pas recommandé d’exécuter NetScaler CPX sur le noyau Ubuntu version 16.04.5 version 4.4.0-131-generic.

    Remarque : Les versions suivantes de kubelet et kube-proxy présentent certaines failles de sécurité et il n’est pas recommandé d’utiliser Citric NetScaler CPX avec ces versions :

    • kubelet/kube-proxy v1.18.0-1.18.3
    • kubelet/kube-proxy v1.17.0-1.17.6
    • kubelet/kube-proxy <=1.16.10

    Pour plus d’informations sur la façon d’atténuer cette vulnérabilité, consultez Atténuer cette vulnérabilité.

Téléchargement de l’image NetScaler CPX depuis Quay

Vous pouvez télécharger l’image NetScaler CPX depuis le registre de conteneurs Quay à l’aide de la docker pull commande et la déployer sur votre environnement. Utilisez la commande suivante pour télécharger l’image NetScaler CPX depuis le registre de conteneurs Quay :

    docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-xx.xx

Par exemple, si vous souhaitez télécharger la version 13.0-64.35, utilisez la commande suivante :

    docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-64.35

Utilisez la commande suivante pour vérifier si l’image NetScaler CPX est installée dans les images 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

Vous pouvez déployer la dernière image NetScaler CPX à partir du registre de conteneurs Quay.

Déploiement de l’instance NetScaler CPX à l’aide de la commande docker run

Sur l’hôte, vous pouvez installer une instance NetScaler CPX dans le conteneur Docker à l’aide de l’image Docker NetScaler CPX que vous avez chargée sur l’hôte. À l’aide de la docker run commande, installez l’instance NetScaler CPX avec la configuration NetScaler CPX par défaut.

Important :

Si vous avez téléchargé NetScaler CPX Express depuis CPX Express, assurez-vous de lire et de comprendre le contrat de licence utilisateur final (CLUF) disponible sur :CPX Express et d’accepter le CLUF lors du déploiement de l’instance NetScaler CPX.

Installez l’instance NetScaler CPX sur le conteneur Docker à l’aide de la commande docker run suivante :

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

Cet exemple crée un conteneur nommé enmycpxfonction de l’image Docker NetScaler CPX.

Le paramètre -P est obligatoire. Il indique à Docker de mapper les ports exposés dans le conteneur par l’image Docker NetScaler CPX. Cela signifie mapper les ports 9080, 22, 9443 et 161/UDP aux ports de l’hôte Docker sélectionnés de manière aléatoire dans la plage définie par l’utilisateur. Ce mappage est fait pour éviter les conflits. Si vous créez ultérieurement plusieurs conteneurs NetScaler CPX sur le même hôte Docker. Les mappages de ports sont dynamiques et sont définis chaque fois que le conteneur est démarré ou redémarré. Les ports sont utilisés comme suit :

  • 9080 est utilisé pour HTTP
  • 9443 est utilisé pour les HTTPs
  • 22 utilisés pour SSH
  • 161/UDP est utilisé pour le SNMP.

Si vous souhaitez des mappages de ports statiques, utilisez le paramètre -p pour les définir manuellement.

L’option --privileged=true permet d’exécuter le conteneur en mode privilégié. Si vous exécutez le NetScaler CPX en mode de déploiement hôte, vous devez fournir tous les privilèges système au NetScaler CPX.

Pour exécuter le NetScaler CPX en mode pont avec un ou plusieurs cœurs, vous pouvez utiliser l’option --cap-add=NET_ADMIN au lieu du mode privilégié. L’option --cap-add=NET_ADMIN vous permet d’exécuter le conteneur NetScaler CPX avec des privilèges réseau complets. Avec l’option --cap-add=NET_ADMIN, utilisez l’option --sysctl kernel.shmmax=1073741824 --sysctl net.ipv6.conf.default.accept_dad=0 --sysctl kernel.core_pattern=/var/crash/core.%e.%p.%s de la commande docker run pour définir manuellement les paramètres de contrôle système supplémentaires. Ces paramètres de contrôle système supplémentaires ne sont pas définis automatiquement dans les modes non privilégiés.

**--net=host Il s’agit d’une option de commande d’exécution du menu fixe standard qui spécifie que le conteneur est en cours d’exécution dans la pile du réseau hôte et a accès à tous les périphériques réseau.

Remarque

Ignorez cette option si vous exécutez NetScaler CPX sur un pont ou sur aucun réseau.

-e NS_NETMODE="HOST" Il s’agit d’une variable d’environnement spécifique à NetScaler CPX qui vous permet de spécifier que NetScaler CPX est démarré en mode hôte. Une fois que NetScaler CPX démarre en mode hôte, il configure 4 règles iptables par défaut sur une machine hôte pour l’accès de gestion au NetScaler CPX. Il utilise les ports suivants :

  • 9995 pour HTTP
  • 9996 pour HTTPS
  • 9997 pour SSH
  • 9998 pour SNMP

Si vous souhaitez spécifier différents ports, vous pouvez utiliser les variables d’environnement suivantes :

  • -e NS_HTTP_PORT=
  • -e NS_HTTPS_PORT=
  • -e NS_SSH_PORT=
  • -e NS_SNMP_PORT=

Remarque

Ignorez cette variable d’environnement si vous exécutez NetScaler CPX sur un pont ou sur aucun réseau.

-e CPX_CORESIl s’agit d’une variable d’environnement optionnelle spécifique à NetScaler CPX. Vous pouvez l’utiliser pour améliorer les performances de l’instance NetScaler CPX en définissant le nombre de moteurs de traitement que vous souhaitez que le conteneur NetScaler CPX démarre.

Remarque : NetScaler CPX peut prendre en charge de 1 à 16 cœurs.

Remarque

Pour chaque moteur de traitement supplémentaire que vous ajoutez, assurez-vous que l’hôte Docker contient le nombre équivalent de vCPU et la quantité de mémoire en Go. Par exemple, si vous souhaitez ajouter 4 moteurs de traitement, l’hôte Docker doit contenir 4 vCPU et 4 Go de mémoire.

La variable d’environnement -e EULA = yes spécifique à NetScaler CPX obligatoire, qui est requise pour vérifier que vous avez lu et compris le contrat de licence utilisateur final (EULA) disponible sur : CPX Express.

Le-e PLATFORM=CP1000paramètre spécifie le type de licence NetScaler CPX.

Si vous exécutez Docker sur un réseau hôte, vous pouvez attribuer des interfaces réseau dédiées au conteneur NetScaler CPX à l’aide de la variable d’environnement. -e CPX_NW_DEV Vous devez définir les interfaces réseau séparées par un espace blanc. Les interfaces réseau que vous définissez sont conservées par le conteneur NetScaler CPX jusqu’à ce que vous le désinstalliez. Lorsque le conteneur NetScaler CPX est provisionné, toutes les interfaces réseau attribuées sont ajoutées à l’espace de noms réseau NetScaler.

Remarque

Si vous exécutez NetScaler CPX dans un réseau de pont, vous pouvez modifier le réseau de conteneurs, par exemple configurer une autre connexion réseau au conteneur ou supprimer un réseau existant. Assurez-vous ensuite de redémarrer le conteneur NetScaler CPX pour utiliser le réseau mis à jour.

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 Il s’agit d’une variable d’environnement spécifique à NetScaler CPX qui vous permet de contrôler les performances de débit du conteneur NetScaler CPX. Lorsque le NetScaler CPX ne reçoit aucun trafic entrant à traiter, il libère le processeur pendant cette période d’inactivité, ce qui se traduit par de faibles performances de débit. Vous pouvez utiliser la variable d’environnement CPX_CONFIG pour contrôler les performances de débit du conteneur NetScaler CPX dans de tels scénarios. Vous devez fournir les valeurs suivantes à la variable d’ CPX_CONFIG environnement au format JSON :

  • Si vous souhaitez que le conteneur NetScaler CPX génère du processeur dans des scénarios d’inactivité, définissez {"YIELD” : “Yes”}
  • Si vous souhaitez que le conteneur NetScaler CPX évite de surcharger le processeur dans des scénarios d’inactivité afin d’obtenir des performances de débit élevées, définissez {“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-->

Le–vparamètre est un paramètre facultatif qui spécifie le point de montage du répertoire de montage NetScaler CPX./cpx Un point de montage est un répertoire sur l’hôte, dans lequel vous montez le répertoire /cpx. Le répertoire /cpx stocke les journaux, les fichiers de configuration, les certificats SSL et les fichiers de vidage de mémoire. Dans l’exemple, le point de montage est/var/cpx et le répertoire de montage NetScaler CPX est./cpx

Si vous avez acheté une licence ou que vous possédez une licence d’évaluation, vous pouvez télécharger la licence sur un serveur de licences et spécifier l’emplacement du serveur de licences à l’aide de la commande docker run, à l’aide du paramètre -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>. Dans ce cas, il n’est pas nécessaire d’accepter le CLUF.

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

Où :

  • LS_IP_ADDRESS est l’adresse IP du serveur de licences.
  • LS_PORT est le port du serveur de licences.

Vous pouvez afficher les images exécutées sur votre système et les ports mappés aux ports standard à l’aide de la commande : docker ps

Déploiement d’une version allégée de NetScaler CPX à l’aide de la commande docker run

NetScaler fournit une version allégée de NetScaler CPX qui consomme moins de mémoire d’exécution. La version allégée de NetScaler CPX peut être déployée en tant que sidecar dans les déploiements de maillage de services.

La version allégée de NetScaler CPX prend en charge les fonctionnalités suivantes :

  • Disponibilité des applications
    • Équilibrage de charge L4 et commutation de contenu L7
    • Déchargement SSL
    • Traduction du protocole IPv6
  • Sécurité des applications
    • Réécriture et répondeur L7
  • Facilité de gestion simple
    • Journalisation Web
    • AppFlow

Pour instancier la version allégée de NetScaler CPX, définissez la variable d’environnement NS_CPX_LITE lors de l’exécution de la commande 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-->

L’exemple suivant crée un conteneur léger basé sur l’image NetScaler CPX.

docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
<!--NeedCopy-->

Par défaut, l’utilisation de la journalisation newnslog est désactivée sur la version allégée de NetScaler CPX. Pour l’activer, vous devez définir la variable d’ NS_ENABLE_NEWNSLOG environnement sur 1 tout en faisant apparaître la version allégée de NetScaler CPX.

L’exemple suivant montre comment activer la journalisation lors du déploiement de la version allégée de 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>
<!--NeedCopy-->

Remarque : La version allégée de CPX ne prend en charge que le monocœur (CPX_CORES=1).

Déploiement d’instances NetScaler CPX à l’aide de Docker Compose

Vous pouvez utiliser l’outil Compose de Docker pour mettre en service une seule instance NetScaler CPX ou plusieurs instances NetScaler CPX. Pour provisionner des instances NetScaler CPX à l’aide de Docker Compose, vous devez d’abord écrire un fichier de composition. Ce fichier spécifie l’image NetScaler CPX, les ports que vous souhaitez ouvrir pour l’instance NetScaler CPX et les privilèges de votre instance NetScaler CPX.

Important

Vérifiez que vous avez installé l’outil Docker Compose sur l’hôte.

Pour provisionner plusieurs instances NetScaler CPX :

  1. Écrivez un fichier de composition, où :
  • <service-name> est le nom du service que vous souhaitez mettre en service.
  • image:<repository>:<tag> indique le référentiel et les versions de l’image NetScaler CPX.
  • privileged : true fournit tous les privilèges root à l’instance NetScaler CPX.
  • cap_add fournit des privilèges réseau à l’instance NetScaler CPX.
  • <host_directory_path> indique le répertoire sur l’hôte Docker que vous souhaitez monter pour l’instance NetScaler CPX.
  • <number_processing_engine> est le nombre de moteurs de traitement que vous souhaitez faire démarrer par l’instance NetScaler CPX. Pour chaque moteur de traitement supplémentaire, assurez-vous que l’hôte Docker contient le nombre équivalent de vCPU et la quantité de mémoire en Go. Par exemple, si vous souhaitez ajouter 4 moteurs de traitement, l’hôte Docker doit contenir 4 vCPU et 4 Go de mémoire.

Le fichier de composition suit généralement un format similaire à :

    <service-name>:
    container_name:
    image: <repository>:<tag>
    ports:
        - 22
        - 9080
        - 9443
        - 161/udp
        - 35021-35030
    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-->
Déploiement d’une instance NetScaler CPX dans Docker