
آموزش مقدماتی داکر (Docker) و کوبرنتیس (Kubernetes) برای برنامه نویسان دات نت
آموزش کارکردن با داکر Docker و کوبرنتیس Kubernetes در دات نت، یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی مباحث اساسی در کار کردن با Docker و Kubernetes برای برنامه نویسان دات نت است که با نام اصلی Fundamentals of Docker and Kubernetes for .NET Developers از شرکت Pluralsight منتشر شده است.
مزیت های استفاده کردن از کوبرنتیز (Kubernetes)
استفاده کردن از کوبرنتیس در روند مدیریت کردن container ها مزیت های بی شماری را در اختیار افراد قرار می دهد. یکی از مهمترین این مزیت ها صرفه جویی در هزینه های مالی می باشد. از آنجایی که کوبرنتیس بسیاری از فرایندهای مربوط به مدیریت کردن container ها را به صورت خودکار سازی شده مدیریت می کند، صرفه جویی قابل توجهی در هزینه های مالی اتفاق خواهد افتاد. علاوه بر این هزینه های زمانی کمتری نیسز متوجه سازمان ها خواهد شد. پس از پیکربندی کردن کلاستر های کوبرنتیس اپلیکیشن ها می توانند با حداقل downtime اجرا شده و عملکرد خوبی را از خود به نمایش بگذارند. همین موضوع باعث می شود تا نیاز به پشتیبانی در زمان رخ دادن مشکلات برای node ها و فایل ها کمتر بشود. به عبارت دیگر نیروی کمتری برای مدیریت کردن و رفع خطا های رخ داده، مورد نیاز خواهد بود.

علاوه بر این موضوع، کوبرنتیس کمک می کند تا تعداد سرور های مورد نیاز برای اجرا شدن اپلیکیشن ها نیز کاهش پیدا کند. عملیات مدیریتی مورد نیاز نیز به مراتب خودکار سازی شده و نیاز به نیروی انسانی کمتر خواهد بود. یکی دیگر از مزیت های استفاده کردن از کوبرنتیس، افزایش کارآمدی در عملیات DevOps برای معماری مایکروسرویسی می باشد. با استفاده کردن از container ها و دسترسی پیدا کردن به منابع ذخیره سازی می توان روال توسعه، تست و همچنین استقرار را ساده تر کرد. ایجاد کردن container image ها که شامل تمامی وابستگی های مورد نیاز یک اپلیکیشن هستند، می توانند کار را بسیار ساده کنند. تمامی این موارد به افزایش سرعت توسعه نرم افزار و ساده تر شدن روال deployment کمک می کنند. هر چه زودتر از کوبرنتیس در چرخه حیات نرم افزار استفاده بشود، روال توسعه و اشکال زدایی در اپلیکیشن های مبتنی بر معماری مایکروسرویسی کمتر می شود. در معماری مایکروسرویسی functional unit ها و یا واحدهای عملیاتی مختلف وجود دارد که با استفاده از API ها با یکدیگر ارتباط بگیرند. این کمک می کند تا اعضای تیم های مختلف توسعه نرم افزار بر روی هر کدام از این واحدها متمرکز شده و آنها را توسعه بدهند. در کوبرنتیس می توان از قابلیت namespace ها استفاده کرد تا sub-cluster های virtual و یا مجازی را در یک کلاستر فیزیکی ایجاد نمود. این موضوع کمک می کند تا کارایی اپلیکیشن ایجاد شده با معماری مایکروسرویسی ساده تر بگردد.
Docker چیست و چه کاربردی در توسعه برنامههای .NET دارد؟
Docker بستری برای بستهبندی و اجرای برنامهها در Container فراهم میکند. Container شامل برنامه و اجزای موردنیاز برای اجرای آن است و به جداسازی محیط اجرای برنامه از بخشهای دیگر سیستم کمک میکند. برای توسعهدهندگان .NET، استفاده از Docker راهی برای آمادهسازی محیط اجرای اپلیکیشن و کاهش تفاوتهای ناشی از تنظیمات سیستمهای مختلف است. این روش میتواند فرایند توسعه، آزمایش و آمادهسازی برنامه برای استقرار را منظمتر کند و مدیریت وابستگیهای اجرایی را سادهتر سازد.
در برنامههای مبتنی بر ASP.NET، میتوان از Docker Image برای تعریف محیط موردنیاز و ایجاد Containerهای قابل اجرا استفاده کرد. این رویکرد به شما اجازه میدهد برنامه را همراه با تنظیمات لازم بستهبندی کنید و آن را در محیطهای سازگار اجرا کنید. آشنایی با مفاهیمی مانند Image، Container و Dockerfile برای درک این فرایند ضروری است. زمانی که برنامه به سرویسهای دیگری مانند دیتابیس نیز وابسته باشد، لازم است نحوه ارتباط میان Containerها و تنظیمات مشترک آنها را هم در نظر بگیرید.
اجرای اپلیکیشن ASP.NET با Docker Compose
Docker Compose ابزاری برای تعریف و اجرای مجموعهای از سرویسهای مرتبط با یکدیگر است. در یک پروژه .NET، ممکن است اپلیکیشن ASP.NET به یک دیتابیس یا سرویس دیگر وابسته باشد و اجرای جداگانه هر بخش، مدیریت محیط را پیچیده کند. با استفاده از Docker Compose میتوانید سرویسهای موردنیاز را در یک پیکربندی مشخص تعریف کنید و آنها را بهصورت هماهنگ اجرا کنید. این روش بهخصوص برای آمادهسازی محیط توسعه و آزمایش برنامههایی که چند جزء دارند، کاربردی است.
در پیکربندی Docker Compose میتوان Image مورد استفاده هر سرویس، تنظیمات شبکه و برخی پارامترهای اجرایی را مشخص کرد. همچنین، امکان تعریف چند سرویس در یک فایل به شما کمک میکند ارتباط میان اپلیکیشن و اجزای وابسته آن را روشنتر مدیریت کنید. برای مثال، میتوان سرویس ASP.NET و یک دیتابیس را در یک محیط مشترک تعریف کرد تا برنامه هنگام اجرا به سرویس موردنیاز خود دسترسی داشته باشد. شناخت این مفاهیم به توسعهدهندگان تازهکار کمک میکند اجرای برنامههای چندسرویسی را بهتر درک کنند.
تفاوت Docker و Kubernetes چیست؟
Docker و Kubernetes دو فناوری مرتبط با Containerها هستند، اما وظایف آنها یکسان نیست. Docker ابزارهایی برای ساخت Image و اجرای Container در اختیار توسعهدهندگان قرار میدهد و به بستهبندی برنامه کمک میکند. در مقابل، Kubernetes سامانهای برای مدیریت و هماهنگسازی اجرای Containerها در محیطهای مختلف فراهم میکند. آشنایی با این تفاوت به برنامهنویسان .NET کمک میکند درک کنند که ساخت یک Container قابل اجرا با مدیریت تعداد زیادی از Containerها در محیط استقرار، دو مسئله متفاوت هستند.
در یک مسیر توسعه معمول، ممکن است ابتدا اپلیکیشن ASP.NET را در قالب Docker Image آماده کنید و سپس تنظیمات لازم را برای اجرای آن در محیطی مبتنی بر Kubernetes در نظر بگیرید. در این مرحله، مفاهیمی مانند نحوه تعریف برنامه، ارتباط سرویسها و تنظیمات محیط اجرا اهمیت پیدا میکنند. Kubernetes برای مدیریت برنامههای Containerized طراحی شده است، اما استفاده از آن نیازمند شناخت مفاهیم و پیکربندیهای مخصوص این بستر است. درک نقش هر فناوری کمک میکند ابزار مناسب را برای مرحله موردنظر پروژه انتخاب کنید.
Containerize کردن برنامههای ASP.NET و اتصال به دیتابیس
Containerize کردن به فرایند آمادهسازی برنامه برای اجرا در یک Container گفته میشود. در اپلیکیشنهای ASP.NET، این کار معمولاً شامل تعریف Image مناسب و مشخص کردن اجزای موردنیاز برای اجرای برنامه است. پس از آماده شدن Image، میتوان آن را در قالب Container اجرا کرد و تنظیمات لازم برای دسترسی به منابع موردنیاز را فراهم ساخت. این رویکرد به توسعهدهندگان کمک میکند محیط اجرای برنامه را به شکل مشخصتری تعریف کنند و فرایند راهاندازی آن را در محیطهای سازگار تکرارپذیرتر سازند.
بسیاری از برنامههای وب برای ذخیره و بازیابی اطلاعات به دیتابیس نیاز دارند؛ بنابراین، هنگام استفاده از Docker باید ارتباط میان اپلیکیشن و دیتابیس نیز بهدرستی پیکربندی شود. Docker Compose امکان تعریف هر دو سرویس و تنظیم نحوه ارتباط آنها را فراهم میکند. همچنین، اگر برنامه از HTTPS استفاده کند، باید تنظیمات مرتبط با SSL و گواهیهای موردنیاز را متناسب با محیط اجرا در نظر گرفت. آشنایی با این مراحل، پایهای برای آمادهسازی برنامههای .NET جهت اجرا در محیطهای مبتنی بر Container و بررسی گزینههای استقرار در Kubernetes محسوب میشود.
سرفصل مطالب آموزش کارکردن با داکر Docker و کوبرنتیس Kubernetes در دات نت
فصل اول: مقدمه دوره آموزشی- مقدمه
- خوش آمدگویی و شفاف سازی
- ذات Cross-platform بودن دات نت
- فواید Container ها برای توسعه و گسترش
- مروری بر Solution
- نکات مهم مربوط به راه اندازی Solution
- آموزش عملی: آمادگی برای بکارگیری Container ها با استفاده از Docker Desktop
- آموزش عملی: نصب و تنظیم کردن Windows Terminal
- آموزش عملی: نصب کردن Windows Subsystem for Linux و یا WSL ورژن 2 و Ubuntu
- یک نکته مهم در مورد فریم ورک دات نت و Windows Container ها
- شروع به کار
- مقدمه
- یک مدل ادراکی برای Container ها و Image ها
- آموزش عملی: Pull کردن و اجرا کردن یک Image عمومی
- آموزش عملی: بروز رسانی یک اپلیکیشن ASP.NET به منظور استفاده کردن از یک Container در حال اجرا
- آموزش عملی: استفاده کردن از Container Image مربوط به Seq برای Local Login
- جمع بندی و قدم های بعدی
- مقدمه
- آموزش عملی: Containerize کردن UI Application
- لایه بندی و Build کردن Container Image ها
- Build کردن Container Image های مربوط به ASP.NET
- آموزش عملی: پنجره Container ها در ویژوال استودیو
- آموزش عملی: اجرا کردن سرویس ها بر روی Host محلی
- جمع بندی و قدم های بعدی
- مقدمه
- شرایط فعلی و منابع
- معرفی کردن Docker Compose
- آموزش عملی: اضافه کردن پشتیبانی از Docker Compose برای پروژه Identity
- توضیح ساده شده ای از Simplified Explanation
- آموزش عملی: بروز رسانی کردن درگاه ها در Docker Compose
- آموزش عملی: اضافه کردن nginx به عنوان یک Reverse Proxy
- آموزش عملی: بروز رسانی کردن Host Port و Clean کردن Solution
- آموزش عملی: اضافه کردن SSL به یک nginx مربوط به Reverse Proxy
- جمع بندی و قدم های بعدی
- مقدمه
- بازبینی فایل مربوط به Docker Compose
- بررسی DNS در Docker Compose
- بازبینی Solution و بررسی مسیر رو به جلو
- آموزش عملی: اضافه کردن سرویس Log کردن با Seq به Docker Compose
- آموزش عملی: اضافه کردن smtp4dev به عنوان یک Email Service به Docker Compose
- آموزش عملی: اضافه کردن UI به Docker Compose با استفاده یک نام DNS جدید
- آموزش عملی: Networking در Docker Compose و Trusted Certificate ها
- آموزش عملی: اضافه کردن API به عنوان یک اپلیکیشن Virtual Path به Docker Compose
- چه چیزی تکمیل کردید و مراحل بعدی چیست؟
- مقدمه
- آموزش عملی: راه اندازی SQL Server در یک Container
- بررسی Container ها و ماندگاری داده ها
- روش های کار با بانک اطلاعاتی در Docker Compose
- تنظیمات پیکربندی WSL
- آموزش عملی: استفاده کردن از یک Image سفارشی شده برای بانک اطلاعاتی
- آموزش عملی: Push کردن یک Image سفارشی به یک Container Registry برای منتشر کردن آن
- آموزش عملی: استفاده کردن از یک Dockerfile به همراه یک Startup Logic
- بازبینی اهداف و eShopOnContainers
- جمع بندی و قدم های بعدی
- مقدمه
- معرفی Kubernetes و مزیت هایش
- بررسی آناتومی یک Deployment در Kubernetes
- اجزاء تشکیل دهنده یک Cluster در Kubernetes
- آموزش عملی: راه اندازی کردن یک Cluster محلی در Kubernetes با استفاده از Docker Desktop
- آموزش عملی: اعمال کردن و بررسی کردن داشبورد Kubernetes
- آموزش عملی: اجرا کردن سرویس های Solution در Kubernetes (Seq، smtp4dev و SQL Server)
- آموزش عملی: اضافه کردن nginx Ingress Controller و تعریف کردن یک Ingress
- آموزش عملی: اجرا کردن یک اپلیکیشن ASP.NET در Kubernetes
- آموزش عملی: اضافه کردن SSL برای یک اپلیکیشن ASP.NET با یک Ingress و Routing با استفاده از Path
- آموزش عملی: انجام Scaling بر روی یک Deployment در Kubernetes
- توصیه ها و منابع
- جمع بندی







