Available ang NGINX Service Mesh

Available ang NGINX Service Mesh

Ikinalulugod naming ipakita ang isang preview na bersyon NGINX Service Mesh (NSM), isang bundle na magaan na service mesh na gumagamit ng NGINX Plus-based na data plane upang pamahalaan ang trapiko ng container sa mga kapaligiran ng Kubernetes.

Libre ang NSM i-download dito. Umaasa kaming susubukan mo ito para sa mga dev at mga kapaligiran sa pagsubok - at inaasahan ang iyong feedback sa GitHub.

Ang pagpapatupad ng pamamaraan ng microservices ay puno ng mga kahirapan habang lumalaki ang laki ng paghahatid, pati na rin ang pagiging kumplikado nito. Ang komunikasyon sa pagitan ng mga serbisyo ay nagiging mas kumplikado, ang mga problema sa pag-debug ay nagiging mas mahirap, at parami nang parami ang mga serbisyo ay nangangailangan ng mas maraming mapagkukunan upang pamahalaan.

Nilulutas ng NSM ang mga problemang ito sa pamamagitan ng pagbibigay sa iyo ng:

  • katiwasayan, na ngayon ay mas mahalaga kaysa dati. Ang isang paglabag sa data ay maaaring magastos ng isang kumpanya ng milyun-milyong dolyar taun-taon sa nawalang kita at reputasyon. Tinitiyak ng NSM na ang lahat ng koneksyon ay naka-encrypt gamit ang mTLS, kaya walang sensitibong data na maaaring manakaw ng mga hacker sa network. Binibigyang-daan ka ng kontrol sa pag-access na magtakda ng mga patakaran para sa kung paano nakikipag-ugnayan ang mga serbisyo sa ibang mga serbisyo.
  • Pamamahala ng Trapiko. Kapag nagpapadala ng bagong bersyon ng isang application, maaaring gusto mong magsimula sa pamamagitan ng paghihigpit sa papasok na trapiko dito kung sakaling magkaroon ng error. Sa matalinong pamamahala sa trapiko ng container ng NSM, maaari kang magtakda ng patakaran sa paghihigpit sa trapiko para sa mga bagong serbisyo na magpapalaki ng trapiko sa paglipas ng panahon. Ang iba pang mga tampok, tulad ng paglilimita sa bilis at mga circuit breaker, ay nagbibigay sa iyo ng ganap na kontrol sa daloy ng trapiko ng lahat ng iyong mga serbisyo.
  • Pagpapakita. Ang pamamahala sa libu-libong serbisyo ay maaaring maging isang pag-debug at visualization na bangungot. Tumutulong ang NSM na harapin ang sitwasyong ito gamit ang built-in na Grafana dashboard na nagpapakita ng lahat ng feature na available sa NGINX Plus. At din ang ipinatupad na Open Tracing ay nagbibigay-daan sa iyo na subaybayan ang mga transaksyon nang detalyado.
  • Mga paghahatid ng hybrid, kung ang iyong kumpanya, tulad ng karamihan sa iba, ay hindi gumagamit ng imprastraktura na ganap na tumatakbo sa Kubernetes. Tinitiyak ng NSM na ang mga legacy na aplikasyon ay hindi pinababayaan. Sa tulong ng ipinatupad na NGINX Kubernetes Ingress Controller, ang mga legacy na serbisyo ay magagawang makipag-ugnayan sa mga serbisyo ng mesh, at vice versa.

Tinitiyak din ng NSM ang seguridad ng aplikasyon sa mga zero trust environment sa pamamagitan ng malinaw na paglalapat ng encryption at authentication sa trapiko ng container. Nagbibigay din ito ng visibility at pagsusuri sa transaksyon, na tumutulong sa iyong mabilis at tumpak na maglunsad ng mga deployment at mag-troubleshoot ng mga problema. Nagbibigay din ito ng granular na kontrol sa trapiko, na nagpapahintulot sa mga DevOps team na mag-deploy at mag-optimize ng mga bahagi ng mga application habang pinapagana ang mga developer na bumuo at madaling ikonekta ang kanilang mga ipinamamahaging application.

Paano gumagana ang NGINX Service Mesh?

Binubuo ang NSM ng pinag-isang data plane para sa horizontal (service-to-service) na trapiko at isang naka-embed na NGINX Plus Ingress Controller para sa patayong trapiko, na pinamamahalaan ng isang control plane.

Ang control plane ay partikular na idinisenyo at na-optimize para sa NGINX Plus data plane at tumutukoy sa mga panuntunan sa pagkontrol ng trapiko na ipinamamahagi sa mga sidecar ng NGINX Plus.

Sa NSM, naka-install ang mga sidecar proxy para sa bawat serbisyo sa mesh. Nag-interface sila sa mga sumusunod na open source na solusyon:

  • Tinutulungan ka ng Grafana, Prometheus parameter visualization, built-in na panel ng NSM sa iyong trabaho;
  • Kubernetes Ingress Controllers, para sa pamamahala ng papasok at papalabas na trapiko sa mesh;
  • SPIRE, CA para sa pamamahala, pamamahagi at pag-update ng mga sertipiko sa mesh;
  • NATS, isang scalable system para sa pagpapadala ng mga mensahe, tulad ng mga update sa ruta, mula sa control plane hanggang sa mga sidecar;
  • Open Tracing, distributed debugging (Zipkin at Jaeger suportado);
  • Ang Prometheus, nangongolekta at nag-iimbak ng mga katangian mula sa NGINX Plus sidecar, gaya ng bilang ng mga kahilingan, koneksyon at SSL handshake.

Mga function at bahagi

Sinasaklaw ng NGINX Plus bilang isang data plane ang sidecar proxy (pahalang na trapiko) at Ingress controller (vertical), na humaharang at namamahala sa trapiko ng container sa pagitan ng mga serbisyo.

Kasama sa mga tampok ang:

  • Mutual TLS (mTLS) authentication;
  • Pagbalanse ng load;
  • Fault tolerance;
  • Limitasyon ng bilis;
  • Pagsira ng circuit;
  • Blue-green at canary deployment;
  • Pagkokontrolado.

Inilunsad ang NGINX Service Mesh

Upang patakbuhin ang NSM kailangan mo:

  • access sa kapaligiran ng Kubernetes. Sinusuportahan ang NGINX Service Mesh sa maraming platform ng Kubernetes, kabilang ang Amazon Elastic Container Service para sa Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere, at regular na mga cluster ng Kubernetes na naka-deploy sa mga server ng hardware;
  • Kasangkapan kubectl, na naka-install sa makina kung saan mai-install ang NSM;
  • Access sa NGINX Service Mesh na mga pakete ng paglabas. Naglalaman ang package ng mga larawang NSM na kailangan para sa pag-upload sa isang pribadong registry para sa mga container na available sa cluster ng Kubernetes. Ang pakete ay naglalaman din nginx-meshctl, kailangan upang i-deploy ang NSM.

Upang i-deploy ang NSM na may mga default na setting, patakbuhin ang sumusunod na command. Sa panahon ng pag-deploy, ipinapakita ang mga mensahe na nagpapahiwatig ng matagumpay na pag-install ng mga bahagi at, sa wakas, isang mensahe na nagsasaad na ang NSM ay tumatakbo sa isang hiwalay na namespace (kailangan mo munang i-download at ilagay ito sa rehistro, tinatayang tagasalin):

$ 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.

Para sa higit pang mga opsyon, kabilang ang mga advanced na setting, patakbuhin ang command na ito:

$ nginx-meshctl deploy –h

Tingnan kung gumagana nang tama ang control plane sa namespace nginx-mesh, kaya mo yan:

$ 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

Depende sa mga setting ng deployment na nagtatakda ng manual o awtomatikong mga patakaran sa pag-iniksyon, ang NGINX sidecars proxies ay idaragdag sa mga application bilang default. Upang i-disable ang awtomatikong pagdaragdag, basahin dito

Halimbawa, kung i-deploy namin ang application matulog sa namespace default, at pagkatapos ay suriin ang Pod - makikita natin ang dalawang tumatakbong lalagyan, ang application matulog at ang nauugnay na sidecar:

$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME                     READY   STATUS    RESTARTS   AGE
sleep-674f75ff4d-gxjf2   2/2     Running   0          5h23m

Maaari din naming subaybayan ang application matulog sa panel ng NGINX Plus, pinapatakbo ang command na ito upang ma-access ang sidecar mula sa iyong lokal na makina:

$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886

Tapos papasok lang kami dito sa browser. Maaari ka ring kumonekta sa Prometheus upang subaybayan ang application matulog.

Maaari mong gamitin ang mga indibidwal na mapagkukunan ng Kubernetes upang i-configure ang mga patakaran sa trapiko, tulad ng kontrol sa pag-access, paglilimita sa rate at pagsira ng circuit, para dito tingnan dokumentasyon

Konklusyon

Ang NGINX Service Mesh ay magagamit para sa libreng pag-download sa portal F5. Subukan ito sa iyong dev at pagsubok na mga kapaligiran at sumulat sa amin tungkol sa mga resulta.

Upang subukan ang NGINX Plus Ingress Controller, i-activate panahon ng libreng pagsubok sa loob ng 30 araw, o Makipag-ugnayan sa amin para talakayin ang iyong mga kaso ng paggamit.

Pagsasalin ni Pavel Demkovich, inhinyero ng kumpanya Southbridge. Pangangasiwa ng system para sa RUB 15 bawat buwan. At bilang isang hiwalay na dibisyon - isang sentro ng pagsasanay Slurm, pagsasanay at walang iba kundi ang pagsasanay.

Pinagmulan: www.habr.com

Magdagdag ng komento