ما خوشحالیم که یک نسخه پیش نمایش را ارائه می دهیم
NSM رایگان است
با افزایش مقیاس تحویل و همچنین پیچیدگی آن، اجرای روش ریزسرویس ها مملو از مشکلات است. ارتباط بین سرویسها پیچیدهتر میشود، مشکلات اشکالزدایی دشوارتر میشوند و خدمات بیشتر و بیشتر به منابع بیشتری برای مدیریت نیاز دارند.
NSM با ارائه موارد زیر این مشکلات را حل می کند:
- امنیت، که اکنون مهمتر از همیشه است. نقض داده ها می تواند سالانه میلیون ها دلار از دست دادن درآمد و شهرت یک شرکت را به همراه داشته باشد. NSM تضمین می کند که همه اتصالات با استفاده از mTLS رمزگذاری شده اند، بنابراین هیچ داده حساسی وجود ندارد که توسط هکرها از طریق شبکه به سرقت برود. کنترل دسترسی به شما امکان می دهد خط مشی هایی را برای نحوه ارتباط سرویس ها با سایر سرویس ها تنظیم کنید.
- مدیریت ترافیک. هنگام ارسال یک نسخه جدید از یک برنامه، ممکن است بخواهید با محدود کردن ترافیک ورودی به آن در صورت بروز خطا، شروع کنید. با مدیریت هوشمند ترافیک کانتینری NSM، می توانید یک خط مشی محدودیت ترافیکی را برای سرویس های جدید تنظیم کنید که به مرور زمان ترافیک را افزایش می دهد. سایر ویژگی ها، مانند محدودیت سرعت و قطع کننده مدار، به شما کنترل کامل بر جریان ترافیک تمام خدمات شما می دهد.
- تجسم. مدیریت هزاران سرویس می تواند یک کابوس اشکال زدایی و تجسم باشد. NSM با داشبورد داخلی Grafana که تمام ویژگیهای موجود در NGINX Plus را نمایش میدهد، به مقابله با این وضعیت کمک میکند. و همچنین Open Tracing پیاده سازی شده به شما اجازه می دهد تا تراکنش ها را با جزئیات نظارت کنید.
- تحویل هیبریدی، اگر شرکت شما، مانند بسیاری دیگر، از زیرساختی که به طور کامل روی Kubernetes اجرا می شود استفاده نمی کند. NSM تضمین می کند که برنامه های قدیمی بدون نظارت رها نمی شوند. با کمک کنترل کننده ورودی Kubernetes NGINX پیاده سازی شده، سرویس های قدیمی قادر خواهند بود با سرویس های مش ارتباط برقرار کنند و بالعکس.
NSM همچنین با اعمال شفاف رمزگذاری و احراز هویت در ترافیک کانتینر، امنیت برنامه را در محیط های بدون اعتماد تضمین می کند. همچنین قابلیت مشاهده و تجزیه و تحلیل تراکنش ها را فراهم می کند و به شما کمک می کند تا به سرعت و دقیق استقرارها را راه اندازی کنید و مشکلات را عیب یابی کنید. همچنین کنترل ترافیک گرانول را ارائه میکند و به تیمهای DevOps اجازه میدهد تا بخشهایی از برنامهها را مستقر کرده و بهینهسازی کنند و در عین حال توسعهدهندگان را قادر میسازد تا برنامههای توزیعشده خود را بسازند و به راحتی به هم متصل کنند.
مش سرویس NGINX چگونه کار می کند؟
NSM شامل یک صفحه داده یکپارچه برای ترافیک افقی (سرویس به سرویس) و یک کنترل کننده ورودی NGINX Plus تعبیه شده برای ترافیک عمودی است که توسط یک صفحه کنترل مدیریت می شود.
صفحه کنترل به طور خاص برای هواپیمای داده NGINX Plus طراحی و بهینه شده است و قوانین کنترل ترافیک توزیع شده در بین خودروهای جانبی NGINX Plus را تعریف می کند.
در NSM، پراکسی های sidecars برای هر سرویس در مش نصب می شوند. آنها با راه حل های منبع باز زیر ارتباط برقرار می کنند:
- Grafana، تجسم پارامتر Prometheus، پنل داخلی NSM به شما در انجام کار کمک می کند.
- کنترلرهای ورودی Kubernetes، برای مدیریت ترافیک ورودی و خروجی در مش.
- SPIRE، CA برای مدیریت، توزیع و بهروزرسانی گواهیها در مش.
- NATS، یک سیستم مقیاس پذیر برای ارسال پیام ها، مانند به روز رسانی مسیر، از هواپیمای کنترلی به کارگاه های جانبی.
- ردیابی باز، اشکال زدایی توزیع شده (پشتیبانی از Zipkin و Jaeger)؛
- Prometheus، ویژگیهای NGINX Plus مانند تعداد درخواستها، اتصالات و دست دادن SSL را جمعآوری و ذخیره میکند.
توابع و اجزاء
NGINX Plus به عنوان یک هواپیمای داده، پراکسی سایدکار (ترافیک افقی) و کنترل کننده ورودی (عمودی)، رهگیری و مدیریت ترافیک کانتینر بین سرویس ها را پوشش می دهد.
امکانات عبارتند از:
- احراز هویت متقابل TLS (mTLS)؛
- تعادل بار؛
- تحمل خطا؛
- محدودیت سرعت؛
- قطع شدن مدار؛
- استقرار سبز آبی و قناری؛
- کنترل دسترسی
راه اندازی NGINX Service Mesh
برای اجرای NSM شما نیاز دارید:
- دسترسی به محیط Kubernetes NGINX Service Mesh در بسیاری از پلتفرمهای Kubernetes پشتیبانی میشود، از جمله Amazon Elastic Container Service برای Kubernetes (EKS)، Azure Kubernetes Service (AKS)، Google Kubernetes Engine (GKE)، VMware vSphere، و خوشههای Kubernetes معمولی مستقر در سرورهای سختافزاری.
- ابزار
kubectl
، روی دستگاهی که NSM از آن نصب خواهد شد نصب شده است. - دسترسی به بسته های انتشار NGINX Service Mesh. این بسته حاوی تصاویر NSM مورد نیاز برای آپلود در یک رجیستری خصوصی برای کانتینرهای موجود در خوشه Kubernetes است. بسته نیز حاوی
nginx-meshctl
، برای استقرار NSM مورد نیاز است.
برای استقرار NSM با تنظیمات پیش فرض، دستور زیر را اجرا کنید. در حین استقرار، پیامهایی نمایش داده میشود که نشاندهنده نصب موفقیتآمیز کامپوننتها است و در نهایت، پیامی نشان میدهد که NSM در یک فضای نام جداگانه در حال اجرا است (ابتدا باید
$ 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
بررسی کنید که صفحه کنترل در فضای نام به درستی کار می کند 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 به طور پیشفرض به برنامهها اضافه میشوند. برای غیرفعال کردن افزودن خودکار، بخوانید
به عنوان مثال، اگر ما برنامه را مستقر کنیم خواب در فضای نام به طور پیش فرض، و سپس Pod را بررسی کنید - دو کانتینر در حال اجرا، برنامه را خواهیم دید خواب و ماشین جانبی مرتبط:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23m
ما همچنین می توانیم برنامه را نظارت کنیم خواب در پانل NGINX Plus، این دستور را برای دسترسی به سایدکار از دستگاه محلی خود اجرا کنید:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886
بعد فقط وارد می شویم
میتوانید از منابع مجزای Kubernetes برای پیکربندی خطمشیهای ترافیک، مانند کنترل دسترسی، محدود کردن نرخ و قطع شدن مدار استفاده کنید.
نتیجه
NGINX Service Mesh برای دانلود رایگان در دسترس است
برای امتحان NGINX Plus Ingress Controller، آن را فعال کنید
ترجمه پاول دمکوویچ، مهندس شرکت
منبع: www.habr.com