BLOG | NGINX

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

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 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:

  • 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-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.
  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 
    ==> 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

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.licTulNRS1WZXJz...
  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 ):

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

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

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