Met genoegen presenteren wij u een preview-versie
NSM is gratis
De implementatie van de microservices-methodologie is beladen met problemen naarmate de omvang van de levering groeit, evenals de complexiteit ervan. De communicatie tussen services wordt complexer, het debuggen van problemen wordt moeilijker, en steeds meer services vereisen meer middelen om te beheren.
NSM lost deze problemen op door u te voorzien van:
- veiligheid, wat nu belangrijker is dan ooit. Een datalek kan een bedrijf jaarlijks miljoenen dollars aan verloren omzet en reputatie kosten. NSM zorgt ervoor dat alle verbindingen worden gecodeerd met behulp van mTLS, zodat er geen gevoelige gegevens zijn die door hackers via het netwerk kunnen worden gestolen. Met toegangscontrole kunt u beleid instellen voor de manier waarop services met andere services communiceren.
- Verkeersmanagement. Wanneer u een nieuwe versie van een applicatie verzendt, wilt u wellicht beginnen met het beperken van inkomend verkeer ernaartoe in geval van een fout. Met het intelligente containerverkeersmanagement van NSM kunt u een verkeersbeperkingsbeleid instellen voor nieuwe diensten waardoor het verkeer in de loop van de tijd zal toenemen. Andere functies, zoals snelheidsbegrenzing en stroomonderbrekers, geven u volledige controle over de verkeersstroom van al uw diensten.
- Visualisatie. Het beheren van duizenden services kan een nachtmerrie zijn op het gebied van foutopsporing en visualisatie. NSM helpt bij het omgaan met deze situatie met een ingebouwd Grafana-dashboard dat alle functies weergeeft die beschikbaar zijn in NGINX Plus. En dankzij de geïmplementeerde Open Tracing kunt u transacties tot in detail monitoren.
- Hybride leveringen, als uw bedrijf, zoals de meeste anderen, geen infrastructuur gebruikt die volledig op Kubernetes draait. NSM zorgt ervoor dat oudere applicaties niet onbeheerd achterblijven. Met behulp van de geïmplementeerde NGINX Kubernetes Ingress Controller kunnen legacy-services communiceren met mesh-services, en vice versa.
NSM zorgt ook voor applicatiebeveiliging in zero trust-omgevingen door op transparante wijze encryptie en authenticatie toe te passen op containerverkeer. Het biedt ook zichtbaarheid en analyse van transacties, zodat u snel en nauwkeurig implementaties kunt starten en problemen kunt oplossen. Het biedt ook gedetailleerde verkeerscontrole, waardoor DevOps-teams delen van applicaties kunnen implementeren en optimaliseren, terwijl ontwikkelaars hun gedistribueerde applicaties kunnen bouwen en eenvoudig kunnen verbinden.
Hoe werkt de NGINX Service Mesh?
NSM bestaat uit een uniform datavlak voor horizontaal (service-to-service) verkeer en een ingebedde NGINX Plus Ingress Controller voor verticaal verkeer, beheerd door één enkel besturingsvlak.
Het besturingsvlak is specifiek ontworpen en geoptimaliseerd voor het NGINX Plus-datavlak en definieert verkeerscontroleregels verdeeld over NGINX Plus-zijspannen.
In NSM worden zijspanproxy's geïnstalleerd voor elke service in de mesh. Ze communiceren met de volgende open source-oplossingen:
- Grafana, Prometheus parametervisualisatie, ingebouwd NSM-paneel helpt u bij uw werk;
- Kubernetes Ingress Controllers, voor het beheren van inkomend en uitgaand verkeer in de mesh;
- SPIRE, CA voor het beheren, distribueren en bijwerken van certificaten in de mesh;
- NATS, een schaalbaar systeem voor het verzenden van berichten, zoals route-updates, van het besturingsvlak naar zijspannen;
- Open Tracing, gedistribueerde foutopsporing (Zipkin en Jaeger ondersteund);
- Prometheus verzamelt en bewaart kenmerken van NGINX Plus sidecars, zoals het aantal verzoeken, verbindingen en SSL-handshakes.
Functies en componenten
NGINX Plus als datavlak omvat zijspanproxy (horizontaal verkeer) en Ingress-controller (verticaal), waarbij containerverkeer tussen services wordt onderschept en beheerd.
Kenmerken omvatten:
- Wederzijdse TLS (mTLS)-authenticatie;
- Belastingverdeling;
- Fouttolerantie;
- Snelheidslimiet;
- Circuitonderbreking;
- Blauwgroene en kanarie-implementaties;
- Toegangscontrole.
NGINX Service Mesh lanceren
Om NSM uit te voeren heeft u het volgende nodig:
- toegang tot de Kubernetes-omgeving. NGINX Service Mesh wordt ondersteund op veel Kubernetes-platforms, waaronder Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere en reguliere Kubernetes-clusters die op hardwareservers zijn geïmplementeerd;
- Gereedschap
kubectl
, geïnstalleerd op de machine waarop NSM wordt geïnstalleerd; - Toegang tot NGINX Service Mesh-releasepakketten. Het pakket bevat NSM-images die nodig zijn voor het uploaden naar een privéregister voor containers die beschikbaar zijn in het Kubernetes-cluster. Het pakket bevat ook
nginx-meshctl
, nodig om NSM in te zetten.
Voer de volgende opdracht uit om NSM met standaardinstellingen te implementeren. Tijdens de implementatie worden berichten weergegeven die de succesvolle installatie van componenten aangeven en ten slotte een bericht dat aangeeft dat NSM in een aparte naamruimte draait (u moet eerst
$ 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.
Voer deze opdracht uit voor meer opties, waaronder geavanceerde instellingen:
$ nginx-meshctl deploy –h
Controleer of het besturingsvlak correct werkt in de naamruimte nginx-mesh, je kan 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 2d19h
Afhankelijk van de implementatie-instellingen die handmatig of automatisch injectiebeleid instellen, worden standaard NGINX-zijspanproxy's aan applicaties toegevoegd. Om automatisch toevoegen uit te schakelen, lees
Bijvoorbeeld als we de applicatie inzetten slaap in naamruimte verzuimen controleer vervolgens de Pod - we zullen twee actieve containers zien, de applicatie slaap en het bijbehorende zijspan:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23m
Ook kunnen wij de aanvraag monitoren slaap in het NGINX Plus-paneel, voer deze opdracht uit om toegang te krijgen tot zijspan vanaf uw lokale machine:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886
Dan gaan wij gewoon naar binnen
U kunt individuele Kubernetes-bronnen gebruiken om verkeersbeleid te configureren, zoals toegangscontrole, snelheidsbeperking en circuitonderbreking. Zie hiervoor
Conclusie
NGINX Service Mesh is gratis te downloaden op
Activeer om NGINX Plus Ingress Controller te proberen
Vertaling door Pavel Demkovich, bedrijfsingenieur
Bron: www.habr.com