F5 NGINX Management Suite ist eine Familie von Modulen zur Verwaltung der NGINX-Datenebene über eine einzige Oberfläche. Durch die Vereinfachung der Verwaltung von NGINX Open Source- und NGINX Plus-Instanzen vereinfacht die NGINX Management Suite Ihre Prozesse zum Skalieren, Sichern und Überwachen von Applications und APIs.
Sie müssen den NGINX-Agent auf jeder NGINX-Instanz installieren, die Sie von der NGINX Management Suite aus verwalten möchten, um die Kommunikation mit der Steuerebene und die Remote-Konfigurationsverwaltung zu ermöglichen.
Für NGINX-Instanzen, die auf Bare Metal oder einer virtuelle Maschine (VM) ausgeführt werden, stellen wir in unserer Dokumentation Installationsanweisungen bereit. In diesem Beitrag zeigen wir, wie man ein Docker-Image für NGINX Plus und NGINX Agent erstellt, um die Reichweite der NGINX Management Suite auf NGINX Plus-Instanzen auszuweiten, die in Kubernetes oder anderen Microservices-Infrastrukturen bereitgestellt werden.
Je nachdem, was Sie in das resultierende Docker-Image aufnehmen möchten, gibt es drei Build-Optionen:
[ Herausgeber – Dieser Beitrag wurde im April 2023 aktualisiert, um die Anweisungen zu verdeutlichen und das Feld ACM_DEVPORTAL
in Schritt 1 des Ausführens des Docker-Image in Kubernetes hinzuzufügen.]
Wir stellen ein GitHub-Repository mit den Ressourcen bereit, die Sie zum Erstellen eines Docker-Image von NGINX Plus und NGINX Agent benötigen, mit Unterstützung für Version 2.8.0 und höher des Instance Manager-Moduls von NGINX Management Suite.
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.
Klonen Sie das GitHub-Repository:
$ git clone https://github.com/nginxinc/NGINX-Demos Klonen in „NGINX-Demos“ … remote: Objekte aufzählen: 126, fertig. Fernbedienung: Objekte zählen: 100 % (126/126), fertig. Fernbedienung: Komprimieren von Objekten: 100 % (85/85), erledigt. Fernbedienung: Gesamt 126 (Delta 61), wiederverwendet 102 (Delta 37), Pack-wiederverwendet 0 Empfangende Objekte: 100 % (126/126), 20,44 KiB | 1,02 MiB/s, fertig.
Auflösen von Deltas: 100 % (61/61), erledigt.
Wechseln Sie in das Build-Verzeichnis:
$ cd NGINX-Demos/nginx-agent-docker/
Führen Sie „docker
ps“
aus, um zu überprüfen, ob Docker ausgeführt wird, und führen Sie dann das Skript build.sh aus, um die gewünschte Software in das Docker-Image aufzunehmen. Die Basisoptionen sind:
‑C
– Name der NGINX Plus-Lizenzzertifikatsdatei ( nginx-repo.crt
in den Beispielbefehlen unten)-K
– Name der NGINX Plus-Lizenzschlüsseldatei ( nginx-repo.key
in den Beispielbefehlen unten)-t
– Das Registrierungs- und Zielbild im Formular
<Registrierungsname>/<Bildname>:<tag>
( registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
in den Beispielbefehlen unten)
‑n
– Basis-URL Ihrer NGINX Management Suite-Instanz ( https://nim.f5.ff.lan
in den Beispielbefehlen unten)Die zusätzlichen Optionen sind:
-d
– Fügen Sie bei Verwendung des NGINX API Connectivity Manager Datenebenenunterstützung für das Entwicklerportal hinzu.‑w
– NGINX App Protect WAF hinzufügenHier sind die Befehle für die verschiedenen Softwarekombinationen:
NGINX Plus und NGINX Agent:
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 \ -n https://nim.f5.ff.lan
NGINX Plus, NGINX Agent und NGINX App Protect WAF (fügen Sie die Option „-w“
hinzu):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \-t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -w \ -n https://nim.f5.ff.lan
Unterstützung für NGINX Plus, NGINX Agent und Entwicklerportal (fügen Sie die Option -d
hinzu):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -d \ -n https://nim.f5.ff.lan
Hier ist eine Beispielablaufverfolgung des Builds für ein Basisimage. Die Meldung „Build
abgeschlossen“
am Ende zeigt an, dass der Build erfolgreich war.
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -n https://nim.f5.ff.lan => Ziel-Docker-Image ist nginx-plus-with-agent:2.7.0 [+] Erstellen von 415.1s (10/10) FERTIG => [intern] Build-Definition aus Dockerfile laden => Dockerfile übertragen: 38B => [intern] load .dockerignore => Kontext wird übertragen: 2B => [intern] Metadaten für docker.io/library/centos:7 laden => [auth] library/centos:pull token for registry-1.docker.io => CACHED [1/4] FROM docker.io/library /centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 => [intern] Build-Kontext laden => Kontext übertragen: 69B => [2/4] AUSFÜHREN yum -y update && yum install -y wget ca-certificates epel-release curl && mkdir -p /deployment /etc/ssl/nginx && bash -c 'curl -k $NMS_URL/install/nginx-agent | sh' && echo "A 299.1s => [3/4] COPY ./container/start.sh /deployment/ => [4/4] RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key set -x && chmod +x /deployment/start.sh & 102.4s => Exportieren in Image => Exportieren von Ebenen => Schreiben von Image sha256:9246de4af659596a290b078e6443a19b8988ca77f36ab90af3b67c03d27068ff => Benennen in registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 => Build abgeschlossen für registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
Befolgen Sie diese Anweisungen, um das Bereitstellungsmanifest vorzubereiten und NGINX Plus mit NGINX Agent auf Kubernetes zu starten.
Öffnen Sie mit Ihrem bevorzugten Texteditor manifests/1.nginx-with-agent.yaml und nehmen Sie die folgenden Änderungen vor (die Codeausschnitte zeigen die Standardwerte, die Sie ändern können oder müssen, orange hervorgehoben):
Ersetzen Sie im Abschnitt spec.template.spec.containers
den Standard-Image-Namen ( your.registry.tld/nginx-with-nim2-agent:tag
) durch den Docker-Image-Namen, den Sie mit der Option -t
in Schritt 3 von „ Erstellen des Docker-Images “ angegeben haben (in unserem Fall registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 ):
Spezifikation: ... Vorlage: ... Spezifikation: Container: - Name: nginx-nim Image: your.registry.tld/nginx-with-nim2-agent:tag
Nehmen Sie im Abschnitt spec.template.spec.containers.env
diese Ersetzungen im Wertefeld
für jeden angegebenen Namen
vor:
NIM_HOST
– (Erforderlich) Ersetzen Sie den Standardwert ( nginx-nim2.nginx-nim2
) durch den FQDN oder die IP-Adresse Ihrer NGINX Management Suite-Instanz (in unserem Fall nim2.f5.ff.lan ).NIM_GRPC_PORT
– (Optional) Ersetzen Sie den Standard (443
) mit einer anderen Portnummer für gRPC-Verkehr.NIM_INSTANCEGROUP
– (Optional) Ersetzen Sie den Standard ( lab
) durch die Instanzgruppe, zu der die NGINX Plus-Instanz gehört.NIM_TAGS
– (Optional) Ersetzen Sie den Standard ( preprod,devops
) durch eine Komma-getrennte Liste von Tags für die NGINX Plus-Instanz.Spezifikation: ... Vorlage: ... Spezifikation: Container: ... Umgebung: - Name: NIM_HOST ... Wert: " nginx-nim2.nginx-nim2 " - Name: NIM_GRPC_PORT-Wert: "443 " - Name: NIM_INSTANCEGROUP-Wert: " lab " – Name: NIM_TAGS-Wert: " preprod,devops "
Entfernen Sie außerdem im Abschnitt spec.template.spec.containers.env
die Kommentarzeichen von diesen Name
- Wert-
Feldpaaren, wenn die angegebene Bedingung zutrifft:
NIM_WAF
und NIM_WAF_PRECOMPILED_POLICIES
– NGINX App Protect WAF ist im Image enthalten (Sie haben die Option -w
in Schritt 3 des Erstellens des Docker-Images eingefügt), daher ist der Wert „true“
.ACM_DEVPORTAL
– Unterstützung für das App Connectivity Manager-Entwicklerportal ist im Image enthalten (Sie haben die Option -d
in Schritt 3 des Erstellens des Docker-Images eingefügt), daher ist der Wert „true“
.Spezifikation: ... Vorlage: ... Spezifikation: Container: ... Umgebung: - Name: NIM_HOST ... #- Name: NAP_WAF # Wert: "true" #- Name: NAP_WAF_PRECOMPILED_POLICIES # Wert: "true" ... #- Name: ACM_DEVPORTAL # Wert: „true“
Führen Sie das Skript nginxwithAgentStart.sh wie angegeben aus, um das Manifest anzuwenden und zwei Pods zu starten (wie von den Replikaten angegeben):
2
Anweisung im Spezifikationsabschnitt
des Manifests), jeweils mit NGINX Plus und NGINX Agent:
$ ./scripts/nginxWithAgentStart.sh starten $ ./scripts/nginxWithAgentStart.sh stoppen
Überprüfen Sie, ob jetzt zwei Pods ausgeführt werden: Jeder Pod führt eine NGINX-Plus-Instanz und einen NGINX-Agent aus, um mit der Steuerebene der NGINX Management Suite zu kommunizieren.
$ kubectl get pods -n nim-test NAME BEREIT STATUS NEUSTART ALTER nginx-nim-7f77c8bdc9-hkkck 1/1 Läuft 0 1m nginx-nim-7f77c8bdc9-p2s94 1/1 Läuft 0 1m
Greifen Sie auf die GUI des NGINX Instance Managers in der NGINX Management Suite zu und überprüfen Sie, ob zwei NGINX Plus-Instanzen mit dem Status „Online“ ausgeführt werden. In diesem Beispiel ist NGINX App Protect WAF nicht aktiviert.
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 :
Laden Sie NGINX Agent herunter – es ist kostenlos und Open Source.
„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."