نوٹ ترجمہ: Weaveworks کی طرف سے یہ جائزہ سب سے زیادہ مقبول ایپلیکیشن رول آؤٹ حکمت عملیوں کو متعارف کراتا ہے اور یہ ظاہر کرتا ہے کہ کس طرح سب سے جدید ترین کو کبرنیٹس فلیگر آپریٹر کا استعمال کرتے ہوئے لاگو کیا جا سکتا ہے۔ یہ سادہ زبان میں لکھا گیا ہے اور اس میں بصری خاکے ہیں جو نوآموز انجینئروں کو بھی اس مسئلے کو سمجھنے کی اجازت دیتے ہیں۔

خاکہ سے لیا گیا ہے۔ کنٹینر سلوشنز میں تیار کردہ رول آؤٹ حکمت عملی
آج کلاؤڈ مقامی ایپلی کیشنز کو تیار کرنے میں سب سے بڑا چیلنج تعیناتی کو تیز کرنا ہے۔ مائیکرو سروسز کے نقطہ نظر میں، ڈویلپر پہلے سے ہی مکمل طور پر ماڈیولر ایپلی کیشنز کے ساتھ کام کرتے ہیں اور ڈیزائن کرتے ہیں، جس سے مختلف ٹیموں کو بیک وقت کوڈ لکھنے اور ایپلی کیشن میں تبدیلیاں کرنے کی اجازت ملتی ہے۔
مختصر اور زیادہ متواتر تعیناتیوں کے درج ذیل فوائد ہیں:
- بازار جانے کا وقت کم ہو گیا ہے۔
- نئی خصوصیات تیزی سے صارفین تک پہنچتی ہیں۔
- صارف کی رائے تیزی سے ترقیاتی ٹیم تک پہنچتی ہے۔ اس کا مطلب ہے کہ ٹیم خصوصیات شامل کر سکتی ہے اور مسائل کو زیادہ تیزی سے حل کر سکتی ہے۔
- ڈویلپر کے حوصلے بڑھتے ہیں: ترقی میں مزید خصوصیات کے ساتھ کام کرنے میں زیادہ مزہ آتا ہے۔
لیکن جیسے جیسے ریلیز کی فریکوئنسی بڑھتی ہے، ایپلیکیشن کی وشوسنییتا یا صارف کے تجربے پر منفی اثر ڈالنے کے امکانات بھی بڑھ جاتے ہیں۔ اسی لیے آپریشنز اور DevOps ٹیموں کے لیے یہ ضروری ہے کہ وہ پراسسز تیار کریں اور تعیناتی کی حکمت عملیوں کو اس طریقے سے منظم کریں جس سے پروڈکٹ اور صارفین کے لیے خطرہ کم سے کم ہو۔ (آپ CI/CD پائپ لائن آٹومیشن کے بارے میں مزید جان سکتے ہیں۔ .)
اس پوسٹ میں، ہم Kubernetes میں تعیناتی کی مختلف حکمت عملیوں پر تبادلہ خیال کریں گے، بشمول رولنگ کی تعیناتی اور مزید جدید طریقے جیسے کینری رول آؤٹ اور ان کے تغیرات۔
تعیناتی کی حکمت عملی
تعیناتی کی حکمت عملیوں کی کئی مختلف قسمیں ہیں جنہیں آپ اپنے مقصد کے لحاظ سے استعمال کر سکتے ہیں۔ مثال کے طور پر، آپ کو مزید جانچ کے لیے کسی مخصوص ماحول میں، یا صارفین/کلائنٹس کے ذیلی سیٹ میں تبدیلیاں کرنے کی ضرورت پڑ سکتی ہے، یا آپ کو فیچر بنانے سے پہلے محدود صارف کی جانچ کرنے کی ضرورت پڑ سکتی ہے۔ عوام.
رولنگ (بتدریج، "رولنگ" تعیناتی)
یہ Kubernetes میں تعیناتی کی معیاری حکمت عملی ہے۔ یہ آہستہ آہستہ، ایک ایک کرکے، پوڈز کو ایپلیکیشن کے پرانے ورژن کے ساتھ نئے ورژن کے ساتھ پوڈز سے بدلتا ہے - بغیر کلسٹر ڈاؤن ٹائم کے۔

کبرنیٹس اس وقت تک انتظار کرتا ہے جب تک کہ نئے پوڈز کام کرنے کے لیے تیار نہ ہوں (ان کا استعمال کرتے ہوئے چیک کریں۔ اس سے پہلے کہ آپ پرانے کو رول کرنا شروع کریں۔ اگر کوئی مسئلہ پیش آتا ہے، تو اس رولنگ اپ ڈیٹ کو پورے کلسٹر کو روکے بغیر روکا جا سکتا ہے۔ تعیناتی کی قسم کی وضاحت کرنے والی YAML فائل میں، نئی تصویر پرانی تصویر کی جگہ لے لیتی ہے:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: awesomeapp
spec:
replicas: 3
template:
metadata:
labels:
app: awesomeapp
spec:
containers:
- name: awesomeapp
image: imagerepo-user/awesomeapp:new
ports:
- containerPort: 8080رول اوور اپ ڈیٹ کے پیرامیٹرز مینی فیسٹ فائل میں بتائے جا سکتے ہیں:
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
...
دوبارہ بنائیں
اس آسان ترین قسم کی تعیناتی میں، پرانے پوڈز کو ایک ہی وقت میں مار دیا جاتا ہے اور ان کی جگہ نئی ڈال دی جاتی ہیں:

متعلقہ مینی فیسٹ کچھ اس طرح نظر آتا ہے:
spec:
replicas: 3
strategy:
type: Recreate
template:
...نیلا/سبز (نیلی سبز تعیناتیاں)
نیلے سبز کی تعیناتی کی حکمت عملی (جسے بعض اوقات سرخ/سیاہ بھی کہا جاتا ہے) میں ایپلیکیشن کے پرانے (سبز) اور نئے (نیلے) ورژن کی بیک وقت تعیناتی شامل ہوتی ہے۔ دونوں ورژن پوسٹ کرنے کے بعد، باقاعدہ صارفین کو سبز رنگ تک رسائی حاصل ہوتی ہے، جبکہ نیلا رنگ QA ٹیم کے لیے علیحدہ سروس یا ڈائریکٹ پورٹ فارورڈنگ کے ذریعے ٹیسٹ خودکار کرنے کے لیے دستیاب ہوتا ہے:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: awesomeapp-02
spec:
template:
metadata:
labels:
app: awesomeapp
version: "02"نیلے (نئے) ورژن کی جانچ کرنے اور اس کی ریلیز کی منظوری کے بعد، سروس اس میں تبدیل ہو جاتی ہے، اور سبز (پرانا) ورژن فولڈ ہو جاتا ہے:
apiVersion: v1
kind: Service
metadata:
name: awesomeapp
spec:
selector:
app: awesomeapp
version: "02"
...کینری (کینری تعیناتیاں)
کینری رول آؤٹ نیلے سبز رول آؤٹ کی طرح ہیں، لیکن بہتر کنٹرول اور استعمال ہے قدم بہ قدم نقطہ نظر. اس قسم میں کئی مختلف حکمت عملییں شامل ہیں، بشمول "اسٹیلتھ" لانچ اور A/B ٹیسٹنگ۔
یہ حکمت عملی اس وقت استعمال کی جاتی ہے جب عام طور پر ایپلیکیشن کے پس منظر میں کچھ نئی فعالیت کو آزمانے کی ضرورت ہو۔ نقطہ نظر کا جوہر دو تقریبا ایک جیسے سرورز بنانا ہے: ایک تقریبا تمام صارفین کی خدمت کرتا ہے، اور دوسرا، نئے افعال کے ساتھ، صارفین کے صرف ایک چھوٹے ذیلی گروپ کی خدمت کرتا ہے، جس کے بعد ان کے کام کے نتائج کا موازنہ کیا جاتا ہے۔ اگر سب کچھ غلطیوں کے بغیر ہوتا ہے، تو نئے ورژن کو آہستہ آہستہ پورے انفراسٹرکچر تک لے جایا جاتا ہے۔
اگرچہ اس حکمت عملی کو خصوصی طور پر Kubernetes کا استعمال کرتے ہوئے نافذ کیا جا سکتا ہے، پرانے پوڈز کو نئے سے تبدیل کر کے، Istio جیسے سروس میش کا استعمال کرنا زیادہ آسان اور آسان ہے۔
مثال کے طور پر، آپ کے پاس گٹ میں دو مختلف مینی فیسٹ ہو سکتے ہیں: ٹیگ 0.1.0 کے ساتھ ایک باقاعدہ مینی فیسٹ اور ٹیگ 0.2.0 کے ساتھ کینری مینی فیسٹ۔ Istio ورچوئل گیٹ وے مینی فیسٹ میں وزن کو تبدیل کر کے، آپ ان دو تعیناتیوں کے درمیان ٹریفک کی تقسیم کو کنٹرول کر سکتے ہیں:

Istio کا استعمال کرتے ہوئے کینری تعیناتیوں کو نافذ کرنے کے لیے مرحلہ وار گائیڈ کے لیے، دیکھیں . (نوٹ. ترجمہ: ہم نے کینری رول آؤٹ کے بارے میں مواد کا Istio میں ترجمہ بھی کیا۔ .)
ویو ورکس فلیگر کے ساتھ کینری تعیناتیاں
آپ کو آسانی سے اور مؤثر طریقے سے کینری رول آؤٹ کا انتظام کرنے کی اجازت دیتا ہے۔
فلیگر آٹومیٹس ان کے ساتھ کام کرتے ہیں۔ یہ ٹریفک کو روٹ اور سوئچ کرنے کے لیے Istio یا AWS ایپ میش اور نتائج کا تجزیہ کرنے کے لیے Prometheus میٹرکس کا استعمال کرتا ہے۔ اس کے علاوہ، کینری تعیناتیوں کے تجزیے کو قبولیت ٹیسٹ، لوڈ ٹیسٹ، اور کسی بھی دوسری قسم کی جانچ پڑتال کرنے کے لیے ویب ہکس کے ساتھ اضافی کیا جا سکتا ہے۔
Kubernetes کی تعیناتی کی بنیاد پر اور، اگر ضروری ہو تو، پوڈز کی افقی اسکیلنگ (HPA)، Flagger کینری تعیناتیوں کا تجزیہ اور عمل درآمد کرنے کے لیے اشیاء کے سیٹ (Kubernetes کی تعیناتی، ClusterIP سروسز اور Istio یا App Mesh ورچوئل سروسز) تخلیق کرتا ہے:

کنٹرول لوپ کو نافذ کرنا (کنٹرول لوپ),Flagger بتدریج ٹریفک کو کینری سرور پر سوئچ کرتا ہے، جبکہ ساتھ ہی ساتھ اہم کارکردگی کے میٹرکس جیسے کامیاب HTTP درخواستوں کا فیصد، اوسط درخواست کی مدت، اور پوڈ کی صحت کی پیمائش کرتا ہے۔ KPI (Key Performance Indicators) کے تجزیہ کی بنیاد پر، کینری یا تو بڑھ جاتی ہے یا گرتی ہے اور تجزیہ کے نتائج Slack میں شائع ہوتے ہیں۔ اس عمل کی تفصیل اور مظاہرہ مواد میں پایا جا سکتا ہے۔ .

تاریک (چھپی ہوئی) یا A/B تعیناتیاں
اسٹیلتھ تعیناتی کینری حکمت عملی کی ایک اور تبدیلی ہے (جس کے ساتھ، فلیگر بھی کام کر سکتا ہے)۔ اسٹیلتھ اور کینری تعیناتیوں کے درمیان فرق یہ ہے کہ اسٹیلتھ کی تعیناتیاں کینری کی تعیناتیوں کی طرح بیک اینڈ کے بجائے فرنٹ اینڈ سے نمٹتی ہیں۔
ان تعیناتیوں کا دوسرا نام A/B ٹیسٹنگ ہے۔ نئے فیچر کو تمام صارفین کے لیے دستیاب کرنے کے بجائے، یہ ان میں سے صرف ایک محدود حصے کے لیے پیش کیا جاتا ہے۔ عام طور پر، یہ صارفین اس بات سے بے خبر ہوتے ہیں کہ وہ ابتدائی ٹیسٹرز ہیں (اس لیے اصطلاح "اسٹیلتھ تعیناتی")۔
فنکشنلٹی سوئچز کا استعمال (فیچر ٹوگل) اور دیگر ٹولز، آپ نگرانی کر سکتے ہیں کہ صارفین نئی خصوصیت کے ساتھ کس طرح تعامل کرتے ہیں، آیا وہ اس کے ساتھ مشغول ہیں، یا کیا انہیں نیا صارف انٹرفیس الجھا ہوا ہے، اور میٹرکس کی دیگر اقسام۔

فلیگر اور A/B تعیناتیاں
وزن پر مبنی روٹنگ کے علاوہ، Flagger HTTP پیرامیٹرز کی بنیاد پر ٹریفک کو کینری سرور تک بھی روٹ کر سکتا ہے۔ A/B ٹیسٹنگ میں، آپ HTTP ہیڈر یا کوکیز استعمال کر سکتے ہیں تاکہ صارفین کے مخصوص طبقہ کو نشانہ بنایا جا سکے۔ یہ خاص طور پر فرنٹ اینڈ ایپلی کیشنز کے معاملے میں موثر ہے جن کے لیے سرور کے لیے سیشن بائنڈنگ کی ضرورت ہوتی ہے۔ (سیشن وابستگی). مزید معلومات Flagger دستاویزات میں مل سکتی ہیں۔
مصنف نے اظہار تشکر کیا ہے۔ , Weaveworks انجینئر (اور Flagger کے خالق)، ان تمام حیرت انگیز تعیناتی پیٹرن کے لیے۔
مترجم سے PS
ہمارے بلاگ پر بھی پڑھیں:
- «؛ "
- «؛ "
- «؛ "
- «'.
ماخذ: www.habr.com
