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 de Quay y luego implemente la instancia utilizando el comando docker run o la herramienta Docker compose.
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 NetScaler CPX, puede definir el número de motores de procesamiento que desea que inicie la instancia de NetScaler CPX. Por cada motor de procesamiento adicional que agregue, asegúrese de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si desea 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, consulte la Documentación de Docker.
-
El host de Docker tiene conectividad a Internet.
Nota: NetScaler CPX presenta 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, consulte Mitigar esta vulnerabilidad.
Descarga de la imagen de NetScaler CPX desde Quay
Puede descargar la imagen de NetScaler CPX del registro de contenedores de Quay mediante el comando docker pull e implementarla en su entorno. Utilice 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 desea 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
Utilice 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
Puede implementar la última imagen de NetScaler CPX desde el registro de contenedores de 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 utilizando la imagen de Docker de NetScaler CPX que cargó en el host. Con el comando docker run, instale la instancia de NetScaler CPX con la configuración predeterminada 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-->
Este ejemplo crea un contenedor llamado mycpx basado en la imagen de Docker de NetScaler CPX.
El parámetro -P es obligatorio. 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 posteriormente crea varios contenedores de NetScaler CPX en el mismo host de Docker. Las asignaciones de puertos son dinámicas y se configuran cada vez que se inicia o reinicia el contenedor. Los puertos se utilizan de la siguiente manera:
- 9080 se utiliza para HTTP
- 9443 se utiliza para HTTPS
- 22 utilizado para SSH
- 161/UDP se utiliza para SNMP.
Si desea asignaciones de puertos estáticas, utilice el parámetro -p para configurarlas manualmente.
La opción --privileged=true se utiliza para ejecutar el contenedor en modo privilegiado. Si está ejecutando NetScaler CPX en modo de implementación de host, debe proporcionar todos los privilegios del sistema a NetScaler CPX. Si desea ejecutar NetScaler CPX en modo puente con uno o varios núcleos, en lugar de esta opción, puede utilizar la opción --cap-add=NET_ADMIN. La opción --cap-add=NET_ADMIN le permite ejecutar el contenedor NetScaler CPX con privilegios de red completos.
La **--net=host es una opción de comando estándar de docker run que especifica que el contenedor se está ejecutando en la pila de red del host y tiene acceso a todos los dispositivos de red.
Nota
Ignore esta opción si está ejecutando NetScaler CPX en red de puente o ninguna.
La -e NS_NETMODE="HOST" es una variable de entorno específica de NetScaler CPX que le permite especificar que NetScaler CPX se inicia 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 desea especificar puertos diferentes, puede utilizar 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 está ejecutando NetScaler CPX en una red bridge o none.
La -e CPX_CORES es una variable de entorno opcional específica de NetScaler CPX. Puede usarla para mejorar el rendimiento de la instancia de NetScaler CPX definiendo el número de motores de procesamiento que desea que inicie el contenedor de NetScaler CPX.
Notas:
Por cada motor de procesamiento adicional que agregue, asegúrese de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si desea 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 -e EULA = yes es una variable de entorno obligatoria específica de NetScaler CPX, que se requiere para verificar que ha leído y comprendido el Contrato 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 está ejecutando Docker en una red de host, puede asignar interfaces de red dedicadas al contenedor de 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 serán retenidas por el contenedor de NetScaler CPX hasta que desinstale 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 está ejecutando NetScaler CPX en una red bridge, puede cambiar la red del contenedor, como configurar otra conexión de red al contenedor o eliminar una red existente. Luego, asegúrese 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 -e CPX_CONFIG es una variable de entorno específica de NetScaler CPX que le permite controlar el rendimiento de procesamiento 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 procesamiento. Puede usar la variable de entorno CPX_CONFIG para controlar el rendimiento de procesamiento del contenedor de NetScaler CPX en tales escenarios. Debe proporcionar los siguientes valores a la variable de entorno CPX_CONFIG en formato JSON:
- Si desea que el contenedor de NetScaler CPX ceda la CPU en escenarios de inactividad, defina
{"YIELD” : “Yes”} - Si desea que el contenedor de NetScaler CPX evite ceder la CPU en escenarios de inactividad para obtener un 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 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 se monta 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 ha adquirido 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, utilizando el parámetro -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>. En este caso, no es necesario que acepte 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_ADDRESSes la dirección IP del servidor de licencias. -
LS_PORTes 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 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 gestión
- Registro web
- AppFlow®
Para instanciar la versión más ligera de NetScaler CPX, establezca 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, debe 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
Puede 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 debe escribir un archivo compose. Este archivo especifica la imagen de NetScaler CPX, los puertos que desea abrir para la instancia de NetScaler CPX y los privilegios para su instancia de NetScaler CPX.
Importante
Asegúrese de tener instalada la herramienta Docker Compose en el host.
Para aprovisionar varias instancias de NetScaler CPX:
- Escriba un archivo compose, donde:
- <service-name> es el nombre del servicio que desea 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 desea montar para la instancia de NetScaler CPX.
- <number_processing_engine> es el número de motores de procesamiento que desea que inicie la instancia de NetScaler CPX. Por cada motor de procesamiento adicional, asegúrese de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si desea agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.
El archivo 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