د هیلم وسیله او د هغې زیانونه

د هیلم وسیله او د هغې زیانونه
د ټایفون د بار وړونکي تصور، انتون سوینپول

زما نوم دیمیتري سوگروبوف دی، زه په لیروی مرلین کې پراختیا کونکی یم. پدې مقاله کې زه به تاسو ته ووایم چې ولې هیلم ته اړتیا ده، دا څنګه د کوبرنیټس سره کار کول اسانه کوي، په دریمه نسخه کې څه بدلون راغلی، او دا څنګه کارول کیدی شي پرته له ځنډ څخه په تولید کې غوښتنلیکونه تازه کړي.

دا په یوه کنفرانس کې د وینا پر بنسټ لنډیز دی @Kubernetes کنفرانس by Mail.ru کلاوډ حلونه - که تاسو لوستل نه غواړئ، ویډیو وګورئ.

ولې موږ په تولید کې Kubernetes کاروو

لیروی مرلین په روسیه او اروپا کې د DIY پرچون بازار مشر دی. زموږ شرکت له سلو څخه ډیر پراختیا کونکي، 33 داخلي کارمندان او یو لوی شمیر خلک لري چې هایپرمارکیټونو او ویب پاڼې ته مراجعه کوي. د دې لپاره چې دوی ټول خوشحاله کړي، موږ پریکړه وکړه چې د صنعت معیاري طریقې تعقیب کړو. د مایکرو سرویس معمارۍ په کارولو سره نوي غوښتنلیکونه رامینځته کړئ؛ د چاپیریال د جلا کولو او مناسب تحویلۍ ډاډ ترلاسه کولو لپاره کانټینرونه وکاروئ؛ او د آرکیسټریشن لپاره Kubernetes وکاروئ. د آرکیسټرټرانو کارولو نرخ په چټکۍ سره ارزانه کیږي: په بازار کې د ټیکنالوژۍ ماهر انجینرانو شمیر مخ په ډیریدو دی ، او وړاندیز کونکي داسې ښکاري چې کبرنیټس د خدمت په توګه وړاندیز کوي.

هرڅه چې کوبرنیټس کوي، البته، په نورو لارو ترسره کیدی شي، د بیلګې په توګه، د سکریپټونو سره د ځینې جینکنز او ډاکر کمپوز پوښلو سره، مګر ولې ژوند پیچلی کوي که چیرې چمتو او د باور وړ حل شتون ولري؟ له همدې امله موږ کبرنیټس ته راغلو او د یو کال راهیسې یې په تولید کې کاروو. موږ اوس مهال د کوبرنیټس 24 کلسترونه لرو، چې تر ټولو زوړ یې له یو کال څخه زیات عمر لري، شاوخوا دوه سوه پوډونه لري.

په Kubernetes کې د لوی YAML فایلونو لعنت

په Kubernetes کې د مایکرو خدمت پیل کولو لپاره، موږ به لږترلږه پنځه YAML فایلونه جوړ کړو: د ځای پرځای کولو، خدمت، ننوتلو، ConfigMap، رازونو لپاره - او کلستر ته یې واستوو. د راتلونکي اپلیکیشن لپاره به موږ د جامونو ورته بسته ولیکئ، د دریم سره به موږ بل ولیکو، او داسې نور. که موږ د اسنادو شمیر د چاپیریالونو شمیر سره ضرب کړو، موږ به دمخه په سلګونو فایلونه ترلاسه کړو، او دا لاهم متحرک چاپیریال په پام کې نه نیسي.

د هیلم وسیله او د هغې زیانونه
ادم رییس، د هیلم اصلي ساتونکي، د "په Kubernetes کې د پراختیا دوره"، کوم چې داسې ښکاري:

  1. د YAML کاپي کړئ - د YAML فایل کاپي کړئ.
  2. YAML پیسټ کړئ - پیسټ کړئ.
  3. فکس انډینټس - فکس انډینټ.
  4. تکرار کړئ - بیا تکرار کړئ.

اختیار کار کوي، مګر تاسو باید ډیری وختونه د YAML فایلونه کاپي کړئ. د دې دورې د بدلولو لپاره، هیلم ایجاد شو.

هیلم څه شی دی؟

لومړی، هیلم - د بسته بندۍ مدیر، کوم چې تاسو سره د هغه برنامو موندلو او نصبولو کې مرسته کوي چې تاسو ورته اړتیا لرئ. د نصبولو لپاره، د بیلګې په توګه، MongoDB، تاسو اړتیا نلرئ رسمي ویب پاڼې ته لاړ شئ او بائنری ډاونلوډ کړئ، یوازې کمانډ چل کړئ helm install stable/mongodb.

دوهم، هیلم - ټیمپلیټ انجن، د فایلونو پیرامیټریز کولو کې مرسته کوي. راځئ چې په Kubernetes کې د YAML فایلونو سره وضعیت ته راستون شو. د ورته YAML فایل لیکل اسانه دي ، پدې کې ځینې ځای لرونکي اضافه کړئ ، په کوم کې چې هیلم به ارزښتونه ځای په ځای کړي. دا د دې په ځای چې د لوی سکفولډونو په ځای، د ټیمپلیټونو سیټ به وي چې اړین ارزښتونه به په مناسب وخت کې ځای په ځای شي.

دریم، هیلم - د ځای پرځای کولو ماسټر. د دې سره تاسو کولی شئ غوښتنلیکونه نصب کړئ، رول بیک او تازه کړئ. راځئ چې معلومه کړو چې دا څنګه وکړو.

د هیلم وسیله او د هغې زیانونه

د خپل غوښتنلیکونو ځای پرځای کولو لپاره د هیلم کارولو څرنګوالی

راځئ چې د چارواکو په تعقیب ستاسو په کمپیوټر کې د هیلم مراجع نصب کړو لارښوونې. بیا، موږ به د YAML فایلونو سیټ جوړ کړو. د ځانګړو ارزښتونو د ټاکلو پر ځای، موږ به ځای لرونکي پریږدو، کوم چې هیلم به په راتلونکي کې د معلوماتو سره ډک کړي. د دې ډول فایلونو سیټ د هیلم چارټ په نوم یادیږي. دا د هیلم کنسول پیرودونکي ته په دریو لارو لیږل کیدی شي:

  • د ټیمپلیټونو سره فولډر په ګوته کړئ؛
  • آرشیف په .tar کې بسته کړئ او ورته اشاره وکړئ؛
  • ټیمپلیټ په لرې پرتو ذخیره کې واچوئ او د هیلم پیرودونکي کې ذخیره ته لینک اضافه کړئ.

تاسو د ارزښتونو سره فایل ته هم اړتیا لرئ - values.yaml. له هغه ځایه ډاټا به په ټیمپلیټ کې داخل شي. راځئ چې دا هم جوړ کړو.

د هیلم وسیله او د هغې زیانونه
د هیلم دوهم نسخه د اضافي سرور غوښتنلیک لري - ټیلر. دا د Kubernetes څخه بهر ځړول کیږي او د هیلم پیرودونکي څخه غوښتنو ته انتظار کوي، او کله چې ویل کیږي، اړین ارزښتونه په ټیمپلیټ کې ځای پرځای کوي او Kubernetes ته یې لیږي.

د هیلم وسیله او د هغې زیانونه
Helm 3 ساده دی: په سرور کې د ټیمپلیټونو پروسس کولو پرځای، معلومات اوس په بشپړ ډول د هیلم پیرودونکي اړخ کې پروسس کیږي او مستقیم د کوبرنیټس API ته لیږل کیږي. دا ساده کول د کلستر امنیت ته وده ورکوي او د رول آوټ سکیم اسانه کوي.

دا ټول څنګه کار کوي

کمانډ چل کړئ helm install. راځئ چې د غوښتنلیک خوشې کولو نوم په ګوته کړو او د values.yaml ته لاره ورکړئ. په پای کې به موږ هغه ذخیره په ګوته کړو چیرې چې چارټ موقعیت لري او د چارټ نوم. په مثال کې، دا په ترتیب سره "lmru" او "bestchart" دي.

helm install --name bestapp --values values.yaml lmru/bestchart

کمانډ یوازې یو ځل اجرا کیدی شي، کله چې د هغې پرځای بیا اعدام شي install کارولو ته اړتیا لري upgrade. د سادګۍ لپاره، د دوو کمانډونو پرځای، تاسو کولی شئ کمانډ چل کړئ upgrade د اضافي کیلي سره --install. کله چې د لومړي ځل لپاره اعدام شي، هیلم به د خوشې کولو نصبولو لپاره کمانډ واستوي، او په راتلونکي کې به یې تازه کړي.

helm upgrade --install bestapp --values values.yaml lmru/bestchart

د هیلم سره د اپلیکیشن د نوي نسخو ځای پرځای کولو زیانونه

د کیسې په دې مرحله کې، زه د لیدونکو سره څوک غواړي چې ملیونر شي لوبه کوم، او موږ په دې پوهیږو چې څنګه هیلم ترلاسه کړو ترڅو د اپلیکیشن نسخه تازه کړي. ویډیو وګورئ.

کله چې زه زده کوم چې هیلم څنګه کار کوي، زه د عجیب چلند څخه حیران وم کله چې د چلولو غوښتنلیکونو نسخو تازه کولو هڅه کوم. ما د غوښتنلیک کوډ تازه کړ، د ډاکر راجستر ته یو نوی عکس اپلوډ کړ، د ګمارلو قومانده یې واستوله - او هیڅ شی ندی شوی. لاندې د غوښتنلیکونو تازه کولو لپاره ځینې بشپړې بریالۍ لارې ندي. د دوی هر یو په ډیر تفصیل سره مطالعه کولو سره، تاسو د وسیلې داخلي جوړښت او د دې نه څرګند چلند دلیلونو په پوهیدو پیل کوئ.

میتود 1. د وروستي پیل راهیسې معلومات مه بدلوئ

لکه څنګه چې وايي رسمي ویب پاڼه هیلم، "د کوبرنیټس چارټونه لوی او پیچلي کیدی شي، نو هیلم هڅه کوي چې هیڅ شی ته ډیر لاس ورنکړي." له همدې امله ، که تاسو د ډاکر راجسټری کې د غوښتنلیک عکس وروستی نسخه تازه کړئ او کمانډ پرمخ وړئ helm upgradeنو بیا به هیڅ شی نه وي. هیلم به فکر وکړي چې هیڅ شی نه دی بدل شوی او د غوښتنلیک تازه کولو لپاره Kubernetes ته د قوماندې لیږلو ته اړتیا نشته.

دلته او لاندې، وروستی ټګ یوازې د مثال په توګه ښودل شوی. کله چې تاسو دا ټاګ مشخص کړئ، Kubernetes به هر ځل د ډاکر راجستر څخه عکس ډاونلوډ کړي، پرته له دې چې د imagePullPolicy پیرامیټر په پام کې ونیول شي. په تولید کې وروستي کارول ناغوښتل دي او د اړخیزو اغیزو لامل کیږي.

میتود 2. په عکس کې LABEL تازه کړئ

لکه څنګه چې ورته لیکل شوي اسناد, "هیلم به یوازې یو غوښتنلیک تازه کړي که چیرې دا د وروستي خوشې کیدو راهیسې بدل شوی وي." د دې لپاره منطقي اختیار به داسې بریښي چې LABEL پخپله د ډاکر عکس کې تازه کوي. په هرصورت، هیلم د غوښتنلیک عکسونو ته نه ګوري او په دوی کې د کوم بدلون په اړه هیڅ نظر نلري. په دې اساس، کله چې په عکس کې لیبلونه تازه کول، هیلم به د دوی په اړه نه پوهیږي، او د اپلیکیشن تازه کولو کمانډ به Kubernetes ته نه لیږل کیږي.

طریقه 3: کیلي وکاروئ --force

د هیلم وسیله او د هغې زیانونه
راځئ چې لارښود ته وګرځو او اړین کیلي وګورو. کلید خورا معنی لري --force. د څرګند نوم سره سره، چلند د توقع څخه توپیر لري. د غوښتنلیک تازه کولو مجبورولو پرځای ، د دې اصلي هدف د خوشې کیدو بیرته راګرځول دي چې په ناکام حالت کې وي. که تاسو دا کیلي نه کاروئ، تاسو اړتیا لرئ چې حکمونه په ترتیب سره اجرا کړئ helm delete && helm install --replace. د دې پرځای د کلیمې کارولو وړاندیز شوی --force، کوم چې د دې امرونو ترتیبي اجرا کول اتومات کوي. نور معلومات په دې کې د ایستلو غوښتنه. د دې لپاره چې هیلم ته ووایاست چې د غوښتنلیک نسخه تازه کړي، له بده مرغه، دا کیلي به کار ونکړي.

طریقه 4. لیبلونه په مستقیم ډول په Kubernetes کې بدل کړئ

د هیلم وسیله او د هغې زیانونه
د کمانډ په کارولو سره مستقیم په کلستر کې د لیبل تازه کول kubectl edit - بد نظر. دا عمل به د روان غوښتنلیک او هغه یو چې په اصل کې د ځای په ځای کولو لپاره لیږل شوی و تر مینځ د معلوماتو متناقض لامل شي. پدې قضیه کې د ګمارنې پرمهال د هیلم چلند د هغې نسخې څخه توپیر لري: هیلم 2 به هیڅ ونه کړي ، او هیلم 3 به د غوښتنلیک نوې نسخه ځای په ځای کړي. د پوهیدو لپاره چې ولې، تاسو اړتیا لرئ پوه شئ چې هیلم څنګه کار کوي.

هیلم څنګه کار کوي؟

د دې معلومولو لپاره چې ایا غوښتنلیک د وروستي خوشې کیدو راهیسې بدل شوی ، هیلم کولی شي دا وکاروي:

  • په Kubernetes کې د چلولو غوښتنلیک؛
  • نوي values.yaml او اوسنی چارټ؛
  • د هیلم د داخلي خوشې کولو معلومات.

د ډیر لیوالتیا لپاره: هیلم د ریلیزونو په اړه داخلي معلومات چیرته ذخیره کوي؟د امر په اجرا کولو سره helm history، موږ به د هیلم په کارولو سره د نصب شوي نسخو په اړه ټول معلومات ترلاسه کړو.

د هیلم وسیله او د هغې زیانونه
د لیږل شوي ټیمپلیټونو او ارزښتونو په اړه هم مفصل معلومات شتون لري. موږ کولی شو دا غوښتنه وکړو:

د هیلم وسیله او د هغې زیانونه
د هیلم په دویمه نسخه کې، دا معلومات په ورته نوم ځای کې موقعیت لري چیرې چې ټیلر چلیږي (د ډیفالټ کیوب سیسټم)، په ConfigMap کې، د "مالک = TILLER" لیبل سره نښه شوی:

د هیلم وسیله او د هغې زیانونه
کله چې د هیلم دریمه نسخه ښکاره شوه، معلومات رازونو ته لیږدول شوي، او ورته نوم ځای ته چیرته چې غوښتنلیک روان و. د دې څخه مننه، دا ممکنه شوه چې د ورته خوشې شوي نوم سره په مختلفو نوم ځایونو کې په ورته وخت کې ډیری غوښتنلیکونه پرمخ بوځي. په دویمه نسخه کې دا یو جدي سر درد و کله چې نوم ځایونه جلا وي مګر کولی شي یو بل اغیزه وکړي.

د هیلم وسیله او د هغې زیانونه

دوهم هیلم، کله چې هڅه کوي پوه شي چې ایا تازه معلومات ته اړتیا ده، یوازې د معلوماتو دوه سرچینې کاروي: هغه څه چې اوس ورته چمتو شوي، او د خوشې کولو په اړه داخلي معلومات، کوم چې په ConfigMap کې پروت دی.

د هیلم وسیله او د هغې زیانونه
دریم هیلم د درې اړخیز ادغام ستراتیژي کاروي: د دې معلوماتو سربیره ، دا هغه غوښتنلیک هم په پام کې نیسي چې همدا اوس په کوبرنیټس کې روان دی.

د هیلم وسیله او د هغې زیانونه
د دې دلیل لپاره، د هیلم زوړ نسخه به هیڅ کار ونه کړي، ځکه چې دا په کلستر کې د غوښتنلیک معلومات په پام کې نه نیسي، مګر هیلم 3 به بدلونونه ترلاسه کړي او د ځای پرځای کولو لپاره به نوی غوښتنلیک واستوي.

طریقه 5. د --recreate-pods سویچ څخه کار واخلئ

د کیلي سره --recreate-pods تاسو کولی شئ هغه څه ترلاسه کړئ چې تاسو په اصل کې د کیلي سره د ترلاسه کولو لپاره پلان کړی و --force. کانټینرونه به بیا پیل شي او د imagePullPolicy په وینا: د وروستي ټاګ لپاره تل پالیسي (په دې اړه نور په پورتني فوټ نوټ کې) ، کوبرنیټس به د عکس نوې نسخه ډاونلوډ او پیل کړي. دا به په غوره طریقه ترسره نشي: پرته له دې چې د ګمارنې ستراتیژۍ ډول په پام کې ونیول شي، دا به په ناڅاپي توګه ټول زاړه غوښتنلیکونه وتړي او د نوي پیل پیل کړي. د بیا پیل کولو پرمهال، سیسټم به کار ونکړي، کاروونکي به زیانمن شي.

پخپله Kubernetes کې هم ورته ستونزه د اوږدې مودې لپاره شتون درلود. او اوس، د پرانیستلو څخه 4 کاله وروسته د پایلو، ستونزه حل شوې ، او د کوبرنیټس 1.15 نسخې سره پیل کول ، د پوډونو رول - بیا پیل کولو وړتیا څرګندیږي.

هیلم په ساده ډول ټول غوښتنلیکونه بندوي او نږدې نوي کانټینرونه پیلوي. تاسو دا په تولید کې نشئ کولی، نو د غوښتنلیک د ځنډیدو لامل نشي. دا یوازې د پراختیا اړتیاو لپاره اړین دی او یوازې د مرحلې چاپیریال کې ترسره کیدی شي.

د هیلم په کارولو سره د اپلیکیشن نسخه څنګه تازه کړئ؟

موږ به هیلم ته لیږل شوي ارزښتونه بدل کړو. عموما، دا هغه ارزښتونه دي چې د عکس ټاګ په ځای بدل شوي. د وروستي په حالت کې ، کوم چې ډیری وختونه د غیر تولیدي چاپیریال لپاره کارول کیږي ، د بدلون وړ معلومات یو تشریح دی ، کوم چې پخپله د کوبرنیټس لپاره بې ګټې دی ، او د هیلم لپاره به دا د غوښتنلیک تازه کولو اړتیا لپاره د سیګنال په توګه عمل وکړي. د تشریح ارزښت ډکولو لپاره اختیارونه:

  1. تصادفي ارزښت د معیاري فعالیت کارول - {{ randAlphaNum 6 }}.
    یو احتیاط شتون لري: د داسې متغیر سره د چارټ په کارولو سره د هرې ګمارنې وروسته، د تشریح ارزښت به ځانګړی وي، او هیلم به ګومان وکړي چې بدلونونه شتون لري. دا معلومه شوه چې موږ به تل غوښتنلیک بیا پیل کړو، حتی که موږ د هغې نسخه نه وي بدله کړې. دا مهمه نه ده، ځکه چې د ځنډ وخت به نه وي، مګر دا لاهم ناخوښه دی.
  2. اوسنی پیسټ کړئ نیټه او وخت - {{ .Release.Date }}.
    یو ډول یو تصادفي ارزښت ته ورته دی چې د تل لپاره ځانګړي متغیر سره.
  3. یوه بله سمه لاره کارول دي چکسمونه. دا د عکس SHA یا په ګیټ کې د وروستي ژمنې SHA دی - {{ .Values.sha }}.
    دوی به اړتیا ولري چې شمیرل شي او د هیلم پیرودونکي ته د زنګ وهلو اړخ ته لیږل کیږي، د بیلګې په توګه په جینکنز کې. که غوښتنلیک بدل شوی وي، نو بیا چکسم به بدل شي. نو ځکه، هیلم به یوازې د اړتیا په وخت کې غوښتنلیک تازه کړي.

راځئ چې خپلې هڅې لنډیز کړو

  • هیلم په لږترلږه برید کونکي ډول بدلونونه رامینځته کوي ، نو د ډاکر راجسټری کې د غوښتنلیک عکس کچه کې کوم بدلون به د تازه کولو پایله ونلري: د قوماندې اجرا کیدو وروسته به هیڅ پیښ نشي.
  • کیلي --force د ستونزې لرونکې ریلیزونو بحالولو لپاره کارول کیږي او د جبري تازه معلوماتو سره تړاو نلري.
  • کیلي --recreate-pods غوښتنلیکونه به په زور سره تازه کړي، مګر دا به په ناپاک ډول ترسره کړي: دا به ناڅاپه ټول کانټینرونه بند کړي. کاروونکي به له دې څخه رنځ وي؛ تاسو باید دا په تولید کې ونه کړئ.
  • په مستقیم ډول د کمانډ په کارولو سره د Kubernetes کلستر ته بدلون ورکړئ kubectl edit مه کوئ: موږ به ثبات مات کړو، او چلند به د هیلم نسخه پورې اړه ولري.
  • د هیلم د نوې نسخې په خپریدو سره، ډیری نیمګړتیاوې څرګندې شوې. د هیلم په ذخیره کې مسایل په روښانه ژبه بیان شوي، دوی به تاسو سره د توضیحاتو په پوهیدو کې مرسته وکړي.
  • په چارټ کې د ترمیم وړ تشریح اضافه کول به دا ډیر انعطاف منونکي کړي. دا به تاسو ته اجازه درکړي چې غوښتنلیک په سمه توګه راوباسي، پرته له ځنډ څخه.

د "نړیوال سولې" فکر چې د ژوند په ټولو برخو کې کار کوي: د کارولو دمخه لارښوونې ولولئ، نه وروسته. یوازې د بشپړ معلوماتو سره به دا ممکنه وي چې د باور وړ سیسټمونه رامینځته کړي او کاروونکي خوشحاله کړي.

نور اړوند لینکونه:

  1. سره اشنا خولۍ 3
  2. د هیلم رسمي ویب پاڼه
  3. په GitHub کې د هیلم ذخیره
  4. 25 ګټور Kubernetes اوزار: ځای پرځای کول او مدیریت

دا راپور په لومړي ځل وړاندې شو @Kubernetes کنفرانس د Mail.ru کلاوډ حلونو لخوا. وګوره видео نور پرفارمنسونه او په ټیلیګرام کې د پیښې اعلانونو کې ګډون وکړئ په Mail.ru ګروپ کې د Kubernetes شاوخوا.

سرچینه: www.habr.com

Add a comment