
We zijn blij om de bètaversie voor te stellen (NSM), een lichtgewicht service mesh die een data plane op basis van NGINX Plus gebruikt voor het beheren van containerverkeer in Kubernetes-omgevingen.
NSM is gratis beschikbaar . We hopen dat u het gaat gebruiken voor dev- en testomgevingen — en we kijken uit naar uw feedback .
Het implementeren van microservices-methodologieën brengt uitdagingen met zich mee naarmate de leveringen groeien en complexer worden. De communicatie tussen services wordt ingewikkelder, debuggingproblemen worden moeilijker en meer services vereisen extra resources voor beheer.
NSM lost deze problemen op door u in de eerste plaats te voorzien van:
- Beveiliging, wat nu belangrijker is dan ooit. Gegevenslekkages kunnen bedrijven jaarlijks miljoenen dollars kosten aan verlies van inkomsten en reputatie. NSM zorgt voor versleuteling van alle verbindingen met mTLS — zodat er geen gevoelige gegevens zijn die door hackers over het netwerk kunnen worden gestolen. Toegangscontrole stelt u in staat om het beleid vast te stellen over hoe services met andere services communiceren.
- Verkeersbeheer. Bij het uitrollen van een nieuwe versie van een applicatie wilt u wellicht aanvankelijk de binnenkomende traffic beperken voor het geval er iets misgaat. Met de intelligente containerverkeermanagement van NSM kunt u een beleid instellen dat verkeer voor nieuwe services in de loop van de tijd opschaalt. Andere functies, zoals snelheidsbeperkingen en circuit breakers, geven u volledige controle over de verkeersstroom van al uw services.
- Visualisatie. Het beheren van duizenden services kan een nachtmerrie zijn wat betreft debugging en visualisatie. NSM helpt deze situatie te beheersen met een ingebouwde Grafana-dashboard, waarop alle statistieken die beschikbaar zijn in NGINX Plus worden weergegeven. Daarnaast maakt de ingebouwde Open Tracing het mogelijk om transacties gedetailleerd te volgen.
- Hybride leveringen, als uw bedrijf, net als de meeste anderen, geen infrastructuur heeft die volledig draait op Kubernetes. NSM zorgt ervoor dat oudere applicaties niet worden verwaarloosd. Met de ingebouwde NGINX Kubernetes Ingress Controller kunnen oudere services communiceren met mesh-services, en vice versa.
NSM biedt ook applicatieve beveiliging in omgevingen met zero trust, door transparant encryptie en authenticatie van containerverkeer toe te passen. Daarnaast maakt het observatie en analyse van transacties mogelijk, waardoor implementaties snel en nauwkeurig kunnen worden uitgevoerd en problemen opgelost. Tevens biedt het gedetailleerde verkeerscontrole, zodat DevOps-teams delen van applicaties kunnen implementeren en optimaliseren, terwijl ontwikkelaars hun gedistribueerde applicaties kunnen creëren en eenvoudig kunnen verbinden.
Hoe werkt NGINX Service Mesh?
NSM bestaat uit een geïntegreerd data plane voor horizontaal (service-naar-service) verkeer en een ingebouwde NGINX Plus Ingress Controller voor verticaal verkeer, beheerd door een enkele control plane.
De control plane is speciaal ontwikkeld en geoptimaliseerd voor het NGINX Plus data plane en definieert verkeersbeheerregels verspreid over de NGINX Plus sidecars.
In NSM worden sidecar proxies ingesteld voor elke service in het mesh. Ze communiceren met de volgende open source oplossingen:
- Grafana, visualisatie van Prometheus metrics; het ingebouwde NSM-dashboard helpt bij het werken;
- Kubernetes Ingress Controllers, voor het beheren van inkomend en uitgaand verkeer in het mesh;
- SPIRE, CA voor het beheren, distribueren en bijwerken van certificaten in het mesh;
- NATS, een schaalbaar berichtenverzendingssysteem, bijvoorbeeld voor route-updates, van control plane naar sidecars;
- Open Tracing, gedistribueerde debugging (ondersteunt Zipkin en Jaeger);
- Prometheus, het verzamelen en opslaan van metrics van NGINX Plus sidecars, zoals het aantal verzoeken, verbindingen en SSL handshakes.
Functies en componenten
NGINX Plus fungeert als data plane dat de sidecar proxies (horizontaal verkeer) en de Ingress controller (verticaal verkeer) omvat, waarmee verkeer tussen services wordt onderschept en beheerd.
De functies omvatten:
- Mutual TLS-authenticatie (mTLS);
- Load balancing;
- Veerkracht;
- Snelheidsbeperkingen;
- Circuit breaking;
- Blue-green en canary deployments;
- Toegangscontrole.
Het starten van NGINX Service Mesh
Om NSM op te starten, moet u:
- toegang hebben tot het Kubernetes-omgevingen. NGINX Service Mesh wordt ondersteund op meerdere Kubernetes-platformen, waaronder Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere en reguliere Kubernetes-clusters die zijn uitgerold op 'bare metal' servers;
- Hulpmiddel
kubectl, geïnstalleerd op de machine vanwaar NSM zal worden geïnstalleerd; - Toegang tot de NGINX Service Mesh releasepakketten. Het pakket bevat de NSM-afbeeldingen die nodig zijn voor opslag in een gesloten registry voor containers, toegankelijk in het Kubernetes-cluster. Het pakket bevat ook
nginx-meshctl, nodig voor het uitrollen van NSM.
Om NSM met de standaardinstellingen uit te rollen, voert u de volgende opdracht uit. Tijdens het uitrollen worden berichten weergegeven over de succesvolle installatie van componenten en uiteindelijk een bericht dat NSM draait in een aparte namespace (u moet deze eerst en in de registry plaatsen, opmerking van de vertaler):
$ 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}"
Namespace "nginx-mesh" gemaakt.
SpiffeID CRD gemaakt.
Wachten op Spire-pods om te draaien...klaar.
Deployed Spire.
Deployed NATS-server.
Verkeersbeleid CRDs gemaakt.
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.
Alle middelen zijn gemaakt. De verbinding met de Service Mesh API Server testen...
Verbinding met de NGINX Service Mesh API succesvol.
NGINX Service Mesh draait.Voor aanvullende parameters, inclusief uitgebreide instellingen, voert u deze opdracht uit:
$ nginx-meshctl deploy –hOm te controleren of de control plane correct werkt in de namespace nginx-mesh, kunt u dit doen:
$ 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 2d19hAfhankelijk van de implementatieparameters die handmatige of automatische injectiebeleid instellen, zullen de NGINX sidecar-proxy's standaard aan de applicaties worden toegevoegd. Om automatische toevoeging uit te schakelen, lees
Bijvoorbeeld, als we een applicatie uitrollen sleep in de namespace default, en vervolgens de Pod controleren, zien we twee draaiende containers: de applicatie sleep en de bijbehorende sidecar:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23mWe kunnen ook de applicatie volgen sleep In het NGINX Plus-paneel, voer deze opdracht uit om toegang te krijgen tot de sidecar vanaf uw lokale machine:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886Ga dan simpelweg in de browser. U kunt ook verbinding maken met Prometheus om de applicatie te volgen. sleep.
U kunt afzonderlijke Kubernetes-resources gebruiken om verkeersbeleidsregels in te stellen, zoals toegangscontrole, snelheidsbeperkingen en circuit breaking, zie hiervoor
Conclusie
NGINX Service Mesh is gratis beschikbaar voor download op . Probeer het in actie in uw dev- en testomgevingen en .
Om de NGINX Plus Ingress Controller uit te proberen, activeer voor 30 dagen, of om uw gebruiksmogelijkheden te bespreken.
Vertaling door Pavel Demkovich, ingenieur bij . Systeembeheer voor 15.000 ₽ per maand. En als afzonderlijke tak – een opleidingscentrum , praktijk en niets dan praktijk.
Bron: habr.com
