
Vi er glade for at præsentere en forhåndsversion (NSM), et letvægts service mesh, der bruger en data plane baseret på NGINX Plus til at styre trafik mellem containere i Kubernetes-miljøer.
NSM er gratis . Vi håber, at du vil prøve at bruge det til udviklings- og testmiljøer — og vi ser frem til din feedback. .
Implementeringen af mikroservices-med metodologien medfører udfordringer med skalerbarheden af leverancerne samt deres kompleksitet. Forbindelsen mellem tjenesterne bliver mere kompleks, fejlretning bliver sværere, og flere tjenester kræver mere resurser at styre.
NSM løser disse problemer ved at give dig først og fremmest:
- Sikkerhed, som nu er vigtigere end nogensinde. Databrud kan koste virksomheder millioner af dollars årligt i tabt indtjening og omdømme. NSM sikrer kryptering af alle forbindelser med mTLS — så følsomme data, der kan blive stjålet af hackere over nettet, simpelthen ikke eksisterer. Adgangskontrol gør det muligt for dig at fastsætte politikker for, hvordan tjenester vil kommunikere med andre tjenester.
- Trafikstyring. Når du implementerer en ny version af en applikation, vil du måske først begrænse indgående trafik til den for at undgå fejl. Med intelligent trafikstyring af containere fra NSM kan du fastsætte en politik for trafikbegrænsning for nye tjenester, som vil øge trafikken over tid. Andre funktioner, som hastighedsbegrænsning og circuit breakers, giver dig fuld kontrol over trafikstrømmen til alle dine tjenester.
- Visualisering. At styre tusinder af tjenester kan være et mareridt når det kommer til fejlfinding og visualisering. NSM hjælper med at håndtere denne situation gennem en indbygget Grafana-dashboard, som viser alle målinger, der er tilgængelige i NGINX Plus. Desuden giver indbygget Open Tracing mulighed for at overvåge transaktioner i detaljer.
- Hybridleverancer, hvis din virksomhed, ligesom de fleste andre, ikke bruger en infrastruktur, der udelukkende er drevet af Kubernetes. NSM sikrer, at ældre applikationer ikke bliver negligeret. Med den indbyggede NGINX Kubernetes Ingress Controller vil ældre tjenester kunne kommunikere med mesh-tjenester og omvendt.
NSM sikrer også applikationer i nul-tillidsmiljøer ved transparent at anvende kryptering og autentificering af containertrafik. Det giver også mulighed for overvågning og analyse af transaktioner, hvilket hjælper med hurtigt og præcist at implementere deployment og løse problemer. Derudover sikrer det detaljeret kontrol over trafik, hvilket gør det muligt for DevOps-teams at implementere og optimere dele af applikationer, samtidig med at udviklerne kan skabe og let forbinde deres distribuerede applikationer.
Hvordan fungerer NGINX Service Mesh?
NSM består af en sammenhængende data plane til horisontal (service-til-service) trafik og den indbyggede NGINX Plus Ingress Controller til vertikal trafik, styret af en enkelt control plane.
Control plane er specielt designet og optimeret til NGINX Plus data plane, og definerer trafikstyringsregler, der distribueres på NGINX Plus sidecars.
I NSM installeres sidecars proxy for hver service i mesh. De interagerer med følgende åbne kilde-løsninger:
- Grafana, visualisering af parametre fra Prometheus, den indbyggede NSM dashboard hjælper dig i dit arbejde;
- Kubernetes Ingress Controllers, til at styre indgående og udgående trafik i mesh;
- SPIRE, CA til administration, distribution og opdatering af certifikater i mesh;
- NATS, et skalerbart meddelelsessystem, fx opdateringer af ruter, fra control plane til sidecars;
- Open Tracing, distribueret debugging (understøtter Zipkin og Jaeger);
- Prometheus, indsamling og opbevaring af metrics fra NGINX Plus sidecars, fx antal forespørgsler, forbindelser og SSL handshakes.
Funktioner og komponenter
NGINX Plus som data plane dækker sidecar proxy (horisontal trafik) og Ingress controller (vertikal), som opsnapper og styrer containertrafik mellem tjenester.
Funktionerne inkluderer:
- Mutual TLS authentication (mTLS);
- Load balancing;
- Fejltolerance;
- Rate limiting;
- Circuit breaking;
- Blue-green og canary deployments;
- Adgangskontrol.
Implementering af NGINX Service Mesh
For at implementere NSM skal du:
- have adgang til Kubernetes-miljøet. NGINX Service Mesh understøttes på mange Kubernetes-platforme, herunder Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere og traditionelle Kubernetes-klynger, der er implementeret på "bare metal"-servere;
- Værktøj
kubectl, installeret på den maskine, hvorfra NSM vil blive implementeret; - Adgang til NGINX Service Mesh udgavepakker. I pakken findes der billeder af NSM, som er nødvendige til upload i en privat registry for containere, der er tilgængelig i Kubernetes-klusteret. Pakken indeholder også
nginx-meshctl, som er nødvendig for at implementere NSM.
For at implementere NSM med standardindstillingerne, skal du køre følgende kommando. Under implementeringen vises der meddelelser om vellykket installation af komponenter og til sidst en meddelelse om, at NSM kører i et separat navnerum (for at starte skal det og placeres i registry, oversætterens bemærkning):
$ 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}"
Oprettet navnerum "nginx-mesh".
Oprettet SpiffeID CRD.
Venter på, at Spire-pods kører... færdig.
Udrullet Spire.
Udrullet NATS-server.
Oprettet trafikpolitikker CRD'er.
Udrullet Mesh API.
Udrullet Metrics API Server.
Udrullet Prometheus Server nginx-mesh\/prometheus-server.
Udrullet Grafana nginx-mesh\/grafana.
Udrullet tracing-server nginx-mesh\/zipkin.
Alle ressourcer oprettet. Tester forbindelsen til Service Mesh API Server...
Forbundet til NGINX Service Mesh API med succes.
NGINX Service Mesh kører.For at få yderligere parametre, herunder avancerede indstillinger, skal du køre denne kommando:
$ nginx-meshctl deploy –hFor at kontrollere, at control plane fungerer korrekt i navnerummet nginx-mesh, kan du gøre det sådan:
$ 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 2d19hAfhængig af implementeringsparametre, der indstiller manuelle eller automatiske injiceringspolitikker, vil NGINX-sidecar-proxyer blive tilføjet til applikationer som standard. For at deaktivere automatisk tilføjelse, læs
For eksempel, hvis vi implementerer applikationen sleep i navnerummet default, og derefter kontrollerer Pod — vil vi se to kørende containere, applikationen sleep og den relaterede sidecar:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2\/2 Running 0 5h23mVi kan også overvåge applikationen sleep I kontrolpanelet for NGINX Plus, kør denne kommando for at få adgang til sidecar fra din lokale maskine:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886Derefter går vi blot ind i browseren. Du kan også forbinde til Prometheus for at overvåge applikationen. sleep.
Du kan bruge separate Kubernetes-ressourcer til at konfigurere trafikpolitikker, såsom adgangskontrol, hastighedsbegrænsning og circuit breaking, se venligst
Konklusion
NGINX Service Mesh er gratis tilgængelig til download på . Prøv det i dine dev- og testmiljøer og .
For at prøve NGINX Plus Ingress Controller, aktiver i 30 dage, eller til at diskutere dine brugsmuligheder.
Oversættelse udarbejdet af Pavel Demkovich, ingeniør hos . Systemadministration koster 15.000 ₽ om måneden. Og som en særskilt enhed — træningscenteret , praksis og intet andet end praksis.
Kilde: habr.com
