Anfang des Jahres haben wir die NGINX Management Suite als unsere neue Steuerebene für NGINX-Softwarelösungen eingeführt , mit der Sie Benutzeranwendungen und REST-APIs auf der NGINX-Datenebene über eine einzige Oberfläche konfigurieren, skalieren, sichern und überwachen können.
Die NGINX Management Suite ist modular aufgebaut: Ihr Kernstück ist das Modul Instance Manager , das Tracking, Konfiguration und Sichtbarkeit für Ihre gesamte Flotte von NGINX Open Source- und NGINX Plus-Instanzen bietet. Zum Zeitpunkt des Schreibens dieses Artikels ist API Connectivity Manager das andere verfügbare Modul, das zum Verwalten und Orchestrieren von NGINX Plus verwendet wird, das als API-Gateway ausgeführt wird.
NGINX Management Suite kann auf Bare Metal, als virtuelle Linux-Maschine oder in einem Container ausgeführt werden. Die empfohlene Methode zum Bereitstellen auf Kubernetes ist die Verwendung des von uns bereitgestellten Helm-Diagramms . Für bestimmte Zwecke müssen Sie jedoch möglicherweise Ihr eigenes Docker-Image erstellen und dessen Lebenszyklus über eine benutzerdefinierte CI/CD-Pipeline verwalten, die nicht unbedingt auf Helm basiert.
[ Herausgeber – Dieser Beitrag wurde im Februar 2023 aktualisiert, um den Prozess zum Erstellen des Docker-Images vollständig zu automatisieren.]
Wir bieten Ihnen ein GitHub-Repository mit allen Ressourcen, die Sie benötigen, um ein Docker-Image für die NGINX Management Suite zu erstellen. Dabei unterstützen wir diese Versionen von Instance Manager und API Connectivity Manager:
Zum Erstellen des Docker-Image benötigen Sie:
Zum Ausführen des Docker-Image benötigen Sie:
kubectl
mit Zugriff auf den Kubernetes-ClusterBefolgen Sie diese Anweisungen, um das Docker-Image zu erstellen.
Notiz: Wir haben alle Anstrengungen unternommen, um die Benutzeroberfläche der NGINX Management Suite zum Zeitpunkt der Veröffentlichung genau 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 „docker
ps“
aus, um zu überprüfen, ob Docker ausgeführt wird, und führen Sie dann das Skript buildNIM.sh aus, um das Docker-Image zu erstellen. Die Option -i
legt den automatisierten Build-Modus fest, -C
und -K
sind erforderliche Optionen, die das Zertifikat und den Schlüssel der NGINX Management Suite benennen, und die Option -t
gibt den Speicherort und den Namen des privaten Registers an, in das 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: 2425
Befolgen Sie diese Anweisungen, um das Bereitstellungsmanifest vorzubereiten und die NGINX Management Suite auf Kubernetes zu starten.
Base64-kodieren Sie die NGINX Management Suite-Lizenz, die Sie in Schritt 4 des vorherigen Abschnitts heruntergeladen haben, und kopieren Sie die Ausgabe in die Zwischenablage:
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
Öffnen Sie mit Ihrem bevorzugten Editor manifests/1.nginx-nim.yaml 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 ):
spec: ...
template:
...
spec:
containers:
- name: nginx-nim2
image: your.registry.tld/nginx-nim2:tag
Konfigurieren Sie im Abschnitt spec.template.spec.containers.env
die Authentifizierungsdaten, indem Sie im Wertefeld
für jeden angegebenen Namen
die folgenden Ersetzungen vornehmen:
NIM_USERNAME
– (Optional) Ersetzen Sie den Standardadministrator
durch den Namen eines Administratorkontos.NIM_PASSWORD
– (Erforderlich) Ersetzen Sie den Standard- Nimadmin
durch ein sicheres Passwort.NIM_LICENSE
– (Erforderlich) Ersetzen Sie die Standardeinstellung <BASE64_CODIERTE_LIZENZDATEI>
mit der Base64-codierten Lizenz, die Sie in Schritt 1 oben generiert haben.spec: ...
template:
...
spec:
containers:
...
env:
...
- name: NIM_USERNAME
value: admin
- name: NIM_PASSWORD
value: nimadmin
- name: NIM_LICENSE
value: "<BASE64_ENCODED_LICENSE_FILE>"
Bearbeiten Sie optional manifests/3.vs.yaml und passen Sie die Hostnamen an, die zum Erreichen der NGINX Management Suite verwendet werden.
Führen Sie nimDockerStart.sh aus, um die NGINX Management Suite in Ihrem Kubernetes-Cluster zu starten. Wie in der Ablaufverfolgung angegeben, wird es als nginx-nim2 -Pod ausgeführt. Das Skript initialisiert auch Pods für ClickHouse als Back-End-Datenbank und Grafana zur Analysevisualisierung. 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 63s
Um auf die NGINX Management Suite zuzugreifen, navigieren Sie in einem Browser zu https://nim2.f5.ff.lan (oder dem alternativen Hostnamen, den Sie in Schritt 4 des vorherigen Abschnitts festgelegt haben). Melden Sie sich mit den Anmeldeinformationen an, die Sie in Schritt 2 des vorherigen Abschnitts festgelegt haben.
Um die Docker-Instanz der NGINX Management Suite zu stoppen und zu entfernen, führen Sie diesen Befehl aus:
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted
Um die in diesem Beitrag besprochenen NGINX-Lösungen auszuprobieren, starten Sie noch heute eine 30-tägige kostenlose Testversion oder kontaktieren Sie uns , um Ihre Anwendungsfälle zu besprechen:
„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."