Création d’une image Docker pour déployer NGINX Management Suite sans Helm

NGINX | 27 février 2023

Plus tôt cette année, nous avons lancé NGINX Management Suite en tant que nouveau plan de contrôle pour les solutions logicielles NGINX, vous permettant de configurer, faire évoluer, sécuriser et surveiller les applications utilisateur et les API REST sur le plan de données NGINX depuis une interface unique.

NGINX Management Suite repose sur une conception modulaire : son cœur est constitué du module Instance Manager, qui permet de suivre, de configurer et de superviser l’ensemble de votre parc d’instances NGINX Open Source et NGINX Plus. À l’heure où nous écrivons ces lignes, API Connectivity Manager est l’autre module disponible. Il permet de gérer et d’orchestrer NGINX Plus lorsqu’il est utilisé comme passerelle d’API.

NGINX Management Suite peut s’exécuter sur un serveur physique, sous forme de machine virtuelle Linux ou dans un conteneur. Pour le déployer sur Kubernetes, nous vous recommandons d’utiliser le chart Helm que nous fournissons. Toutefois, pour des besoins spécifiques, vous devrez peut-être créer votre propre image Docker et gérer son cycle de vie au moyen d’un pipeline CI/CD personnalisé qui ne repose pas nécessairement sur Helm.

[Éditeur – Cet article a été mis à jour en février 2023 afin d’automatiser entièrement le processus de création de l’image Docker.]

Prérequis

Nous mettons à votre disposition un dépôt GitHub contenant les ressources nécessaires pour créer une image Docker pour NGINX Management Suite, avec prise en charge des versions suivantes d’Instance Manager et d’API Connectivity Manager :

  • Instance Manager 2.4.0+
  • API Connectivity Manager 1.0.0+
  • Surveillance de la sécurité 1.0.0+

Pour créer l’image Docker, vous avez besoin des éléments suivants :

  • Un hôte Linux (machine physique ou virtuelle)
  • Docker 20.10+
  • Un registre privé vers lequel vous pouvez envoyer l’image Docker cible
  • Un abonnement (ou un essai gratuit de 30 jours) à NGINX Management Suite

Pour exécuter l’image Docker, vous avez besoin des éléments suivants :

  • Un cluster Kubernetes opérationnel
  • kubectl avec accès au cluster Kubernetes
  • Un abonnement (ou un essai gratuit de 30 jours) à NGINX Ingress Controller basé sur NGINX Plus

Création de l’image Docker

Suivez ces instructions pour créer l’image Docker.

Remarque : Nous avons tout mis en œuvre pour représenter fidèlement l’interface utilisateur de NGINX Management Suite au moment de la publication, mais celle-ci est susceptible d’évoluer. Utilisez ces instructions comme référence et adaptez-les si nécessaire à l’interface actuelle.

  1. Clonez le dépôt 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.
  1. Accédez au répertoire de compilation :
$ cd NGINX-Demos/nginx-nms-docker/
  1. Exécutez docker ps pour vérifier que Docker est en cours d’exécution, puis exécutez le script buildNIM.sh afin de créer l’image Docker. L’option ‑i active le mode de création automatisée. Les options ‑C et ‑K sont obligatoires et indiquent respectivement le certificat et la clé de NGINX Management Suite. Enfin, l’option ‑t indique l’emplacement et le nom du registre privé vers lequel l’image est envoyée.
$ ./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

Exécution de NGINX Management Suite sur Kubernetes

Suivez ces instructions pour préparer le manifeste de déploiement et démarrer NGINX Management Suite sur Kubernetes.

  1. Encodez en Base64 la licence NGINX Management Suite que vous avez téléchargée à l’étape 4 de la section précédente, puis copiez le résultat dans le presse-papiers :
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
  1. À l’aide de votre éditeur préféré, ouvrez le fichier manifests/1.nginx-nim.yaml et apportez les modifications suivantes :
    • Dans la section spec.template.spec.containers, remplacez le nom de l’image par défaut (your.registry.tld/nginx-nim2:tag) par le nom de l’image Docker que vous avez spécifié avec l’option ‑t à l’étape 3 de la section précédente (dans notre cas, registry.ff.lan:31005/nginx-nms:2.5.1) :
spec:  ...
  template:
	...
	spec:
  	containers:
      - name: nginx-nim2
	    image: your.registry.tld/nginx-nim2:tag
  • Dans la section spec.template.spec.containers.env, configurez les identifiants d’authentification en effectuant les substitutions suivantes dans le champ value pour chaque name indiqué :
spec:  ...
  template:
    ...
      spec:
        containers:
          ...
          env:
            ...
            - name: NIM_USERNAME
              value: admin
            - name: NIM_PASSWORD
              value: nimadmin
            - name: NIM_LICENSE
              value: "<BASE64_ENCODED_LICENSE_FILE>"
  • NIM_USERNAME – (Facultatif) Remplacez la valeur par défaut admin par le nom d’un compte administrateur.
  • NIM_PASSWORD – (Obligatoire) Remplacez la valeur par défaut nimadmin par un mot de passe robuste.
  • NIM_LICENSE – (Obligatoire) Remplacez la valeur par défaut <BASE64_ENCODED_LICENSE_FILE> par la licence encodée en base64 que vous avez générée à l’étape 1 ci-dessus.
  1. Vérifiez et modifiez les fichiers sous manifests/certs afin de personnaliser le certificat et la clé TLS utilisés pour la terminaison TLS en définissant le nom de domaine complet (FQDN) que vous souhaitez utiliser. Par défaut, le script de démarrage nimDockerStart.sh publie NGINX Management Suite conteneurisé via NGINX Ingress Controller.
  2. Si nécessaire, modifiez manifests/3.vs.yaml et personnalisez les noms d’hôte utilisés pour accéder à NGINX Management Suite.
  3. Exécutez nimDockerStart.sh pour démarrer NGINX Management Suite dans votre cluster Kubernetes. Comme indiqué dans la trace, il s’exécute sous la forme du pod nginx-nim2. Le script initialise également des pods pour ClickHouse en tant que base de données principale et pour Grafana afin de visualiser les données analytiques. Pour plus d’informations, consultez le fichier README du dépôt 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
  1. Vérifiez que trois pods sont désormais en cours d’exécution :
$ 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

Accéder à NGINX Management Suite

Pour accéder à NGINX Management Suite, ouvrez dans un navigateur l’adresse https://nim2.f5.ff.lan (ou l’autre nom d’hôte que vous avez défini à l’étape 4 de la section précédente). Connectez-vous à l’aide des identifiants que vous avez définis à l’étape 2 de la section précédente.

Arrêt de NGINX Management Suite

Pour arrêter et supprimer l’instance Docker de NGINX Management Suite, exécutez la commande suivante :

$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted

Commencer

Pour essayer les solutions NGINX présentées dans cet article, commencez dès aujourd’hui un essai gratuit de 30 jours ou contactez-nous pour discuter de vos cas d’utilisation:


Partager

À propos de l’auteur

Fabrizio Fiorucci
Fabrizio FiorucciArchitecte de solutions NGINX | F5 (EMEA)

Autres articles de Fabrizio Fiorucci

Articles de blog associés

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA
NGINX | 13/10/2025

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA

Découvrez les principaux enseignements tirés des réponses à l’enquête annuelle F5 NGINX sur les dernières tendances en matière de technologies cloud natives, de sécurité, d’ingénierie de plateforme et d’IA.

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?
NGINX | 03/11/2023

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?

Lorsque de nouvelles CVE sont signalées, il est facile de ne plus savoir si elles concernent un outil de contrôleur Ingress NGINX particulier, car il existe plusieurs projets. Cet article présente les CVE et explique comment distinguer les différents projets de contrôleurs Ingress afin de dissiper toute confusion.

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX
NGINX | 11/03/2020

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX

Votre API répond-elle aux requêtes en moins de 30 ms ? Si ce n’est pas le cas, il ne s’agit pas d’une API en temps réel offrant la faible latence exigée par la grande majorité des organisations. Mesurez la latence de votre API avec l’outil rtapi de NGINX et découvrez comment NGINX peut l’aider à offrir une réactivité en temps réel.

Un testeur d’expressions régulières pour NGINX et NGINX Plus
NGINX | 11/06/2019

Un testeur d’expressions régulières pour NGINX et NGINX Plus

Le testeur d’expressions régulières (regex) pour NGINX et NGINX Plus vous évite de tâtonner en vous indiquant si une expression régulière utilisée dans un bloc location ou map correspond aux valeurs comme prévu. Il génère la configuration appropriée et affiche les valeurs des groupes de capture.

Caches partagés avec les clusters de cache NGINX Plus, partie 1
NGINX | 24/01/2017

Caches partagés avec les clusters de cache NGINX Plus, partie 1

Optimisez la capacité de votre cache web en le répartissant entre plusieurs serveurs de cache web NGINX ou NGINX Plus. Découvrez comment procéder dans cet article.

Introduction aux microservices
NGINX | 19/05/2015

Introduction aux microservices

Les microservices suscitent actuellement beaucoup d’intérêt. Cet article de blog est le premier d’une série de sept consacrée à la conception, au développement et au déploiement de microservices.