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 commande docker run ou de l’outil Docker compose.

Prérequis

Assurez-vous que :

  • Le système hôte Docker dispose d’au moins :
    • 1 CPU

    • 2 Go de RAM

      Remarque : Pour de meilleures 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.

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

  • L’hôte Docker dispose d’une connectivité 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 Ubuntu version 16.04.5 version du noyau 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 commande docker pull 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, tag spécifie l’image NetScaler CPX de Citrix.

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 en utilisant l’image Docker NetScaler CPX que vous avez chargée sur l’hôte. À l’aide de la commande docker run, 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 à l’adresse : https://www.citrix.com/products/netscaler-adc/cpx-express.html et d’accepter le CLUF lors du déploiement de l’instance NetScaler CPX.

Installez l’instance NetScaler CPX sur le conteneur Docker en utilisant 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 basé sur 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 qui sont sélectionnés aléatoirement dans la plage définie par l’utilisateur. Ce mappage est effectué 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 HTTPS
  • 22 est utilisé pour SSH
  • 161/UDP est utilisé pour SNMP.

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

L’option --privileged=true est utilisée pour exécuter le conteneur en mode privilégié. Si vous exécutez le NetScaler CPX avec plusieurs cœurs, vous devez lui accorder tous les privilèges système. Si vous souhaitez exécuter le NetScaler CPX avec un seul cœur, vous devez utiliser l’option --cap-add=NET_ADMIN à la place de celle-ci. L’option --cap-add=NET_ADMIN vous permet d’exécuter le conteneur NetScaler CPX avec tous les privilèges réseau.

**--net=host est une option standard de la commande docker run qui spécifie que le conteneur s’exécute dans la pile réseau de l’hôte et a accès à tous les périphériques réseau.

Remarque

Si vous exécutez NetScaler CPX dans un réseau de type bridge ou none, ignorez cette option.

-e NS_NETMODE="HOST" est une variable d’environnement spécifique à NetScaler CPX qui vous permet de spécifier que le 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 des ports différents, 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 dans un réseau de type bridge ou none, ignorez cette variable d’environnement.

Le -e CPX_CORES est une variable d’environnement facultative 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.

Le -e EULA = yes est une variable d’environnement obligatoire spécifique à NetScaler CPX, qui est requise pour vérifier que vous avez lu et compris le Contrat de Licence Utilisateur Final (CLUF) disponible à l’adresse : https://www.citrix.com/products/netscaler-adc/cpx-express.html.

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

Si vous exécutez Docker dans 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. Les interfaces réseau que vous définissez sont conservées par le conteneur NetScaler CPX jusqu’à ce que vous désinstalliez le conteneur NetScaler CPX. 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 type bridge, vous pouvez modifier le réseau du conteneur, 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-->

Le -e CPX_CONFIG est une variable d’environnement spécifique à NetScaler CPX qui vous permet de contrôler les performances de débit du conteneur NetScaler CPX. Lorsque NetScaler CPX ne reçoit aucun trafic entrant à traiter, il libère le CPU pendant ce temps d’inactivité, ce qui entraîne 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’environnement CPX_CONFIG au format JSON :

  • Si vous souhaitez que le conteneur NetScaler CPX libère le CPU dans les scénarios d’inactivité, définissez {"YIELD” : “Yes”}
  • Si vous souhaitez que le conteneur NetScaler CPX évite de libérer le CPU dans les 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 paramètre –v 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 la 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 si vous disposez d’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 avec la commande docker run, en utilisant le paramètre -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>. Dans ce cas, vous n’avez pas besoin 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 en utilisant la commande : docker ps

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

Vous pouvez utiliser l’outil Compose de Docker pour provisionner 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

Assurez-vous d’avoir installé l’outil Docker Compose sur l’hôte.

Pour provisionner plusieurs instances NetScaler CPX :

  1. Écrivez un fichier Compose, où :
  • <service-name> est le nom du service que vous souhaitez provisionner.
  • image:<repository>:<tag> désigne 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> désigne 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 que l’instance NetScaler CPX démarre. 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 compose 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 compose : 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