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, descarga la imagen de NetScaler CPX del registro de contenedores de Quay y, a continuación, implementa la instancia mediante el comando docker run
o la herramienta Docker Compose.
Requisitos previos
Asegúrate de que:
- El sistema host de Docker tenga al menos:
- 1 CPU
- 2 GB de RAM
Nota:`
Para un mejor rendimiento de NetScaler CPX, puedes definir el número de motores de procesamiento que quieres que inicie la instancia de NetScaler CPX. Por cada motor de procesamiento adicional que agregues, asegúrate de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si quieres agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.
-
El sistema host de Docker ejecuta Linux Ubuntu versión 14.04 o posterior.
-
Docker versión 1.12 está instalado en el sistema host. Para obtener información sobre la instalación de Docker en Linux, consulta la documentación de Docker.
-
El host de Docker tiene conectividad a Internet.
Nota: NetScaler CPX tiene problemas al ejecutarse en Ubuntu versión 16.04.5, versión de kernel 4.4.0-131-generic. Por lo tanto, no se recomienda ejecutar NetScaler CPX en Ubuntu versión 16.04.5, versión de kernel 4.4.0-131-generic.
Nota: Las siguientes versiones de kubelet y kube-proxy tienen algunas vulnerabilidades de seguridad y no se recomienda usar 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, consulta Mitigar esta vulnerabilidad.
Descarga de la imagen de NetScaler CPX desde Quay
Puedes descargar la imagen de NetScaler CPX del registro de contenedores de Quay mediante el comando docker pull
e implementarla en tu entorno. Usa 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 quieres descargar la versión 13.0-64.35, usa el siguiente comando:
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-64.35
Usa el siguiente comando para verificar si la imagen de NetScaler CPX está instalada en las 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
Puedes implementar la imagen más reciente de NetScaler CPX desde el registro de contenedores de Quay.
docker run
Implementación de la instancia de NetScaler CPX mediante el comando En el host, puedes instalar una instancia de NetScaler CPX en el contenedor de Docker mediante la imagen de Docker de NetScaler CPX que cargaste en el host. Mediante el comando docker run
, instala la instancia de NetScaler CPX con la configuración predeterminada de NetScaler CPX.
Instala 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-->
Este ejemplo crea un contenedor llamado mycpx
basado en la imagen de Docker de NetScaler CPX.
El parámetro -P
es obligatorio. Le indica a Docker que asigne los puertos expuestos en el contenedor por la imagen de Docker de NetScaler CPX. Esto significa asignar los puertos 9080, 22, 9443 y 161/UDP a los puertos del host de Docker que se seleccionan aleatoriamente del rango definido por el usuario. Esta asignación se realiza para evitar conflictos si más tarde creas varios contenedores de NetScaler CPX en el mismo host de Docker. Las asignaciones de puertos son dinámicas y se establecen cada vez que se inicia o reinicia el contenedor. Los puertos se usan de la siguiente manera:
- 9080 se usa para HTTP
- 9443 se usa para HTTPS
- 22 se usa para SSH
- 161/UDP se usa para SNMP.
Si quieres asignaciones de puertos estáticas, usa el parámetro -p para configurarlas manualmente.
La opción --privileged=true
se usa para ejecutar el contenedor en modo privilegiado. Si ejecutas NetScaler CPX en modo de implementación de host, debes proporcionar todos los privilegios del sistema a NetScaler CPX. Si quieres ejecutar NetScaler CPX en modo puente con uno o varios núcleos, en lugar de esta opción, puedes usar la opción --cap-add=NET_ADMIN
. La opción --cap-add=NET_ADMIN
te permite ejecutar el contenedor de NetScaler CPX con privilegios de red completos.
La opción **--net=host
es una opción de comando estándar de docker run
que especifica que el contenedor se ejecuta en la pila de red del host y tiene acceso a todos los dispositivos de red.
Nota
Ignora esta opción si ejecutas NetScaler CPX en red puente o ninguna.
La variable de entorno específica de NetScaler CPX -e NS_NETMODE="HOST"
te permite especificar que NetScaler CPX se inicie en modo host. Una vez que NetScaler CPX se inicia en modo host, configura 4 reglas de iptables predeterminadas en una máquina host para el acceso de administración a NetScaler CPX. Usa los siguientes puertos:
- 9995 para HTTP
- 9996 para HTTPS
- 9997 para SSH
- 9998 para SNMP
Si quieres especificar puertos diferentes, puedes usar las siguientes variables de entorno:
- -e NS_HTTP_PORT=
- -e NS_HTTPS_PORT=
- -e NS_SSH_PORT=
- -e NS_SNMP_PORT=
Nota
Ignora esta variable de entorno si ejecutas NetScaler CPX en red puente o ninguna.
La variable de entorno específica de NetScaler CPX -e CPX_CORES
es opcional. Puedes usarla para mejorar el rendimiento de la instancia de NetScaler CPX definiendo el número de motores de procesamiento que quieres que inicie el contenedor de NetScaler CPX.
Notas:`
Por cada motor de procesamiento adicional que agregues, asegúrate de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si quieres agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.
NetScaler CPX puede admitir de 1 a 16 núcleos.
La variable de entorno específica de NetScaler CPX -e EULA = yes
es obligatoria, ya que se requiere para verificar que has leído y comprendido el Acuerdo de licencia de usuario final (EULA) disponible en: Los componentes del sistema de licencias de Citrix.
El parámetro -e PLATFORM=CP1000
especifica el tipo de licencia de NetScaler CPX.
Si ejecutas Docker en una red host, puedes asignar interfaces de red dedicadas al contenedor de NetScaler CPX mediante la variable de entorno -e CPX_NW_DEV
. Debes definir las interfaces de red separadas por un espacio en blanco. Las interfaces de red que definas son retenidas por el contenedor de NetScaler CPX hasta que desinstales el contenedor de NetScaler CPX. Cuando se aprovisiona el contenedor de NetScaler CPX, todas las interfaces de red asignadas se agregan al espacio de nombres de red de NetScaler.
Nota
Si ejecutas NetScaler CPX en red puente, puedes cambiar la red del contenedor, como configurar otra conexión de red al contenedor o quitar una red existente. Luego, asegúrate de reiniciar el contenedor de 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-->
La variable de entorno específica de NetScaler CPX -e CPX_CONFIG
te permite controlar el rendimiento de rendimiento del contenedor de NetScaler CPX. Cuando NetScaler CPX no recibe tráfico entrante para procesar, cede la CPU durante este tiempo de inactividad, lo que resulta en un bajo rendimiento de rendimiento. Puedes usar la variable de entorno CPX_CONFIG
para controlar el rendimiento de rendimiento del contenedor de NetScaler CPX en tales escenarios. Debes proporcionar los siguientes valores a la variable de entorno CPX_CONFIG
en formato JSON:
- Si quieres que el contenedor de NetScaler CPX ceda la CPU en escenarios de inactividad, define
{"YIELD” : “Yes”}
. - Si quieres que el contenedor de NetScaler CPX evite ceder la CPU en escenarios de inactividad para que puedas obtener un alto rendimiento de rendimiento, define
{“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 parámetro -v
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 montas el directorio /cpx
. El directorio /cpx
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 compraste una licencia o tienes una licencia de evaluación, puedes cargar la licencia en un servidor de licencias y especificar la ubicación del servidor de licencias con el comando docker run
, mediante el parámetro -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>
. En este caso, no necesitas 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.
Puedes ver las imágenes que se ejecutan en tu sistema y los puertos asignados a los puertos estándar mediante el comando: docker ps
docker run
Implementación de una versión más ligera de NetScaler CPX mediante el comando 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 servicios.
La versión más ligera de NetScaler CPX admite las siguientes características:
- Disponibilidad de la aplicación
- Equilibrio de carga L4 y conmutación de contenido L7
- Descarga SSL
- Traducción de protocolo IPv6
- Seguridad de la aplicación
- Reescritura y respondedor L7
- Fácil administración
- Registro web
- AppFlow
Para instanciar la versión más ligera de NetScaler CPX, establece la variable de entorno NS_CPX_LITE
al ejecutar 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-->
El siguiente ejemplo 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á deshabilitado en la versión más ligera de NetScaler CPX. Para habilitarlo, debes establecer la variable de entorno NS_ENABLE_NEWNSLOG
en 1 al iniciar 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 único núcleo (CPX_CORES=1).
Implementación de instancias de NetScaler CPX mediante Docker Compose
Puedes usar la herramienta Compose de Docker para aprovisionar una única instancia de NetScaler CPX o varias instancias de NetScaler CPX. Para aprovisionar instancias de NetScaler CPX mediante Docker Compose, primero debes escribir un archivo de Compose. Este archivo especifica la imagen de NetScaler CPX, los puertos que quieres abrir para la instancia de NetScaler CPX y los privilegios para tu instancia de NetScaler CPX.
Importante
Asegúrate de haber instalado la herramienta Docker Compose en el host.
Para aprovisionar varias instancias de NetScaler CPX:
- Escribe un archivo de Compose, donde:
- <service-name> es el nombre del servicio que quieres aprovisionar.
- image:<repository>:<tag> denota 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> denota el directorio en el host de Docker que quieres montar para la instancia de NetScaler CPX.
- <number_processing_engine> es el número de motores de procesamiento que quieres que inicie la instancia de NetScaler CPX. Por cada motor de procesamiento adicional, asegúrate de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si quieres agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.
El archivo de Compose generalmente sigue un formato similar a:
<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-->
En este artículo
- Requisitos previos
- Descarga de la imagen de NetScaler CPX desde Quay
- Implementación de la instancia de NetScaler CPX mediante el comando docker run
- Implementación de una versión más ligera de NetScaler CPX mediante el comando docker run
- Implementación de instancias de NetScaler CPX mediante Docker Compose