Implementación de una instancia de NetScaler CPX en Docker

Las instancias de NetScaler CPX 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 NetScaler 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 obtener un mejor rendimiento de NetScaler CPX, puede definir la cantidad de motores de procesamiento que quiere que inicie la instancia de NetScaler 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: NetScaler 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 NetScaler 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 utilizar NetScaler 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 NetScaler CPX desde Quay

Puede descargar la imagen de NetScaler 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 NetScaler 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 NetScaler 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 NetScaler CPX desde el registro de contenedores Quay.

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

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

Importante:

Si ha descargado NetScaler CPX Express de CPX Express, asegúrese de leer y entender el Contrato de licencia de usuario final (EULA) disponible en:CPX Expressy de aceptar el EULA al implementar la instancia de NetScaler CPX.

Instale la instancia de NetScaler 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 NetScaler CPX.

El-Pparámetro es obligatorio. Indica a Docker que asigne los puertos expuestos en el contenedor por la imagen de NetScaler CPX Docker. Esto significa asignar los puertos 9080, 22, 9443 y 161/UDP a los puertos del host Docker que se seleccionan aleatoriamente del rango definido por el usuario. Este mapeo se hace para evitar conflictos. Si más tarde crea varios contenedores NetScaler 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 HTTPs
  • 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 NetScaler CPX en modo Host de implementación, debe proporcionar todos los privilegios del sistema a NetScaler CPX.

Para ejecutar el NetScaler CPX en modo puente con uno o varios núcleos, puede usar la opción --cap-add=NET_ADMIN en lugar del modo privilegiado. La opción --cap-add=NET_ADMIN le permite ejecutar el contenedor de NetScaler CPX con todos los privilegios de red. Con la opción --cap-add=NET_ADMIN, utilice la opción --sysctl kernel.shmmax=1073741824 --sysctl net.ipv6.conf.default.accept_dad=0 --sysctl kernel.core_pattern=/var/crash/core.%e.%p.%s del comando docker run para realizar los ajustes de control del sistema adicionales de forma manual. Estos ajustes adicionales de control del sistema no se realizan automáticamente en ningún modo sin privilegios.

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

Note

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

-e NS_NETMODE="HOST" es una variable de entorno específica de NetScaler CPX que le permite especificar que NetScaler CPX se inicie en modo host. Una vez que NetScaler CPX se inicia en modo host, configura 4 reglas iptables predeterminadas en una máquina host para el acceso de administración a NetScaler 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=

Note

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

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

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

Note

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 NetScaler CPX obligatoria, que se requiere para comprobar que ha leído y comprendido el Contrato de licencia de usuario final (EULA) disponible en:CPX Express.

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

Si ejecuta Docker en una red host, puede asignar interfaces de red dedicadas al contenedor NetScaler 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 NetScaler CPX hasta que desinstala el contenedor NetScaler CPX. Cuando se aprovisiona el contenedor NetScaler CPX, todas las interfaces de red asignadas se agregan al espacio de nombres de redes NetScaler.

Note

Si ejecuta NetScaler 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 NetScaler 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 NetScaler CPX que le permite controlar el rendimiento de rendimiento del contenedor NetScaler CPX. Cuando NetScaler 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 NetScaler CPX en tales casos. Debe proporcionar los siguientes valores a la variable de entorno CPX_CONFIG en formato JSON:

  • Si quiere que el contenedor NetScaler CPX genere CPU en casos inactivos, defina {"YIELD” : “Yes”}
  • Si quiere que el contenedor NetScaler 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 NetScaler 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 NetScaler 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 NetScaler CPX mediante el comando docker run

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

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

  • Disponibilidad de aplicaciones
    • Equilibrio de carga L4 y conmutación de contenido L7
    • Descarga de 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 NetScaler 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 NetScaler 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 NetScaler CPX. Para habilitarlo, debe establecer la variable de entorno NS_ENABLE_NEWNSLOG en 1 mientras abre la versión más ligera de NetScaler CPX.

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

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

Implementación de instancias de NetScaler CPX mediante Docker Compose

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

Importante

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

Para aprovisionar varias instancias de NetScaler 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 NetScaler CPX.
  • privileged: true proporciona todos los privilegios de root a la instancia de NetScaler CPX.
  • cap_add proporciona privilegios de red a la instancia de NetScaler CPX.
  • ** <host_directory_path>indica el directorio en el host de la ventana acoplable que quiere montar para la instancia de NetScaler CPX.
  • ** <number_processing_engine>es el número de motores de procesamiento que quiere que se inicie la instancia de NetScaler 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:
      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-->
Implementación de una instancia de NetScaler CPX en Docker