Verkfæri fyrir forritara forrita sem keyra á Kubernetes

Verkfæri fyrir forritara forrita sem keyra á Kubernetes

Nútímaleg nálgun í rekstri leysir mörg brýn viðskiptavandamál. Gámar og hljómsveitarstjórar gera það auðvelt að skala verkefni af hvaða flóknu sem er, einfalda útgáfu nýrra útgáfur, gera þær áreiðanlegri, en á sama tíma skapa þeir viðbótarvandamál fyrir forritara. Forritaranum er fyrst og fremst annt um kóðann sinn: byggingarlist, gæði, frammistöðu, glæsileika - en ekki hvernig hann mun virka í Kubernetes og hvernig á að prófa og kemba hann eftir að hafa gert jafnvel lágmarksbreytingar. Þess vegna er það líka alveg eðlilegt að verkfæri fyrir Kubernetes séu virkir í þróun, sem hjálpa til við að leysa vandamál jafnvel „gamla“ forritara og leyfa þeim að einbeita sér að aðalatriðinu.

Þessi úttekt veitir stuttar upplýsingar um sum verkfærin sem gera lífið auðveldara fyrir forritara sem keyrir kóðann í pod'ax Kubernetes klasa.

Einfaldir aðstoðarmenn

Kubectl-kembiforrit

  • The botn lína: bættu ílátinu þínu við Pod og sjáðu hvað gerist í honum.
  • GitHub.
  • Stutt GH tölfræði: 715 stjörnur, 54 skuldbindingar, 9 þátttakendur.
  • Tungumál: Farðu.
  • Leyfi: Apache leyfi 2.0.

Þessi viðbót fyrir kubectl gerir þér kleift að búa til viðbótargám inni í belgnum sem vekur áhuga, sem mun deila ferlinafnrýminu með öðrum gámum. Í því geturðu kembiforritið virkni belgsins: athugað netið, hlustað á netumferð, farið í gegnum áhugaferlið o.s.frv.

Þú getur líka skipt yfir í vinnsluílátið með því að keyra chroot /proc/PID/root - þetta getur verið mjög þægilegt þegar þú þarft að fá rótarskel í ílát sem hún er sett fyrir í upplýsingaskránni securityContext.runAs.

Tólið er einfalt og áhrifaríkt, svo það getur verið gagnlegt fyrir alla þróunaraðila. Við skrifuðum meira um það í sér grein.

Fjarvist

  • The botn lína: flytja forritið yfir á tölvuna þína. Þróa og kemba á staðnum.
  • Site; GitHub.
  • Stutt GH tölfræði: 2131 stjarna, 2712 skuldbindingar, 33 þátttakendur.
  • Tungumál: Python.
  • Leyfi: Apache leyfi 2.0.

Hugmyndin með þessari snap-in er að ræsa gám með forritinu á staðbundinni notendatölvu og umboð fyrir alla umferð frá þyrpingunni til hans og til baka. Þessi nálgun gerir þér kleift að þróa á staðnum með því einfaldlega að breyta skrám í uppáhalds IDE þinni: niðurstöðurnar verða tiltækar strax.

Kostir þess að keyra á staðnum eru þægindi breytinga og tafarlausar niðurstöður, hæfileikinn til að kemba forritið á venjulegan hátt. Gallinn er sá að það er krefjandi fyrir tengihraða, sem er sérstaklega áberandi þegar þú þarft að vinna með forrit með frekar hátt RPS og umferð. Að auki á Telepresence í vandræðum með hljóðstyrksfestingar á Windows, sem getur verið afgerandi takmörkun fyrir forritara sem eru vanir þessu stýrikerfi.

Við höfum þegar deilt reynslu okkar af notkun Telepresence hér.

Ksync

  • The botn lína: næstum tafarlaus samstilling kóða við ílátið í klasanum.
  • GitHub.
  • Stutt GH tölfræði: 555 stjörnur, 362 skuldbindingar, 11 þátttakendur.
  • Tungumál: Farðu.
  • Leyfi: Apache leyfi 2.0.

Tækið gerir þér kleift að samstilla innihald staðbundinnar möppu við möppu gáms sem keyrir í þyrpingunni. Þetta tól er fullkomið fyrir forritara sem vinna í forskriftarforritunarmálum, þar sem aðalvandamálið er að skila kóða í hlaupandi ílát. Ksync er hannað til að létta þennan höfuðverk.

Þegar það er frumstillt einu sinni með skipuninni ksync init DaemonSet er búið til í þyrpingunni, sem er notað til að fylgjast með stöðu skráakerfis valins íláts. Á staðbundinni tölvu sinni keyrir verktaki skipunina ksync watch, sem fylgist með stillingum og keyrslum samstillingu, sem samstillir skrár beint við þyrpinguna.

Allt sem er eftir er að leiðbeina ksync hvað á að samstilla við hvað. Til dæmis, þessi skipun:

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

... mun búa til áhorfanda sem heitir myprojectsem mun leita að belg með merkimiða app=backend og reyndu að samstilla staðarskrána /home/user/myproject/ með vörulista /var/www/myproject/ við gáminn sem kallaður var php.

Vandamál og athugasemdir við ksync frá reynslu okkar:

  • Verður að nota á Kubernetes klasahnútum overlay2 sem geymslubílstjóri fyrir Docker. Tækið mun ekki vinna með öðrum.
  • Þegar Windows er notað sem stýrikerfi biðlara getur verið að skráarkerfiseftirlitið virki ekki rétt. Það var tekið eftir þessari villu þegar unnið var með stórar möppur - með miklum fjölda hreiðra skráa og möppum. Við sköpuðum viðkomandi málefni í samstillingarverkefninu, en það er ekkert framhald á því ennþá (síðan í byrjun júlí).
  • Notaðu skrá .stignore til að tilgreina slóðir eða skráarmynstur sem ekki þarf að samstilla (til dæmis möppur app/cache и .git).
  • Sjálfgefið mun ksync endurræsa ílátið þegar skrár breytast. Fyrir Node.js er þetta þægilegt, en fyrir PHP er það algjörlega óþarfi. Það er betra að slökkva á opcache og nota fánann --reload=false.
  • Stillinguna er alltaf hægt að leiðrétta í $HOME/.ksync/ksync.yaml.

Leiðsögn

  • The botn lína: villuleitarferli beint í klasanum.
  • GitHub.
  • Stutt GH tölfræði: 1154 stjörnur, 279 skuldbindingar, 23 þátttakendur.
  • Tungumál: Farðu.
  • Leyfi: Apache leyfi 2.0.

Þetta tól er hannað til að kemba ferla beint í belg. Tækið er einfalt og gerir þér gagnvirkt kleift að velja kembiforritið sem þú vilt (sjá fyrir neðan) og nafnrými + fræbelgur, í því ferli sem þú þarft að grípa inn í. Núna stutt:

  • kafa - fyrir Go forrit;
  • GDB - í gegnum miða fjarstýringu + höfn áfram;
  • JDWP höfn áframsending til að kemba Java forrit.

Á IDE hliðinni er stuðningur aðeins fáanlegur í VScode (með því að nota viðbyggingar), hins vegar, áætlanir fyrir núverandi (2019) ár innihalda Eclipse og Intellij.

Til að kemba ferla keyrir Squash forréttindagám á klasahnútunum, svo þú verður fyrst að kynna þér möguleikana öruggur háttur til að forðast öryggisvandamál.

Samþættar lausnir

Við skulum halda áfram að stórskotaliðinu - fleiri „stórum“ verkefnum sem eru hönnuð til að mæta strax mörgum þörfum þróunaraðila.

NB: Á þessum lista er auðvitað staður fyrir Open Source tólið okkar werf (áður þekkt sem dapp). Hins vegar höfum við þegar skrifað og talað um það oftar en einu sinni og því ákveðið að taka það ekki með í umsögninni. Fyrir þá sem vilja kynnast getu þess betur, mælum við með að lesa/hlusta á skýrsluna “werf er tólið okkar fyrir CI/CD í Kubernetes'.

DevSpace

  • The botn lína: fyrir þá sem vilja byrja að vinna í Kubernetes, en vilja ekki kafa djúpt í frumskóg þess.
  • GitHub.
  • Stutt GH tölfræði: 630 stjörnur, 1912 skuldbindingar, 13 þátttakendur.
  • Tungumál: Farðu.
  • Leyfi: Apache leyfi 2.0.

Lausn frá samnefndu fyrirtæki, sem útvegar stýrða klasa með Kubernetes fyrir teymisþróun. Tækið var búið til fyrir viðskiptaklasa, en virkar frábærlega með öllum öðrum.

Þegar skipunin er keyrð devspace init í verkefnaskránni verður þér boðið (gagnvirkt):

  • veldu virkan Kubernetes þyrping,
  • nota fyrirliggjandi Dockerfile (eða búa til nýjan) til að búa til ílát sem byggir á því,
  • veldu geymslu til að geyma gámamyndir o.s.frv.

Eftir öll þessi undirbúningsskref geturðu byrjað þróun með því að keyra skipunina devspace dev. Það mun setja ílátið saman, hlaða því upp í geymsluna, rúlla dreifingunni út í þyrpinguna og hefja framsendingu hafna og samstillingu ílátsins við staðbundna möppuna.

Valfrjálst verður þú beðinn um að færa flugstöðina í gáminn. Þú ættir ekki að neita því í raun og veru byrjar gámurinn með svefnskipuninni og fyrir alvöru prófun þarf að ræsa forritið handvirkt.

Loksins liðið devspace deploy rúllar forritinu og tilheyrandi innviðum út í klasann, eftir það byrjar allt að virka í bardagaham.

Öll verkefnisstilling er geymd í skrá devspace.yaml. Til viðbótar við þróunarumhverfisstillingarnar er einnig hægt að finna lýsingu á innviðunum í því, svipað og venjuleg Kubernetes birtingarmyndir, aðeins mjög einfaldaða.

Verkfæri fyrir forritara forrita sem keyra á Kubernetes
Arkitektúr og helstu stig vinnu með DevSpace

Að auki er auðvelt að bæta fyrirfram skilgreindum íhlut (til dæmis MySQL DBMS) eða Helm töflu við verkefnið. Lestu meira í skjöl - þetta er ekki flókið.

Skaffold

  • Site; GitHub.
  • Stutt GH tölfræði: 7423 stjörnur, 4173 skuldbindingar, 136 þátttakendur.
  • Tungumál: Farðu.
  • Leyfi: Apache leyfi 2.0.

Þetta tól frá Google segist uppfylla allar þarfir þróunaraðila sem mun einhvern veginn keyra kóðann á Kubernetes þyrping. Að byrja að nota það er ekki eins auðvelt og devspace: engin gagnvirkni, tungumálagreining og sjálfvirk sköpun Dockerfile þeir munu ekki bjóða þér það hér.

Hins vegar, ef þetta hræðir þig ekki, hér er það sem Skaffold leyfir þér að gera:

  • Fylgstu með frumkóðabreytingum.
  • Samstilltu það við belgílátið ef það þarf ekki samsetningu.
  • Safnaðu ílátum með kóða, ef tungumálið er túlkað, eða settu saman gripi og pakkaðu þeim í ílát.
  • Myndirnar sem myndast eru sjálfkrafa athugaðar með því að nota gáma-byggingarpróf.
  • Merkja og hlaða upp myndum í Docker Registry.
  • Dreifðu forriti í klasa með því að nota kubectl, Helm eða kustomize.
  • Framkvæma höfn áfram.
  • Villuleit forrit skrifuð í Java, Node.js, Python.

Verkflæði í ýmsum afbrigðum er lýst með yfirlýsandi hætti í skránni skaffold.yaml. Fyrir verkefni geturðu einnig skilgreint nokkur snið þar sem þú getur breytt samsetningar- og dreifingarstigum að hluta eða öllu leyti. Til dæmis, fyrir þróun, tilgreindu grunnmynd sem hentar þróunaraðilanum og fyrir sviðsetningu og framleiðslu - lágmarksmynd (+ notkun securityContext gáma eða endurskilgreina þyrpinguna þar sem forritið verður dreift).

Docker gáma er hægt að smíða á staðnum eða fjarstýrt: í Google Cloud Build eða í klasa með því að nota Kaniko. Bazel og Jib Maven/Gradle eru einnig studd. Fyrir merkingar styður Skaffold margar aðferðir: með git commit hash, dagsetningu/tíma, sha256-summu heimilda osfrv.

Sérstaklega er vert að taka eftir möguleikanum á að prófa ílát. Hin þegar nefnda gámauppbyggingarprófunarrammi býður upp á eftirfarandi sannprófunaraðferðir:

  • Að framkvæma skipanir í samhengi við gám með rekja útgöngustöðu og athuga textaúttak skipunarinnar.
  • Athugar tilvist skráa í ílátinu og samsvarar eiginleikum sem tilgreindir eru.
  • Stjórn á innihaldi skráar með því að nota reglulegar tjáningar.
  • Staðfesting myndlýsigagna (ENV, ENTRYPOINT, VOLUMES og þess háttar).
  • Athugar leyfissamhæfi.

Samstilling skráa við ílátið fer ekki fram á sem bestan hátt: Skaffold býr einfaldlega til skjalasafn með heimildunum, afritar það og pakkar upp í ílátið (tar verður að vera uppsett). Þess vegna, ef aðalverkefni þitt er kóðasamstilling, er betra að leita að sérhæfðri lausn (ksync).

Verkfæri fyrir forritara forrita sem keyra á Kubernetes
Helstu stig Skaffoldarreksturs

Almennt leyfir tólið þér ekki að draga úr Kubernetes birtingaskrám og hefur enga gagnvirkni, svo það kann að virðast erfitt að ná tökum á því. En þetta er líka kostur þess - meira frelsi til athafna.

Garden

  • Site; GitHub.
  • Stutt GH tölfræði: 1063 stjörnur, 1927 skuldbindingar, 17 þátttakendur.
  • Tungumál: TypeScript (fyrirhugað er að skipta verkefninu í nokkra þætti, sem sumir verða í Go, og einnig búa til SDK til að búa til viðbætur í TypeScript/JavaScript og Go).
  • Leyfi: Apache leyfi 2.0.

Eins og Skaffold, stefnir Garden að því að gera sjálfvirkan ferla við afhendingu umsóknarkóða til K8s klasans. Til að gera þetta þarftu fyrst að lýsa uppbyggingu verkefnisins í YAML skrá og keyra síðan skipunina garden dev. Hún mun gera alla töfrana:

  • Safnaðu gámum með ýmsum hlutum verkefnisins.
  • Framkvæmir samþættingu og einingapróf, ef þeim hefur verið lýst.
  • Rúllar öllum verkþáttum út í klasann.
  • Ef frumkóði breytist mun hann endurræsa alla leiðsluna.

Megináherslan við að nota þetta tól er að deila fjarklasa með þróunarteymi. Í þessu tilfelli, ef einhver af byggingar- og prófunarskrefunum hafa þegar verið framkvæmd, mun þetta flýta verulega fyrir öllu ferlinu, þar sem Garden mun geta notað niðurstöðurnar í skyndiminni.

Verkefnaeining getur verið gámur, Maven gámur, Helm kort, upplýsingaskrá fyrir kubectl apply eða jafnvel OpenFaaS aðgerð. Þar að auki er hægt að draga allar einingarnar úr ytri Git geymslu. Eining getur eða ekki skilgreint þjónustu, verkefni og próf. Þjónusta og verkefni geta verið ósjálfstæðir, þökk sé þeim geturðu ákvarðað dreifingarröð tiltekinnar þjónustu og skipulagt upphaf verkefna og prófana.

Garden veitir notandanum fallegt mælaborð (sem er í tilraunaástand), sem sýnir verkefnisgrafið: íhluti, samsetningarröð, framkvæmd verkefna og prófana, tengingar þeirra og ósjálfstæði. Rétt í vafranum geturðu skoðað annála allra verkefnaþátta og athugað hvað tiltekinn íhlutur gefur frá sér í gegnum HTTP (ef auðvitað er lýst yfir inngangstilföng fyrir það).

Verkfæri fyrir forritara forrita sem keyra á Kubernetes
Panel fyrir Garð

Þetta tól er einnig með heita endurhleðsluham, sem einfaldlega samstillir skriftubreytingar við ílátið í þyrpingunni, sem flýtir mjög fyrir kembiforritinu. Garður hefur góðan skjöl og ekki slæmt sett af dæmum, sem gerir þér kleift að venjast því fljótt og byrja að nota það. Við the vegur, nýlega birtum við þýðing greinar frá höfundum þess.

Ályktun

Auðvitað er þessi listi yfir verkfæri til að þróa og kemba forrit í Kubernetes ekki takmarkaður við. Það eru mörg fleiri mjög gagnleg og hagnýt tól sem eru verðug, ef ekki sérstök grein, þá að minnsta kosti að nefna. Segðu okkur hvað þú notar, hvaða vandamál þú lentir í og ​​hvernig þú leystir þau!

PS

Lestu líka á blogginu okkar:

Heimild: www.habr.com

Bæta við athugasemd