در اینجا آنچه شما باید در مورد Istio بدانید، پلتفرم مش سرویس منبع باز Google برای مدیریت اشتراک گذاری داده ها بین میکروسرویس ها در یک شبکه است.
- خدمات مش چیست؟
- اجزای مش سرویس Istio
- حالت محیط Istio
- قابلیتهای مش سرویس Istio
- نحوه شروع کار با Istio
معماریهای میکروسرویسها برخی از مشکلات را حل میکنند اما برخی دیگر را معرفی میکنند. تقسیم برنامهها به سرویسهای مستقل، توسعه، بهروزرسانی و مقیاسبندی را ساده میکند. اما همچنین قطعات متحرک بیشتری را برای اتصال و ایمن به شما می دهد. مدیریت تمام خدمات شبکه – تعادل بار، مدیریت ترافیک، احراز هویت و مجوز، و غیره – میتواند بسیار پیچیده شود.
اصطلاح این فضای شبکه ای بین سرویس های موجود در خوشه Kubernetes شما خدمات مش است. یک پروژه Google، Istio، تماماً در مورد ارائه راهی برای مدیریت مش خدمات خوشه شما قبل از تبدیل شدن به یک خرخر است.
مش سرویس چیست؟
بعضی از رفتارهای رایج در اطراف هر گروهی از برنامه های کاربردی شبکه ظاهر می شوند. به عنوان مثال، نیاز به بارگذاری تعادل بین نمونههای سرویس، یا توانایی A/B تست ترکیبهای مختلف سرویسها، یا راهاندازی احراز هویت انتها به انتها در میان زنجیرههای خدمات. این رفتارها، و نحوه اعمال آنها، در مجموع به عنوان مش خدمات شناخته می شوند.
مدیریت مش سرویس نباید به خود سرویس ها واگذار شود. هیچ سرویسی به تنهایی در موقعیت خوبی برای انجام کاری از بالا به پایین نیست و به هر حال واقعاً نباید کار سرویس باشد. بهتر است سیستمی داشته باشید که بین سرویس ها و شبکه قرار گیرد. این سیستم دارای دو عملکرد کلیدی است: مدیریت و انتزاع.
- مدیریت باعث میشود خود سرویسها با مشکلات مدیریت ترافیک شبکه مواجه نشوند – مواردی مانند متعادل کردن بار، مسیریابی، تلاش مجدد و غیره.
- انتزاع لایهای از انتزاع را برای مدیران فراهم میکند و تصمیمگیری در سطح بالا در مورد ترافیک شبکه در خوشه را آسان میکند – کنترلهای خطمشی، معیارها و گزارشگیری، کشف سرویس، ارتباطات بینسرویس ایمن از طریق TLS و غیره
اجزای مش سرویس Istio
Istio با ارائه دو قطعه اساسی معماری برای خوشه شما به عنوان یک شبکه خدماتی کار می کند: یک صفحه داده و یک صفحه کنترل.
سطح داده ترافیک شبکه را بین سرویسهای موجود در مش، از طریق گروهی از پراکسی های شبکه. پروکسی Istio از طریق یک پروژه منبع باز به نام Envoy انجام می شود.
صفحه کنترل، سرویسی به نام Istiod ، کشف و مدیریت سرویس را انجام میدهد، همچنین گواهیهای مورد استفاده برای ارتباط امن در صفحه داده را تولید میکند.
Istio همچنین API هایی را برای کنترل این سرویس ها ارائه می دهد که در دسته های انگشت شماری قرار می گیرند.
خدمات مجازی
یک سرویس مجازی به شما امکان میدهد قوانینی برای نحوه ایجاد ترافیک مسیریابی می شود. هر سرویس مجازی می تواند برای هدایت ترافیک به یک سرویس واقعی در مش استفاده شود. به عنوان مثال، اگر A/B دو پیاده سازی متفاوت از یک API معین را آزمایش می کنید، می توانید نیمی از ترافیک را به یک نسخه از API هدایت کنید. یا میتوانید تماسها را به نقاط انتهایی API مختلف در یک دامنه معین به سرورهای فیزیکی مختلف نگاشت کنید.
قوانین مقصد
قوانین مقصد کنترل میکند که چه اتفاقی برای ترافیک میافتد پس از از طریق یک سرویس مجازی مسیریابی شد. به عنوان مثال، ترافیک ورودی به پورت های مختلف می تواند سیاست های متعادل کننده بار متفاوتی داشته باشد.
دروازه ها
درگاهها ترافیک داخل و خارج از مش را به طور کلی مدیریت میکنند ، با قابلیت تعادل بار و کنترل پروتکل شبکه L4-L6. همچنین می توانید یک سرویس مجازی را به یک دروازه متصل کنید تا کنترل کنید که ترافیک پس از آن به کجا هدایت می شود.
سرور وب و سیستم پراکسی NGINX را می توان به عنوان کنترل کننده ورود استفاده کرد. a> در ایستیو. به این ترتیب، از ویژگیهای NGINX برای متعادلسازی بار پیشرفته و مسیریابی ترافیک میتوان برای هدایت ترافیک به مش Istio استفاده کرد، از جمله ویژگیهایی که فقط در نسخه تجاری. اگر قبلاً با ویژگیهای مسیریابی NGINX آشنا هستید، میتوانید از این طریق از آنها در مش Istio استفاده کنید.
ورودی های سرویس
ورودیهای سرویس به شما امکان میدهد یک ورودی به Istio اضافه کنید ثبت خدمات شناخته شده یک سرویس ثبتشده مانند یک API خارجی بهگونهای تلقی میشود که گویی بخشی از شبکه Istio است، حتی اگر اینطور نباشد.
ماشین های جانبی
پراکسیهای Envoy بهطور پیشفرض پیکربندی شدهاند تا به ترافیک ورودی از همه پورتها اجازه دهند و به ترافیک خروجی به هر بار کاری دیگر در مش اجازه دهند. برای تغییر این رفتار میتوانید از یک پیکربندی ماشین کناری استفاده کنید.
حالت محیط Istio
یک ویژگی نسبتاً جدید Istio، “حالت محیط” به شما امکان میدهد Istio را بدون اجرای پروکسی Envoy در کنار هر پاد برنامه Kubernetes مستقر کنید. . در عوض، هر گره خوشه ای Kubernetes (به جای هر پاد برنامه) دارای یک عامل Istio است، که به معنای پردازش کلی کمتر برای مسیریابی ترافیک است. همچنین به یک رویکرد انتقالی تر برای عرضه Istio در یک خوشه Kubernetes اجازه می دهد. توجه داشته باشید که حالت محیطی هنوز هم بسیار جدید است، و هنوز برای استفاده در تولید توصیه نمی شود.
قابلیتهای مش سرویس Istio
اولین و با ارزشترین مزیتی که ایستیو ارائه میکند، انتزاع است – راهی برای حفظ پیچیدگیهای یک شبکه مشبک خدماتی. میتوانید هر تغییری را بهصورت برنامهریزی در مش با دستور Istio انجام دهید، بهجای اینکه مجموعهای از مؤلفهها را با دست پیکربندی کنید و امیدوار باشید که تغییرات تأثیر مناسبی داشته باشند. برای پیروی از خطمشیها یا سهمیههای جدید شبکه، سرویسهای متصل به مش نیازی به برنامهریزی مجدد از داخل ندارند، و فضاهای شبکه بین آنها نیز نیازی به لمس مستقیم ندارند.
Istio همچنین به شما امکان می دهد تغییرات غیر مخرب یا آزمایشی را در پیکربندی شبکه خوشه انجام دهید. اگر میخواهید یک طرحبندی شبکه جدید را بهطور کامل یا جزئی ارائه کنید، یا A/B پیکربندی فعلی را در برابر یک طرح جدید آزمایش کنید، Istio به شما امکان میدهد این کار را به روشی از بالا به پایین انجام دهید. همچنین میتوانید آن تغییرات را در صورت ناسالم بودن آنها لغو کنید.
سومین مزیت مشاهده پذیری است. Istio آمار و گزارش دقیقی در مورد آنچه بین کانتینرها و گره های خوشه ای می گذرد ارائه می دهد. اگر مشکلی پیشبینینشده وجود داشته باشد، اگر چیزی به خطمشی پایبند نیست، یا اگر تغییراتی که انجام دادهاید نتیجه معکوس داشته باشد، میتوانید در کوتاهمدت از آن مطلع شوید.
Istio همچنین راههایی برای اجرای الگوهای رایجی که در یک مش سرویس میبینید ارائه میکند. یک مثال الگوی مدار شکن است، راهی برای اگر بکاند مشکلی را گزارش میکند و نمیتواند درخواستها را به موقع انجام دهد، از بمباران شدن سرویس با درخواستها جلوگیری کنید. Istio یک الگوی قطع کننده مدار را به عنوان بخشی از کتابخانه استاندارد اجرای خط مشی خود ارائه می دهد.
در نهایت، در حالی که Istio به طور مستقیم و عمیق با Kubernetes کار می کند، به گونه ای طراحی شده است که مستقل از پلتفرم باشد. Istio به همان استانداردهای باز متصل می شود که خود Kubernetes به آن تکیه می کند. ایستیو همچنین میتواند بهصورت مستقل بر روی سیستمهای فردی یا سایر سیستمهای ارکستراسیون مانند Mesos و Nomad کار کند.
چگونه با Istio شروع کنیم
اگر قبلاً با Kubernetes تجربه دارید، یک راه خوب برای یادگیری Istio این است که از خوشه Kubernetes استفاده کنید—نه که قبلاً در حال تولید است!—و ایستیو را با استفاده از روش استقرار ترجیحی خود روی آن نصب کنید. سپس میتوانید یک نمونه برنامه کاربردی که ویژگیهای رایج Istio را نشان میدهد، مانند مدیریت ترافیک و مشاهده پذیری. این باید تجربه سطح زمینی با ایستیو را قبل از استقرار آن برای سرویس مشبک در کلاستر برنامه شما به شما بدهد.
Red Hat، که به عنوان بخشی از پروژه OpenShift این شرکت با قدرت Kubernetes در ایستیو سرمایه گذاری کرده است، آموزشهایی ارائه میدهد که شما را از طریق استقرار و سناریوهای مدیریتی رایج Istio راهنمایی میکند.
پست های مرتبط
ایستیو چیست؟ مش سرویس Kubernetes توضیح داد
ایستیو چیست؟ مش سرویس Kubernetes توضیح داد
ایستیو چیست؟ مش سرویس Kubernetes توضیح داد