جینکنز-ایکس اسٹیو فلیگر کا استعمال کرتے ہوئے کینری تعیناتی۔
کینری تعیناتی۔
ہمیں امید ہے کہ آپ پڑھیں گے۔ پہلا حصہ، جہاں ہم نے مختصر طور پر وضاحت کی کہ کینری تعیناتیاں کیا ہیں۔ ہم نے یہ بھی دکھایا کہ معیاری Kubernetes وسائل کا استعمال کرتے ہوئے اسے کیسے نافذ کیا جائے۔
آرگو رول آؤٹ
Argo Rollouts ایک Kubernetes مقامی تعیناتی کنٹرولر ہے۔ یہ Kubernetes کے لیے CRD (کسٹم ریسورس ڈیفینیشن) فراہم کرتا ہے۔ اس کا شکریہ، ہم ایک نیا وجود استعمال کر سکتے ہیں: Rollout، جو مختلف ترتیب کے اختیارات کے ساتھ نیلے سبز اور کینری تعیناتیوں کا انتظام کرتا ہے۔
آرگو رول آؤٹ کنٹرولر حسب ضرورت وسائل کے ذریعے استعمال کیا جاتا ہے۔ Rollout, Kubernetes کے لیے اضافی تعیناتی کی حکمت عملیوں جیسے نیلے سبز اور کینری کی اجازت دیتا ہے۔ وسیلہ Rollout فعالیت کے برابر فراہم کرتا ہے۔ Deploymentصرف اضافی تعیناتی کی حکمت عملیوں کے ساتھ۔
وسائل Deployments تعیناتی کے لیے دو حکمت عملی ہیں: RollingUpdate и Recreate. اگرچہ یہ حکمت عملی زیادہ تر معاملات کے لیے موزوں ہیں، بہت بڑے پیمانے پر سرورز پر تعیناتی کے لیے، اضافی حکمت عملیوں کا استعمال کیا جاتا ہے، جیسے نیلا سبز یا کینری، جو تعیناتی کنٹرولر میں دستیاب نہیں ہیں۔ Kubernetes میں ان حکمت عملیوں کو استعمال کرنے کے لیے، صارفین کو اپنی تعیناتیوں کے اوپر اسکرپٹ لکھنا پڑتا تھا۔ آرگو رول آؤٹ کنٹرولر ان حکمت عملیوں کو سادہ، اعلانیہ، قابل ترتیب پیرامیٹرز کے طور پر ظاہر کرتا ہے۔ https://argoproj.github.io/argo-rollouts
آرگو سی آئی بھی ہے، جو رول آؤٹ کے ساتھ استعمال کے لیے ایک آسان ویب انٹرفیس فراہم کرتا ہے، ہم اگلے مضمون میں اس پر ایک نظر ڈالیں گے۔
ہمارے انفراسٹرکچر شلجم میں (نیچے دیکھیں) ہم نے پہلے ہی install.yaml کو بطور i/k8s/argo-rollouts/install.yaml شامل کر دیا ہے۔ اس طرح GitlabCI اسے کلسٹر میں انسٹال کرے گا۔
یہ ایک بہت ہی آسان Python+Flask API ہے جو JSON کے بطور جواب دیتا ہے۔ ہم GitlabCI کا استعمال کرتے ہوئے پیکیج بنائیں گے اور نتیجہ کو Gitlab رجسٹری میں بھیجیں گے۔ رجسٹری میں ہمارے پاس دو مختلف ریلیز ورژن ہیں:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
ان کے درمیان فرق صرف JSON فائل کی واپسی ہے۔ ہم اس ایپلی کیشن کو آسانی سے تصور کرنے کے لیے استعمال کرتے ہیں کہ ہم کس ورژن سے بات کر رہے ہیں۔
انفراسٹرکچر ذخیرہ
اس ذخیرہ میں ہم GitlabCI کو Kubernetes میں تعیناتی کے لیے استعمال کریں گے، .gitlab-ci.yml اس طرح دکھتا ہے:
Rollout تعیناتی کی طرح کام کرتا ہے۔ اگر ہم اپ ڈیٹ کی حکمت عملی ترتیب نہیں دیتے ہیں (جیسے یہاں کینری) یہ ڈیفالٹ رولنگ اپ ڈیٹ تعیناتی کی طرح برتاؤ کرے گا۔
ہم کینری تعیناتی کے لیے یامل میں دو مراحل کی وضاحت کرتے ہیں:
کینری تک 10% ٹریفک (دستی ٹھیک ہونے کا انتظار کریں)
کینری تک 50% ٹریفک (2 منٹ انتظار کریں پھر 100% تک جاری رکھیں)
ابتدائی تعیناتی انجام دے رہا ہے۔
После начального деплоя наши ресурсы будут выглядеть так:
اور ہمیں درخواست کے پہلے ورژن سے ہی جواب ملتا ہے:
کینری تعیناتی انجام دینا
مرحلہ 1: 10% ٹریفک
کینری تعیناتی شروع کرنے کے لیے، ہمیں صرف تصویری ورژن کو تبدیل کرنے کی ضرورت ہے جیسا کہ ہم عام طور پر تعیناتیوں کے ساتھ کرتے ہیں:
میں واقعی اس ویڈیو کی سفارش کرتا ہوں، یہ ظاہر کرتا ہے کہ Argo Rollouts اور Argo CI ایک ساتھ کیسے کام کرتے ہیں:
کل
مجھے واقعی CRDs استعمال کرنے کا خیال پسند ہے جو اضافی قسم کی تعیناتیوں یا نقل کے سیٹوں، ٹریفک کو ری ڈائریکٹ کرنے وغیرہ کا انتظام کرتا ہے۔ ان کے ساتھ کام آسانی سے ہوتا ہے۔ اگلا میں Argo CI کے ساتھ انضمام کی جانچ کرنا چاہوں گا۔
تاہم، ایسا لگتا ہے کہ Argo CI اور Flux CI کا ایک بڑا انضمام آرہا ہے، لہذا میں نئی ریلیز کے سامنے آنے تک انتظار کر سکتا ہوں: آرگو فلوکس.
کیا آپ کو Argo Rollouts یا Argo CI کے ساتھ کوئی تجربہ ہوا ہے؟