BLOG | NGINX

Erstellen eines Docker-Images zum Bereitstellen der NGINX Management Suite ohne Helm

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Fabrizio Fiorucci Miniaturbild
Fabrizio Fiorucci
Veröffentlicht am 27. Februar 2023

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.]

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, mit Unterstützung für diese Versionen von Instance Manager und API Connectivity Manager:

  • Instanz-Manager 2.4.0+
  • API-Konnektivitäts-Manager 1.0.0+
  • Sicherheitsüberwachung 1.0.0+

Zum Erstellen des Docker-Image benötigen Sie:

  • Ein Linux-Host (Bare Metal oder VM)
  • Docker 20.10+
  • Ein privates Register, in das Sie das Ziel-Docker-Image pushen können
  • Ein Abonnement ( oder eine 30-tägige kostenlose Testversion ) für die NGINX Management Suite

Zum Ausführen des Docker-Image benötigen Sie:

  • Ein laufender Kubernetes-Cluster
  • kubectl mit Zugriff auf den Kubernetes-Cluster
  • Ein Abonnement ( oder eine 30-tägige kostenlose Testversion ) für den NGINX Ingress Controller basierend auf NGINX Plus

Erstellen des Docker-Image

Befolgen 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.

  1. Klonen Sie das GitHub-Repository:

    $ git clone https://github.com/nginxinc/NGINX-Demos Klonen in „NGINX-Demos“ … remote: Objekte aufzählen: 215, fertig. Fernbedienung: Objekte zählen: 100 % (215/215), fertig. Fernbedienung: Komprimieren von Objekten: 100 % (137/137), fertig. Fernbedienung: Gesamt 215 (Delta 108), wiederverwendet 171 (Delta 64), Pack-wiederverwendet 0 Empfangende Objekte: 100 % (215/215), 2,02 MiB | 1,04 MiB/s, fertig. 
    Auflösen von Deltas: 100 % (108/108), erledigt.
  2. Wechseln Sie in das Build-Verzeichnis:

    $ cd NGINX-Demos/nginx-nms-docker/
  3. 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 ==> Docker-Image der NGINX Management Suite erstellen. Build-Kontext an Docker-Daemon senden. 92,19 MB. Schritt 1/18: VON ubuntu:22.04 ---> a8780b506fa4 Schritt 2/18: ARG NIM_DEBFILE ---> Wird ausgeführt in 0f2354280c34. Zwischencontainer 0f2354280c34 wird entfernt [...] ---> 0588a050c852 Schritt 18/18: CMD /deployment/startNIM.sh ---> Wird ausgeführt in d0cc5466a43d. Zwischencontainer d0cc5466a43d wird entfernt ---> 25117ec0410a Erfolgreich erstellt 25117ec0410a Registry.ff.lan:31005/nginx-nms:2.5.1 erfolgreich markiert. Der Push bezieht sich auf das Repository [registry.ff.lan:31005/nginx-nms] 9c4918474e3a: 42543d044dbb gepusht: 1621b2ec0a5e gepusht: c6a464fc6a79 geschoben: 75fa1d3c61bb gepusht: 3501fcf5dbd8 gepusht: d4a221057e67 gepusht: Gedrückt von 9ad05eafed57: f4a670ac65b6 geschoben: Gepusht 2.5.1: Digest: sha256:9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 Größe: 2425

Ausführen der NGINX Management Suite auf Kubernetes

Befolgen Sie diese Anweisungen, um das Bereitstellungsmanifest vorzubereiten und die NGINX Management Suite auf Kubernetes zu starten.

  1. 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.lic TulNRS1WZXJz…
  2. Ö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 ):

      Spezifikation: ...
      Vorlage:
      ...
      Spezifikation:
      Container:
      - Name: nginx-nim2
      Bild: 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.
      Spezifikation: ...
      Vorlage:
      ...
      Spezifikation:
      Container:
      ...
      Umgebung:
      ...
      - Name: NIM_USERNAME
      Wert: admin
      - Name: NIM_PASSWORD
      Wert: nimadmin
      - Name: NIM_LICENSE
      Wert: „<BASE64_ENCODED_LICENSE_FILE>“
  3. Überprüfen und ändern Sie Dateien unter Manifesten/Zertifikaten, um das für die TLS-Offload verwendete TLS-Zertifikat und den 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.
  4. Bearbeiten Sie optional manifests/3.vs.yaml und passen Sie die Hostnamen an, die zum Erreichen der NGINX Management Suite verwendet werden.

  5. 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 erstellt ~/NGINX-NIM2-Docker/manifests/certs ~/NGINX-NIM2-Docker Generieren eines privaten RSA-Schlüssels .....................................+++++ .....................................+++++ Schreiben eines neuen privaten Schlüssels in „nim2.f5.ff.lan.key“ ----- secret/nim2.f5.ff.lan erstellt configmap/clickhouse-conf erstellt configmap/clickhouse-users erstellt persistentvolumeclaim/pvc-clickhouse erstellt deployment.apps/clickhouse erstellt service/clickhouse erstellt deployment.apps/nginx-nim2 erstellt service/nginx-nim2 erstellt service/nginx-nim2-grpc erstellt persistentvolumeclaim/pvc-grafana-data erstellt persistentvolumeclaim/pvc-grafana-log erstellt deployment.apps/grafana erstellt service/grafana erstellt virtualserver.k8s.nginx.org/nim2 erstellt virtualserver.k8s.nginx.org/grafana erstellt ~/NGINX-NIM2-Docker
  6. Überprüfen Sie, ob jetzt drei Pods ausgeführt werden:

    $ kubectl get pods -n nginx-nim2 NAME BEREIT STATUS NEUSTART ALTER clickhouse-759b65db8c-74pn5 1/1 Läuft 0 63s grafana-95fbbf5c-jczgk 1/1 Läuft 0 63s nginx-nim2-5f54664754-lrhmn 1/1 Läuft 0 63s

Zugriff auf die NGINX Management Suite

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.

NGINX Management Suite wird gestoppt

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" gelöscht

Erste Schritte

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."