A principios de este año , presentamos NGINX Management Suite como nuestro nuevo plano de control para las soluciones de software NGINX, lo que le permite configurar, escalar, proteger y monitorear las aplicaciones de usuario y las API REST en el plano de datos NGINX desde un solo panel.
NGINX Management Suite tiene un diseño modular: en su núcleo se encuentra el módulo Instance Manager , que proporciona seguimiento, configuración y visibilidad para toda su flota de instancias NGINX Open Source y NGINX Plus. Al momento de escribir este artículo, API Connectivity Manager es el otro módulo disponible, utilizado para administrar y orquestar el funcionamiento de NGINX Plus como puerta de enlace de API.
NGINX Management Suite puede ejecutarse en hardware real, como una máquina virtual Linux o en contenedores. La forma recomendada de implementarlo en Kubernetes es usando el diagrama de Helm que proporcionamos, pero para fines específicos es posible que necesite crear su propia imagen de Docker y administrar su ciclo de vida a través de una canalización CI/CD personalizada que no necesariamente dependa de Helm.
[ Editor : esta publicación se actualizó en febrero de 2023 para automatizar por completo el proceso de creación de la imagen de Docker].
Proporcionamos un repositorio de GitHub de los recursos que necesita para crear una imagen de Docker para NGINX Management Suite, con soporte para estas versiones de Instance Manager y API Connectivity Manager:
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.
Nota: Hemos hecho todo lo posible para representar con precisión la interfaz de usuario de NGINX Management Suite en el momento de la publicación, pero la interfaz de usuario está sujeta a cambios. Utilice estas instrucciones como referencia y adáptelas a la interfaz de usuario actual según sea necesario.
Clonar el repositorio de GitHub:
$ git clone https://github.com/nginxinc/NGINX-DemosCloning into 'NGINX-Demos'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (137/137), done.
remote: Total 215 (delta 108), reused 171 (delta 64), pack-reused 0
Receiving objects: 100% (215/215), 2.02 MiB | 1.04 MiB/s, done.
Resolving deltas: 100% (108/108), done.
Cambiar al directorio de compilación:
$ cd NGINX-Demos/nginx-nms-docker/
Ejecute docker
ps
para verificar que Docker se esté ejecutando y luego ejecute el script buildNIM.sh para compilar la imagen de Docker. La opción -i
establece el modo de compilación automatizado, -C
y -K
son opciones obligatorias que nombran el certificado y la clave de NGINX Management Suite respectivamente, y la opción -t
especifica la ubicación y el nombre del registro privado al que se envía la imagen.
$ ./scripts/buildNIM.sh -i -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-nms:2.5.1
==> Building NGINX Management Suite docker image
Sending build context to Docker daemon 92.19MB
Step 1/18 : FROM ubuntu:22.04
---> a8780b506fa4
Step 2/18 : ARG NIM_DEBFILE
---> Running in 0f2354280c34
Removing intermediate container 0f2354280c34
[...]
---> 0588a050c852
Step 18/18 : CMD /deployment/startNIM.sh
---> Running in d0cc5466a43d
Removing intermediate container d0cc5466a43d
---> 25117ec0410a
Successfully built 25117ec0410a
Successfully tagged registry.ff.lan:31005/nginx-nms:2.5.1
The push refers to repository [registry.ff.lan:31005/nginx-nms]
9c4918474e3a: Pushed
42543d044dbb: Pushed
1621b2ec0a5e: Pushed
c6a464fc6a79: Pushed
75fa1d3c61bb: Pushed
3501fcf5dbd8: Pushed
d4a221057e67: Pushed
9ad05eafed57: Pushed
f4a670ac65b6: Pushed
2.5.1: digest: sha256:9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 size: 2425
Siga estas instrucciones para preparar el manifiesto de implementación e iniciar NGINX Management Suite en Kubernetes.
Codifique en Base64 la licencia de NGINX Management Suite que descargó en el paso 4 de la sección anterior y copie el resultado al portapapeles:
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
Usando su editor favorito, abra manifests/1.nginx-nim.yaml y realice los siguientes cambios:
En la sección spec.template.spec.containers
, reemplace el nombre de la imagen predeterminada ( your.registry.tld/nginx-nim2:tag
) con el nombre de la imagen de Docker que especificó con la opción -t
en el Paso 3 de la sección anterior (en nuestro caso, registry.ff.lan:31005/nginx-nms:2.5.1 ):
spec: ...
template:
...
spec:
containers:
- name: nginx-nim2
image: your.registry.tld/nginx-nim2:tag
En la sección spec.template.spec.containers.env
, configure las credenciales de autenticación realizando estas sustituciones en el campo de valor
para cada nombre
indicado:
NIM_USERNAME
– (Opcional) Reemplace el administrador
predeterminado con un nombre de cuenta de administrador.NIM_PASSWORD
– (Obligatorio) Reemplace el nimadmin
predeterminado con una contraseña segura.LICENCIA NIM
– (Obligatorio) Reemplazar el valor predeterminado <ARCHIVO DE LICENCIA CODIFICADO EN BASE64>
con la licencia codificada en base64 que generó en el Paso 1 anterior.spec: ...
template:
...
spec:
containers:
...
env:
...
- name: NIM_USERNAME
value: admin
- name: NIM_PASSWORD
value: nimadmin
- name: NIM_LICENSE
value: "<BASE64_ENCODED_LICENSE_FILE>"
Opcionalmente, edite manifests/3.vs.yaml y personalice los nombres de host utilizados para acceder a NGINX Management Suite.
Ejecute nimDockerStart.sh para iniciar NGINX Management Suite en su clúster de Kubernetes. Como se indica en el seguimiento, se ejecuta como el pod nginx-nim2 . El script también inicializa pods para ClickHouse como base de datos de backend y Grafana para la visualización de análisis. Para obtener más información, consulte el archivo README en el repositorio de GitHub.
$ ./scripts/nimDockerStart.sh start namespace/nginx-nim2 created
~/NGINX-NIM2-Docker/manifests/certs ~/NGINX-NIM2-Docker
Generating a RSA private key
.....................................+++++
.....................................+++++
writing new private key to 'nim2.f5.ff.lan.key'
-----
secret/nim2.f5.ff.lan created
configmap/clickhouse-conf created
configmap/clickhouse-users created
persistentvolumeclaim/pvc-clickhouse created
deployment.apps/clickhouse created
service/clickhouse created
deployment.apps/nginx-nim2 created
service/nginx-nim2 created
service/nginx-nim2-grpc created
persistentvolumeclaim/pvc-grafana-data created
persistentvolumeclaim/pvc-grafana-log created
deployment.apps/grafana created
service/grafana created
virtualserver.k8s.nginx.org/nim2 created
virtualserver.k8s.nginx.org/grafana created
~/NGINX-NIM2-Docker
Verifique que ahora se estén ejecutando tres pods:
$ kubectl get pods -n nginx-nim2 NAME READY STATUS RESTARTS AGE
clickhouse-759b65db8c-74pn5 1/1 Running 0 63s
grafana-95fbbf5c-jczgk 1/1 Running 0 63s
nginx-nim2-5f54664754-lrhmn 1/1 Running 0 63s
Para acceder a NGINX Management Suite, navegue en un navegador a https://nim2.f5.ff.lan (o el nombre de host alternativo que configuró en el Paso 4 de la sección anterior). Inicie sesión utilizando las credenciales que configuró en el Paso 2 de la sección anterior.
Para detener y eliminar la instancia Docker de NGINX Management Suite, ejecute este comando:
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted
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:
"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.