سپهر فصیحی - Sepehr Fassihi
سپهر فصیحی - Sepehr Fassihi
خواندن ۴ دقیقه·۱ ماه پیش

Deployment در Kubernetes: نسخه‌بندی و به‌روزرسانی اپلیکیشن‌ها 🚀🔄

سلام دوستان Kubernetes‌باز! 🌟 امیدوارم توی دنیای پرچالش و پرهیجان Kubernetes هنوز از هیجان نیوفته باشید! توی این مقاله می‌خواهیم به یکی از قابلیت‌های خیلی مهم Kubernetes بپردازیم که بدون شک کار شما رو خیلی راحت‌تر می‌کنه: Deployment‌ها.
اگر شما هم از اون دست افرادی هستید که همیشه وقتی اپلیکیشنی رو به‌روزرسانی می‌کنید، می‌ترسید که ممکنه چیزی خراب بشه یا سرور بهم بریزه، پس این مقاله مخصوص شماست! 😬 بریم سراغ اینکه چطور با استفاده از Deployments در Kubernetes، اپلیکیشن‌هاتون رو بدون دردسر و با خیال راحت به‌روزرسانی کنید.

تو این مقاله چی یاد می‌گیریم؟ 📚

  1. Deployment در Kubernetes چیست؟
  2. چگونه می‌توانیم اپلیکیشن‌ها رو به‌روزرسانی کنیم بدون اینکه سیستم کرش کنه.
  3. مفهوم Rolling Update و چطور باعث می‌شود که بدون قطعی، به‌روزرسانی‌ها انجام بشه.
  4. پیاده‌سازی نسخه‌بندی در Kubernetes با استفاده از Deployment.

Deployment در Kubernetes: چه کاربردی داره؟

وقتی شما اپلیکیشن‌ها رو توی Kubernetes می‌سازید و اجرا می‌کنید، نیاز دارید که اون‌ها رو به راحتی و بدون اینکه مشکل پیش بیاد، به‌روزرسانی کنید. اینجاست که Deployment وارد میشه! 🤩

تعریف ساده:

Deployment در Kubernetes یه شیء (object) هست که به شما این امکان رو می‌ده که اپلیکیشن‌ها رو با راحتی و انعطاف‌پذیری بالا مدیریت کنید. یعنی شما می‌تونید تعداد مشخصی Pod رو در کلاستر Kubernetes تعریف کنید و Kubernetes وظیفه مقیاس‌پذیری، نسخه‌بندی، و به‌روزرسانی اون‌ها رو به عهده می‌گیره.

چه مشکلی رو حل می‌کنه؟

  • نسخه‌بندی: به راحتی می‌تونید نسخه‌های مختلف اپلیکیشن رو مدیریت کنید.
  • Rolling Update: به‌روزرسانی‌ها به صورت مرحله به مرحله و بدون ایجاد قطعی انجام میشه. به این معنی که حتی وقتی آپدیت می‌کنید، کاربران متوجه قطعی یا downtime نمی‌شن.
  • Rollback: اگه آپدیت جدید مشکلی ایجاد کنه، می‌تونید خیلی راحت به نسخه قبلی برگردید. یعنی مثل جادو عمل می‌کنه! 🔮

چطور با استفاده از Deployment اپلیکیشن‌ها رو به‌روزرسانی کنیم؟

Rolling Update: چطور به‌روزرسانی بدون قطعی داشته باشیم؟

حالا فرض کنید شما یه اپلیکیشن دارید که یه مدت کار کرده، اما حالا می‌خواهید یه ویژگی جدید بهش اضافه کنید یا باگ‌هاش رو اصلاح کنید. وقتی بخواهید اپلیکیشن رو به‌روزرسانی کنید، ممکنه نگرانی‌هایی داشته باشید که "آیا کاربران من به مشکل می‌خورن؟" یا "آیا سیستم از کار می‌افته؟"

کدوم آدمی دوست داره وسط کارش قطعی پیش بیاد؟ 😅 هیچ‌کس! خب، اینجاست که Rolling Update به کمک شما میاد.

چطور کار می‌کنه؟

در Rolling Update، Kubernetes به طور تدریجی و مرحله به مرحله Podهای قدیمی رو با Podهای جدید جایگزین می‌کنه. به این صورت، همیشه تعدادی از Podها فعال و در حال سرویس‌دهی هستن و هیچ قطعی به وجود نمیاد. به طور مثال، اگه شما ۳ Pod دارید، Kubernetes ابتدا یک Pod قدیمی رو حذف می‌کنه و سپس یک Pod جدید رو راه‌اندازی می‌کنه. این فرآیند به همین صورت ادامه پیدا می‌کنه تا تمام Podها به‌روزرسانی بشن.

بیشتر از این نمی‌شه راحت!

نسخه‌بندی در Kubernetes با استفاده از Deployment

چرا نسخه‌بندی مهمه؟

در دنیای واقعی، هیچ‌وقت نمی‌خواهید که آخرین نسخه اپلیکیشن شما باعث از کار افتادن همه چیز بشه. پس داشتن نسخه‌های مختلف و امکان برگشت به نسخه‌های قبلی، یک ضرورت است. این ویژگی در Kubernetes به راحتی از طریق Deployment قابل دسترسی است.

چطور نسخه‌بندی کنیم؟

وقتی شما یک Deployment جدید می‌سازید یا یک اپلیکیشن رو به‌روزرسانی می‌کنید، می‌تونید ورژن‌های مختلف رو مشخص کنید. اینکار می‌تونه با استفاده از image جدیدی که در فایل YAML مشخص می‌کنید، انجام بشه.

نمونه کد:

apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19.0 # اینجا نسخه جدید رو مشخص می‌کنید ports: - containerPort: 80

با این کد، شما دارید به Kubernetes می‌گید که از نسخه‌ی nginx:1.19.0 استفاده کن و اون رو به‌طور خودکار برای شما به‌روزرسانی کنه.

Rollback: وقتی که به‌روزرسانی جواب نمی‌ده 😬

حتماً شما هم این تجربه رو داشتید که یک‌سری تغییرات انجام بدید و بعد ببینید که "اوops، این یکی اشتباه بود!" و خب، اینجا Kubernetes برای شما امکان Rollback رو فراهم کرده. با استفاده از فرمان kubectl rollout undo، می‌تونید به راحتی به نسخه قبلی برگردید.

نمونه دستور Rollback:

kubectl rollout undo deployment/nginx-deployment

به همین راحتی! بعد از این دستور، Kubernetes به‌طور خودکار نسخه قبلی اپلیکیشن شما رو بازیابی می‌کنه و کاربران هیچ‌چیز متوجه نمی‌شن! 😎

نتیجه‌گیری

حالا که Deployment رو شناختید، می‌دونید چطور از این ابزار قدرتمند برای به‌روزرسانی و نسخه‌بندی اپلیکیشن‌ها استفاده کنید. با استفاده از Rolling Update، می‌تونید به راحتی اپلیکیشن‌هاتون رو بدون قطعی و مشکلات دیگه به‌روزرسانی کنید و با امکان Rollback هم، هیچ نگرانی از بابت اشتباهات ندارید.

Kubernetes همیشه توی گوش شما می‌گه: "نگران نباش، من همه چی رو برات درست می‌کنم!" 😅

نظر شما چیه؟ شما چطور اپلیکیشن‌هاتون رو به‌روزرسانی می‌کنید؟ سوالات و تجربیات خودتون رو تو کامنت‌ها بنویسید! 😊

kubernetesکوبرنتیزدواپسdevopsdeployment
DevOps Engineer | Telegram : @SepiFa
شاید از این پست‌ها خوشتان بیاید