NGINX Service Mesh disponible

NGINX Service Mesh disponible

Nous sommes heureux de vous présenter une version préliminaire Maillage de services NGINX (NSM), un maillage de services léger intégré qui utilise un plan de données basé sur NGINX Plus pour gérer le trafic de conteneurs dans les environnements Kubernetes.

NSM est gratuit скачать здесь. Nous espérons que vous l'essayerez pour les environnements de développement et de test - et attendons avec impatience vos commentaires. sur GitHub.

La mise en œuvre de la méthodologie des microservices se heurte à de nombreuses difficultés à mesure que l'échelle de prestation augmente, ainsi que sa complexité. La communication entre les services devient plus complexe, les problèmes de débogage deviennent plus difficiles et de plus en plus de services nécessitent plus de ressources à gérer.

NSM résout ces problèmes en vous fournissant :

  • sécurité, ce qui est aujourd’hui plus important que jamais. Une violation de données peut coûter chaque année à une entreprise des millions de dollars en perte de revenus et de réputation. NSM garantit que toutes les connexions sont cryptées à l'aide de mTLS, afin qu'aucune donnée sensible ne puisse être volée par des pirates informatiques sur le réseau. Le contrôle d'accès vous permet de définir des politiques sur la manière dont les services communiquent avec d'autres services.
  • gestion du trafic. Lors de l'envoi d'une nouvelle version d'une application, vous souhaiterez peut-être commencer par restreindre le trafic entrant vers celle-ci en cas d'erreur. Grâce à la gestion intelligente du trafic de conteneurs de NSM, vous pouvez définir une politique de restriction du trafic pour les nouveaux services qui augmentera le trafic au fil du temps. D'autres fonctionnalités, telles que la limitation de vitesse et les disjoncteurs, vous donnent un contrôle total sur le flux de trafic de tous vos services.
  • Visualisation. La gestion de milliers de services peut être un cauchemar de débogage et de visualisation. NSM aide à faire face à cette situation avec un tableau de bord Grafana intégré qui affiche toutes les fonctionnalités disponibles dans NGINX Plus. Et également l'Open Tracing implémenté vous permet de surveiller les transactions en détail.
  • Livraisons hybrides, si votre entreprise, comme la plupart des autres, n'utilise pas d'infrastructure fonctionnant entièrement sur Kubernetes. NSM garantit que les applications existantes ne sont pas laissées sans surveillance. Avec l'aide du contrôleur d'entrée NGINX Kubernetes implémenté, les services existants pourront communiquer avec les services maillés, et vice versa.

NSM garantit également la sécurité des applications dans les environnements Zero Trust en appliquant de manière transparente le chiffrement et l'authentification au trafic des conteneurs. Il offre également une visibilité et une analyse des transactions, vous aidant à lancer des déploiements et à résoudre les problèmes rapidement et avec précision. Il fournit également un contrôle granulaire du trafic, permettant aux équipes DevOps de déployer et d'optimiser des parties d'applications tout en permettant aux développeurs de créer et de connecter facilement leurs applications distribuées.

Comment fonctionne le maillage de services NGINX ?

NSM se compose d'un plan de données unifié pour le trafic horizontal (de service à service) et d'un contrôleur d'entrée NGINX Plus intégré pour le trafic vertical, géré par un seul plan de contrôle.

Le plan de contrôle est spécifiquement conçu et optimisé pour le plan de données NGINX Plus et définit des règles de contrôle du trafic réparties sur les side-cars NGINX Plus.

Dans NSM, des proxys side-cars sont installés pour chaque service du maillage. Ils s'interfacent avec les solutions open source suivantes :

  • Grafana, visualisation des paramètres Prometheus, panneau NSM intégré vous aide dans votre travail ;
  • Contrôleurs d'entrée Kubernetes, pour gérer le trafic entrant et sortant dans le maillage ;
  • SPIRE, CA pour la gestion, la distribution et la mise à jour des certificats dans le maillage ;
  • NATS, un système évolutif pour envoyer des messages, tels que des mises à jour d'itinéraires, du plan de contrôle aux side-cars ;
  • Open Tracing, débogage distribué (Zipkin et Jaeger pris en charge) ;
  • Prometheus collecte et stocke les caractéristiques des side-cars NGINX Plus, telles que le nombre de requêtes, de connexions et de poignées de main SSL.

Fonctions et composants

NGINX Plus en tant que plan de données couvre le proxy side-car (trafic horizontal) et le contrôleur d'entrée (vertical), interceptant et gérant le trafic de conteneurs entre les services.

Les fonctionnalités incluent:

  • Authentification mutuelle TLS (mTLS) ;
  • L'équilibrage de charge;
  • Tolérance aux pannes ;
  • Limitation de vitesse ;
  • Coupure de circuit ;
  • Déploiements bleu-vert et canari ;
  • Contrôle d'accès.

Lancement du maillage de services NGINX

Pour exécuter NSM, vous avez besoin de :

  • accès à l'environnement Kubernetes. NGINX Service Mesh est pris en charge sur de nombreuses plates-formes Kubernetes, notamment Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere et les clusters Kubernetes standards déployés sur des serveurs matériels ;
  • Outil kubectl, installé sur la machine à partir de laquelle NSM sera installé ;
  • Accès aux packages de version NGINX Service Mesh. Le package contient les images NSM nécessaires au téléchargement vers un registre privé pour les conteneurs disponibles dans le cluster Kubernetes. Le paquet contient également nginx-meshctl, nécessaire au déploiement de NSM.

Pour déployer NSM avec les paramètres par défaut, exécutez la commande suivante. Lors du déploiement, des messages s'affichent indiquant l'installation réussie des composants et, enfin, un message indiquant que NSM s'exécute dans un espace de noms distinct (vous devez d'abord скачать et placez-le dans le registre, environ. traducteur):

$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ; 
 ./nginx-meshctl deploy  
  --nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}" 
  --nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}" 
  --nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}" 
  --nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Created namespace "nginx-mesh".
Created SpiffeID CRD.
Waiting for Spire pods to be running...done.
Deployed Spire.
Deployed NATS server.
Created traffic policy CRDs.
Deployed Mesh API.
Deployed Metrics API Server.
Deployed Prometheus Server nginx-mesh/prometheus-server.
Deployed Grafana nginx-mesh/grafana.
Deployed tracing server nginx-mesh/zipkin.
All resources created. Testing the connection to the Service Mesh API Server...

Connected to the NGINX Service Mesh API successfully.
NGINX Service Mesh is running.

Pour plus d'options, y compris les paramètres avancés, exécutez cette commande :

$ nginx-meshctl deploy –h

Vérifiez que le plan de contrôle fonctionne correctement dans l'espace de noms nginx-mesh, vous pouvez:

$ kubectl get pods –n nginx-mesh
NAME                                 READY   STATUS    RESTARTS   AGE
grafana-6cc6958cd9-dccj6             1/1     Running   0          2d19h
mesh-api-6b95576c46-8npkb            1/1     Running   0          2d19h
nats-server-6d5c57f894-225qn         1/1     Running   0          2d19h
prometheus-server-65c95b788b-zkt95   1/1     Running   0          2d19h
smi-metrics-5986dfb8d5-q6gfj         1/1     Running   0          2d19h
spire-agent-5cf87                    1/1     Running   0          2d19h
spire-agent-rr2tt                    1/1     Running   0          2d19h
spire-agent-vwjbv                    1/1     Running   0          2d19h
spire-server-0                       2/2     Running   0          2d19h
zipkin-6f7cbf5467-ns6wc              1/1     Running   0          2d19h

En fonction des paramètres de déploiement qui définissent les politiques d'injection manuelle ou automatique, les proxys side-cars NGINX seront ajoutés aux applications par défaut. Pour désactiver l'ajout automatique, lisez ici

Par exemple, si nous déployons l'application sleep dans l'espace de noms défaut, puis vérifiez le Pod - nous verrons deux conteneurs en cours d'exécution, l'application sleep et le side-car associé :

$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME                     READY   STATUS    RESTARTS   AGE
sleep-674f75ff4d-gxjf2   2/2     Running   0          5h23m

Nous pouvons également surveiller l'application sleep dans le panneau NGINX Plus, exécutez cette commande pour accéder au side-car depuis votre machine locale :

$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886

Ensuite, nous entrons simplement ici dans le navigateur. Vous pouvez également vous connecter à Prometheus pour surveiller l'application sleep.

Vous pouvez utiliser des ressources Kubernetes individuelles pour configurer des politiques de trafic, telles que le contrôle d'accès, la limitation de débit et la coupure de circuit. Pour cela, voir documentation

Conclusion

NGINX Service Mesh est disponible en téléchargement gratuit sur portail F5. Essayez-le dans vos environnements de développement et de test et écrivez-nous à propos des résultats.

Pour essayer NGINX Plus Ingress Controller, activez période d'essai gratuite pendant 30 jours, ou свяжитесь с нами pour discuter de vos cas d'utilisation.

Traduction de Pavel Demkovich, ingénieur d'entreprise Southbridge. Administration système pour 15 000 RUB par mois. Et en tant que division distincte - un centre de formation Slurm, de la pratique et rien que de la pratique.

Source: habr.com

Ajouter un commentaire