BLOG | NGINX

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

NGINX-Partie-de-F5-horiz-black-type-RGB
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 fournissons un référentiel GitHub des ressources dont vous avez besoin pour créer une image Docker pour NGINX Management Suite, avec prise en charge de 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-Demos Clonage dans 'NGINX-Demos'... à distance : Énumération des objets : 215, terminé. à distance : Compter les objets : 100% (215/215), terminé. à distance : Compression d'objets : 100% (137/137), terminé. à distance : Total 215 (delta 108), réutilisé 171 (delta 64), pack-réutilisé 0 Objets de réception : 100 % (215/215), 2,02 Mio | 1,04 Mio/s, terminé. 
    Résolution des deltas : 100% (108/108), fait.
  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 ==> Création de l'image docker de NGINX Management Suite Envoi du contexte de construction au démon Docker 92,19 Mo Étape 1/18 : DE ubuntu:22.04 ---> a8780b506fa4 Étape 2/18 : ARG NIM_DEBFILE ---> Exécution dans 0f2354280c34 Suppression du conteneur intermédiaire 0f2354280c34 [...] ---> 0588a050c852 Étape 18/18 : CMD /deployment/startNIM.sh ---> Exécution dans d0cc5466a43d Suppression du conteneur intermédiaire d0cc5466a43d ---> 25117ec0410a Création réussie 25117ec0410a Balisage réussi Registry.ff.lan:31005/nginx-nms:2.5.1 Le push fait référence au référentiel [registry.ff.lan:31005/nginx-nms] 9c4918474e3a : Poussé 42543d044dbb : Poussé 1621b2ec0a5e : Poussé c6a464fc6a79 : Poussé 75fa1d3c61bb : Poussé 3501fcf5dbd8 : Poussé d4a221057e67 : Poussé 9ad05eafed57 : Poussé f4a670ac65b6 : Publié 2.5.1 : digest : sha256 : 9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 taille : 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.lic TulNRS1WZXJz...
  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 : ...
      modèle : 
      ...
      spec : 
      conteneurs : 
      - nom : 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
      valeur : admin
      - nom : NIM_PASSWORD
      valeur : nimadmin
      - nom : NIM_LICENSE
      valeur : « <FICHIER_DE_LICENCE_ENCODE_BASE64> »
  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 Génération d'une clé privée RSA .....................................+++++ .....................................+++++ écriture d'une nouvelle clé privée dans '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 créé virtualserver.k8s.nginx.org/grafana créé ~/NGINX-NIM2-Docker
  6. Vérifiez que trois pods sont désormais en cours d’exécution :

    $ kubectl get pods -n nginx-nim2 NOM PRÊT ÉTAT RESTARTS ÂGE clickhouse-759b65db8c-74pn5 1/1 En cours d'exécution 0 63 s grafana-95fbbf5c-jczgk 1/1 En cours d'exécution 0 63 s nginx-nim2-5f54664754-lrhmn 1/1 En cours d'exécution 0 63 s

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 l'espace de noms « nginx-nim2 » supprimé

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