Plus tôt cette année, nous avons présenté NGINX Management Suite comme notre nouveau plan de contrôle pour les solutions logicielles NGINX, vous permettant de configurer, de faire évoluer, de sécuriser et de surveiller les applications utilisateur et les API REST sur le plan de données NGINX à partir d'un seul panneau de verre.
NGINX Management Suite a une conception modulaire : à la base se trouve le module Instance Manager , qui fournit le suivi, la configuration et la visibilité de l'ensemble de votre flotte d'instances NGINX Open Source et NGINX Plus. Au moment de la rédaction de cet article, API Connectivity Manager est l’autre module disponible, utilisé pour gérer et orchestrer NGINX Plus exécuté en tant que passerelle API.
NGINX Management Suite peut fonctionner sur du bare metal, en tant que machine virtuelle Linux ou conteneurisée. La méthode recommandée pour le déployer sur Kubernetes consiste à utiliser le graphique Helm que nous fournissons, mais à des fins spécifiques, vous devrez peut-être créer votre propre image Docker et gérer son cycle de vie via un pipeline CI/CD personnalisé qui ne repose pas nécessairement sur Helm.
[ Éditeur – Cet article a été mis à jour en février 2023 pour automatiser entièrement le processus de création de l’image Docker.]
Nous mettons à votre disposition un référentiel GitHub contenant les ressources nécessaires pour créer une image Docker de NGINX Management Suite, compatible avec ces versions d'Instance Manager et d'API Connectivity Manager :
Pour créer l’image Docker, vous avez besoin de :
Pour exécuter l’image Docker, vous avez besoin de :
kubectl
avec accès au cluster KubernetesSuivez ces instructions pour créer l’image Docker.
Note: Nous avons fait tous les efforts possibles pour représenter avec précision l'interface utilisateur de NGINX Management Suite au moment de la publication, mais l'interface utilisateur est susceptible d'être modifiée. Utilisez ces instructions comme référence et adaptez-les à l’interface utilisateur actuelle si nécessaire.
Cloner 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.
Accédez au répertoire de construction :
$ cd NGINX-Demos/nginx-nms-docker/
Exécutez docker
ps
pour vérifier que Docker est en cours d’exécution, puis exécutez le script buildNIM.sh pour créer l’image Docker. L'option ‑i
définit le mode de construction automatisé, ‑C
et ‑K
sont des options obligatoires qui nomment respectivement le certificat et la clé NGINX Management Suite, et l'option ‑t
spécifie l'emplacement et le nom du registre privé vers lequel l'image est poussé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
Suivez ces instructions pour préparer le manifeste de déploiement et démarrer NGINX Management Suite sur Kubernetes.
Encodez en Base64 la licence NGINX Management Suite que vous avez téléchargée à l'étape 4 de la section précédente et copiez le résultat dans le presse-papiers :
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
À l’aide de votre éditeur préféré, ouvrez manifests/1.nginx-nim.yaml et effectuez 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 informations d'identification d'authentification en effectuant ces substitutions dans le champ de valeur
pour chaque nom
indiqué :
NIM_USERNAME
– (Facultatif) Remplacez l’ administrateur
par défaut par un nom de compte administrateur.NIM_PASSWORD
– (Obligatoire) Remplacez le nimadmin
par défaut par un mot de passe fort.LICENCE_NIM
– (Obligatoire) Remplacez la valeur par défaut <FICHIER_DE_LICENCE_ENCODÉ_BASE64>
avec la licence codée en base64 que vous avez générée à l’étape 1 ci-dessus.spec: ...
template:
...
spec:
containers:
...
env:
...
- name: NIM_USERNAME
value: admin
- name: NIM_PASSWORD
value: nimadmin
- name: NIM_LICENSE
value: "<BASE64_ENCODED_LICENSE_FILE>"
Vous pouvez également modifier manifests/3.vs.yaml et personnaliser les noms d’hôtes utilisés pour accéder à NGINX Management Suite.
Exécutez nimDockerStart.sh pour démarrer NGINX Management Suite dans votre cluster Kubernetes. Comme indiqué dans la trace, il s'exécute en tant que pod nginx-nim2 . Le script initialise également les pods pour ClickHouse comme base de données backend et Grafana pour la visualisation des analyses. Pour plus d'informations, consultez le fichier README sur le 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
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
Pour accéder à NGINX Management Suite, accédez dans un navigateur à https://nim2.f5.ff.lan (ou au nom d’hôte alternatif que vous avez défini à l’étape 4 de la section précédente). Connectez-vous à l’aide des informations d’identification que vous avez définies à l’étape 2 de la section précédente.
Pour arrêter et supprimer l’instance Docker de NGINX Management Suite, exécutez cette commande :
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted
Pour tester les solutions NGINX présentées dans cet article, démarrez dès aujourd'hui un essai gratuit de 30 jours ou contactez-nous pour discuter de vos cas d'utilisation :
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."