برنامه نویسی

Kubernetes برای فقرا – انجمن DEV

Kubernetes عالی است، از چند سال گذشته، ثابت کرده است که بهترین نرم افزار ارکستراسیون کانتینر در بازار است.

با این حال، 2 مشکل وجود دارد، هر چند:

1. یادگیری (و تلفظ، lol) دشوار است

مدیریت موفقیت آمیز خوشه های Kubernetes مستلزم درک عمیق بسیاری از مفاهیم، ​​تعاریف و شیوه های مرتبط است. با توجه به چیزهای زیادی که باید در نظر گرفت، برای توسعه دهندگان می تواند دشوار باشد که بدانند چگونه برنامه ها را به موثرترین راه استقرار دهند.

برای استقرار برنامه‌ها در Kubernetes به یک فرآیند CI/CD نیاز دارید، بنابراین باید کمی در مورد ساخت تصاویر کانتینر، فشار دادن آن به رجیستری کانتینر، گفتن به خوشه برای کشیدن و اجرای یک ظرف، نظارت بر گزارش‌ها، یاد بگیرید.

Kubernetes سخت است

2. ارزان نیست

Google Cloud، AWS، Azure، … همه آنها خدمات موتور Kubernetes را به خوبی مدیریت می کنند. و آنها ارزان نیستند، برای طرح کنترل و همچنین برای استفاده از موتور محاسباتی برای هر گره از یک خوشه به طور جداگانه هزینه دریافت خواهید کرد. (بدون احتساب سایر هزینه های شبکه و ذخیره سازی)

اگر به فکر اجرای خوشه Kubernetes مدیریت شده خود بر روی زیرساخت خود هستید، پس برای مقابله با اولین مشکل – پیچیدگی Kubernetes – برمی‌گردید.

اما این نیست، اگر به خوبی بر حجم کاری خود نظارت نداشته باشید، مانند استفاده از منابع خود را کنترل و تجزیه و تحلیل کنید، ممکن است در پایان ماه مجبور شوید قبوض هنگفت Kubernetes را بپردازید.

Kubernetes گران است

مسئله دیگر استقرار است، برای استقرار در K8S، همانطور که قبلاً در بخش (1) ذکر کردم، باید مراحل زیادی را طی کنید، یا می توانید از خدمات CI/CD مانند Github Actions یا Bitbucket Pipeline برای خودکارسازی وظایف استفاده کنید.

این به شما کمک می کند تا مهندسان DevOps را برای انجام چنین کاری پیدا کنید. و به من اعتماد کن، منابع انسانی بسیار گرانتر از هر منبع زیرساختی است.

علاوه بر این، خدمات CI/CD رایگان نیستند. در ابتدا ممکن است فکر کنید هزار دقیقه ساخت در ماه عدد بزرگی است و هرگز به آن نخواهید رسید. با این حال، در واقعیت، اغلب به یک عدد بسیار بالاتر ختم می شود.

(فقط یک محاسبات سریع انجام دهید: اگر چهار نفر دارید که روی یک پروژه کار می کنند و هر یک از آنها به طور متوسط ​​سه بار در روز می سازند و هر بیلد سه دقیقه طول می کشد، تا پایان ماه 1080 دقیقه را صرف ساختن خواهید کرد. : 4 x 3 x 3 x 30 = 1080 دقیقه، ببینید؟)

توجه داشته باشید که احتمالاً بیش از یک پروژه در ماه خواهید داشت و ساخت همه پروژه ها کمتر از سه دقیقه طول نمی کشد!

دقیقه ساخت CI/CD

و حدس بزنید چه؟ اگر می‌خواهید سریع‌تر برنامه بسازید یا برنامه شما به منابع محاسباتی بیشتری برای ساخت نیاز دارد، باید پول بیشتری برای سهمیه منابع اضافی بپردازید!

چگونه با این مشکلات کنار آمدم؟

1. من Kubernetes را یاد گرفتم بنابراین شما مجبور نیستید

Kubernetes سخت است. تحت فشار قرار دادن توسعه دهندگان برای یادگیری آن حتی سخت تر (و بی رحمانه، زندگی آنها در حال حاضر واقعاً سخت است)

پیچیدگی Kubernetes

بنابراین من Kubernetes را یاد گرفتم و سعی کردم چند بار تیمم را برای استفاده از آن آموزش دهم.

پس از بیش از 6 سال کار با Kubernetes برای مشتریان، شرکا و تیم‌های خودم، متوجه شدم که سخت‌ترین جنبه آموزش نحوه استفاده از Kubernetes و استقرار برنامه‌ها بر روی آن است.

توسعه دهندگان نباید با استقرار برنامه های خود در زیرساخت ناامید شوند یا مجبور باشند مهندسان DevOps را برای کمک به استقرار آزار دهند. آنها باید بتوانند بدون نیاز به درک مفاهیم پیچیده یا تعاریف سرورها، دامنه ها و موضوعات مرتبط با زیرساخت، به طور کامل روی توسعه برنامه های خود تمرکز کنند.

بنابراین من شروع به ساخت ابزار کردم، تا به تیمم کمک کنم برنامه‌ها را در خوشه Kubernetes استقرار دهند.

چرا از جنکین استفاده نمی کنید؟ چون من جنکینز را دوست ندارم. فقط همین، lol. در واقع چون جنکینز می‌تواند استقرار را حل کند، اما من بیشتر از آن می‌خواهم، می‌خواهم کنترل، اتوماسیون و نظارت بر خوشه‌های K8S خود را بیشتر در دست بگیرم.

خوب پیش رفت… تا زمانی که وقتی شروع به رشد کرد، کنترل بارهای کاری نظارت را از دست دادم. سپس من هنوز به فردی با دانش DevOps/Kubernetes نیاز داشتم تا کمک کند، اما…

2. من فقیر هستم و هنوز هم می‌خواهم کوبرنتیس را بپذیرم…

بیچاره kubernetes devops

من با توسعه ابزاری که اخیرا ساخته ام با این چالش روبرو شدم.

اهداف من به سادگی در موارد زیر خلاصه می شود:

  • مفاهیم و تعاریف Kubernetes را برای چیزی که توسعه دهندگان ما می توانند درک کنند، ساده کنید.
  • تجربه توسعه دهنده خود را با آسان برای به خاطر سپردن دستورات
  • نظارت متمرکز بر خوشه‌های K8S ما بدون توجه به اینکه کجاست و ارائه‌دهنده ابر آن چیست.
  • برنامه‌ها را روی سرور خودمان بسازیم و مستقر کنیم، بنابراین می‌تواند تمام منابع محاسباتی را برای زمان ساخت سریع‌تر مصرف کند.
  • مدیریت منابع ابری ما به غیر از خوشه‌های K8S، مانند پایگاه‌های داده، بررسی سلامت،…
  • هر کاری را که می‌خواهم خودکار کنم…

ماه ها طول کشید تا این ابزار را بسازم، خوشبختانه ما با مشتریان زیادی کار کرده ایم که منابع Cloud متعددی در ارائه دهندگان ابر دارند، بنابراین من فرصت هایی برای تعمیر و بهبود ابزار روز به روز پیدا کردم.

تا به حال، شرکت های من سال ها از این ابزار استفاده می کنند.

من واقعاً می‌خواهم ویژگی‌های بیشتری اضافه کنم، اما از آنجایی که به طور فزاینده‌ای مشغول شدم، انتشار ویژگی‌های جدید کند شده است.

زندگی برنامه نویس مشغول

خوب، من شروع به بررسی منبع باز این پروژه کردم، زیرا معتقدم که می تواند کارایی افرادی را که با چندین خوشه Kubernetes و سایر منابع ابری کار می کنند، به طور قابل توجهی بهبود بخشد. (و همچنین مثل من فقیر بودن، lol)

و اینجاست…

Diginext

سرویس دهنده برنامه وب و رابط خط فرمان (CLI) است که به توسعه دهندگان کمک می کند تا پروژه های خود را مستقر کنند و با منابع ابری خود به راحتی تعامل داشته باشند.

diginext

به آن مانند پلتفرم Vercel خود فکر کنید که بر روی زیرساخت شما اجرا می شود و منابع ابری شما را مدیریت می کند.

می خواهید امتحان کنید؟

من یک کلاستر کوچک K8S به صورت رایگان در https://hobby.diginext.site دارم تا بتوانید فوراً دستان خود را کثیف کنید.

فقط این مراحل را دنبال کنید:

  1. قبل از ایجاد یک فضای کاری جدید، به یک کلید نیاز دارید، یکی را از اینجا دریافت کنید (نگران نباشید، این برنامه رایگان است).
  2. یک فضای کاری Diginext جدید با کلید DX خود در مرحله قبل در: https://hobby.diginext.site ایجاد کنید
  3. Github خود را به آن فضای کاری متصل کنید:
    https://hobby.diginext.site/git
  4. برای ذخیره تصویر کانتینر، داکر هاب خود را به فضای کاری متصل کنید:
    https://hobby.diginext.site/infrastructure/registry
  5. Diginext CLI را روی رایانه خود نصب کنید: npm i @topgroup/diginext --location=global
  6. Diginext CLI خود را با آن فضای کاری وصل کنید: dx login https://hobby.diginext.siet
  7. با این دستور CLI برنامه جدیدی ایجاد کنید: dx new
    مثلا:

    • پروژه: یه چیزی
    • برنامه: سایت استاتیک
    • چارچوب: انتخاب کنید “چارچوب سایت استاتیک”
    • ارائه‌دهنده Git: موردی را که اخیراً متصل کرده‌اید انتخاب کنید.
  8. استقرار آن: cd ./something && dx deploy
    • خوشه: انتخاب کنید “خوشه پیش فرض”
    • رجیستری کانتینر: انتخاب کنید “توکر داکر هاب”
    • استفاده از دامنه تولید شده: آره
    • بندر: 80
  9. مراحل ساخت را در آدرس زیر مشاهده کنید: https://hobby.diginext.site/build/logs?build_slug=...
  10. وقتی تمام شد… بوم! در اینجا، وب سایت شما در این آدرس فعال است: https://something.dev.diginext.site

💡 یادداشت:
از آنجایی که این فضای کاری «سرگرمی» رایگان است (و من ضعیف هستم)، نمی توانم هیچ ضمانت آپتایم یا SLA ارائه کنم، به علاوه این که دارای سهمیه های محدودی در تعداد ساخت های همزمان، تعداد برنامه ها و…
پس لطفا از آن به عنوان استفاده نکنید یک محیط تولید، استقرار در این خوشه برای آزاد کردن منابع در هر زمان حذف می شود.

🔆 با اعتبارسنجی کلیدهای DX API، من می توانم منابع را در فضای کاری محدود کنم، فقط برای اینکه مطمئن شوم سرور من اتاق های کافی برای همه کسانی که می خواهند امتحان کنند دارد. اگر می‌خواهید از شر این محدودیت‌ها خلاص شوید، با دنبال کردن این دستورالعمل، فضاهای کاری خود میزبان خود را تنظیم کنید.

آیا می خواهید فضای کاری خود را تنظیم کنید؟

چند مقاله برای کمک به شما در شروع زیر نوشتم:

من رایانه شخصی شرکتم را به پلتفرم “مانند Vercel” خودم تبدیل می کنم

نتیجه

هر گونه بازخورد استقبال می شود. اگر به دنبال ویژگی های دیگری هستید یا می خواهید به من کمک کنید، در زیر می توانید شروع کنید:

متشکرم!

این مقاله طولانی است، از اینکه به اینجا رسیدید متشکرم. اگر مشکلی (یا اشکالی) پیدا کردید، لطفاً به من اطلاع دهید، خوشحال می شوم کمک کنم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا