F5 NGINX Management Suite es una familia de módulos que permite gestionar el plano de datos de NGINX desde una única interfaz. Al simplificar la gestión de las instancias de NGINX Open Source y NGINX Plus, NGINX Management Suite facilita los procesos de escalado, protección y supervisión de aplicaciones y API.
Debe instalar NGINX Agent en cada instancia de NGINX que quiera gestionar desde NGINX Management Suite para permitir la comunicación con el plano de control y la gestión remota de la configuración.
Para las instancias de NGINX que se ejecutan en servidores físicos o en una máquina virtual (VM), proporcionamos instrucciones de instalación en nuestra documentación. En este artículo mostramos cómo crear una imagen de Docker para NGINX Plus y NGINX Agent, con el fin de ampliar el alcance de NGINX Management Suite a las instancias de NGINX Plus implementadas en Kubernetes u otras infraestructuras de microservicios.
Hay tres opciones de compilación, en función de lo que quiera incluir en la imagen de Docker resultante:
- NGINX Plus y NGINX Agent únicamente
- NGINX Plus, NGINX Agent y NGINX App Protect WAF
- NGINX Plus, NGINX Agent y compatibilidad con el portal para desarrolladores de NGINX Management Suite API Connectivity Manager (para instancias de NGINX Plus que funcionan como puerta de enlace de API)
[Editor : Esta entrada se actualizó en abril de 2023 para aclarar las instrucciones y añadir el campo ACM_DEVPORTAL en el paso 1 de Ejecución de la imagen de Docker en Kubernetes.]
Requisitos previos
Proporcionamos un repositorio de GitHub con los recursos necesarios para crear una imagen de Docker de NGINX Plus y NGINX Agent, compatible con la versión 2.8.0 y posteriores del módulo Instance Manager de NGINX Management Suite.
Para crear la imagen de Docker, necesita:
- Un host Linux (servidor físico o máquina virtual)
- Docker 20.10+
- Un registro privado al que pueda enviar la imagen de Docker de destino
- Una instancia de NGINX Management Suite en ejecución con Instance Manager y API Connectivity Manager si desea aprovechar la compatibilidad con el portal para desarrolladores
- Una suscripción (o una prueba gratuita de 30 días) a NGINX Plus y, opcionalmente, a NGINX App Protect
Para ejecutar la imagen de Docker, necesitas:
- Un clúster de Kubernetes en ejecución
kubectlcon acceso al clúster de Kubernetes
Creación de la imagen de Docker
Sigue estas instrucciones para crear la imagen de Docker.
- Clona el repositorio de GitHub:
$ git clone https://github.com/nginxinc/NGINX-Demos Cloning into 'NGINX-Demos'...
remote: Enumerating objects: 126, done.
remote: Counting objects: 100% (126/126), done.
remote: Compressing objects: 100% (85/85), done.
remote: Total 126 (delta 61), reused 102 (delta 37), pack-reused 0
Receiving objects: 100% (126/126), 20.44 KiB | 1.02 MiB/s, done.
Resolving deltas: 100% (61/61), done.- Cambia al directorio de compilación:
$ cd NGINX-Demos/nginx-agent-docker/- Ejecute
dockerpspara comprobar que Docker se está ejecutando y, a continuación, ejecute el script build.sh para incluir el software deseado en la imagen de Docker. Las opciones básicas son: Las opciones adicionales son: Estos son los comandos para las distintas combinaciones de software: A continuación se muestra un ejemplo del registro de compilación de una imagen básica. El mensajeBuildcompleteque aparece al final indica que la compilación se ha realizado correctamente.
$ ./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 => Target docker image is nginx-plus-with-agent:2.7.0
[+] Building 415.1s (10/10) FINISHED
=> [internal] load build definition from Dockerfile
=> transferring dockerfile: 38B
=> [internal] load .dockerignore
=> transferring context: 2B
=> [internal] load metadata for docker.io/library/centos:7
=> [auth] library/centos:pull token for registry-1.docker.io
=> CACHED [1/4] FROM docker.io/library /centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
=> [internal] load build context
=> transferring context: 69B
=> [2/4] RUN 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
=> exporting to image
=> exporting layers
=> writing image sha256:9246de4af659596a290b078e6443a19b8988ca77f36ab90af3b67c03d27068ff
=> naming to registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
=> Build complete for registry.ff.lan:31005/nginx-plus-with-agent:2.7.0- Ejecución de la imagen de Docker en Kubernetes Siga estas instrucciones para preparar el manifiesto de Deployment e iniciar NGINX Plus con NGINX Agent en Kubernetes. Primeros pasos Para probar las soluciones de NGINX descritas en este artículo, inicie hoy mismo una prueba gratuita de 30 días o póngase en contacto con nosotros para hablar sobre sus casos de uso: Descargue NGINX Agent; es gratuito y de código abierto.
‑C– Nombre del archivo de certificado de licencia de NGINX Plus (nginx-repo.crten los comandos de ejemplo que aparecen a continuación)‑K– Nombre del archivo de clave de licencia de NGINX Plus (nginx-repo.keyen los comandos de ejemplo que aparecen a continuación)‑t– El registro y la imagen de destino con el formato<registry_name>/<image_name>:<tag>(registry.ff.lan:31005/nginx-plus-with-agent:2.7.0en los comandos de ejemplo que aparecen a continuación)‑n– URL base de su instancia de NGINX Management Suite (https://nim.f5.ff.lanen los comandos de ejemplo que aparecen a continuación)‑d– Añade compatibilidad con el plano de datos para el portal para desarrolladores al utilizar NGINX API Connectivity Manager‑w– Añadir NGINX App Protect WAF- NGINX Plus y NGINX Agent:
$ ./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 (añada 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 el portal para desarrolladores (añada 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- Con 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, sustituya el nombre de imagen predeterminado (your.registry.tld/nginx-with-nim2-agent:tag) por el nombre de la imagen de Docker que especificó con la opción‑ten 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):
- En la sección
spec:
...
template:
...
spec:
containers:
- name: nginx-nim
image: your.registry.tld/nginx-with-nim2-agent:tag- En la sección
spec.template.spec.containers.env, realice estas sustituciones en el campovaluepara cadanameindicado:
spec:
...
template:
...
spec:
containers:
...
env:
- name: NIM_HOST
...
value: "nginx-nim2.nginx-nim2"
- name: NIM_GRPC_PORT
value: "443"
- name: NIM_INSTANCEGROUP
value: "lab"
- name: NIM_TAGS
value: "preprod,devops"NIM_HOST– (Obligatorio) Sustituya el valor predeterminado (nginx-nim2.nginx-nim2) por 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) Sustituya el valor predeterminado (443) por un número de puerto diferente para el tráfico gRPC.NIM_INSTANCEGROUP– (Opcional) Sustituya el valor predeterminado (lab) por el grupo de instancias al que pertenece la instancia de NGINX Plus.NIM_TAGS– (Opcional) Sustituya el valor predeterminado (preprod,devops) por una lista de etiquetas separadas por comas para la instancia de NGINX Plus.
- También en la sección
spec.template.spec.containers.env, quite los comentarios de estos pares de camposname‑valuesi se cumple la condición indicada:
spec:
...
template:
...
spec:
containers:
...
env:
- name: NIM_HOST
...
#- name: NAP_WAF # value: "true" #- name: NAP_WAF_PRECOMPILED_POLICIES # value: "true"
...
#- name: ACM_DEVPORTAL # value: "true"NIM_WAFyNIM_WAF_PRECOMPILED_POLICIES– NGINX App Protect WAF está incluido en la imagen (incluyó la opción-wen el paso 3 de Creación de la imagen de Docker), por lo que el valor es"true".ACM_DEVPORTAL– La imagen incluye compatibilidad con el portal para desarrolladores de App Connectivity Manager (se incluyó la opción-den el paso 3 de Creación de la imagen de Docker), por lo que el valor es"true".
- Ejecute el script nginxwithAgentStart.sh como se indica para aplicar el manifiesto e iniciar dos pods (tal como especifica la instrucción
replicas:2en la secciónspecdel manifiesto), cada uno con NGINX Plus y NGINX Agent:
$ ./scripts/nginxWithAgentStart.sh start$ ./scripts/nginxWithAgentStart.sh stop- Compruebe que ahora se estén ejecutando dos pods: cada pod ejecuta una instancia de NGINX Plus y un NGINX Agent para comunicarse con el plano de control de NGINX Management Suite.
$ kubectl get pods -n nim-test NAME READY STATUS RESTARTS AGE
nginx-nim-7f77c8bdc9-hkkck 1/1 Running 0 1m
nginx-nim-7f77c8bdc9-p2s94 1/1 Running 0 1m- Acceda a la interfaz gráfica de NGINX Instance Manager en NGINX Management Suite y compruebe que haya dos instancias de NGINX Plus en ejecución con el estado En línea. En este ejemplo, NGINX App Protect WAF no está habilitado.

- NGINX Management Suite
- NGINX Plus (incluye NGINX App Protect WAF)
Sobre el autor

Artículos relacionados del blog
Únete a F5 NGINX en AppWorld 2024
Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.
Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.
Exposición de APIs en Kubernetes
La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».
NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.
Presentamos NGINX Plus R22
NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.
Presentamos NGINX Plus R17
NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.