د عملیاتو لپاره عصري چلند ډیری فشار لرونکي سوداګریزې ستونزې حل کوي. کانټینرونه او آرکیسټریټران د هر ډول پیچلتیا پروژې اندازه کول اسانه کوي ، د نوي نسخو خوشې کول ساده کوي ، دوی ډیر باوري کوي ، مګر په ورته وخت کې دوی د پراختیا کونکو لپاره اضافي ستونزې رامینځته کوي. برنامه کوونکی ، لومړی د خپل کوډ په اړه پاملرنه کوي: معماري ، کیفیت ، فعالیت ، ښکلا - او نه دا چې دا به څنګه په کوبرنیټس کې کار وکړي او د حتی لږترلږه بدلونونو رامینځته کولو وروسته دا ازموینه او ډیبګ کولو څرنګوالی. له همدې امله، دا هم طبیعي ده چې د کبرنیټس لپاره وسیلې په فعاله توګه رامینځته کیږي، د حتی د "لرغونو" پراختیا کونکو ستونزو حل کولو کې مرسته کوي او دوی ته اجازه ورکوي چې په اصلي شی تمرکز وکړي.
دا بیاکتنه د ځینو وسیلو په اړه لنډ معلومات وړاندې کوي چې د یو پروګرامر لپاره ژوند اسانه کوي چې کوډ یې د 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 کې شتون لري (په کارولو سره
د پروسو د خرابولو لپاره، اسکواش په کلستر نوډونو کې یو امتیازي کانټینر چلوي، نو تاسو باید لومړی د وړتیاوو سره ځان وپیژنئ
بشپړ حلونه
راځئ چې درنې توپخانې ته لاړ شو - ډیرې "لوی پیمانه" پروژې چې سمدلاسه د پراختیا کونکو ډیری اړتیاو پوره کولو لپاره ډیزاین شوي.
NB: په دې لیست کې، البته، زموږ د خلاصې سرچینې افادیت لپاره یو ځای شتون لري
DevSpace
- جوهر: د هغو کسانو لپاره چې غواړي په کوبرنیټس کې کار پیل کړي، مګر نه غواړي د دې ځنګل ته ژوره لاړ شي.
-
GitHub . - د GH لنډې احصایې: 630 ستوري، 1912 ژمنې، 13 مرسته کونکي.
- ژبه: لاړ شه.
- جواز: د اپاچی جواز 2.0.
د ورته نوم شرکت څخه حل، کوم چې د ټیم پراختیا لپاره د Kubernetes سره اداره شوي کلسترونه چمتو کوي. افادیت د سوداګریزو کلسترونو لپاره رامینځته شوی ، مګر د نورو سره عالي کار کوي.
کله چې کمانډ چلوي devspace init
د پروژې په کتلاګ کې تاسو ته وړاندیز کیږي (متقابل عمل):
- د کار کولو کبرنیټس کلستر غوره کړئ،
- موجوده وکاروئ
Dockerfile
(یا یو نوی تولید کړئ) د دې پر بنسټ یو کانټینر جوړ کړئ، - د کانټینر عکسونو ذخیره کولو لپاره ذخیره غوره کړئ ، او داسې نور.
د دې ټولو چمتووالي مرحلو وروسته ، تاسو کولی شئ د قوماندې په چلولو سره پرمختګ پیل کړئ devspace dev
. دا به کانټینر رامینځته کړي ، ذخیره ته به یې پورته کړي ، کلسټر ته ځای په ځای کړي او د ځایی لارښود سره د کانټینر پورټ فارورډینګ او همغږي پیل کړي.
په اختیاري توګه، تاسو ته به وهڅول شي چې ترمینل کانټینر ته واړوئ. تاسو باید انکار ونه کړئ ، ځکه چې په حقیقت کې کانټینر د خوب کمانډ سره پیل کیږي ، او د ریښتیني ازموینې لپاره غوښتنلیک باید په لاسي ډول پیل شي.
په پای کې، ټیم devspace deploy
غوښتنلیک او اړونده زیربنا کلستر ته راوباسي، وروسته له هغه چې هر څه په جنګي حالت کې فعالیت پیل کوي.
د پروژې ټول تشکیلات په فایل کې زیرمه شوي devspace.yaml
. د پرمختیایي چاپیریال ترتیباتو سربیره، تاسو کولی شئ پدې کې د زیربناوو توضیحات هم ومومئ، د معیاري Kubernetes سره ورته، یوازې خورا ساده شوي.
جوړښت او د DevSpace سره د کار کولو اصلي مرحلې
برسېره پردې، دا آسانه ده چې مخکې له مخکې ټاکل شوې برخې اضافه کړئ (د مثال په توګه، د MySQL DBMS) یا د هیلم چارټ پروژې ته. نور په کې ولولئ
سکافولډ
-
ویب پاڼه ;GitHub . - د GH لنډې احصایې: 7423 ستوري، 4173 ژمنې، 136 مرسته کونکي.
- ژبه: لاړ شه.
- جواز: د اپاچی جواز 2.0.
د ګوګل څخه دا کارونې ادعا کوي چې د پراختیا کونکي ټولې اړتیاوې پوښي چې کوډ به په یو ډول د کوبرنیټس کلستر کې پرمخ ځي. د دې کارولو پیل کول د devspace په څیر اسانه ندي: هیڅ متقابل عمل ، د ژبې کشف او اتوماتیک رامینځته کول Dockerfile
دوی به دلته تاسو ته دا وړاندیز نه کوي.
په هرصورت، که دا تاسو نه ډاروي، دلته هغه څه دي چې سکافولډ تاسو ته اجازه درکوي:
- د سرچینې کوډ بدلونونه تعقیب کړئ.
- دا د پوډ کانټینر سره همغږي کړئ که چیرې غونډې ته اړتیا ونلري.
- د کوډ سره کانتینرونه راټول کړئ، که ژبه تشریح شوې وي، یا اثار راټول کړئ او په کانتینرونو کې یې بسته کړئ.
- پایله لرونکي عکسونه په اوتومات ډول د کارولو سره چک کیږي
د کانټینر جوړښت - ازموینه . - د ډاکر راجسټری ته د عکسونو ټګ کول او اپلوډ کول.
- یو اپلیکیشن په کلستر کې د kubectl، Helm یا kustomize په کارولو سره ځای په ځای کړئ.
- د پورټ فارورډنګ ترسره کول.
- ډیبګ غوښتنلیکونه په Java، Node.js، Python کې لیکل شوي.
په مختلف تغیراتو کې د کار فلو په فایل کې په اعالمیه توګه بیان شوی skaffold.yaml
. د یوې پروژې لپاره، تاسو کولی شئ ډیری پروفایلونه هم تعریف کړئ په کوم کې چې تاسو کولی شئ په جزوي یا بشپړ ډول د مجلس او ځای پرځای کولو مرحلې بدل کړئ. د مثال په توګه، د پراختیا لپاره، د پراختیا کونکي لپاره مناسب اساس انځور مشخص کړئ، او د سټینګ او تولید لپاره - لږترلږه یو (+ کارول securityContext
کانټینرونه یا کلستر بیا تعریف کړئ چیرې چې غوښتنلیک به ځای په ځای شي).
د ډاکر کانټینرونه په ځایی یا لیرې توګه جوړ کیدی شي: په
په جلا توګه، دا د کانتینرونو د ازموینې احتمال په پام کې نیولو سره ارزښت لري. مخکې ذکر شوي کانټینر - جوړښت - ازموینې چوکاټ لاندې د تایید میتودونه وړاندې کوي:
- د کانټینر په شرایطو کې د امرونو اجرا کول د وتلو حالتونو تعقیب او د کمانډ متن محصول چیک کول.
- په کانټینر کې د فایلونو شتون چک کول او د مشخصو ځانګړتیاو سره سمون کول.
- د منظم بیانونو په کارولو سره د فایل مینځپانګې کنټرول.
- د انځور میټاډاټا تصدیق (
ENV
,ENTRYPOINT
,VOLUMES
او همداسی پسی.). - د جواز مطابقت چک کول.
د کانټینر سره د فایلونو همغږي کول په خورا مناسب ډول نه ترسره کیږي: سکافولډ په ساده ډول د سرچینو سره آرشیف رامینځته کوي ، کاپي کوي او په کانټینر کې یې خلاصوي (تار باید نصب شي). له همدې امله، که ستاسو اصلي دنده د کوډ همغږي کول وي، نو دا به غوره وي چې د ځانګړي حل (ksync) په لټه کې شئ.
د Skaffold عملیاتو اصلي مرحلې
په عموم کې، وسیله تاسو ته اجازه نه ورکوي چې د Kubernetes څخه خلاص کړئ او هیڅ متقابل عمل نلري، نو دا ممکن ستونزمن ښکاري چې ماسټر شي. مګر دا د هغې ګټه هم ده - د عمل لویه آزادي.
باغ
-
ویب پاڼه ;GitHub . - د GH لنډې احصایې: 1063 ستوري، 1927 ژمنې، 17 مرسته کونکي.
- ژبه: ټایپ سکریپټ (دا پلان شوې ده چې پروژه په څو برخو وویشئ، چې ځینې به یې په Go کې وي، او په TypeScript/JavaScript او Go کې د اضافو جوړولو لپاره SDK هم جوړ کړئ).
- جواز: د اپاچی جواز 2.0.
د سکافولډ په څیر، ګارډن موخه دا ده چې د K8s کلستر ته د غوښتنلیک کوډ وړاندې کولو پروسې اتومات کړي. د دې کولو لپاره ، تاسو اړتیا لرئ لومړی د پروژې جوړښت په YAML فایل کې تشریح کړئ ، او بیا کمانډ پرمخ وړئ garden dev
. هغه به ټول جادو وکړي:
- د پروژې مختلف برخو سره کانټینرونه راټول کړئ.
- د ادغام او واحد ازموینې ترسره کوي، که کوم تشریح شوي وي.
- د پروژې ټولې برخې کلستر ته رسوي.
- که د سرچینې کوډ بدل شي، دا به ټوله پایپ لاین بیا پیل کړي.
د دې وسیلې کارولو اصلي تمرکز د پراختیایی ټیم سره د ریموټ کلستر شریکول دي. پدې حالت کې ، که چیرې د ودانۍ او ازموینې ځینې مرحلې دمخه ترسره شوي وي ، نو دا به د پام وړ ټوله پروسه ګړندۍ کړي ، ځکه چې باغ به وکولی شي د زیرمې پایلې وکاروي.
د پروژې ماډل کیدای شي یو کانټینر وي، د ماون کانټینر، د هیلم چارټ، د دې لپاره یو څرګند kubectl apply
یا حتی د OpenFaaS فعالیت. سربیره پردې ، کوم ماډلونه د ریموټ Git ذخیره څخه ایستل کیدی شي. یو ماډل ممکن خدمتونه، دندې، او ازموینې تعریف کړي یا نه. خدمتونه او دندې کولی شي انحصار ولري، نو تاسو کولی شئ د یو ځانګړي خدمت ځای پرځای کولو ترتیب وټاکئ او د دندو او ازموینو پیل تنظیم کړئ.
باغ کارونکي ته یو ښکلی ډشبورډ چمتو کوي (اوس مهال په
د باغ لپاره پینل
دا وسیله د ګرم ریلوډ حالت هم لري، کوم چې په ساده ډول په کلستر کې د کانټینر سره د سکریپټ بدلونونه همغږي کوي، د غوښتنلیک ډیبګ کولو پروسه خورا ګړندۍ کوي. باغ ښه دی
پایلې
البته، په Kubernetes کې د غوښتنلیکونو پراختیا او ډیبګ کولو لپاره د وسیلو دا لیست محدود نه دی. داسې نور ډېر ګټور او عملي اثار شته، چې د پام وړ دي، که بېله مقاله نه وي، نو لږ تر لږه یې یادونه وکړئ. موږ ته ووایاست چې تاسو څه کاروئ، تاسو کومې ستونزې سره مخ شوي او څنګه یې حل کړئ!
PS
زموږ په بلاګ کې هم ولولئ:
- «
werf - په Kubernetes کې د CI / CD لپاره زموږ وسیله (کتنې او ویډیو راپور) » - «
باغ v0.10.0: ستاسو لپ ټاپ Kubernetes ته اړتیا نلري » - «
د کوبرنیټس لارښوونې او چلونه: د ځایی پراختیا او ټیلی پریزنس په اړه » - «
د کوبرنیټس پوډونو کې د ډیبګ کولو لپاره kubectl-debug پلگ ان ".
سرچینه: www.habr.com