Implementación de una instancia CPX de Citrix ADC en Docker

Las instancias CPX de Citrix ADC están disponibles como un archivo de imagen de Docker en el registro de contenedores de Quay. Para implementar una instancia, descargue la imagen de Citrix ADC CPX del registro de contenedores Quay y, a continuación, implemente la instancia mediante el comando docker run o la herramienta de redacción de Docker.

Requisitos previos

Asegúrese de que:

  • El sistema host de Docker tiene al menos:
    • 1 CPU

    • 2 GB de RAM

      Nota: Para un mejor rendimiento de Citrix ADC CPX, puede definir el número de motores de procesamiento que quiere que se inicie la instancia de Citrix ADC CPX. Para cada motor de procesamiento adicional que agregue, asegúrese de que el host de Docker contenga la cantidad equivalente de CPU virtuales y la cantidad de memoria en GB. Por ejemplo, si quiere agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.

  • El sistema host Docker ejecuta Linux Ubuntu versión 14.04 o posterior.

  • La versión 1.12 de Docker está instalada en el sistema host. Para obtener información sobre la instalación de Docker en Linux, consulte ladocumentación de Docker.

  • El host de Docker tiene conectividad a Internet.

    Nota: Citrix ADC CPX tiene problemas cuando se ejecuta en ubuntu versión 16.04.5, kernel versión 4.4.0-131-generic. Por lo tanto, no se recomienda ejecutar Citrix ADC CPX en ubuntu versión 16.04.5 kernel versión 4.4.0-131-generic.

    Nota: Las siguientes versiones de kubelet y kube-proxy tienen algunas vulnerabilidades de seguridad y no se recomienda usar Citric ADC CPX con estas versiones:

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

    Para obtener información sobre cómo mitigar esta vulnerabilidad, consulte Mitigar esta vulnerabilidad.

Descarga de la imagen de Citrix ADC CPX desde Quay

Puede descargar la imagen de Citrix ADC CPX desde el registro de contenedores de Quay mediante el comando docker pull e implementarla en su entorno. Use el siguiente comando para descargar la imagen de Citrix ADC CPX del registro de contenedores de Quay:

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

Por ejemplo, si quiere descargar la versión 13.0-64.35, utilice el siguiente comando:

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

Use el siguiente comando para comprobar si la imagen de Citrix ADC CPX está instalada en imágenes de 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

Puede implementar la última imagen de Citrix ADC CPX desde el registro de contenedores Quay.

Nota: Se recomienda utilizar la imagen más reciente de Citrix ADC CPX del registro de contenedores Quay para aprovechar las funciones más recientes de Citrix ADC CPX.

Implementación de la instancia CPX de Citrix ADC mediante el comando docker run

En el host, puede instalar una instancia de Citrix ADC CPX en el contenedor de Docker mediante la imagen de Docker de Citrix ADC CPX que cargó en el host. Mediante el comando docker run, instale la instancia de Citrix ADC CPX con la configuración predeterminada de Citrix ADC CPX.

Importante:

Si ha descargado Citrix ADC CPX Express de https://www.citrix.com/products/netscaler-adc/cpx-express.html, asegúrese de leer y comprender el Contrato de licencia de usuario final (EULA) disponible en:https://www.citrix.com/products/netscaler-adc/cpx-express.htmly acepte el EULA al implementar la instancia de Citrix ADC CPX.

Instale la instancia de Citrix ADC CPX en el contenedor de Docker mediante el siguiente comando docker run:

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

En este ejemplo se crea un contenedor denominado enmycpxfunción de la imagen de Docker de Citrix ADC CPX.

El-Pparámetro es obligatorio. Indica a Docker que asigne los puertos expuestos en el contenedor por la imagen de Citrix ADC CPX Docker. Esto significa asignar los puertos 9080, 22, 9443 y 161/UDP a los puertos del host Docker que se seleccionan aleatoriamente del intervalo definido por el usuario. Este mapeo se hace para evitar conflictos. Si más tarde crea varios contenedores Citrix ADC CPX en el mismo host de Docker. Las asignaciones de puertos son dinámicas y se configuran cada vez que se inicia o se reinicia el contenedor. Los puertos se usan de la siguiente manera:

  • 9080 se usa para HTTP
  • 9443 se usa para HTTP
  • 22 utilizados para SSH
  • 161/UDP se utiliza para SNMP.

Si quiere asignaciones de puertos estáticas, use el parámetro -p para configurarlas manualmente.

La opción --privileged=true se usa para ejecutar el contenedor en modo privilegiado. Si ejecuta Citrix ADC CPX en modo Host de implementación, debe proporcionar todos los privilegios del sistema a Citrix ADC CPX. Si quiere ejecutar Citrix ADC CPX en modo puente con uno o varios núcleos, en lugar de esta opción, puede usar la opción --cap-add=NET_ADMIN. La --cap-add=NET_ADMINopción le permite ejecutar el contenedor Citrix ADC CPX con todos los privilegios de red.

**--net=host Es una opción de comando de ejecución de docker estándar que especifica que el contenedor se ejecuta en la pila de red del host y tiene acceso a todos los dispositivos de red.

Nota

Ignore esta opción si ejecuta Citrix ADC CPX en una red puente o ninguna.

-e NS_NETMODE="HOST" es una variable de entorno específica de Citrix ADC CPX que le permite especificar que Citrix ADC CPX se inicie en modo host. Una vez que Citrix ADC CPX se inicia en modo host, configura 4 reglas iptables predeterminadas en una máquina host para el acceso de administración a Citrix ADC CPX. Utiliza los siguientes puertos:

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

Si quiere especificar puertos diferentes, puede usar las siguientes variables de entorno:

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

Nota

Ignore esta variable de entorno si ejecuta Citrix ADC CPX en una red puente o ninguna.

Se-e CPX_COREStrata de una variable de entorno opcional específica de Citrix ADC CPX. Puede usarlo para mejorar el rendimiento de la instancia de Citrix ADC CPX definiendo el número de motores de procesamiento que quiere que se inicie el contenedor de Citrix ADC CPX.

Nota: Citrix ADC CPX admite de 1 a 16 núcleos.

Nota

Por cada motor de procesamiento adicional que agregue, asegúrese de que el host de Docker contenga la cantidad equivalente de CPU virtuales y la cantidad de memoria en GB. Por ejemplo, si quiere agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.

-e EULA = yesSe trata de una variable de entorno específica de Citrix ADC CPX obligatoria, que se requiere para comprobar que ha leído y comprendido el Contrato de licencia de usuario final (EULA) disponible en:https://www.citrix.com/products/netscaler-adc/cpx-express.html.

El-e PLATFORM=CP1000parámetro especifica el tipo de licencia de Citrix ADC CPX.

Si ejecuta Docker en una red host, puede asignar interfaces de red dedicadas al contenedor Citrix ADC CPX mediante la variable de entorno -e CPX_NW_DEV. Debe definir las interfaces de red separadas por un espacio en blanco. Las interfaces de red que defina se guardan en el contenedor Citrix ADC CPX hasta que desinstala el contenedor Citrix ADC CPX. Cuando se aprovisiona el contenedor Citrix ADC CPX, todas las interfaces de red asignadas se agregan al espacio de nombres de redes Citrix ADC.

Nota

Si ejecuta Citrix ADC CPX en una red puente, puede cambiar la red de contenedores, por ejemplo, configurar otra conexión de red al contenedor o eliminar una red existente. A continuación, asegúrese de reiniciar el contenedor Citrix ADC CPX para usar la red actualizada.

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 es una variable de entorno específica de Citrix ADC CPX que le permite controlar el rendimiento de rendimiento del contenedor Citrix ADC CPX. Cuando Citrix ADC CPX no recibe ningún tráfico entrante para procesar, produce la CPU durante este tiempo de inactividad, lo que resulta en un rendimiento bajo. Puede usar la variable de entorno CPX_CONFIG para controlar el rendimiento del rendimiento del contenedor Citrix ADC CPX en tales casos. Debe proporcionar los siguientes valores a la variable de entorno CPX_CONFIG en formato JSON:

  • Si quiere que el contenedor Citrix ADC CPX genere CPU en casos inactivos, defina {"YIELD” : “Yes”}
  • Si quiere que el contenedor Citrix ADC CPX evite producir la CPU en casos inactivos para que pueda obtener un rendimiento de alto rendimiento, defina {“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-->

El–vparámetro es un parámetro opcional que especifica el punto de montaje del directorio de montaje de Citrix ADC CPX,/cpx. Un punto de montaje es un directorio en el host, en el que se monta el/cpxdirectorio. El/cpxdirectorio almacena los registros, los archivos de configuración, los certificados SSL y los archivos de volcado de memoria. En el ejemplo, el punto de montaje es/var/cpx y el directorio de montaje de Citrix ADC CPX es/cpx.

Si compró una licencia o tiene una licencia de evaluación, puede cargar la licencia en un servidor de licencias y especificar la ubicación del servidor de licencias con el comando docker run, mediante el-e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>parámetro. En este caso, no necesita aceptar el EULA.

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

Donde:

  • LS_IP_ADDRESS es la dirección IP del servidor de licencias.
  • LS_PORT es el puerto del servidor de licencias.

Puede ver las imágenes que se ejecutan en su sistema y los puertos asignados a los puertos estándar mediante el comando: docker ps

Implementación de una versión más ligera de Citrix ADC CPX mediante el comando docker run

Citrix proporciona una versión más ligera de Citrix ADC CPX que consume menos memoria en tiempo de ejecución. La versión más ligera de Citrix ADC CPX se puede implementar como un sidecar en implementaciones de malla de servicio.

La versión más ligera de Citrix ADC CPX admite las siguientes funciones:

  • Disponibilidad de aplicaciones
    • Equilibrio de carga L4 y conmutación de contenido L7
    • Descarga SSL
    • Traducción de protocolos IPv6
  • Seguridad de las aplicaciones
    • Reescritura y respuesta de L7
  • Capacidad de administración sencilla
    • Registro web
    • AppFlow

Para crear una instancia de la versión más ligera de Citrix ADC CPX, establezca la variable de entorno NS_CPX_LITE mientras ejecuta el comando 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-->

En el siguiente ejemplo, se crea un contenedor ligero basado en la imagen de 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-->

De forma predeterminada, el registro mediante newnslog está inhabilitado en la versión más ligera de Citrix ADC CPX. Para habilitarlo, debe establecer la variable de entorno NS_ENABLE_NEWNSLOG en 1 mientras abre la versión más ligera de Citrix ADC CPX.

El siguiente ejemplo muestra cómo habilitar el registro mediante newnslog al implementar la versión más ligera 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-->

Nota: La versión más ligera de CPX solo admite un solo núcleo (CPX_CORES=1).

Implementación de instancias CPX de Citrix ADC mediante Docker Compose

Puede usar la herramienta Redactar de Docker para aprovisionar una sola instancia de Citrix ADC CPX o varias instancias de Citrix ADC CPX. Para aprovisionar instancias CPX de Citrix ADC mediante Docker Compose, primero debe escribir un archivo de redacción. Este archivo especifica la imagen de Citrix ADC CPX, los puertos que quiere abrir para la instancia de Citrix ADC CPX y los privilegios de la instancia de Citrix ADC CPX.

Importante

Asegúrese de haber instalado la herramienta Docker Compose en el host.

Para aprovisionar varias instancias de Citrix ADC CPX:

  1. Escribe un archivo de redacción, donde:
  • ** <service-name>es el nombre del servicio que quieres aprovisionar.
  • image:: <repository><tag>indica el repositorio y las versiones de la imagen de Citrix ADC CPX.
  • privileged: true proporciona todos los privilegios de root a la instancia de Citrix ADC CPX.
  • cap_add proporciona privilegios de red a la instancia de Citrix ADC CPX.
  • ** <host_directory_path>indica el directorio en el host de la ventana acoplable que quiere montar para la instancia de Citrix ADC CPX.
  • ** <number_processing_engine>es el número de motores de procesamiento que quiere que se inicie la instancia de Citrix ADC CPX. Para cada motor de procesamiento adicional, asegúrese de que el host de Docker contenga la cantidad equivalente de CPU virtuales y la cantidad de memoria en GB. Por ejemplo, si quiere agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.

El archivo de redacción suele tener un formato similar al siguiente:

    <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 quiere aprovisionar una sola instancia de Citrix ADC CPX, debe agregar la siguiente línea al archivo de redacción: container_name:<name_of_container>

Ejecute el siguiente comando para aprovisionar varias instancias de 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 quiere aprovisionar una sola instancia de Citrix ADC CPX, ejecute el siguiente comando: docker-compose -f <compose_file_name> up –d

Implementación de una instancia CPX de Citrix ADC en Docker