سلام دوستان Kubernetesباز! 🌟 امیدوارم توی دنیای پرچالش و پرهیجان Kubernetes هنوز از هیجان نیوفته باشید! توی این مقاله میخواهیم به یکی از قابلیتهای خیلی مهم Kubernetes بپردازیم که بدون شک کار شما رو خیلی راحتتر میکنه: Deploymentها.
اگر شما هم از اون دست افرادی هستید که همیشه وقتی اپلیکیشنی رو بهروزرسانی میکنید، میترسید که ممکنه چیزی خراب بشه یا سرور بهم بریزه، پس این مقاله مخصوص شماست! 😬 بریم سراغ اینکه چطور با استفاده از Deployments در Kubernetes، اپلیکیشنهاتون رو بدون دردسر و با خیال راحت بهروزرسانی کنید.
وقتی شما اپلیکیشنها رو توی Kubernetes میسازید و اجرا میکنید، نیاز دارید که اونها رو به راحتی و بدون اینکه مشکل پیش بیاد، بهروزرسانی کنید. اینجاست که Deployment وارد میشه! 🤩
Deployment در Kubernetes یه شیء (object) هست که به شما این امکان رو میده که اپلیکیشنها رو با راحتی و انعطافپذیری بالا مدیریت کنید. یعنی شما میتونید تعداد مشخصی Pod رو در کلاستر Kubernetes تعریف کنید و Kubernetes وظیفه مقیاسپذیری، نسخهبندی، و بهروزرسانی اونها رو به عهده میگیره.
حالا فرض کنید شما یه اپلیکیشن دارید که یه مدت کار کرده، اما حالا میخواهید یه ویژگی جدید بهش اضافه کنید یا باگهاش رو اصلاح کنید. وقتی بخواهید اپلیکیشن رو بهروزرسانی کنید، ممکنه نگرانیهایی داشته باشید که "آیا کاربران من به مشکل میخورن؟" یا "آیا سیستم از کار میافته؟"
کدوم آدمی دوست داره وسط کارش قطعی پیش بیاد؟ 😅 هیچکس! خب، اینجاست که Rolling Update به کمک شما میاد.
در Rolling Update، Kubernetes به طور تدریجی و مرحله به مرحله Podهای قدیمی رو با Podهای جدید جایگزین میکنه. به این صورت، همیشه تعدادی از Podها فعال و در حال سرویسدهی هستن و هیچ قطعی به وجود نمیاد. به طور مثال، اگه شما ۳ Pod دارید، Kubernetes ابتدا یک Pod قدیمی رو حذف میکنه و سپس یک Pod جدید رو راهاندازی میکنه. این فرآیند به همین صورت ادامه پیدا میکنه تا تمام Podها بهروزرسانی بشن.
در دنیای واقعی، هیچوقت نمیخواهید که آخرین نسخه اپلیکیشن شما باعث از کار افتادن همه چیز بشه. پس داشتن نسخههای مختلف و امکان برگشت به نسخههای قبلی، یک ضرورت است. این ویژگی در 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 استفاده کن و اون رو بهطور خودکار برای شما بهروزرسانی کنه.
حتماً شما هم این تجربه رو داشتید که یکسری تغییرات انجام بدید و بعد ببینید که "اوops، این یکی اشتباه بود!" و خب، اینجا Kubernetes برای شما امکان Rollback رو فراهم کرده. با استفاده از فرمان kubectl rollout undo
، میتونید به راحتی به نسخه قبلی برگردید.
kubectl rollout undo deployment/nginx-deployment
به همین راحتی! بعد از این دستور، Kubernetes بهطور خودکار نسخه قبلی اپلیکیشن شما رو بازیابی میکنه و کاربران هیچچیز متوجه نمیشن! 😎
حالا که Deployment رو شناختید، میدونید چطور از این ابزار قدرتمند برای بهروزرسانی و نسخهبندی اپلیکیشنها استفاده کنید. با استفاده از Rolling Update، میتونید به راحتی اپلیکیشنهاتون رو بدون قطعی و مشکلات دیگه بهروزرسانی کنید و با امکان Rollback هم، هیچ نگرانی از بابت اشتباهات ندارید.
Kubernetes همیشه توی گوش شما میگه: "نگران نباش، من همه چی رو برات درست میکنم!" 😅
نظر شما چیه؟ شما چطور اپلیکیشنهاتون رو بهروزرسانی میکنید؟ سوالات و تجربیات خودتون رو تو کامنتها بنویسید! 😊