په Kubernetes کې د غوښتنلیکونو پراختیا کونکو لپاره وسیلې

په Kubernetes کې د غوښتنلیکونو پراختیا کونکو لپاره وسیلې

د عملیاتو لپاره عصري چلند ډیری فشار لرونکي سوداګریزې ستونزې حل کوي. کانټینرونه او آرکیسټریټران د هر ډول پیچلتیا پروژې اندازه کول اسانه کوي ، د نوي نسخو خوشې کول ساده کوي ، دوی ډیر باوري کوي ، مګر په ورته وخت کې دوی د پراختیا کونکو لپاره اضافي ستونزې رامینځته کوي. برنامه کوونکی ، لومړی د خپل کوډ په اړه پاملرنه کوي: معماري ، کیفیت ، فعالیت ، ښکلا - او نه دا چې دا به څنګه په کوبرنیټس کې کار وکړي او د حتی لږترلږه بدلونونو رامینځته کولو وروسته دا ازموینه او ډیبګ کولو څرنګوالی. له همدې امله، دا هم طبیعي ده چې د کبرنیټس لپاره وسیلې په فعاله توګه رامینځته کیږي، د حتی د "لرغونو" پراختیا کونکو ستونزو حل کولو کې مرسته کوي او دوی ته اجازه ورکوي چې په اصلي شی تمرکز وکړي.

دا بیاکتنه د ځینو وسیلو په اړه لنډ معلومات وړاندې کوي چې د یو پروګرامر لپاره ژوند اسانه کوي چې کوډ یې د Kubernetes کلستر پوډکس کې ځي.

ساده مرسته کوونکي

Kubectl-debug

  • جوهر: خپل کانټینر په پوډ کې اضافه کړئ او وګورئ چې پدې کې څه پیښیږي.
  • GitHub.
  • د GH لنډې احصایې: 715 ستوري، 54 ژمنې، 9 مرسته کونکي.
  • ژبه: لاړ شه.
  • جواز: د اپاچی جواز 2.0.

د kubectl لپاره دا پلگ ان تاسو ته اجازه درکوي د ګټو پوډ دننه یو اضافي کانټینر رامینځته کړئ ، کوم چې به د پروسې نوم ځای د نورو کانټینرونو سره شریک کړي. پدې کې تاسو کولی شئ د پوډ عملیات ډیبګ کړئ: شبکه چیک کړئ ، د شبکې ترافیک واورئ ، د ګټو پروسې یوه برخه ترسره کړئ ، او داسې نور.

تاسو کولی شئ د چلولو له لارې د پروسې کانټینر ته هم لاړ شئ chroot /proc/PID/root - دا خورا اسانه کیدی شي کله چې تاسو اړتیا لرئ په کانټینر کې د ریښې شیل ترلاسه کړئ د کوم لپاره چې دا په ښکاره کې تنظیم شوی وي securityContext.runAs.

وسیله ساده او مؤثره ده، نو دا د هر پراختیا کونکي لپاره ګټور کیدی شي. موږ په دې اړه نور څه لیکلي جلا مقاله.

ټیلیفونیت

  • جوهر: خپل کمپیوټر ته غوښتنلیک انتقال کړئ. په ځایی توګه پراختیا او ډیبګ کړئ.
  • ویب پاڼه; GitHub.
  • د GH لنډې احصایې: 2131 ستوري، 2712 ژمنې، 33 مرسته کونکي.
  • ژبه: Python.
  • جواز: د اپاچی جواز 2.0.

د دې سنیپ ان نظر دا دی چې د ځایی کارونکي کمپیوټر کې د غوښتنلیک سره یو کانټینر پیل کړئ او له کلستر څخه دې او شا ته ټول ترافیک پراکسي کړئ. دا طریقه تاسو ته اجازه درکوي په ساده ډول ستاسو د خوښې IDE کې د فایلونو ایډیټ کولو سره په محلي توګه وده وکړئ: پایلې به سمدلاسه شتون ولري.

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

موږ دمخه د Telepresence کارولو تجربه شریکه کړې ده دلته.

Ksync

  • جوهر: په کلستر کې د کانټینر سره د کوډ نږدې سمدستي همغږي کول.
  • GitHub.
  • د GH لنډې احصایې: 555 ستوري، 362 ژمنې، 11 مرسته کونکي.
  • ژبه: لاړ شه.
  • جواز: د اپاچی جواز 2.0.

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

کله چې د کمانډ لخوا یوځل پیل شي ksync init یو ډیمون سیټ په کلستر کې رامینځته شوی ، کوم چې د ټاکل شوي کانټینر فایل سیسټم حالت څارلو لپاره کارول کیږي. په خپل محلي کمپیوټر کې، پراختیا کونکی قومانده پرمخ وړي ksync watch، کوم چې تشکیلات او چلونه څاري همکاری، کوم چې په مستقیم ډول د کلستر سره فایلونه همغږي کوي.

ټول هغه څه چې پاتې دي هغه دي چې ksync ته لارښوونه وکړي چې څه شی سره همغږي کړي. د مثال په توګه، دا حکم:

ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false /home/user/myproject/ /var/www/myproject/

... په نوم به یو څارونکی جوړ کړي myprojectکوم چې به د لیبل سره د پوډ لټون وکړي app=backend او هڅه وکړئ چې محلي لارښود همغږي کړئ /home/user/myproject/ د کتلاګ سره /var/www/myproject/ په نوم کانتینر کې php.

زموږ له تجربې څخه په ksync کې ستونزې او یادښتونه:

  • باید د Kubernetes کلستر نوډونو کې وکارول شي overlay2 د ډاکر لپاره د ذخیره کولو چلوونکي په توګه. افادیت به د نورو سره کار ونکړي.
  • کله چې وینډوز د پیرودونکي OS په توګه کاروئ، د فایل سیسټم څارونکی ممکن سم کار ونکړي. دا بګ د لوی لارښودونو سره کار کولو پرمهال لیدل شوی و - د لوی شمیر نیست شوي فایلونو او لارښودونو سره. موږ جوړ کړ اړونده مسله د همغږي کولو په پروژه کې، مګر تر اوسه په دې اړه کوم پرمختګ نه دی شوی (د جولای له پیل راهیسې).
  • فایل وکاروئ .stignore د لارو یا فایل نمونو مشخص کولو لپاره چې همغږي کولو ته اړتیا نلري (د مثال په توګه لارښودونه app/cache и .git).
  • د ډیفالټ په توګه، کله چې فایلونه بدل شي ksync به کانټینر بیا پیل کړي. د Node.js لپاره دا اسانه دی، مګر د PHP لپاره دا په بشپړه توګه غیر ضروري دی. دا غوره ده چې opcache بند کړئ او بیرغ وکاروئ --reload=false.
  • تشکیلات تل په کې سم کیدی شي $HOME/.ksync/ksync.yaml.

اسکواش

  • جوهر: د ډیبګ پروسې مستقیم په کلستر کې.
  • GitHub.
  • د GH لنډې احصایې: 1154 ستوري، 279 ژمنې، 23 مرسته کونکي.
  • ژبه: لاړ شه.
  • جواز: د اپاچی جواز 2.0.

دا وسیله په مستقیم ډول په پوډونو کې د ډیبګ کولو پروسو لپاره ډیزاین شوې. افادیت ساده دی او په متقابل ډول تاسو ته اجازه درکوي مطلوب ډیبګر غوره کړئ (لاندې وګورئ) او د نوم ځای + پوډ، په هغه پروسه کې چې تاسو اړتیا لرئ مداخله وکړئ. اوس مهال ملاتړ کیږي:

  • delve - د ګو غوښتنلیکونو لپاره؛
  • GDB - د هدف ریموټ + پورټ فارورډینګ له لارې؛
  • د جاوا غوښتنلیکونو د ډیبګ کولو لپاره د JDWP پورټ فارورډینګ.

د IDE اړخ کې، ملاتړ یوازې په VScode کې شتون لري (په کارولو سره پراختیا)، په هرصورت، د اوسني (2019) کال لپاره پلانونه Eclipse او Intellij شامل دي.

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

بشپړ حلونه

راځئ چې درنې توپخانې ته لاړ شو - ډیرې "لوی پیمانه" پروژې چې سمدلاسه د پراختیا کونکو ډیری اړتیاو پوره کولو لپاره ډیزاین شوي.

NB: په دې لیست کې، البته، زموږ د خلاصې سرچینې افادیت لپاره یو ځای شتون لري werf (پخوا د ډیپ په نوم پیژندل شوی). په هرصورت، موږ دمخه د دې په اړه یو ځل لیکلي او خبرې کړې دي، او له همدې امله پریکړه وکړه چې دا په بیاکتنه کې شامل نه کړو. د هغو کسانو لپاره چې غواړي د دې وړتیاوو سره ډیر اشنا شي، موږ د راپور لوستلو / اوریدلو وړاندیز کوو "werf په Kubernetes کې د CI/CD لپاره زموږ وسیله ده".

DevSpace

  • جوهر: د هغو کسانو لپاره چې غواړي په کوبرنیټس کې کار پیل کړي، مګر نه غواړي د دې ځنګل ته ژوره لاړ شي.
  • GitHub.
  • د GH لنډې احصایې: 630 ستوري، 1912 ژمنې، 13 مرسته کونکي.
  • ژبه: لاړ شه.
  • جواز: د اپاچی جواز 2.0.

د ورته نوم شرکت څخه حل، کوم چې د ټیم پراختیا لپاره د Kubernetes سره اداره شوي کلسترونه چمتو کوي. افادیت د سوداګریزو کلسترونو لپاره رامینځته شوی ، مګر د نورو سره عالي کار کوي.

کله چې کمانډ چلوي devspace init د پروژې په کتلاګ کې تاسو ته وړاندیز کیږي (متقابل عمل):

  • د کار کولو کبرنیټس کلستر غوره کړئ،
  • موجوده وکاروئ Dockerfile (یا یو نوی تولید کړئ) د دې پر بنسټ یو کانټینر جوړ کړئ،
  • د کانټینر عکسونو ذخیره کولو لپاره ذخیره غوره کړئ ، او داسې نور.

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

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

په پای کې، ټیم devspace deploy غوښتنلیک او اړونده زیربنا کلستر ته راوباسي، وروسته له هغه چې هر څه په جنګي حالت کې فعالیت پیل کوي.

د پروژې ټول تشکیلات په فایل کې زیرمه شوي devspace.yaml. د پرمختیایي چاپیریال ترتیباتو سربیره، تاسو کولی شئ پدې کې د زیربناوو توضیحات هم ومومئ، د معیاري Kubernetes سره ورته، یوازې خورا ساده شوي.

په Kubernetes کې د غوښتنلیکونو پراختیا کونکو لپاره وسیلې
جوړښت او د DevSpace سره د کار کولو اصلي مرحلې

برسېره پردې، دا آسانه ده چې مخکې له مخکې ټاکل شوې برخې اضافه کړئ (د مثال په توګه، د MySQL DBMS) یا د هیلم چارټ پروژې ته. نور په کې ولولئ اسناد - دا پیچلې نه ده.

سکافولډ

  • ویب پاڼه; GitHub.
  • د GH لنډې احصایې: 7423 ستوري، 4173 ژمنې، 136 مرسته کونکي.
  • ژبه: لاړ شه.
  • جواز: د اپاچی جواز 2.0.

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

په هرصورت، که دا تاسو نه ډاروي، دلته هغه څه دي چې سکافولډ تاسو ته اجازه درکوي:

  • د سرچینې کوډ بدلونونه تعقیب کړئ.
  • دا د پوډ کانټینر سره همغږي کړئ که چیرې غونډې ته اړتیا ونلري.
  • د کوډ سره کانتینرونه راټول کړئ، که ژبه تشریح شوې وي، یا اثار راټول کړئ او په کانتینرونو کې یې بسته کړئ.
  • پایله لرونکي عکسونه په اوتومات ډول د کارولو سره چک کیږي د کانټینر جوړښت - ازموینه.
  • د ډاکر راجسټری ته د عکسونو ټګ کول او اپلوډ کول.
  • یو اپلیکیشن په کلستر کې د kubectl، Helm یا kustomize په کارولو سره ځای په ځای کړئ.
  • د پورټ فارورډنګ ترسره کول.
  • ډیبګ غوښتنلیکونه په Java، Node.js، Python کې لیکل شوي.

په مختلف تغیراتو کې د کار فلو په فایل کې په اعالمیه توګه بیان شوی skaffold.yaml. د یوې پروژې لپاره، تاسو کولی شئ ډیری پروفایلونه هم تعریف کړئ په کوم کې چې تاسو کولی شئ په جزوي یا بشپړ ډول د مجلس او ځای پرځای کولو مرحلې بدل کړئ. د مثال په توګه، د پراختیا لپاره، د پراختیا کونکي لپاره مناسب اساس انځور مشخص کړئ، او د سټینګ او تولید لپاره - لږترلږه یو (+ کارول securityContext کانټینرونه یا کلستر بیا تعریف کړئ چیرې چې غوښتنلیک به ځای په ځای شي).

د ډاکر کانټینرونه په ځایی یا لیرې توګه جوړ کیدی شي: په د ګوګل کلاوډ جوړونه یا په کلستر کې کارول کانیکو. بازل او جیب ماون/ګرډل هم ملاتړ کیږي. د ټګ کولو لپاره، سکافولډ د ډیری ستراتیژیو ملاتړ کوي: د git کمیټ هش، نیټه/وخت، sha256-د سرچینو مجموعه، او داسې نور.

په جلا توګه، دا د کانتینرونو د ازموینې احتمال په پام کې نیولو سره ارزښت لري. مخکې ذکر شوي کانټینر - جوړښت - ازموینې چوکاټ لاندې د تایید میتودونه وړاندې کوي:

  • د کانټینر په شرایطو کې د امرونو اجرا کول د وتلو حالتونو تعقیب او د کمانډ متن محصول چیک کول.
  • په کانټینر کې د فایلونو شتون چک کول او د مشخصو ځانګړتیاو سره سمون کول.
  • د منظم بیانونو په کارولو سره د فایل مینځپانګې کنټرول.
  • د انځور میټاډاټا تصدیق (ENV, ENTRYPOINT, VOLUMES او همداسی پسی.).
  • د جواز مطابقت چک کول.

د کانټینر سره د فایلونو همغږي کول په خورا مناسب ډول نه ترسره کیږي: سکافولډ په ساده ډول د سرچینو سره آرشیف رامینځته کوي ، کاپي کوي او په کانټینر کې یې خلاصوي (تار باید نصب شي). له همدې امله، که ستاسو اصلي دنده د کوډ همغږي کول وي، نو دا به غوره وي چې د ځانګړي حل (ksync) په لټه کې شئ.

په Kubernetes کې د غوښتنلیکونو پراختیا کونکو لپاره وسیلې
د Skaffold عملیاتو اصلي مرحلې

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

باغ

  • ویب پاڼه; GitHub.
  • د GH لنډې احصایې: 1063 ستوري، 1927 ژمنې، 17 مرسته کونکي.
  • ژبه: ټایپ سکریپټ (دا پلان شوې ده چې پروژه په څو برخو وویشئ، چې ځینې به یې په Go کې وي، او په TypeScript/JavaScript او Go کې د اضافو جوړولو لپاره SDK هم جوړ کړئ).
  • جواز: د اپاچی جواز 2.0.

د سکافولډ په څیر، ګارډن موخه دا ده چې د K8s کلستر ته د غوښتنلیک کوډ وړاندې کولو پروسې اتومات کړي. د دې کولو لپاره ، تاسو اړتیا لرئ لومړی د پروژې جوړښت په YAML فایل کې تشریح کړئ ، او بیا کمانډ پرمخ وړئ garden dev. هغه به ټول جادو وکړي:

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

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

د پروژې ماډل کیدای شي یو کانټینر وي، د ماون کانټینر، د هیلم چارټ، د دې لپاره یو څرګند kubectl apply یا حتی د OpenFaaS فعالیت. سربیره پردې ، کوم ماډلونه د ریموټ Git ذخیره څخه ایستل کیدی شي. یو ماډل ممکن خدمتونه، دندې، او ازموینې تعریف کړي یا نه. خدمتونه او دندې کولی شي انحصار ولري، نو تاسو کولی شئ د یو ځانګړي خدمت ځای پرځای کولو ترتیب وټاکئ او د دندو او ازموینو پیل تنظیم کړئ.

باغ کارونکي ته یو ښکلی ډشبورډ چمتو کوي (اوس مهال په تجربوي حالت)، کوم چې د پروژې ګراف ښیي: اجزا، د مجلس ترتیب، د دندو او ازموینو اجرا کول، د دوی اړیکې او انحصار. په براوزر کې سم، تاسو کولی شئ د پروژې د ټولو اجزاوو لاګ وګورئ او وګورئ چې کوم ځانګړي برخې د HTTP له لارې تولیدوي (که، البته، د دې لپاره د ننوتلو سرچینه اعلان شوې وي).

په Kubernetes کې د غوښتنلیکونو پراختیا کونکو لپاره وسیلې
د باغ لپاره پینل

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

پایلې

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

PS

زموږ په بلاګ کې هم ولولئ:

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

Add a comment