Anfang dieses Jahres haben wir NGINX Management Suite vorgestellt – unsere neue Steuerungsebene für NGINX-Softwarelösungen, mit der Sie Benutzeranwendungen und REST-APIs auf der NGINX-Datenebene zentral konfigurieren, skalieren, absichern und überwachen können.
Die NGINX Management Suite ist modular aufgebaut. Ihr Herzstück ist das Modul Instance Manager, das die Überwachung und Konfiguration Ihrer gesamten Flotte von NGINX Open Source- und NGINX Plus-Instanzen ermöglicht und für umfassende Transparenz sorgt. Zum Zeitpunkt der Erstellung dieses Artikels ist der API Connectivity Manager das andere verfügbare Modul. Es dient zur Verwaltung und Orchestrierung von NGINX Plus als API-Gateway.
NGINX Management Suite kann auf Bare-Metal-Systemen, als virtuelle Linux-Maschine oder containerisiert ausgeführt werden. Für die Bereitstellung auf Kubernetes empfehlen wir die Verwendung des von uns bereitgestellten Helm-Charts. Für bestimmte Anwendungsfälle müssen Sie jedoch möglicherweise ein eigenes Docker-Image erstellen und dessen Lebenszyklus über eine benutzerdefinierte CI/CD-Pipeline verwalten, die nicht zwingend auf Helm basiert.
[Redaktion – Dieser Beitrag wurde im Februar 2023 aktualisiert, um den Prozess zur Erstellung des Docker-Images vollständig zu automatisieren.]
Voraussetzungen
Wir stellen ein GitHub-Repository mit den Ressourcen bereit, die Sie zum Erstellen eines Docker-Images für die NGINX Management Suite benötigen. Dabei werden die folgenden Versionen von Instance Manager und API Connectivity Manager unterstützt:
- Instance Manager 2.4.0+
- API Connectivity Manager 1.0.0+
- Sicherheitsüberwachung 1.0.0+
Zum Erstellen des Docker-Images benötigen Sie:
- Ein Linux-Host (Bare Metal oder VM)
- Docker 20.10+
- Eine private Registry, in die Sie das Ziel-Docker-Image pushen können
- Ein Abonnement (oder eine kostenlose 30-Tage-Testversion) für die NGINX Management Suite
Zum Ausführen des Docker-Images benötigen Sie:
- Ein laufender Kubernetes-Cluster
kubectlmit Zugriff auf den Kubernetes-Cluster- Ein Abonnement (oder eine kostenlose 30-Tage-Testversion) für den auf NGINX Plus basierenden NGINX Ingress Controller
Erstellen des Docker-Images
Befolgen Sie diese Anweisungen, um das Docker-Image zu erstellen.
Hinweis: Wir haben uns bemüht, die Benutzeroberfläche der NGINX Management Suite zum Zeitpunkt der Veröffentlichung so genau wie möglich darzustellen. Die Benutzeroberfläche kann sich jedoch ändern. Verwenden Sie diese Anweisungen als Referenz und passen Sie sie bei Bedarf an die aktuelle Benutzeroberfläche an.
- Klonen Sie das GitHub-Repository:
$ 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.- Wechseln Sie in das Build-Verzeichnis:
$ cd NGINX-Demos/nginx-nms-docker/- Führen Sie
dockerpsaus, um zu überprüfen, ob Docker ausgeführt wird. Führen Sie anschließend das Skript buildNIM.sh aus, um das Docker-Image zu erstellen. Die Option‑iaktiviert den automatisierten Build-Modus.‑Cund‑Ksind erforderliche Optionen, mit denen das Zertifikat beziehungsweise der Schlüssel der NGINX Management Suite angegeben wird. Die Option‑tgibt den Speicherort und den Namen der privaten Registry an, in die das Image übertragen wird.
$ ./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: 2425NGINX Management Suite auf Kubernetes ausführen
Befolgen Sie diese Anweisungen, um das Deployment-Manifest vorzubereiten und die NGINX Management Suite auf Kubernetes zu starten.
- Kodieren Sie die in Schritt 4 des vorherigen Abschnitts heruntergeladene NGINX Management Suite-Lizenz mit Base64 und kopieren Sie die Ausgabe in die Zwischenablage:
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...- Öffnen Sie die Datei manifests/1.nginx-nim.yaml in Ihrem bevorzugten Editor und nehmen Sie die folgenden Änderungen vor:
- Ersetzen Sie im Abschnitt „
spec.template.spec.containers“ den Standard-Image-Namen („your.registry.tld/nginx-nim2:tag“) durch den Docker-Image-Namen, den Sie mit der Option „‑t“ in Schritt 3 des vorherigen Abschnitts angegeben haben (in unserem Fall registry.ff.lan:31005/nginx-nms:2.5.1):
- Ersetzen Sie im Abschnitt „
spec: ...
template:
...
spec:
containers:
- name: nginx-nim2
image: your.registry.tld/nginx-nim2:tag- Konfigurieren Sie im Abschnitt „
spec.template.spec.containers.env“ die Anmeldeinformationen für die Authentifizierung, indem Sie im Feld „value“ für jeden angegebenen „name“ die folgenden Ersetzungen vornehmen:
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– (Optional) Ersetzen Sie den Standardwertadmindurch den Namen eines Administratorkontos.NIM_PASSWORD– (Erforderlich) Ersetzen Sie das Standardpasswortnimadmindurch ein sicheres Passwort.NIM_LICENSE– (Erforderlich) Ersetzen Sie den Standardwert<BASE64_ENCODED_LICENSE_FILE>durch die Base64-codierte Lizenz, die Sie oben in Schritt 1 generiert haben.
- Überprüfen und ändern Sie die Dateien unter manifests/certs, um das für die TLS-Auslagerung verwendete TLS-Zertifikat und den zugehörigen Schlüssel anzupassen, indem Sie den gewünschten FQDN festlegen. Standardmäßig veröffentlicht das Startskript nimDockerStart.sh die containerisierte NGINX Management Suite über den NGINX Ingress Controller.
- Bearbeiten Sie optional manifests/3.vs.yaml und passen Sie die Hostnamen an, über die die NGINX Management Suite erreichbar ist.
- Führen Sie nimDockerStart.sh aus, um die NGINX Management Suite in Ihrem Kubernetes-Cluster zu starten. Wie aus der Ablaufverfolgung hervorgeht, wird sie als Pod „nginx-nim2“ ausgeführt. Das Skript initialisiert außerdem Pods für ClickHouse als Backend-Datenbank und Grafana zur Visualisierung von Analysedaten. Weitere Informationen finden Sie in der README-Datei im GitHub-Repository.
$ ./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- Überprüfen Sie, ob jetzt drei Pods ausgeführt werden:
$ 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 63sAuf die NGINX Management Suite zugreifen
Um auf die NGINX Management Suite zuzugreifen, rufen Sie in einem Browser https://nim2.f5.ff.lan auf (oder den alternativen Hostnamen, den Sie in Schritt 4 des vorherigen Abschnitts festgelegt haben). Melden Sie sich mit den Anmeldedaten an, die Sie in Schritt 2 des vorherigen Abschnitts festgelegt haben.
NGINX Management Suite anhalten
Führen Sie den folgenden Befehl aus, um die Docker-Instanz der NGINX Management Suite zu stoppen und zu entfernen:
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deletedErste Schritte
Wenn Sie die in diesem Beitrag vorgestellten NGINX-Lösungen ausprobieren möchten, starten Sie noch heute eine kostenlose 30-Tage-Testversion oder kontaktieren Sie uns, um Ihre Anwendungsfälle zu besprechen:
- NGINX Management Suite
- NGINX Ingress Controller auf Basis von NGINX Plus
Über den Autor

Ähnliche Blogbeiträge
Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.
Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.
Ankündigung von NGINX Plus R16
NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.
5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.