Déploiement d’une instance Citrix ADC CPX dans Docker

Les instances Citrix ADC 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 Citrix ADC CPX à partir du registre de conteneur 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 possède au moins :
    • 1 PROCESSEUR

    • 2 Go de RAM

      Remarque : Pour de meilleures performances Citrix ADC CPX, vous pouvez définir le nombre de moteurs de traitement que vous souhaitez que l’instance Citrix ADC 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 : Citrix ADC CPX rencontre des problèmes lors de l’exécution sur Ubuntu version 16.04.5, version du noyau 4.4.0-131-générique. Il n’est donc pas recommandé d’exécuter Citrix ADC CPX sur la version 16.04.5 du noyau Ubuntu version 4.4.0-131-generic.

    Remarque : Les versions kubelet et kube-proxy suivantes présentent des failles de sécurité et il n’est pas recommandé d’utiliser Citric ADC 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 Citrix ADC CPX depuis Quay

Vous pouvez télécharger l’image Citrix ADC CPX à partir du registre de conteneur 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 Citrix ADC CPX à partir du registre de conteneur 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 Citrix ADC CPX est installée dans des images de menu fixe :

    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 Citrix ADC CPX à partir du registre de conteneurs Quay.

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

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

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

Important :

Si vous avez téléchargé Citrix ADC CPX Express à partir de 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 Citrix ADC CPX.

Installez l’instance Citrix ADC 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émycpxen fonction de l’image Docker Citrix ADC CPX.

Le paramètre -P est obligatoire. Il indique à Docker de mapper les ports exposés dans le conteneur par l’image Docker Citrix ADC 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 Citrix ADC 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 Citrix ADC CPX en mode de déploiement Host, vous devez fournir tous les privilèges système au Citrix ADC CPX. Si vous souhaitez exécuter le Citrix ADC CPX en mode pont avec un ou plusieurs cœurs, vous pouvez utiliser l’option au lieu de cette --cap-add=NET_ADMIN option. L’option --cap-add=NET_ADMIN vous permet d’exécuter le conteneur Citrix ADC 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

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

-e NS_NETMODE="HOST" Il s’agit d’une variable d’environnement spécifique à Citrix ADC CPX qui vous permet de spécifier que Citrix ADC CPX est démarré en mode hôte. Une fois que Citrix ADC 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 Citrix ADC 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 Citrix ADC CPX sur un pont ou aucun réseau.

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

Remarque : Citrix ADC 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.

-e EULA = yesIl s’agit d’une variable d’environnement spécifique à Citrix ADC CPX obligatoire, 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 Citrix ADC CPX.

Si vous exécutez Docker sur un réseau hôte, vous pouvez attribuer des interfaces réseau dédiées au conteneur Citrix ADC CPX à l’aide de la variable d’ -e CPX_NW_DEV environnement. 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 Citrix ADC CPX jusqu’à ce que vous désinstalliez le conteneur Citrix ADC CPX. Lorsque le conteneur Citrix ADC CPX est provisionné, toutes les interfaces réseau attribuées sont ajoutées à l’espace de noms réseau Citrix ADC.

Remarque

Si vous exécutez Citrix ADC 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 Citrix ADC 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 à Citrix ADC CPX qui vous permet de contrôler les performances de débit du conteneur Citrix ADC CPX. Lorsque le Citrix ADC CPX ne reçoit aucun trafic entrant à traiter, il libère le processeur pendant ce temps d’inactivité, ce qui entraîne une faible performance de débit. Vous pouvez utiliser la variable d’ CPX_CONFIG environnement pour contrôler les performances de débit du conteneur Citrix ADC 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 Citrix ADC CPX produise de l’UC dans les scénarios d’inactivité, définissez {"YIELD” : “Yes”}
  • Si vous souhaitez que le conteneur Citrix ADC CPX évite d’affecter le processeur 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 Citrix ADC 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 Citrix ADC 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 Citrix ADC CPX à l’aide de la commande docker run

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

La version allégée de Citrix ADC 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 Citrix ADC 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 Citrix ADC 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 allégée de Citrix ADC CPX. Pour l’activer, vous devez définir la variable d’environnement NS_ENABLE_NEWNSLOG sur 1 tout en affichant la version allégée de Citrix ADC CPX.

L’exemple suivant montre comment activer la journalisation à l’aide de newnslog lors du déploiement de la version allégée de Citrix ADC 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 allégée de CPX ne prend en charge que le monocœur (CPX_CORES=1).

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

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

Important

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

Pour provisionner plusieurs instances Citrix ADC 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 Citrix ADC CPX.
  • privileged: true fournit tous les privilèges racine à l’instance Citrix ADC CPX.
  • cap_add fournit des privilèges réseau à l’instance Citrix ADC CPX.
  • <host_directory_path> indique le répertoire sur l’hôte docker que vous souhaitez monter pour l’instance Citrix ADC CPX.
  • <number_processing_engine> est le nombre de moteurs de traitement que vous souhaitez que l’instance Citrix ADC 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 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:13.0-x.x
    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 Citrix ADC 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 Citrix ADC 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 Citrix ADC CPX, exécutez la commande suivante : docker-compose -f <compose_file_name> up –d