BLOG | NGINX

Creación de una imagen de Docker para implementar NGINX Management Suite sin Helm

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Fabrizio Fiorucci
Fabricio Fiorucci
Publicado el 27 de febrero de 2023

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 aplicações 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].

Requisitos previos

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:

  • Administrador de instancias 2.4.0+
  • Administrador de conectividad API 1.0.0+
  • Monitoreo de seguridad 1.0.0+

Para crear la imagen de Docker, necesitas:

  • Un host Linux (bare metal o VM)
  • Docker 20.10+
  • Un registro privado al que puedes enviar la imagen Docker de destino
  • Una suscripción ( o prueba gratuita de 30 días ) para NGINX Management Suite

Para ejecutar la imagen de Docker, necesitas:

  • Un clúster de Kubernetes en ejecución
  • kubectl con acceso al clúster de Kubernetes
  • Una suscripción ( o prueba gratuita de 30 días ) para el controlador de ingreso NGINX basado en NGINX Plus

Construyendo la imagen de Docker

Siga 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.

  1. Clonar el repositorio de GitHub:

    $ git clone https://github.com/nginxinc/NGINX-Demos Clonando en 'NGINX-Demos'... remoto: Enumeración de objetos: 215, listo. remoto: Contando objetos: 100% (215/215), hecho. remoto: Comprimiendo objetos: 100% (137/137), hecho. remoto: Total 215 (delta 108), reutilizados 171 (delta 64), paquete reutilizado 0 Objetos recibidos: 100% (215/215), 2,02 MiB | 1,04 MiB/s, listo. 
    Resolviendo deltas: 100% (108/108), listo.
  2. Cambiar al directorio de compilación:

    $ cd NGINX-Demos/nginx-nms-docker/
  3. 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 ==> Compilación de la imagen Docker de NGINX Management Suite Envío del contexto de compilación al demonio Docker 92,19 MB Paso 1/18: DESDE ubuntu:22.04 ---> a8780b506fa4 Paso 2/18 : ARG NIM_DEBFILE ---> Ejecutando en 0f2354280c34 Eliminando contenedor intermedio 0f2354280c34 [...] ---> 0588a050c852 Paso 18/18 : CMD /deployment/startNIM.sh ---> Ejecutando en d0cc5466a43d Eliminando contenedor intermedio d0cc5466a43d ---> 25117ec0410a Construido exitosamente 25117ec0410a Etiquetado exitosamente registry.ff.lan:31005/nginx-nms:2.5.1 El push hace referencia al repositorio [registry.ff.lan:31005/nginx-nms] 9c4918474e3a: Empujado 42543d044dbb: Empujado 1621b2ec0a5e: Se envió c6a464fc6a79: Empujado 75fa1d3c61bb: Empujado 3501fcf5dbd8: Empujado d4a221057e67: Empujado 9ad05eafed57: Empujado f4a670ac65b6: Se envió la versión 2.5.1: resumen: sha256:9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 tamaño: 2425

Ejecución de NGINX Management Suite en Kubernetes

Siga estas instrucciones para preparar el manifiesto de implementación e iniciar NGINX Management Suite en Kubernetes.

  1. 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.lic TulNRS1WZXJz...
  2. 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 ):

      especificación: ...
      plantilla: ...
      especificación:
      contenedores:
      - nombre: nginx-nim2
      imagen: 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.
      especificación: ...
      plantilla:
      ...
      especificación:
      contenedores:
      ...
      entorno:
      ...
      - nombre: NIM_USERNAME
      valor: admin
      - nombre: NIM_PASSWORD
      valor: nimadmin
      - nombre: LICENCIA NIM
      valor: "<ARCHIVO DE LICENCIA CODIFICADO EN BASE64>"
  3. Verifique y modifique los archivos en manifiestos/certificados para personalizar el certificado TLS y la clave utilizados para la descarga TLS configurando el FQDN que desea utilizar. De forma predeterminada, el script de inicio nimDockerStart.sh publica NGINX Management Suite en contenedor a través del controlador de ingreso NGINX.
  4. Opcionalmente, edite manifests/3.vs.yaml y personalice los nombres de host utilizados para acceder a NGINX Management Suite.

  5. 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 Generando una clave privada RSA .....................................+++++ .....................................+++++ escribiendo una nueva clave privada en 'nim2.f5.ff.lan.key' ----- secret/nim2.f5.ff.lan created configmap/clickhouse-conf created configmap/clickhouse-users created persistentvolumeclaim/pvc-clickhouse createdployment.apps/clickhouse created service/clickhouse createdployment.apps/nginx-nim2 created service/nginx-nim2 created service/nginx-nim2-grpc created persistentvolumeclaim/pvc-grafana-data created persistentvolumeclaim/pvc-grafana-log createdployment.apps/grafana created service/grafana created virtualserver.k8s.nginx.org/nim2 creado virtualserver.k8s.nginx.org/grafana creado ~/NGINX-NIM2-Docker
  6. Verifique que ahora se estén ejecutando tres pods:

    $ kubectl get pods -n nginx-nim2 NOMBRE LISTO ESTADO REINICIO EDAD clickhouse-759b65db8c-74pn5 1/1 En ejecución 0 63 s grafana-95fbbf5c-jczgk 1/1 En ejecución 0 63 s nginx-nim2-5f54664754-lrhmn 1/1 En ejecución 0 63 s

Acceso a NGINX Management Suite

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.

Detener NGINX Management Suite

Para detener y eliminar la instancia Docker de NGINX Management Suite, ejecute este comando:

$ ./scripts/nimDockerStart.sh espacio de nombres de parada "nginx-nim2" eliminado

Introducción

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.