Zvishandiso zvevagadziri vezvishandiso zvinomhanya paKubernetes

Zvishandiso zvevagadziri vezvishandiso zvinomhanya paKubernetes

Nzira yemazuva ano yekushanda inogadzirisa matambudziko mazhinji ebhizinesi ari kumanikidza. Makoni uye orchestrators anoita kuti zvive nyore kuyera mapurojekiti echero kuoma, kurerutsa kuburitswa kweshanduro nyowani, kuita kuti ive yakavimbika, asi panguva imwe chete iyo inogadzira mamwe matambudziko kune vanogadzira. Mugadziri wepurogiramu, chekutanga pane zvese, ane hanya nekodhi yake: dhizaini, mhando, kuita, kunaka - uye kwete kuti ichashanda sei muKubernetes uye maitiro ekuyedza nekuigadzirisa mushure mekuita kunyangwe kushoma shanduko. Naizvozvo, zvakare zvakajairika kuti maturusi eKubernetes ari kushingaira kugadzirwa, achibatsira kugadzirisa matambudziko evakanyanya "ekare" vanogadzira uye vachivabvumira kuti vatarise chinhu chikuru.

Ongororo iyi inopa ruzivo rupfupi nezve mamwe maturusi anoita kuti hupenyu huve nyore kumugadziri ane kodhi inomhanya mune pod'ax yeKubernetes cluster.

Vabatsiri vari nyore

Kubectl-debug

  • Essence: wedzera mudziyo wako kuPod uye uone zvinoitika mairi.
  • GitHub.
  • Pfupi GH nhamba: 715 nyeredzi, 54 anoita, 9 vabatsiri.
  • Mutauro: Enda.
  • Rezinesi: Apache License 2.0.

Iyi plugin ye kubectl inokutendera iwe kuti ugadzire imwe mudziyo mukati mepodhi yekufarira, iyo inogovera iyo maitiro namespace nezvimwe midziyo. Mariri iwe unogona kugadzirisa mashandiro epodhi: tarisa network, teerera kunetiweki traffic, ita nhanho yemaitiro ekufarira, nezvimwe.

Iwe unogona zvakare kushandura kune process container nekumhanya chroot /proc/PID/root - izvi zvinogona kuve zviri nyore kana iwe uchida kuwana mudzi goko mumudziyo wakagadzirirwa mune manifest securityContext.runAs.

Chishandiso chiri nyore uye chinoshanda, saka chinogona kubatsira kune wese anovandudza. Takanyora zvakawanda nezvazvo mukati separated article.

telepresence

  • Essence: chinjisa application kune komputa yako. Gadzira uye gadzirisa munharaunda.
  • Website; GitHub.
  • Pfupi GH nhamba: 2131 nyeredzi, 2712 anoita, 33 vabatsiri.
  • Mutauro: Python.
  • Rezinesi: Apache License 2.0.

Pfungwa yeiyi snap-in ndeyekutanga mudziyo une application pane yemuno mushandisi komputa uye proxy yese traffic kubva kusumbu kuenda kwairi uye kumashure. Iyi nzira inobvumidza iwe kukudziridza munharaunda nekungogadzirisa mafaera muIDE yako yaunofarira: mhedzisiro inozowanikwa nekukurumidza.

Zvakanakira kumhanya munharaunda ndiko kuve nyore kwekugadzirisa uye mhedzisiro yekukurumidza, kugona kugadzirisa iyo application nenzira yakajairika. Iyo yakashata ndeyekuti irikuda pakumhanya kwekubatanidza, iyo inonyanya kuoneka kana iwe uchifanira kushanda neapplication ine yakakwira RPS uye traffic. Uye zvakare, Telepresence ine matambudziko nevhoriyamu inokwirisa paWindows, iyo inogona kuve yakasarudzika muganho kune vanogadzira vakajaira iyi OS.

Isu takatogovana ruzivo rwedu rwekushandisa Telepresence pano.

Ksync

  • Essence: ingangoita pakarepo kuwiriranisa kwekodhi nemudziyo uri musumbu.
  • GitHub.
  • Pfupi GH nhamba: 555 nyeredzi, 362 anoita, 11 vabatsiri.
  • Mutauro: Enda.
  • Rezinesi: Apache License 2.0.

Izvo zvinoshandiswa zvinokutendera kuti uwiriranise zviri mukati medhairekitori remunharaunda nedhairekitori remudziyo unomhanya musumbu. Chishandiso chakadaro chakanakira vanogadzira scripting programming mitauro, vane dambudziko guru kuendesa kodhi kumudziyo unomhanya. Ksync yakagadzirirwa kudzikisa musoro uyu.

Kana yatangwa kamwe chete nemurairo ksync init a DaemonSet inogadzirwa musumbu, iyo inoshandiswa kutarisa mamiriro efaira system yemudziyo wakasarudzwa. Pakombuta yake yemuno, mugadziri anomhanyisa kuraira ksync watch, iyo inotarisa zvigadziriso uye inomhanya sync, iyo inowiriranisa mafaera zvakananga nesumbu.

Chasara kudzidzisa ksync yekubatanidza nei. Semuenzaniso, murairo uyu:

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

... achagadzira murindi ane zita myprojectiyo ichatsvaga podhi ine label app=backend uye edza kuwiriranisa dhairekitori renzvimbo /home/user/myproject/ nekatalogi /var/www/myproject/ pamudziyo wakanzi php.

Matambudziko uye manotsi pane ksync kubva pane zvakaitika kwatiri:

  • Inofanirwa kushandiswa paKubernetes cluster node overlay2 semutyairi wekuchengetedza weDocker. Iyo yekushandisa haishande nemamwe chero.
  • Paunenge uchishandisa Windows semutengi OS, iyo faira system inoona inogona kusashanda nemazvo. Iyi bug yakaonekwa pakushanda nemadhairekitori akakura - aine nhamba huru yemafaera nemadhairekitori. Isu takagadzira nyaya yakakodzera muchirongwa chesyncthing, asi hapana kufambira mberi pachiri (kubvira kutanga kwaChikunguru).
  • Shandisa faira .stignore kudoma makwara kana mapatani emafaira asingade kuwiriraniswa (semuenzaniso, madhairekitori app/cache ΠΈ .git).
  • Nekutadza, ksync inozotangazve mudziyo pese mafaera achinja. KuNode.js izvi zviri nyore, asi zvePHP hazvina kufanira zvachose. Zviri nani kudzima opcache uye kushandisa mureza --reload=false.
  • Iyo configuration inogona nguva dzose kugadziriswa mukati $HOME/.ksync/ksync.yaml.

Squash

  • Essence: debug maitiro zvakananga musumbu.
  • GitHub.
  • Pfupi GH nhamba: 1154 nyeredzi, 279 anoita, 23 vabatsiri.
  • Mutauro: Enda.
  • Rezinesi: Apache License 2.0.

Ichi chishandiso chakagadzirirwa kugadzirisa maitiro zvakananga mumapods. Iyo yekushandisa iri nyore uye inopindirana inobvumidza iwe kusarudza yaunoda debugger (ona pazasi) uye namespace + pod, mukuita kwaunoda kupindira. Parizvino inotsigirwa:

  • delve - yeGo zvikumbiro;
  • GDB - kuburikidza nechinangwa chiri kure + chiteshi chekufambisa;
  • JDWP chiteshi chekuendesa kune debugging Java application.

Padivi reIDE, rutsigiro runongowanikwa muVScode (uchishandisa kuwedzera), zvisinei, zvirongwa zvezvino (2019) gore zvinosanganisira Eclipse uye Intellij.

Kugadzirisa maitiro, Squash inomhanyisa mudziyo wakasarudzika pamasumbu emasumbu, saka unofanirwa kutanga wajaira iwe nekwaniso. safe mode kudzivirira matambudziko ekuchengetedza.

Complete solutions

Ngatienderere mberi kune inorema artillery - akawanda "makuru-makuru" mapurojekiti akagadzirirwa kuzadzisa nekukurumidza zvakawanda zvezvinodiwa zvevagadziri.

NB: Mune iyi runyorwa, hongu, pane nzvimbo yedu Open Source utility werf (yaimbozivikanwa sedapp). Zvisinei, takatonyora uye takataura pamusoro payo kanopfuura kamwe, uye saka takasarudza kusaisanganisira mukuongorora. Kune avo vanoshuvira kujairana nehunyanzvi hwayo, tinokurudzira kuverenga / kuteerera kushumo "werf chishandiso chedu cheCI / CD muKubernetes".

DevSpace

  • Essence: kune avo vanoda kutanga kushanda muKubernetes, asi vasingade kunyura mukati mesango rayo.
  • GitHub.
  • Pfupi GH nhamba: 630 nyeredzi, 1912 anoita, 13 vabatsiri.
  • Mutauro: Enda.
  • Rezinesi: Apache License 2.0.

Mhinduro kubva kukambani yezita rimwe chete, iyo inopa masumbu akagadziriswa neKubernetes yekuvandudza kwechikwata. Izvo zvinoshandiswa zvakagadzirirwa zvikwata zvekutengesa, asi zvinoshanda zvakanaka nemamwe chero.

Paunenge uchimhanya murairo devspace init mune iyo catalog yeprojekiti iwe uchapihwa (inopindirana):

  • sarudza inoshanda Kubernetes cluster,
  • shandisa iripo Dockerfile (kana kugadzira imwe nyowani) kugadzira mudziyo wakavakirwa pairi,
  • sarudza nzvimbo yekuchengetera mifananidzo yemidziyo, nezvimwe.

Mushure mese aya matanho ekugadzirira, unogona kutanga kusimudzira nekumhanyisa kuraira devspace dev. Iyo inovaka mudziyo, woiisa kune repository, buritsa iyo yekuendesa kune iyo cluster uye wotanga kutumira chiteshi uye kuwiriranisa kwemudziyo nedhairekitori renzvimbo.

Sarudzo, iwe unozokurudzirwa kufambisa iyo terminal kune mugaba. Iwe haufanirwe kuramba, nekuti muchokwadi mudziyo unotanga nekuraira kwekurara, uye yekuyedza chaiyo application inoda kutangwa nemaoko.

Pakupedzisira, chikwata devspace deploy inoburitsa iyo application uye yakabatana zvivakwa kune cluster, mushure mezvo zvese zvinotanga kushanda mukurwisa mode.

Yese magadzirirwo eprojekiti anochengetwa mufaira devspace.yaml. Pamusoro pemagadzirirwo enzvimbo yekusimudzira, iwe unogona zvakare kuwana tsananguro yezvivakwa mairi, zvakafanana neyakajairwa Kubernetes inoratidzira, inongorerutswa zvakanyanya.

Zvishandiso zvevagadziri vezvishandiso zvinomhanya paKubernetes
Architecture uye nhanho huru dzekushanda neDevSpace

Mukuwedzera, zviri nyore kuwedzera chikamu chakafanotaurwa (semuenzaniso, MySQL DBMS) kana Helm chati kupurojekiti. Verenga zvakawanda mu zvinyorwa - hazvina kuoma.

Skaffold

  • Website; GitHub.
  • Pfupi GH nhamba: 7423 nyeredzi, 4173 inoita, 136 vabatsiri.
  • Mutauro: Enda.
  • Rezinesi: Apache License 2.0.

Ichi chishandiso kubva kuGoogle chinoti chinovhara zvese zvinodiwa nemugadziri ane kodhi neimwe nzira inomhanya pane Kubernetes cluster. Kutanga kuishandisa hazvisi nyore se devspace: hapana kupindirana, kuona mutauro uye kugadzira otomatiki Dockerfile havangakupi pano.

Nekudaro, kana izvi zvikasakutyisa, hezvino izvo Skaffold inobvumidza iwe kuti uite:

  • Tevera shanduko yekodhi kodhi.
  • Iwiriranise nemudziyo wepodhi kana isingade kuungana.
  • Unganidza midziyo ine kodhi, kana mutauro uchidudzirwa, kana unganidza zvigadzirwa wozvirongedza mumidziyo.
  • Mapikicha anenge abuda anotariswa otomatiki pachishandiswa mudziyo-chimiro-bvunzo.
  • Kumaka uye kurodha mifananidzo kuDocker Registry.
  • Tumira application muchikwata uchishandisa kubectl, Helm kana kustomize.
  • Ita port forwarding.
  • Debug application yakanyorwa muJava, Node.js, Python.

Kufambiswa kwebasa mumhando dzakasiyana-siyana kunotsanangurwa zvinotsanangurwa mufaira skaffold.yaml. Kune purojekiti, iwe unogona zvakare kutsanangura akati wandei maprofiles maunogona kuchinja zvishoma kana zvachose gungano uye danho rekutumira. Semuenzaniso, yekusimudzira, tsanangura mufananidzo wakanakira mugadziri, uye wekuita uye kugadzira - ishoma (+ shandisa securityContext midziyo kana kutsanangura zvakare cluster umo iyo application ichashandiswa).

Docker midziyo inogona kuvakwa munharaunda kana kure: mukati Google Cloud Build kana musumbu uchishandisa Kaniko. Bazel naJib Maven/Gradle vanotsigirwawo. Nekumaka, Skaffold inotsigira akawanda mazano: ne git commit hash, zuva / nguva, sha256-sum yezvinyorwa, nezvimwe.

Kusiyana, zvakakosha kucherechedza mukana wekuyedza midziyo. Iyo yakatotaurwa yemudziyo-chimiro-yekuyedza chimiro chinopa dzinotevera nzira dzekusimbisa:

  • Kuita mirairo mukati memudziyo une mastatus ekutevera ekubuda uye kutarisa mameseji ekubuda kwemurairo.
  • Kutarisa kuvepo kwemafaira mumudziyo uye nekufananidza hunhu hwakatsanangurwa.
  • Kudzora zvemukati zvemafaira uchishandisa zvinogara zvichitaurwa.
  • Kuongororwa kwemetadata yemufananidzo (ENV, ENTRYPOINT, VOLUMES zvichingoenda zvakadaro.).
  • Kutarisa rezinesi kuenderana.

Kuwiriranisa mafaera nemudziyo hakuitwe nenzira yakanyanya kunaka: Skaffold inongogadzira archive ine masosi, inokopa uye nekuiburitsa mumudziyo (tara inofanirwa kuiswa). Naizvozvo, kana basa rako guru riri rekubatanidza kodhi, zviri nani kutarisa kune yakasarudzika mhinduro (ksync).

Zvishandiso zvevagadziri vezvishandiso zvinomhanya paKubernetes
Matanho makuru eSkaffold oparesheni

Kazhinji, chishandiso hachikubvumidze kuti utore kubva Kubernetes inoratidzira uye haina chero yekudyidzana, saka zvingaite seyakaoma kugona. Asi izvi zvakare zvakanakira - rusununguko rukuru rwekuita.

Garden

  • Website; GitHub.
  • Pfupi GH nhamba: 1063 nyeredzi, 1927 anoita, 17 vabatsiri.
  • Mutauro: TypeScript (yakarongwa kupatsanura purojekiti muzvikamu zvakati wandei, zvimwe zvacho zvichange zviri muGo, uye zvakare kugadzira SDK yekugadzira ma-add-ons muTypeScript/JavaScript uye Go).
  • Rezinesi: Apache License 2.0.

SaSkaffold, Gadheni rinovavarira kuita otomatiki maitiro ekuendesa kodhi yekushandisa kune K8s cluster. Kuti uite izvi, iwe unofanirwa kutanga watsanangura chimiro chepurojekiti muYAML faira, wobva wamhanyisa rairo garden dev. Achaita mashiripiti ese:

  • Unganidza midziyo ine zvikamu zvakasiyana-siyana zvepurojekiti.
  • Inoita yekubatanidza uye bvunzo dzeyuniti, kana paine dzakatsanangurwa.
  • Inoburitsa zvese zvikamu zveprojekiti kune cluster.
  • Kana iyo kodhi kodhi ikachinja, ichatangazve pombi yese.

Chinangwa chikuru chekushandisa chishandiso ichi kugovera sumbu riri kure nechikwata chekusimudzira. Muchiitiko ichi, kana zvimwe zvekuvaka uye nhanho dzekuedza dzakatoitwa, izvi zvichanyanya kukurumidzira hurongwa hwese, sezvo Bindu richakwanisa kushandisa cached mhinduro.

A purojekiti module inogona kunge iri mudziyo, Maven mudziyo, Helm chati, manifest ye kubectl apply kana kunyange OpenFaaS basa. Uyezve, chero yemamodule anogona kudhonzwa kubva kure Git repository. Module inogona kana kusatsanangura masevhisi, mabasa, uye bvunzo. Masevhisi uye mabasa anogona kuve nekutsamira, saka iwe unogona kuona kutevedzana kwekutumira kweimwe sevhisi uye kuronga kutangwa kwemabasa uye bvunzo.

Bindu rinopa mushandisi dhibhodhi rakanaka (ikozvino mukati experimental state), iyo inoratidza girafu yeprojekiti: zvikamu, kutevedzana kwegungano, kuitwa kwemabasa uye bvunzo, kubatana kwavo uye zvinoenderana. Imo mubrowser, unogona kuona matanda ezvese mapurojekiti epurojekiti uye tarisa izvo chimwe chikamu chinobuda kuburikidza neHTTP (kana, chokwadi, ingress resource yakaziviswa iyo).

Zvishandiso zvevagadziri vezvishandiso zvinomhanya paKubernetes
Panel for Garden

Ichi chishandiso zvakare chine inopisa-reload modhi, iyo inongo wiriranisa script shanduko nemudziyo uri musumbu, ichimhanyisa zvakanyanya maitiro ekugadzirisa application. Garden ine yakanaka zvinyorwa uye kwete zvakaipa seti yemienzaniso, zvichikutendera kuti ukurumidze kujaira uye wotanga kuishandisa. Nenzira, munguva pfupi yapfuura takaburitsa chinyorwa chekushandura kubva kuvanyori varo.

mhedziso

Ehe, iyi runyorwa rwezvishandiso zvekugadzira uye kugadzirisa maapplication muKubernetes haina kugumira. Kune akawanda akawanda anobatsira uye anoshanda maturusi akakodzera, kana isiri chinyorwa chakasiyana, saka ndoda kutaurwa. Tiudze zvaunoshandisa, ndeapi matambudziko awakasangana nawo uye kuti wakaagadzirisa sei!

PS

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg