یکی از چالشهای اصلی در فرایند یادگیری و آموزش کوبرنتیز، نبود منابع کافی برای یادگیری آن است. با در نظر گرفتن این موضوع در این مطلب قصد داریم تمام منابع آموزشی کوبرنتیز را بررسی کنیم و همچنین نقشه راههای اصولی برای یادگیری کوبرنتیز را بررسی نماییم. اما پیش از هرچیزی نیاز است که با چیستی کوبرنتیز آشنا شویم و در همین قدم اول درک بهتری از کاری که انجام میدهد داشته باشیم.
کوبرنتیز چیست؟
در فرایند ساخت و توسعه اپلیکیشنهای مدرن یکی از ابزارهایی که عمدتا استفاده میشود، داکر است. از داکر برای کانتینرسازی اپلیکیشنها و میکروسرویسها استفاده میشود. اما چالشی که در این رویکرد وجود دارد این است که با افزایش حجم کانتینرها، چگونه میتوان آنها را مدیریت کرد؟ یکی از نقطه شروعها برای بسیاری از افراد که بهدنبال یادگیری و آموزش کوبرنتیز هستند مربوط به حل همین چالش است.
کوبرنتیز یک پلتفرم ارکستریشن یا هماهنگکننده است. به این معنا که با مدیریت کانتینرهای مختلف، تلاش دارد تا بین آنها هماهنگی ایجاد کند. درست مانند یک رهبر ارکستر، که با هماهنگ کردن نوازندههای مختلف، سعی دارد تا یک موسیقی زیبا را خلق کند، کوبرنتیز نیز با هماهنگ کردن کانتینرهای مختلف، تلاش دارد تا اپلیکیشن نهایی را به بهترین شکل ممکن تحویل کاربران دهد.
برای مطالعه بیشتر راجع به اینکه کوبرنتیز چیست میتوانید مطلب کامل «راهنمای کوبرنتیز به زبان ساده» را مطالعه کنید.
همچنین یکی از سادهترین روشها برای درک چیستی کوبرنتیز مشاهده ویدیوی کوتاه «کوبرنتیز چیست» از توسعهدهندگان گوگل است. در ادامه میتوانید این ویدیو را با زیرنویس فارسی مشاهده کنید.
آموزش کوبرنتیز قدم به قدم
برای یادگیری کوبرنتیز بهترین رویکرد استفاده از دورههای آموزشی استاندارد است که در بخش بعدی این مطلب به آنها نیز خواهیم پرداخت. اما قبل از آن بیایید بهصورت موضوع محور با فرایند یادگیری و آموزش کوبرنتیز بهصورت قدم به قدم آشنا شویم و بدانیم که چه مراحلی برای یادگیری کوبرنتیز باید طی کنیم.
پیشنیازها
کوبرنتیز یک تکنولوژی مقدماتی و اولیه نیست. در نتیجه قبل از یادگیری آن نیاز است که با برخی از موضوعات آشنایی خوبی داشته و براساس نیازمندی سراغ کوبرنتیز بروید. در زیر به برخی از اصلیترین این پیشنیازها اشاره خواهیم کرد و همچنین منابع لازم برای یادگیری هرکدام را معرفی میکنیم. این نکته را نیز اضافه کنیم که شما بدون یادگیری موضوعات زیر نیز میتوانید آموزش کوبرنتیز را شروع کنید اما مشکلی که به وجود میآید این است که نمیتوانید کوبرنتیز را بهصورت یک مفهوم و راهحل مشاهده کنید و همواره تنها با آن بهصورت یک ابزار آشنا خواهید شد.
۱- میکروسرویس
میکروسرویسها (Microservices) یکی از الگوهای معماری نرمافزاری هستند که در آن یک برنامه به صورت مجموعهای از سرویسهای کوچک و مستقل طراحی و پیادهسازی میشود. هر یک از این سرویسها دارای یک هدف مشخص و محدود هستند و میتوانند به صورت مستقل از یکدیگر توسعه، استقرار و مدیریت شوند.
زمانی میتوانید بهدرستی از قدرت کوبرنتیز استفاده کنید که ابتدا اپلیکیشنتان را براساس معماری میکروسرویس پیادهسازی کرده باشید. برای آشنایی بیشتر با مفهوم میکروسرویس میتوانید مطلب «میکروسرویس چیست؟» را مطالعه کنید.
۲- کانتینرسازی
یکی از اصلیترین کاربردهای کوبرنتیز، مدیریت تعداد زیاد کانتینرهای یک اپلیکیشن است. بنابراین اگر بهدنبال استفاده معقول از کوبرنتیز هستید، باید اپلیکیشنتان را براساس معماری کانتینرها ایجاد کنید. در بیشتر مواقع درک کانتینرها بهمعنای یادگیری کار با داکر است. در نتیجه قبل از یادگیری کوبرنتیز بهتر است که بهصورت کامل کار با داکر را بلد باشید. برای یادگیری داکر منابع مختلفی وجود دارد. یکی از بهترین منابع آموزشی وبسایت رسمی Docker است.
۳- شبکه
شبکه یکی از مفاهیم کلیدی در کوبرنتیز برای ایجاد ارتباط میان کامپوننتها و آبجکتهای مختلف با همدیگر است. البته شما نیازی ندارید که با تمام مباحث شبکه آشنایی داشته باشید اما نیاز است که مقدمات آن را بدانید و با مفاهیمی مانند IP ،DNS، پورت و… آشنا باشید. برای این موضوع میتوانید از دوره «Networking 101» استفاده کنید.
۴- YAML
YAML زبانی استاندارد برای سریالسازی دادهها (Data Serialization) است که عمدتا برای نوشتن فایلهای پیکربندی مورد استفاده قرار میگیرد. یکی از شاخصههای اصلی YAML قابلیت خوانایی بالا آن است. این موضوع یکی از دلایل محبوبیت YAML است. در کوبرنتیز فایلهای پیکربندی براساس این زبان نوشته میشوند و در نتیجه بسیار مهم است که با سینتکس آن آشنایی داشته باشید و بتوانید بهراحتی در آن بنویسید.
در مطلب «YAML چیست؟» ما بهصورت کلی برخی از ویژگیهای سینتکس YAML را بررسی کردهایم که میتواند نقطه شروع خوبی برای یادگیری باشد.
۵- دستورات ترمینال
دستورات ترمینال از جمله مهمترین موضوعاتیست که هر توسعهدهندهای باید کار با آن را بلد باشد. شاید نیازی به گفتن این مورد بهعنوان یک پیشنیاز واقعا نبود چرا که برای فردی که قصد یادگیری کوبرنتیز را دارد مطمئنا این موضوع پیش پا افتاده خواهد بود. اما در نهایت بهتر است که بهعنوان یک پیشنیاز آن را ذکر میکردیم. یک منبع بسیار خوب برای یادگیری دستورات ترمینال «Command Line Crash Course» است.
شروع یادگیری کوبرنتیز
از آنجایی که کوبرنتیز شامل کامپوننتها و بخشهای گستردهای میشود، فرایند یادگیری و آموزش آن نسبتا سخت بوده و ممکن است بهسرعت تبدیل به یک کابوس شود. به همین دلیل بسیار مهم است که فرایند یادگیری کوبرنتیز را قدم به قدم پیش ببرید. در ادامه بهصورت قدم به قدم موضوعاتی که باید یاد بگیرید را بررسی خواهیم کرد. اما این موارد تنها چکیدهای از مطالب بوده و برای درک کاملتر مسیر باید به سرفصلهای دورههای آموزش کوبرنتیز که در بخش بعدی این مطلب آورده شده است نگاه کنید.
آموزش قدم به قدم کوبرنتیز
- اولین قدم برای یادگیری کوبرنتیز، درک چیستی و کاربرد آن است. زمانی که بهخوبی فهمیدید که کوبرنتیز چه مشکلی را حل میکند و به چه دلیل ساخته شده است، با دید بهتری فرایند یادگیری آن را شروع میکنید. در عنوان اول این مطلب (کوبرنتیز چیست؟) ما کلیاتی از کاربرد کوبرنتیز و همچنین مقاله آموزشی کوبرنتیز را بررسی کردیم.
- بعد از آشنایی با کاربردها و چیستی کوبرنتیز، حال میتوانیم با بررسی معماری و اصطلاحات کوبرنتیز کارمان را ادامه دهیم. این قدم بسیار مهمیست چرا که به شما کمک میکند تا اجزاء کوبرنتیز را بهتر درک کنید و با وظیفه هر بخش نیز بهصورت کلی آشنا شوید.
- در قدم سوم میتوانید با مطالعه APIهای کوبرنتیز، بهصورت واضحتر با کاربردهای کوبرنتیز آشنا شوید و همچنین کارکرد اجزاء مختلف را در عمل ببینید. مستندت APIهای کوبرنتیز قدم خوبی برای شروع این مرحله است. مواردی که در این قدم نیاز به بررسی و یادگیری دارند شامل Deployment – Pod – Service – Secret – Volume – ConfigMap – Namespace میشوند.
- حال که به درک خوبی از کوبرنتیز و اجزاء آن رسیدید میتوانید با نصب کوبرنتیز بهصورت محلی کارتان را در فاز عملی شروع کنید. برای تمرین میتوانید هم از ایمیجهای عمومی استفاده کنید و هم میتوانید کانتینرهایی که خودتان ایجاد کردهاید را بهکار بگیرید. بعد از این کار میتوانید با APIهای کوبرنتیز بهصورت عملی کار کنید و مواردی که یاد گرفتهاید را به چالش بکشید.
- در قدم بعدی نیاز است که با مفاهیمی مانند Obeservability و مانیتورینگ در کوبرنتیز آشنا شوید. زمانی که شما کوبرنتیز را پیادهسازی میکنید، در بلند مدت ممکن است تعداد کلاسترها و پادهایتان افزایش پیدا کند. در نتیجه بررسی وضعیت سلامت کلاسترها دشوارتر شده و نیاز است که یک راهکار جامع برای مانیتورینگ را پیادهسازی کنید. ابزارهایی مانند Prometheus و Grafana در این مسیر به شما کمک خواهند کرد.
- در مراحل بعدی نیاز است که با مفاهیم پیچیدهتر در دنیای کوبرنتیز آشنا شوید. امنیت، شبکه، Service Mesh، کنترل Routing و Getway API از این دست موارد هستند.
همانطور که گفته شد تمام این قدمها بهصورت کلی در نظر گرفته شده و جزئیات کاملی را شامل نمیشود. به همین دلیل در ادامه با ذکر چند دوره آموزشی معتبر حوزه کوبرنتیز، با جزئیات فرایند یادگیری آن آشنا خواهیم شد.
دورههای آموزشی کوبرنتیز
دورههای آموزشی جامع و حرفهای نسبتا کمی در زمینه کوبرنتیز تا به حال تهیه شده و به همین دلیل پیدا کردن دوره مناسب سخت است. با در نظر گرفتن این قضیه ما دو دوره Introduction to Kubernetes (رایگان) و Kubernetes Fundamentals (غیر رایگان) را پیشنهاد میکنیم که برای افراد مبتدی مناسب بوده و لحاظ موضوعی نیز کامل است.
آموزش کوبرنتیز با دوره Introduction to Kubernetes – Linux Foundation
دوره آموزشی Introduction to Kubernetes یک دوره کاملا مقدماتی بوده و نیازی به هیچ پیشنیازی راجع به کوبرنتیز ندارد. این دوره بهعنوان مقدمهای برای کوبرنتیز ساخته شده است و برای دنبال کردن دوره بعدی که در ادامه ذکر شده است نیاز است که این دوره ابتدا گذرانده شود.
در این دوره با مفاهیم زیر آشنا خواهید شد:
- ارکستریشن و کوبرنتیز
- معماری کوبرنتیز و نصب آن در محیط لوکال با استفاده از MiniKube
- مدیریت دسترسیها در کوبرنتیز
- بررسی کامپوننتهای مختلف کوبرنتیز
- سرویسها
- دیپلوی اپلیکیشن
- مدیریت Volume در کوبرنتیز
- آشنایی با Ingress در کوبرنتیز
- کار با ConfigMap و Secret
- بررسی قدمهای بعدی یادگیری کوبرنتیز
آموزش کوبرنتیز با دوره Kubernetes Fundamentals – Linux Foundation
دوره آموزش کوبرنتیز Kubernetes Fundamentals یکی از کاملترین و حرفهایترین دورههای مقدماتی برای یادگیری کوبرنتیز است که بهصورت کامل تمام اجزاء و کامپوننتهای کوبرنتیز را بررسی خواهد کرد. این دوره شامل ۱۷ سرفصل است که در ادامه آنها را بررسی خواهیم کرد.
پیشنیازهای این دوره
- آشنایی با لینوکس و دستورات محیط ترمینال
- گیت و گیتهاب
- آشنایی با مقدمات کوبرنتیز از طریق دوره Introduction to Kubernetes
سرفصلهای دوره
همانطور که گفته شد این دوره شامل ۱۶ سرفصل است که در ادامه بهصورت کامل هرکدام از این سرفصلها را بررسی خواهیم کرد:
- مقدمات: در این سرفصل ابتدا با ساختار دوره و موضوعاتی که قرار است آموزش داده شود آشنا خواهید شد.
- مبانی کوبرنتیز: در قدم بعدی با مبانی اولیه کوبرنتیز آشنا خواهید شد و کاربردها و موارد استفاده از آن بررسی میشود.
- نصب و پیکربندی: در این بخش با نصب و پیکربندی کوبرنتیز در محیط Local آشنا خواهید شد.
- معماری: بعد از نصب و پیکربندی کوبرنتیز، نیاز است که با معماری و ساختار کوبرنتیز و اجزاء آن آشنا شوید.
- API: در قدم پنجم با یکی از موضوعات اصلی در کوبرنتیز یعنی APIهای آن بهصورت کامل آشنا میشوید. در این قدم با فرایند دسترسی به کلاستر کوبرنتیز از طریق APIها آشنا خواهید شد.
- API Objects: در این بخش کار با API Objectها برای مدیریت و دسترسی به منابع داخلی کلاستر آموزش داده میشود.
- Deployments: در قدم هفتم دیپلویمنتها بررسی میشود و بحث مدیریت Stateها نیز آموزش داده میشود.
- Data: در سرفصل Data کار با دادهها و مدیریت Volume در کوبرنتیز مطرح خواهد شد.
- Service: در این بخش کار با مفهوم سرویسها در کوبرنتیز بررسی خواهد شد و با کاربرد و پیادهسازی آن آشنا میشوید.
- Helm: در این سرفصل با خودکارسازی بخشی از کارها در کوبرنتیز با استفاده از ابزار Helm آشنا خواهید شد.
- Ingress: یکی دیگر از مفاهیم بسیار مهم در کوبرنتیز Ingress است که در فرایند expose کردن اپلیکیشن استفاده میشود. در این قدم بهصورت کامل این موضوع بررسی خواهد شد.
- Scheduling: در فرایند متصل کردن پاد به نود در ساختار کوبرنتیز Scheduling کارها را انجام میدهد. در این بخش بهصورت کامل با Scheduling آشنا خواهید شد.
- Logging: در فرایند پیدا و حل کردن مشکل عملیات Logging and Troubleshooting بسیار مهم است. در این بخش بهصورت کامل با این فرایند در کوبرنتیز آشنا خواهید شد.
- امنیت: با پیشرفت در پیادهسازی و کار با کامپوننتهای مختلف کوبرنتیز، حال نوبت آن است که با فرایند ایمنسازی آن آشنا شوید. در بخش چهاردهم شما بهصورت کامل با بحث امنیت در کوبرنتیز آشنا خواهید شد.
- custom resource definitions: یکی از ویژگیهای پیشرفته کوبرنتیز امکان پیادهسازی API سفارشی در کلاستر خودتان است. در بخش پانزدهم با این قابلیت آشنا خواهید شد.
- High Availability: یکی از کاربردهای اصلی کوبرنتیز بالا بودن سطح دسترسیپذیری در آن است. در این سرفصل شما با این مفهوم و پیادهسازی آن آشنا خواهید شد.
مطالعه بیشتر
در وبلاگ همروش دستهبندی به نام کوبرنتیز پیادهسازی کردهایم که بهصورت هفتگی مطالب جدیدی را در آن قرار میدهیم. این مطالب به شما کمک میکنند تا درک بهتری از کوبرنتیز و اجزاء آن پیدا کنید. برای مطالعه بیشتر و همچنین درک بهتر کوبرنتیز میتوانید به مطالعه مطالب این دستهبندی بپردازید.
برخی از مطالب کاربردی این دستهبندی:
- پاد (Pod) در کوبرنتیز
- آشنایی با مفهوم node در کوبرنتیز
- scheduling در کوبرنتیز
- etcd در کوبرنتیز
- مانیتورینگ در کوبرنتیز
- شبکه (netwroking) در کوبرنتیز
- آشنایی با ConfigMap در کوبرنتیز
- و…
همچنین برای مشاهده لیست کاملی از بهترین دورههای کوبرنتیز میتوانید به مطلب «بهترین دورههای آموزش کوبرنتیز» مراجعه کنید.