á¡á
ááºážááŒáá·áºáá¬ážááŸááºážááᯠáááºááŒááᬠáá»á±áááºáá«áááºá
NSM ááẠá¡ááá²á·ááŒá
áºáááºá
áá±ážááá¯á·ááŸá¯á áá±áž ááá¯ážáá¬áááºááŸáá·áº áááºážá ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážááŒá±á¬áá·áº á¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬áž áááºážá áá áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ááœáẠá¡áááºá¡áá²áá»á¬ážááŸáá·áº ááŒáá·áºááŸááºáá±áá«áááºá áááºáá±á¬ááºááŸá¯áá»á¬ážááŒá¬áž áááºááœááºáá±ážááẠááá¯ááá¯ááŸá¯ááºááœá±ážáá¬ááŒá®ážá á¡ááŸá¬ážááŸá¬ááŒááºááŒááºáž ááŒá¿áá¬áá»á¬áž ááá¯ááá¯áááºáá²áá¬áᬠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááẠá¡áááºážá¡ááŒá áºáá»á¬áž ááá¯ááá¯ááá¯á¡ááºáá¬áááºá
ááá·áºá¡á¬áž áá¶á·ááá¯ážáá±ážááŒááºážááŒáá·áº NSM ááẠá€ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáá±ážáááº-
- áá¯á¶ááœá¯á¶ááŸá¯á¡áá¯á á¡áááºáááẠááá¯á¡áá±ážááŒá®ážáááºá áá±áá¬áá±á¬ááºáá»ááºááŸá¯áá áºáá¯ááẠáá¯áá¹ááá®áá áºáá¯á áááºááœá±ááŸáá·áº áá¯ááºáááá¹áá¬á¡ááœáẠááŸá áºá áẠáá±á«áºáá¬áááºážáá±á«ááºážáá»á¬ážá áœá¬ áá¯á¶ážááŸá¯á¶ážááá¯ááºáááºá NSM ááẠáá»áááºáááºááŸá¯á¡á¬ážáá¯á¶ážááᯠmTLS ááŒáá·áº áá¯ááºááŸááºáá¬ážááŒá±á¬ááºáž áá±áá»á¬á á±áááºá ááá¯á·ááŒá±á¬áá·áº ááœááºáááºáá±á«áºááŸá áááºáá¬áá»á¬ážá ááá¯ážáá°ááá¯ááºááá·áº á¡áá±ážááŒá®ážáá±áᬠáááŸááá«á Access Control ááẠááá·áºá¡á¬áž áááºáá±á¬ááºááŸá¯áá»á¬ážá¡á¬áž á¡ááŒá¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº áááºááœááºáá¯á¶á¡ááœáẠáá°áá«ááá»á¬ážáá»ááŸááºááá¯ááºá á±áá«áááºá
- áááºážá ááºážáááºáž á á®áá¶ááá·áºááœá²ááŸá¯. á¡ááºááá®áá±ážááŸááºážá áá¬ážááŸááºážá¡áá áºááᯠááá¯á·áá±á¬ááºááá·áºá¡áá« á¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááŸááá¬áá«á áááºážáá¶ááá¯á· á¡áááºá¡ááœá¬ážá¡áá¬ááᯠááá·áºáááºááŒááºážááŒáá·áº á áááºááá¯áá±áááºá NSM á áá¬ááºáááºáááºááŒááºáá±á¬ ááœááºááááºáá¬áá¬ááºá¡ááœá¬ážá¡áᬠá á®áá¶ááá·áºááœá²ááŸá¯ááŒáá·áºá á¡áá»áááºááŸáá·áºá¡áá»áŸ ááœá¬ážáá¬ááŸá¯ááá¯ážáá¬ááá·áº áááºáá±á¬ááºááŸá¯á¡áá áºáá»á¬ážá¡ááœáẠá¡ááœá¬ážá¡áá¬ááá·áºáááºááŸá¯áá°áá«áááᯠáááºáááºááŸááºááá¯ááºáááºá á¡ááŒááºááŸá¯ááºážááá·áºáááºááŒááºážááŸáá·áº áá¬ážáá áºááŒááºááŒááºážáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážá¡ááºá¹áá«áááºáá»á¬ážá ááá·áºáááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážá áááºážááŒá±á¬ááºážá á®ážáááºážááŸá¯á¡áá±á«áº á¡ááŒáá·áºá¡á ááááºážáá»á¯ááºáá±ážáá«áááºá
- ááŒááºááœááºáž. áááºáá±á¬ááºááŸá¯áá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬ááᯠá á®áá¶ááá·áºááœá²ááŒááºážááẠá¡ááŸá¬ážááŸá¬ááŒááºážááŸáá·áº á áááºáá°ážáá¯á¶áá±á¬áºááŒááºáž á¡áááºáááºááá¯ážáá áºáᯠááŒá áºááá¯ááºáááºá NSM ááẠNGINX Plus ááœááºáááŸáááá¯ááºáá±á¬á¡ááºá¹áá«áááºá¡á¬ážáá¯á¶ážááá¯ááŒáááá·áº built-in Grafana áááºááŸáºáá¯ááºááŒáá·áºá€á¡ááŒá±á¡áá±ááá¯ááá¯ááºááœááºááŒá±ááŸááºážáááºáá°áá®áá±ážáááºá ááá¯á·á¡ááŒáẠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážáá±á¬ Open Tracing ááẠááá·áºá¡á¬áž ááœá±áá±ážááœá±áá°áá»á¬ážááᯠá¡áá±ážá ááẠá á±á¬áá·áºááŒáá·áºááá¯ááºá á±áá«áááºá
- áá±á«ááºážá ááºáá±ážááá¯á·ááŒááºážáá¡áááºá ááá·áºáá¯áá¹ááá®ááẠá¡ááŒá¬ážáá°áá»á¬ážáá²á·ááá¯á·ááẠKubernetes áá±á«áºááœáẠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬ážáá¯ááºáá±á¬ááºááá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠá¡áá¯á¶ážáááŒá¯áá«áá NSM ááẠá¡ááœá±á¡ááŸá áºá¡ááá®áá±ážááŸááºážáá»á¬ážááᯠááá¯ááºááŸááºáááŸááá² ááá¬ážáá²á·á á±ááẠáá±áá»á¬á á±áááºá á¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážááá·áº NGINX Kubernetes Ingress Controller áá¡áá°á¡áá®ááŒáá·áºá á¡ááœá±á¡ááŸá áºáááºáá±á¬ááºááŸá¯áá»á¬ážááẠmesh áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáááºááœááºááá¯ááºáááºááŒá áºáááºá
NSM ááẠááœááºááááºáá¬á¡ááœá¬ážá¡áá¬ááœáẠáá¯ááºááŸááºááŒááºážááŸáá·áº á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážááᯠááœáá·áºáááºážááŒááºáá¬á áœá¬ á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá¯á¶ážááá¯á¶ááŒááºááŸá¯ááŸááá±á¬ áááºáááºážáá»ááºáá»á¬ážááœáẠá¡ááá®áá±ážááŸááºážáá¯á¶ááŒá¯á¶áá±ážááᯠá¡á¬ááá¶áá«áááºá áááºážááẠááá·áºá¡á¬áž ááŒáá·áºáá»ááºááŸá¯áá»á¬ážááᯠáá»ááºááŒááºáááá»á áœá¬ á áááºáááºááŸáá·áº ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážááẠáá°áá®áá±ážááá·áº ááœá±áá±ážááœá±áá° ááŒááºááá¯ááºá áœááºážááŸáá·áº ááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá»á¬ážááá¯áááºáž áá¶á·ááá¯ážáá±ážáá«áááºá áááºážááẠDevOps á¡ááœá²á·áá»á¬ážá¡á¬áž á¡ááá®áá±ážááŸááºážáá»á¬ážá á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááŒáá·áºáá»ááºááŒá®áž ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº á¡áá±ážá ááẠá¡ááœá¬ážá¡áᬠááááºážáá»á¯ááºááŸá¯ááá¯áááºáž áá¶á·ááá¯ážáá±ážáá«áááºá
NGINX áááºáá±á¬ááºááŸá¯ Mesh ááẠáááºááá¯á·á¡áá¯ááºáá¯ááºááááºážá
NSM ááœáẠá¡áá»á¬ážááá¯áẠ(áááºáá±á¬ááºááŸá¯á០áááºáá±á¬ááºááŸá¯) á¡ááœá¬ážá¡áá¬á¡ááœáẠá á¯á ááºážáá¬ážáá±á¬ áá±áá¬áá±áá¬ááºááŸáá·áº áá±á«ááºááá¯ááºá¡ááœá¬ážá¡áá¬á¡ááœáẠááŒáŸá¯ááºáá¬ážáá±á¬ NGINX Plus Ingress Controller áá«áááºááŒá®áž ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºáá áºáá¯áááºážááŒáá·áº á á®áá¶ááá·áºááœá²áá«áááºá
ááááºážáá»á¯ááºáá±ážáá±áá¬ááºááᯠNGINX Plus áá±áá¬áá±áá¬ááºá¡ááœáẠá¡áá°ážáá®ááá¯ááºážááœá²ááŒá®áž á¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážááŒá®áž NGINX Plus ááá¯ááºáá¬ážáá»á¬ážáá áºáá»áŸá±á¬áẠááŒáá·áºáá±áá¬ážáá±á¬ áá¬ááºááŒá±á¬ááááºážáá»á¯ááºááŸá¯á ááºážáá»ááºážáá»á¬ážááᯠáááºááŸááºáá±ážáá«áááºá
NSM ááœááºá mesh ááŸá áááºáá±á¬ááºááŸá¯áá áºáá¯á á®á¡ááœáẠsidecar proxy áá»á¬ážááᯠááá·áºááœááºážáá¬ážáááºá áááºážááá¯á·ááẠá¡á±á¬ááºáá« open source ááŒá±ááŸááºážáá»ááºáá»á¬ážááŸáá·áº áááºááœááºáááº-
- Grafanaá Prometheus ááá·áºáááºáá»ááºá¡ááŒááºáá¯á¶áá±á¬áºááŒááºážá áááºáááºáá¬ážáá±á¬ NSM á¡ááá·áºááẠááá·áºá¡áá¯ááºá¡ááœáẠáá°áá®áá±ážáááºá
- ááœááºá¡ááœááºážááŸá á¡áááºá¡ááœááºáááºážááŒá±á¬ááºážáá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºá¡ááœáẠKubernetes Ingress Controllersá
- SPIRE, CA ááœááºá¡ááœááºážááŸá áááºááŸááºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááŒááºážá ááŒáá·áºáá±ááŒááºážááŸáá·áº á¡ááºááááºáá¯ááºááŒááºážá
- NATSá ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºá០ááá¯ááºáá¬ážáá»á¬ážá¡áá áááºážááŒá±á¬ááºážá¡ááºááááºáá»á¬ážáá²á·ááá¯á·áá±á¬ áááºážááŒá±á¬ááºážááœááºážáá¶ááŸá¯áá»á¬ážáá²á·ááá¯á·áá±á¬ á á¬ááá¯áá±ážááá¯á·ááá¯ááºáá±á¬ á¡ááœááºá¡á á¬ážá
- ááŒá±áá¬áá¶ááŒááºážááᯠááœáá·áºáá«á ááŒáá·áºáá± á¡ááŸá¬ážááŸá¬ááŒááºááŒááºáž (Zipkin ááŸáá·áº Jaeger ááᯠáá¶á·ááá¯ážáá¬ážáááº);
- Prometheusá áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá áá»áááºáááºááŸá¯áá»á¬ážááŸáá·áº SSL áááºááœá²ááŸá¯ááºáááºááŸá¯áá»á¬ážáá²á·ááá¯á·áá±á¬ NGINX Plus ááá¯ááºáá¬ážáá»á¬ážá០áááá±áááá¹ááá¬áá»á¬ážááᯠá á¯áá±á¬ááºážááááºážáááºážáá«á
áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº á¡á áááºá¡ááá¯ááºážáá»á¬áž
NGINX Plus ááẠáá±áá¬áá±áá¬ááºá¡ááŒá Ạáá±ážááœá²ááá±á¬ááºá á® (á¡áá»á¬ážááá¯áẠá¡ááœá¬ážá¡áá¬) ááŸáá·áº Ingress ááááºážáá»á¯ááºáááááᬠ(áá±á«ááºááá¯ááº)á áááºáá±á¬ááºááŸá¯áá»á¬ážááŒá¬ážááŸá ááœááºááááºáá¬áááºážááŒá±á¬ááºážááᯠááŒá¬ážááŒááºááŒááºážááŸáá·áº á á®áá¶ááá·áºááœá²ááŒááºážááá¯á· áá«áááºáááºá
á¡ááºá¹áá«áááºáá»á¬áž áá«áááºáááº-
- á¡ááŒááºá¡ááŸáẠTLS (mTLS) á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážá
- áááºáá»áááºááœááºáá»áŸá¬;
- á¡ááŸá¬ážáá¶ááá¯ááºáááº;
- ááŒááºááŸá¯ááºážááá·áºáááºáá»ááº;
- áááºáááºážáá±á¬ááºááœááºážááŒááºážá
- á áááºážááŒá¬ááŸáá·áº áááá¹ááá® ááŒáá·áºáá»ááºááŸá¯áá»á¬ážá
- á¡áá¯á¶ážááŒá¯ááœáá·áºááá¯ááááºážáá»á¯ááºáááºá
NGINX áááºáá±á¬ááºááŸá¯ Mesh ááá¯ááœáá·áºáá±áá«áááºá
NSM ááᯠrun áááºáááºááá¯á¡ááºáááº-
- Kubernetes áááºáááºážáá»ááºááá¯á· áááºáá±á¬ááºááœáá·áºá NGINX Service Mesh ááᯠKubernetes á¡ááœáẠAmazon Elastic Container Service (EKS)á Azure Kubernetes Service (AKS)á Google Kubernetes Engine (GKE)á VMware vSphere ááŸáá·áº áá¯á¶ááŸáẠKubernetes á¡á á¯á¡áá±ážáá»á¬ážá¡áá«á¡ááẠKubernetes ááááºáá±á¬ááºážáá»á¬ážááœáẠáá¶á·ááá¯ážáá±ážáá¬ážáá«áááºá
- tool áá
áºáá¯
kubectl
á NSM áááºáááºááá·áºá ááºááœáẠáááºáááºáá¬ážáááºá - NGINX áááºáá±á¬ááºááŸá¯ Mesh áá¯ááºáá±ááŸá¯ áááºáá±á·áá»áºáá»á¬ážááá¯á· áááºáá±á¬ááºááœáá·áºá áááºáá±á·áá»áºááœáẠKubernetes á¡á
á¯á¡áá±ážááŸá ááœááºááááºáá¬áá»á¬ážá¡ááœáẠáá®ážááá·áºááŸááºáá¯á¶áááºááŒááºážááá¯á· á¡ááºáá¯ááºáááºáááºá¡ááœáẠááá¯á¡ááºáá±á¬ NSM áá¯á¶áá»á¬áž áá«ááŸááááºá Package ááŸá¬áááºáž áá«áááºáá«áááºá
nginx-meshctl
NSM ááᯠá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáá«áááºá
NSM ááᯠáá¯á¶áá±áááºáááºáá»á¬ážááŒáá·áº á¡áá¯á¶ážááŒá¯áááºá á¡á±á¬ááºáá« command ááᯠrun áá«á ááŒáá·áºáá»ááºá
ááºá¡ááœááºážá á¡á
áááºá¡ááá¯ááºážáá»á¬áž á¡á±á¬ááºááŒááºá
áœá¬áááºáááºááŒááºážááᯠááœáŸááºááŒááá·áº áááºáá±á·áá»áºáá»á¬ážááᯠááŒáááŒá®áž áá±á¬ááºáá¯á¶ážááœáẠNSM ááẠáá®ážááŒá¬áž namespace ááœáẠá¡áá¯ááºáá¯ááºáá±ááŒá±á¬ááºáž ááœáŸááºááŒááá·áº áááºáá±á·áá»áºáá
áºáᯠ(áááºááááŠážá
áœá¬ ááá¯á¡ááºáááº
$ 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.
á¡ááá·áºááŒáá·áºáááºáááºáá»á¬ážá¡áá«á¡ááẠáá±á¬ááºáááºááœá±ážáá»ááºá áá¬áá»á¬ážá¡ááœááºá á€á¡áááá·áºááᯠáá¯ááºáá±á¬ááºáá«-
$ nginx-meshctl deploy âh
ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááẠnamespace ááœááºááŸááºáááºá áœá¬á¡áá¯ááºáá¯ááºááŒá±á¬ááºážá á áºáá±ážáá«á nginx-meshá áááºá€ááá¯á·áá¯ááºáá±á¬ááºááá¯ááºáááº-
$ 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
áááºá
áœá² ááá¯á·ááá¯áẠá¡ááá¯á¡áá»á±á¬áẠáá±ážááá¯ážááŒááºážááá¯ááºáᬠáá°áá«ááá»á¬ážááᯠáááºááŸááºááá·áº ááŒáá·áºáá»ááºááŸá¯áááºáááºáá»á¬ážáá±á«áºáá°áááºá NGINX ááá¯ááºáá¬ážááá±á¬ááºá
á®áá»á¬ážááᯠáá¯á¶áá±ááŒáá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážááá¯á· áá±á«ááºážááá·áºáááºááŒá
áºáááºá á¡ááá¯á¡áá»á±á¬áẠááá·áºááœááºážááŒááºážááᯠááááºáááºá áááºáá«á
á¥ááá¬á¡á¬ážááŒáá·áºá á¡áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááᯠááŒáá·áºáá»ááºáá¬ážáá»áŸááºá á¡ááẠnamespace ááœáẠáá»ááºááœááºááŒá®ážáá±á¬áẠPod ááá¯á á áºáá±ážáá« - á¡ááá®áá±ážááŸááºážááœáá·áºáá¬ážáá±á¬ááœááºááááºáá¬ááŸá áºáá¯ááá¯ááœá±á·áááá·áºáááºá á¡ááẠááŸáá·áºáááºá ááºááá¯ááºáá¬áž-
$ kubectl apply âf sleep.yaml
$ kubectl get pods ân default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23m
á¡ááºááºááᯠáá»áœááºá¯ááºááá¯á·áááºáž á á±á¬áá·áºááŒáá·áºááá¯ááºáááºá á¡ááẠááá·áºá ááºááœááºážá ááºá០sidecar áááºáá±á¬ááºááẠá€á¡áááá·áºááᯠNGINX Plus á¡ááá·áºááœáẠáá¯ááºáá±á¬ááºáááº-
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886
ááŒá®ážááẠáá«ááá¯á· áááºááá¯ááºáá¯á¶áá²á
áááºáá±á¬ááºááááºážáá»á¯ááºááŸá¯á ááŸá¯ááºážááá·áºáááºáá»ááºááŸáá·áº áááºáááºážáá±á¬ááºáá»ááºááŒááºážáá²á·ááá¯á·áá±á¬ áá¬ááºá¡ááœá¬ážá¡áá¬áá°áá«ááá»á¬ážááᯠáááºááŸááºáááºá¡ááœáẠáááºáá
áºáŠážáá»ááºážá
á® Kubernetes áááºážááŒá
áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
áá±á¬ááºáá»ááº
NGINX Service Mesh ááœáẠá¡ááá²á·áá±á«ááºážáá¯ááºááá°ááá¯ááºáá«áááºá
NGINX Plus Ingress Controller ááᯠá
ááºážáá¯á¶ážáááºá á
áááºáá«á
áá¯áá¹ááá®á¡ááºáá»ááºáá®áᬠPavel Demkovich ááŸáá¬áá¬ááŒááºááá¯áááºá
source: www.habr.com