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.

Conditions préalables

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.

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

Dans cette commande, la balise spécifie l’image Citrix NetScaler CPX.

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

    docker pull quay.io/citrix/citrix-k8s-cpx-ingress:12.1-51.16

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                  12.1-51.16          952a04e73101        2 months ago        469 MB

Remarque : Il est recommandé d’utiliser la dernière image NetScaler CPX du registre de conteneurs Quay pour bénéficier des dernières fonctionnalités de NetScaler CPX.

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 https://www.citrix.com/products/netscaler-adc/cpx-express.html, assurez-vous de lire et de comprendre le contrat de licence utilisateur final (CLUF) disponible sur :https://www.citrix.com/products/netscaler-adc/cpx-express.htmlet acceptez 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:12.1-48.xx
<!--NeedCopy-->

Cet exemple crée un conteneur nommé mycpx sur la base 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 que les ports 9080, 22, 9443 et 161/UDP sont mappés aux ports de l’hôte Docker sélectionnés aléatoirement 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 avec plusieurs cœurs, vous devez fournir tous les privilèges système au NetScaler CPX. Si vous souhaitez exécuter NetScaler CPX avec un seul cœur, vous devez utiliser cette option au lieu de cette option. --cap-add=NET_ADMIN Cette --cap-add=NET_ADMINoption vous permet d’exécuter le conteneur NetScaler CPX avec des privilèges réseau complets.

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

Si vous exécutez NetScaler CPX sur un pont ou sur un réseau sans réseau, ignorez cette option.

-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 quatre règles iptable par défaut sur la 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

Si vous exécutez NetScaler CPX en mode pont ou sans réseau, ignorez cette variable d’environnement.

-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

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.

-e EULA = yes est une variable d’environnement 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 à l’adresse : .https://www.citrix.com/products/netscaler-adc/cpx-express.html

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:12.0-53.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:12.0-51.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:12.0-51.xx
<!--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:12.0-51.xx
<!--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’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 Compose, vous devez d’abord écrire un fichier Compose. 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:
    container_name: CPX_0
    image: cpx:12.0-53.xx
    ports:
        -  9443
        -  22
        -  9080
        -  161/udp
        -  35021-35030
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - /root/test:/cpx
    environment:
        -  CPX_CORES=2
        -  EULA=yes
<!--NeedCopy-->

Si vous souhaitez provisionner une seule instance NetScaler CPX, vous devez ajouter la ligne suivante au fichier de composition : container_name:<name_of_container>

Exécutez la commande suivante pour provisionner plusieurs instances NetScaler CPX : docker-compose -f <compose_file_name> scale <service-name>=<number of instances> up –d docker-compose -f docker-compose.yml scale cpxlb=3 up –d

Si vous souhaitez provisionner une seule instance NetScaler CPX, exécutez la commande suivante : docker-compose -f <compose_file_name> up –d

Déploiement d’une instance NetScaler CPX dans Docker