
Vi är glada att presentera den förhandsversionen (NSM), en lättviktig service mesh som använder en dataplattform baserad på NGINX Plus för att hantera trafik mellan containrar i Kubernetes-miljöer.
NSM kan laddas ner gratis . Vi hoppas att ni provar att använda den för utvecklings- och testmiljöer — och vi ser fram emot era synpunkter .
Införandet av mikrotjänstmetodik medför utmaningar vid skalning av leveranser och ökad komplexitet. Kommunikation mellan tjänster blir mer komplicerad, felsökning blir svårare och fler tjänster kräver mer resurser för att hanteras.
NSM löser dessa problem genom att först och främst ge er:
- Säkerhet, vilket nu är viktigare än någonsin. Dataförluster kan kosta ett företag miljontals dollar årligen i form av förlorade intäkter och skada på rykte. NSM säkerställer kryptering av alla anslutningar med hjälp av mTLS — så det finns helt enkelt inga känsliga data som hackare kan stjäla över nätverket. Åtkomstrestriktioner låter er definiera policyer för hur tjänster kommer att kommunicera med varandra.
- Trafikhantering. Vid leverans av en ny version av en applikation kanske ni först vill begränsa ingående trafik som ett säkerhetsåtgärd. Med NSMs intelligenta trafikhantering för containrar kan ni definiera en trafikbegränsningspolicy för nya tjänster som gradvis ökar trafiken över tid. Andra funktioner, såsom hastighetsbegränsningar och circuit breakers, ger er full kontroll över trafikflödet för alla era tjänster.
- Visualisering. Att hantera tusentals tjänster kan vara en mardröm när det gäller felsökning och visualisering. NSM hjälper till att hantera sådana situationer med hjälp av den inbyggda Grafana-dashboarden, där alla egenskaper som finns i NGINX Plus visas. Den integrerade Open Tracing gör det också möjligt att spåra transaktioner i detalj.
- Hybrid leverans, om ert företag, precis som de flesta andra, inte använder en infrastruktur som är helt körd på Kubernetes. NSM säkerställer att äldre applikationer inte lämnas utan övervakning. Tack vare den inbyggda NGINX Kubernetes Ingress Controller kan äldre tjänster koppla upp sig mot mesh-tjänster och vice versa.
NSM säkerställer också säkerheten för applikationer i miljöer med noll förtroende, genom att transparent tillämpa kryptering och autentisering av container-trafik. Det möjliggör också övervakning och analys av transaktioner, vilket hjälper till att snabbt och noggrant starta distributioner och lösa problem. Dessutom tillhandahåller det detaljerad trafikövervakning som gör det möjligt för DevOps-team att distribuera och optimera delar av applikationerna, samtidigt som det ger utvecklare möjlighet att skapa och enkelt koppla sina distribuerade applikationer.
Hur fungerar NGINX Service Mesh?
NSM består av en enhetlig data plan för horisontell (tjänst-till-tjänst) trafik och en inbyggd NGINX Plus Ingress Controller för vertikal trafik, som styrs av en enda kontrollplan.
Kontrollplanet är speciellt utformat och optimerat för NGINX Plus data plan, som definierar trafikhanteringsregler som distribueras över NGINX Plus sidecars.
I NSM installeras proxy för varje tjänst i mesh. De interagerar med följande öppna källkodslösningar:
- Grafana, visualisering av Prometheus-metricer, med en inbyggd NSM-panel som hjälper dig under arbetet;
- Kubernetes Ingress Controllers, för att hantera inkommande och utgående trafik i mesh;
- SPIRE, CA för hantering, distribution och uppdatering av certifikat i mesh;
- NATS, ett skalbart meddelandesystem, exempelvis för ruttuppdateringar, från kontrollplanet till sidecars;
- Open Tracing, distribuerad felsökning (stöd för Zipkin och Jaeger);
- Prometheus, insamling och lagring av egenskaper från NGINX Plus sidecars, såsom antal förfrågningar, anslutningar och SSL-handtryckningar.
Funktioner och komponenter
NGINX Plus som data plan omfattar sidecar proxy (horisontell trafik) och Ingress controller (vertikal), som fångar och hanterar trafik mellan tjänster i containrar.
Funktionerna inkluderar:
- Ömsesidig TLS-autentisering (mTLS);
- Lastbalansering;
- Felsäkerhet;
- Hastighetsbegränsning;
- Circuit breaking;
- Blå-gröna och kanariefågel-distributioner;
- Åtkomstkontroll.
Starta NGINX Service Mesh
För att starta NSM behöver du:
- åtkomst till Kubernetes-miljö. NGINX Service Mesh stöds på många Kubernetes-plattformar, inklusive Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere och vanliga Kubernetes-kluster som distribueras på "bare metal" servrar;
- Verktyget
kubectl, installerad på maskinen där NSM ska installeras; - Åtkomst till utgåvepaketen för NGINX Service Mesh. Paketet innehåller bilder av NSM som behövs för att ladda upp till den slutna registreringen för containrar som är tillgänglig i Kubernetes-klustret. Paketet innehåller också
nginx-meshctl, som behövs för att distribuera NSM.
För att distribuera NSM med standardinställningar kör följande kommando. Under distributionen visas meddelanden om att komponenterna har installerats framgångsrikt och slutligen ett meddelande om att NSM körs i ett separat namnrymden (till att börja med måste det och sättas i registreringen, översättarens anm.):
$ DOCKER_REGISTRY=din-Docker-registrering ; 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" skapades.
SpiffeID CRD skapades.
Väntar på att Spire-poddar ska köras... klart.
Distribuerad Spire.
Distribuerad NATS-server.
Skapade trafikpolicy CRD:er.
Distribuerad Mesh API.
Distribuerad Metrics API-server.
Distribuerad Prometheus-server nginx-mesh\/prometheus-server.
Distribuerad Grafana nginx-mesh\/grafana.
Distribuerad spårningsserver nginx-mesh\/zipkin.
Alla resurser skapade. Testar anslutningen till Service Mesh API-servern...
Ansluten till NGINX Service Mesh API framgångsrikt.
NGINX Service Mesh körs.För att få ytterligare parametrar, inklusive avancerade inställningar, kör detta kommando:
$ nginx-meshctl deploy –hKontrollera att control plane fungerar korrekt i namnrymden nginx-mesh, kan man göra så här:
$ kubectl get pods –n nginx-mesh
NAMN KLAR STATUS OMBSTART ÅLDER
grafana-6cc6958cd9-dccj6 1\/1 Kör 0 2d19h
mesh-api-6b95576c46-8npkb 1\/1 Kör 0 2d19h
nats-server-6d5c57f894-225qn 1\/1 Kör 0 2d19h
prometheus-server-65c95b788b-zkt95 1\/1 Kör 0 2d19h
smi-metrics-5986dfb8d5-q6gfj 1\/1 Kör 0 2d19h
spire-agent-5cf87 1\/1 Kör 0 2d19h
spire-agent-rr2tt 1\/1 Kör 0 2d19h
spire-agent-vwjbv 1\/1 Kör 0 2d19h
spire-server-0 2\/2 Kör 0 2d19h
zipkin-6f7cbf5467-ns6wc 1\/1 Kör 0 2d19hBeroende på distributionsalternativen som ställer in manuella eller automatiska injiceringspolicyer, kommer NGINX sidecar-proxies att läggas till appar som standard. För att inaktivera automatisk tillägg, läs
Till exempel, om vi distribuerar en applikation sleep i namnrymden default, och sedan kontrollerar Pod — ser vi två körande containrar, applikationen sleep och den relaterade sidecaren:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAMN KLAR STATUS OMBSTART ÅLDER
sleep-674f75ff4d-gxjf2 2\/2 Kör 0 5h23mVi kan också övervaka applikationen sleep i NGINX Plus, köra det här kommandot för att få åtkomst till sidecar från din lokala maskin:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886Sedan går vi helt enkelt till webbläsaren. Du kan också ansluta till Prometheus för att övervaka applikationen sleep.
Du kan använda separata Kubernetes-resurser för att konfigurera trafikpolicys, som åtkomstkontroll, hastighetsbegränsning och circuit breaking, för detta, se
Slutsats
NGINX Service Mesh är gratis att ladda ner från . Prova det i dina dev- och testmiljöer och .
För att prova NGINX Plus Ingress Controller, aktivera i 30 dagar, eller för att diskutera dina användningsalternativ.
Översättning av Pavel Demkovich, ingenjör på företaget . Systemadministration för 15 000 ₽ i månaden. Och som en separat enhet — utbildningscenter , praktik och inget annat än praktik.
Källa: habr.com
