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.

Conditions préalables

Assurez-vous que :

  • Le système hôte Docker dispose au minimum de :
    • 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.

    Remarque : Les versions suivantes de kubelet et kube-proxy présentent des vulnérabilités de sécurité et il n’est pas recommandé d’utiliser 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 commande docker pull et la déployer dans 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 depuis le 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 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.

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 --name <cpx_container_name> <REPOSITORY>:<CPX-IMAGE_TAG_IN_QUAY>
<!--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 quay.io/citrix/citrix-k8s-cpx-ingress:14.1-x.x
<!--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 NetScaler CPX en mode d’hôte de déploiement, vous devez fournir tous les privilèges système à NetScaler CPX.

Pour exécuter 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 tous les privilèges réseau. 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 dans la commande docker run pour effectuer manuellement les paramètres de contrôle système supplémentaires. Ces paramètres de contrôle système supplémentaires ne sont pas effectués automatiquement dans les modes non privilégiés.

L’option **--net=host est une option de commande docker run standard 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

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

La variable d’environnement -e NS_NETMODE="HOST" est spécifique à NetScaler CPX et 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 à 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

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

La variable d’environnement -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.

Remarques :

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

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

La variable d’environnement -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 : Composants du système de licences Citrix.

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 pont, 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:13.0-x.x
<!--NeedCopy-->

La variable d’environnement -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: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 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: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 en cours d’exécution sur votre système et les ports mappés aux ports standard à l’aide de la commande : docker ps

Déploiement d’une version plus légère de NetScaler CPX à l’aide de la commande docker run

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

La version plus légère 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 de protocole IPv6
  • Sécurité des applications
    • Réécriture L7 et répondeur
  • Gestion simplifiée
    • Journalisation Web
    • AppFlow

Pour instancier la version plus légère 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, la journalisation à l’aide de newnslog est désactivée sur la version plus légère de NetScaler CPX. Pour l’activer, vous devez définir la variable d’environnement NS_ENABLE_NEWNSLOG sur 1 lors du démarrage de la version plus légère de NetScaler CPX.

L’exemple suivant montre comment activer la journalisation à l’aide de newnslog lors du déploiement de la version plus légère de NetScaler CPX.

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 plus légère de CPX ne prend en charge qu’un seul cœur (CPX_CORES=1).

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 Docker 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 à :

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