F5 NGINX Management Suite es una familia de módulos para administrar el plano de datos NGINX desde un único panel. Al simplificar la gestión de las instancias NGINX Open Source y NGINX Plus, NGINX Management Suite simplifica sus procesos para escalar, proteger y monitorear aplicações y API.
Debe instalar el Agente NGINX en cada instancia NGINX que desee administrar desde NGINX Management Suite, para habilitar la comunicación con el plano de control y la administración de la configuración remota.
Para las instancias de NGINX que se ejecutan en hardware o en una máquina virtual (VM), proporcionamos instrucciones de instalación en nuestra documentación. En esta publicación mostramos cómo construir una imagen Docker para NGINX Plus y NGINX Agent, para ampliar el alcance de NGINX Management Suite a las instancias NGINX Plus implementadas en Kubernetes u otras infraestructuras de microservicios.
Hay tres opciones de compilación, según lo que desee incluir en la imagen de Docker resultante:
[ Editor : esta publicación se actualizó en abril de 2023 para aclarar las instrucciones y agregar el campo ACM_DEVPORTAL
en el Paso 1 de Ejecución de la imagen de Docker en Kubernetes ].
Proporcionamos un repositorio de GitHub de los recursos que necesita para crear una imagen Docker de NGINX Plus y NGINX Agent, con soporte para la versión 2.8.0 y posteriores del módulo Instance Manager de NGINX Management Suite.
Para crear la imagen de Docker, necesitas:
Para ejecutar la imagen de Docker, necesitas:
kubectl
con acceso al clúster de KubernetesSiga estas instrucciones para crear la imagen de Docker.
Clonar el repositorio de GitHub:
$ git clone https://github.com/nginxinc/NGINX-Demos Clonando en 'NGINX-Demos'... remoto: Enumeración de objetos: 126, listo. remoto: Contando objetos: 100% (126/126), hecho. remoto: Comprimiendo objetos: 100% (85/85), hecho. remoto: Total 126 (delta 61), reutilizados 102 (delta 37), paquete reutilizado 0 Objetos recibidos: 100% (126/126), 20,44 KiB | 1,02 MiB/s, listo.
Resolviendo deltas: 100% (61/61), listo.
Cambiar al directorio de compilación:
$ cd NGINX-Demos/nginx-agent-docker/
Ejecute docker
ps
para verificar que Docker se esté ejecutando y luego ejecute el script build.sh para incluir el software deseado en la imagen de Docker. Las opciones base son:
-C
– Nombre del archivo de certificado de licencia de NGINX Plus ( nginx-repo.crt
en los comandos de muestra a continuación)-K
– Nombre del archivo de clave de licencia de NGINX Plus ( nginx-repo.key
en los comandos de muestra a continuación)-t
– El registro y la imagen de destino en formato
<nombre_del_registro>/<nombre_de_imagen>:<etiqueta>
( register.ff.lan:31005/nginx-plus-with-agent:2.7.0
en los comandos de muestra a continuación)
-n
– URL base de su instancia de NGINX Management Suite ( https://nim.f5.ff.lan
en los comandos de muestra a continuación)Las opciones adicionales son:
-d
– Agregar compatibilidad con el plano de datos para el portal para desarrolladores al usar NGINX API Connectivity Manager-w
– Agregar NGINX App Protect WAFAquí están los comandos para las diferentes combinaciones de software:
NGINX Plus y NGINX Agente:
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 \ -n https://nim.f5.ff.lan
NGINX Plus, NGINX Agent y NGINX App Protect WAF (agregue la opción -w
):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \-t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -w \ -n https://nim.f5.ff.lan
Compatibilidad con NGINX Plus, NGINX Agent y portal para desarrolladores (agregue la opción -d
):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -d \ -n https://nim.f5.ff.lan
A continuación se muestra un ejemplo de seguimiento de la creación de una imagen básica. El mensaje de compilación
completa
al final indica que la compilación fue exitosa.
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -n https://nim.f5.ff.lan => La imagen de Docker de destino es nginx-plus-with-agent:2.7.0 [+] Compilando 415.1s (10/10) TERMINADO => [interno] cargar definición de compilación desde Dockerfile => transfiriendo dockerfile: 38B => [interno] cargar .dockerignore => transfiriendo contexto: 2B => [interno] cargar metadatos para docker.io/library/centos:7 => [auth] library/centos:pull token para registry-1.docker.io => EN CACHE [1/4] DESDE docker.io/library /centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 => [interno] cargar contexto de compilación => transfiriendo contexto: 69B => [2/4] EJECUTAR yum -y update && yum install -y wget ca-certificates epel-release curl && mkdir -p /deployment /etc/ssl/nginx && bash -c 'curl -k $NMS_URL/install/nginx-agent | sh' && echo "A 299.1s => [3/4] COPY ./container/start.sh /deployment/ => [4/4] RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key set -x && chmod +x /deployment/start.sh & 102.4s => exportando a imagen => exportando capas => escribiendo imagen sha256:9246de4af659596a290b078e6443a19b8988ca77f36ab90af3b67c03d27068ff => nombrando a registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 => Compilación completada para registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
Siga estas instrucciones para preparar el manifiesto de implementación e iniciar NGINX Plus con NGINX Agent en Kubernetes.
Usando su editor de texto preferido, abra manifests/1.nginx-with-agent.yaml y realice los siguientes cambios (los fragmentos de código muestran los valores predeterminados que puede o debe cambiar, resaltados en naranja):
En la sección spec.template.spec.containers
, reemplace el nombre de la imagen predeterminada ( your.registry.tld/nginx-with-nim2-agent:tag
) con el nombre de la imagen de Docker que especificó con la opción -t
en el Paso 3 de Creación de la imagen de Docker (en nuestro caso, registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 ):
especificación: ... plantilla: ... especificación: contenedores: - nombre: nginx-nim imagen: your.registry.tld/nginx-with-nim2-agent:tag
En la sección spec.template.spec.containers.env
, realice estas sustituciones en el campo de valor
para cada nombre
indicado:
NIM_HOST
– (Obligatorio) Reemplace el valor predeterminado ( nginx-nim2.nginx-nim2
) con el FQDN o la dirección IP de su instancia de NGINX Management Suite (en nuestro caso nim2.f5.ff.lan ).NIM_GRPC_PORT
– (Opcional) Reemplace el valor predeterminado (443
) con un número de puerto diferente para el tráfico gRPC.NIM_INSTANCEGROUP
– (Opcional) Reemplace el valor predeterminado ( lab
) con el grupo de instancias al que pertenece la instancia de NGINX Plus.NIM_TAGS
– (Opcional) Reemplace el valor predeterminado ( preprod,devops
) con una lista de etiquetas delimitadas por comas para la instancia NGINX Plus.especificación: ... plantilla: ... especificación: contenedores: ... entorno: - nombre: NIM_HOST ... valor: " nginx-nim2.nginx-nim2 " - nombre: Valor de NIM_GRPC_PORT: "443 " - nombre: Valor NIM_INSTANCEGROUP: " lab " - nombre: Valor de NIM_TAGS: " preprod,devops "
También en la sección spec.template.spec.containers.env
, descomente estos pares de campos de nombre
- valor
si se aplica la condición indicada:
NIM_WAF
y NIM_WAF_PRECOMPILED_POLICIES
: NGINX App Protect WAF está incluido en la imagen (incluyó la opción -w
en el Paso 3 de Creación de la imagen de Docker ), por lo que el valor es "verdadero"
.ACM_DEVPORTAL
: la compatibilidad con el portal para desarrolladores de App Connectivity Manager está incluida en la imagen (incluyó la opción -d
en el Paso 3 de Creación de la imagen de Docker ), por lo que el valor es "true"
.especificación: ... plantilla: ... especificación: contenedores: ... entorno: - nombre: NIM_HOST ... #- nombre: NAP_WAF # valor: "verdadero" #- nombre: NAP_WAF_PRECOMPILED_POLICIES # valor: "verdadero" ... #- nombre: ACM_DEVPORTAL # valor: "verdadero"
Ejecute el script nginxwithAgentStart.sh como se indica para aplicar el manifiesto e iniciar dos pods (según lo especificado por las réplicas:
2
instrucciones en la sección de especificaciones
del manifiesto), cada uno con NGINX Plus y NGINX Agent:
$ ./scripts/nginxWithAgentStart.sh inicio $ ./scripts/nginxWithAgentStart.sh fin
Verifique que ahora se estén ejecutando dos pods: cada pod ejecuta una instancia NGINX Plus y un agente NGINX para comunicarse con el plano de control de NGINX Management Suite.
$ kubectl get pods -n nim-test NOMBRE LISTO ESTADO REINICIO EDAD nginx-nim-7f77c8bdc9-hkkck 1/1 En ejecución 0 1m nginx-nim-7f77c8bdc9-p2s94 1/1 En ejecución 0 1m
Acceda a la GUI del Administrador de instancias de NGINX en NGINX Management Suite y verifique que dos instancias de NGINX Plus se estén ejecutando con el estado En línea . En este ejemplo, NGINX App Protect WAF no está habilitado.
Para probar las soluciones NGINX analizadas en esta publicación, comience hoy mismo una prueba gratuita de 30 días o contáctenos para analizar sus casos de uso :
Descargue NGINX Agent : es gratis y de código abierto.
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.