BLOG | NGINX

Création d'une image Docker pour déployer NGINX Management Suite sans Helm

Miniature de Fabrizio Fiorucci
Fabrizio Fiorucci
Publié le 27 février 2023

Plus tôt cette année, nous avons présenté NGINX Management Suite comme notre nouveau plan de contrôle pour les solutions logicielles NGINX, vous permettant de configurer, de faire évoluer, de sécuriser et de surveiller les applications utilisateur et les API REST sur le plan de données NGINX à partir d'un seul panneau de verre.

NGINX Management Suite a une conception modulaire : à la base se trouve le module Instance Manager , qui fournit le suivi, la configuration et la visibilité de l'ensemble de votre flotte d'instances NGINX Open Source et NGINX Plus. Au moment de la rédaction de cet article, API Connectivity Manager est l’autre module disponible, utilisé pour gérer et orchestrer NGINX Plus exécuté en tant que passerelle API.

NGINX Management Suite peut fonctionner sur du bare metal, en tant que machine virtuelle Linux ou conteneurisée. La méthode recommandée pour le déployer sur Kubernetes consiste à utiliser le graphique Helm que nous fournissons, mais à des fins spécifiques, vous devrez peut-être créer votre propre image Docker et gérer son cycle de vie via un pipeline CI/CD personnalisé qui ne repose pas nécessairement sur Helm.

[ Éditeur – Cet article a été mis à jour en février 2023 pour automatiser entièrement le processus de création de l’image Docker.]

Prérequis

Nous mettons à votre disposition un référentiel GitHub contenant les ressources nécessaires pour créer une image Docker de NGINX Management Suite, compatible avec ces versions d'Instance Manager et d'API Connectivity Manager :

  • Gestionnaire d'instances 2.4.0+
  • Gestionnaire de connectivité API 1.0.0+
  • Surveillance de sécurité 1.0.0+

Pour créer l’image Docker, vous avez besoin de :

  • Un hôte Linux (bare metal ou VM)
  • Docker 20.10+
  • Un registre privé vers lequel vous pouvez pousser l'image Docker cible
  • Un abonnement ( ou un essai gratuit de 30 jours ) pour NGINX Management Suite

Pour exécuter l’image Docker, vous avez besoin de :

  • Un cluster Kubernetes en cours d'exécution
  • kubectl avec accès au cluster Kubernetes
  • Un abonnement ( ou un essai gratuit de 30 jours ) pour le contrôleur d'entrée NGINX basé sur NGINX Plus

Création de l'image Docker

Suivez ces instructions pour créer l’image Docker.

Note: Nous avons fait tous les efforts possibles pour représenter avec précision l'interface utilisateur de NGINX Management Suite au moment de la publication, mais l'interface utilisateur est susceptible d'être modifiée. Utilisez ces instructions comme référence et adaptez-les à l’interface utilisateur actuelle si nécessaire.

  1. Cloner le dépôt GitHub :

    $ 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. Accédez au répertoire de construction :

    $ cd NGINX-Demos/nginx-nms-docker/
  3. Exécutez docker ps pour vérifier que Docker est en cours d’exécution, puis exécutez le script buildNIM.sh pour créer l’image Docker. L'option ‑i définit le mode de construction automatisé, ‑C et ‑K sont des options obligatoires qui nomment respectivement le certificat et la clé NGINX Management Suite, et l'option ‑t spécifie l'emplacement et le nom du registre privé vers lequel l'image est poussée.

    $ ./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

Exécution de NGINX Management Suite sur Kubernetes

Suivez ces instructions pour préparer le manifeste de déploiement et démarrer NGINX Management Suite sur Kubernetes.

  1. Encodez en Base64 la licence NGINX Management Suite que vous avez téléchargée à l'étape 4 de la section précédente et copiez le résultat dans le presse-papiers :

    $ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
  2. À l’aide de votre éditeur préféré, ouvrez manifests/1.nginx-nim.yaml et effectuez les modifications suivantes :

    • Dans la section spec.template.spec.containers , remplacez le nom de l'image par défaut ( your.registry.tld/nginx-nim2:tag ) par le nom de l'image Docker que vous avez spécifié avec l'option ‑t à l'étape 3 de la section précédente (dans notre cas, registry.ff.lan:31005/nginx-nms:2.5.1 ) :

      spec:  ...
        template:
      	...
      	spec:
        	containers:
            - name: nginx-nim2
      	    image: your.registry.tld/nginx-nim2:tag
    • Dans la section spec.template.spec.containers.env , configurez les informations d'identification d'authentification en effectuant ces substitutions dans le champ de valeur pour chaque nom indiqué :

      • NIM_USERNAME – (Facultatif) Remplacez l’ administrateur par défaut par un nom de compte administrateur.
      • NIM_PASSWORD – (Obligatoire) Remplacez le nimadmin par défaut par un mot de passe fort.
      • LICENCE_NIM – (Obligatoire) Remplacez la valeur par défaut <FICHIER_DE_LICENCE_ENCODÉ_BASE64> avec la licence codée en base64 que vous avez générée à l’étape 1 ci-dessus.
      spec:  ...
        template:
          ...
            spec:
              containers:
                ...
                env:
                  ...
                  - name: NIM_USERNAME
                    value: admin
                  - name: NIM_PASSWORD
                    value: nimadmin
                  - name: NIM_LICENSE
                    value: "<BASE64_ENCODED_LICENSE_FILE>"
  3. Vérifiez et modifiez les fichiers sous manifestes/certificats pour personnaliser le certificat TLS et la clé utilisés pour le déchargement TLS en définissant le FQDN que vous souhaitez utiliser. Par défaut, le script de démarrage nimDockerStart.sh publie la suite de gestion NGINX conteneurisée via NGINX Ingress Controller.
  4. Vous pouvez également modifier manifests/3.vs.yaml et personnaliser les noms d’hôtes utilisés pour accéder à NGINX Management Suite.

  5. Exécutez nimDockerStart.sh pour démarrer NGINX Management Suite dans votre cluster Kubernetes. Comme indiqué dans la trace, il s'exécute en tant que pod nginx-nim2 . Le script initialise également les pods pour ClickHouse comme base de données backend et Grafana pour la visualisation des analyses. Pour plus d'informations, consultez le fichier README sur le dépôt GitHub.

    $ ./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. Vérifiez que trois pods sont désormais en cours d’exécution :

    $ 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

Accéder à NGINX Management Suite

Pour accéder à NGINX Management Suite, accédez dans un navigateur à https://nim2.f5.ff.lan (ou au nom d’hôte alternatif que vous avez défini à l’étape 4 de la section précédente). Connectez-vous à l’aide des informations d’identification que vous avez définies à l’étape 2 de la section précédente.

Arrêt de NGINX Management Suite

Pour arrêter et supprimer l’instance Docker de NGINX Management Suite, exécutez cette commande :

$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted

Commencer

Pour tester les solutions NGINX présentées dans cet article, démarrez dès aujourd'hui un essai gratuit de 30 jours ou contactez-nous pour discuter de vos cas d'utilisation :


« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."