F5 NGINX Management Suite est une famille de modules permettant de gérer le plan de données NGINX à partir d'une seule et même interface. En simplifiant la gestion des instances NGINX Open Source et NGINX Plus, NGINX Management Suite simplifie vos processus de mise à l'échelle, de sécurisation et de surveillance des applications et des API.
Vous devez installer l'agent NGINX sur chaque instance NGINX que vous souhaitez gérer à partir de NGINX Management Suite, pour activer la communication avec le plan de contrôle et la gestion de la configuration à distance.
Pour les instances NGINX exécutées sur du bare metal ou une machine virtuelle (VM), nous fournissons des instructions d'installation dans notre documentation. Dans cet article, nous montrons comment créer une image Docker pour NGINX Plus et NGINX Agent, afin d'élargir la portée de NGINX Management Suite aux instances NGINX Plus déployées dans Kubernetes ou d'autres infrastructures de microservices.
Il existe trois options de construction, en fonction de ce que vous souhaitez inclure dans l'image Docker résultante :
[ Éditeur – Cet article a été mis à jour en avril 2023 pour clarifier les instructions et ajouter le champ ACM_DEVPORTAL
à l’étape 1 de l’exécution de l’image Docker dans Kubernetes .]
Nous fournissons un référentiel GitHub des ressources dont vous avez besoin pour créer une image Docker de NGINX Plus et NGINX Agent, avec prise en charge de la version 2.8.0 et ultérieure du module Instance Manager de NGINX Management Suite.
Pour créer l’image Docker, vous avez besoin de :
Pour exécuter l’image Docker, vous avez besoin de :
kubectl
avec accès au cluster KubernetesSuivez ces instructions pour créer l’image Docker.
Cloner le dépôt GitHub :
$ git clone https://github.com/nginxinc/NGINX-Demos Clonage dans 'NGINX-Demos'... à distance : Énumération des objets : 126, terminé. à distance : Compter les objets : 100% (126/126), terminé. à distance : Compression d'objets : 100% (85/85), terminé. à distance : Total 126 (delta 61), réutilisé 102 (delta 37), pack-réutilisé 0 Objets de réception : 100 % (126/126), 20,44 Ko | 1,02 Mio/s, terminé.
Résolution des deltas : 100% (61/61), fait.
Accédez au répertoire de construction :
$ cd NGINX-Demos/nginx-agent-docker/
Exécutez docker
ps
pour vérifier que Docker est en cours d’exécution, puis exécutez le script build.sh pour inclure le logiciel souhaité dans l’image Docker. Les options de base sont :
‑C
– Nom du fichier de certificat de licence NGINX Plus ( nginx-repo.crt
dans les exemples de commandes ci-dessous)‑K
– Nom du fichier de clé de licence NGINX Plus ( nginx-repo.key
dans les exemples de commandes ci-dessous)‑t
– Le registre et l’image cible sous la forme
<nom_registre>/<nom_image>:<étiquette>
( registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
dans les exemples de commandes ci-dessous)
‑n
– URL de base de votre instance NGINX Management Suite ( https://nim.f5.ff.lan
dans les exemples de commandes ci-dessous)Les options supplémentaires sont :
‑d
– Ajout de la prise en charge du plan de données pour le portail des développeurs lors de l’utilisation de NGINX API Connectivity Manager‑w
– Ajouter NGINX App Protect WAFVoici les commandes pour les différentes combinaisons de logiciels :
NGINX Plus et 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 et NGINX App Protect WAF (ajoutez l'option ‑w
) :
$ ./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
Prise en charge de NGINX Plus, NGINX Agent et du portail des développeurs (ajoutez l'option ‑d
) :
$ ./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
Voici un exemple de trace de la construction d'une image de base. Le message « Build
terminé »
à la fin indique une build réussie.
$ ./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 => L'image Docker cible est nginx-plus-with-agent:2.7.0 [+] Construction de 415.1s (10/10) TERMINÉE => [interne] charger la définition de construction à partir du Dockerfile => transfert du dockerfile : 38B => [interne] load .dockerignore => transfert de contexte : 2B => [interne] charger les métadonnées pour docker.io/library/centos:7 => [auth] library/centos:pull token for registry-1.docker.io => CACHED [1/4] FROM docker.io/library /centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 => [interne] charger le contexte de construction => transférer le contexte : 69B => [2/4] EXÉCUTER 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 => exportation vers image => exportation des calques => écriture de l'image sha256:9246de4af659596a290b078e6443a19b8988ca77f36ab90af3b67c03d27068ff => dénomination vers Registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 => Construction terminée pour Registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
Suivez ces instructions pour préparer le manifeste de déploiement et démarrer NGINX Plus avec NGINX Agent sur Kubernetes.
À l'aide de votre éditeur de texte préféré, ouvrez manifests/1.nginx-with-agent.yaml et apportez les modifications suivantes (les extraits de code affichent les valeurs par défaut que vous pouvez ou devez modifier, surlignées en orange) :
Dans la section spec.template.spec.containers
, remplacez le nom de l'image par défaut ( your.registry.tld/nginx-with-nim2-agent:tag
) par le nom de l'image Docker que vous avez spécifié avec l'option ‑t
à l'étape 3 de la création de l'image Docker (dans notre cas, registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 ) :
spec: ... template: ... spec: conteneurs: - nom: nginx-nim image: your.registry.tld/nginx-with-nim2-agent:tag
Dans la section spec.template.spec.containers.env
, effectuez ces substitutions dans le champ de valeur
pour chaque nom
indiqué :
NIM_HOST
– (Obligatoire) Remplacez la valeur par défaut ( nginx-nim2.nginx-nim2
) par le nom de domaine complet ou l’adresse IP de votre instance NGINX Management Suite (dans notre cas nim2.f5.ff.lan ).NIM_GRPC_PORT
– (Facultatif) Remplacez la valeur par défaut (443
) avec un numéro de port différent pour le trafic gRPC.NIM_INSTANCEGROUP
– (Facultatif) Remplacez la valeur par défaut ( lab
) par le groupe d’instances auquel appartient l’instance NGINX Plus.NIM_TAGS
– (Facultatif) Remplacez la valeur par défaut ( preprod,devops
) par une liste de balises délimitées par des virgules pour l’instance NGINX Plus.spec: ... template: ... spec: conteneurs: ... env: - nom: NIM_HOST ... valeur : " nginx-nim2.nginx-nim2 " - nom : Valeur NIM_GRPC_PORT : "443 " - nom: Valeur NIM_INSTANCEGROUP : « lab » - nom : Valeur NIM_TAGS : « preprod,devops »
Également dans la section spec.template.spec.containers.env
, supprimez le commentaire de ces paires de champs nom
- valeur
si la condition indiquée s'applique :
NIM_WAF
et NIM_WAF_PRECOMPILED_POLICIES
– NGINX App Protect WAF est inclus dans l'image (vous avez inclus l'option -w
à l'étape 3 de la création de l'image Docker ), donc la valeur est « true »
.ACM_DEVPORTAL
– La prise en charge du portail des développeurs App Connectivity Manager est incluse dans l'image (vous avez inclus l'option -d
à l'étape 3 de la création de l'image Docker ), donc la valeur est « true »
.spec: ... template: ... spec: conteneurs: ... env: - nom: NIM_HOST ... #- nom : NAP_WAF # valeur : « true » #- nom : NAP_WAF_PRECOMPILED_POLICIES # valeur : « true » ... #- nom : ACM_DEVPORTAL # valeur : « true »
Exécutez le script nginxwithAgentStart.sh comme indiqué pour appliquer le manifeste et démarrer deux pods (comme spécifié par les répliques :
2
instructions dans la section spec
du manifeste), chacun avec NGINX Plus et NGINX Agent :
$ ./scripts/nginxWithAgentStart.sh démarrer $ ./scripts/nginxWithAgentStart.sh arrêter
Vérifiez que deux pods sont désormais en cours d’exécution : chaque pod exécute une instance NGINX Plus et un agent NGINX pour communiquer avec le plan de contrôle NGINX Management Suite.
$ kubectl get pods -n nim-test NOM PRÊT ÉTAT RESTARTS AGE nginx-nim-7f77c8bdc9-hkkck 1/1 En cours d'exécution 0 1m nginx-nim-7f77c8bdc9-p2s94 1/1 En cours d'exécution 0 1m
Accédez à l'interface graphique du gestionnaire d'instances NGINX dans NGINX Management Suite et vérifiez que deux instances NGINX Plus sont en cours d'exécution avec le statut En ligne . Dans cet exemple, NGINX App Protect WAF n'est pas activé.
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 :
Téléchargez NGINX Agent – c'est gratuit et open source.
« 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."