Zana za watengenezaji wa programu zinazoendeshwa kwenye Kubernetes

Zana za watengenezaji wa programu zinazoendeshwa kwenye Kubernetes

Njia ya kisasa ya shughuli hutatua shida nyingi za biashara. Vyombo na orchestrators hufanya iwe rahisi kupima miradi ya utata wowote, kurahisisha kutolewa kwa matoleo mapya, kuwafanya kuwa wa kuaminika zaidi, lakini wakati huo huo huunda matatizo ya ziada kwa watengenezaji. Mpangaji programu, kwanza kabisa, anajali kuhusu msimbo wake: usanifu, ubora, utendaji, umaridadi - na sio jinsi itakavyofanya kazi katika Kubernetes na jinsi ya kuijaribu na kuisuluhisha baada ya kufanya mabadiliko hata kidogo. Kwa hivyo, pia ni asili kabisa kwamba zana za Kubernetes zinatengenezwa kwa bidii, kusaidia kutatua shida za watengenezaji hata "wa kizamani" na kuwaruhusu kuzingatia jambo kuu.

Ukaguzi huu unatoa maelezo mafupi kuhusu baadhi ya zana zinazorahisisha maisha kwa mtayarishaji programu ambaye msimbo wake hutumika katika pod'ax ya nguzo ya Kubernetes.

Wasaidizi rahisi

Kubectl-debug

  • Mstari wa chini: ongeza chombo chako kwenye Pod na uone kinachotokea ndani yake.
  • GitHub.
  • Takwimu fupi za GH: nyota 715, ahadi 54, wachangiaji 9.
  • Lugha: Nenda.
  • Leseni: Leseni ya Apache 2.0.

Programu-jalizi hii ya kubectl hukuruhusu kuunda kontena la ziada ndani ya ganda la riba, ambalo litashiriki nafasi ya jina la mchakato na vyombo vingine. Ndani yake unaweza kurekebisha uendeshaji wa pod: angalia mtandao, kusikiliza trafiki ya mtandao, fanya safu ya mchakato wa maslahi, nk.

Unaweza pia kubadili kwenye chombo cha mchakato kwa kukimbia chroot /proc/PID/root - hii inaweza kuwa rahisi sana wakati unahitaji kupata ganda la mizizi kwenye chombo ambacho kimewekwa kwenye faili ya maelezo securityContext.runAs.

Chombo ni rahisi na cha ufanisi, hivyo inaweza kuwa na manufaa kwa kila msanidi. Tuliandika zaidi juu yake ndani makala tofauti.

telepresence

  • Mstari wa chini: kuhamisha programu kwenye kompyuta yako. Kuza na kutatua ndani ya nchi.
  • Site; GitHub.
  • Takwimu fupi za GH: nyota 2131, ahadi 2712, wachangiaji 33.
  • Lugha: Chatu.
  • Leseni: Leseni ya Apache 2.0.

Wazo la uingiliaji huu ni kuzindua kontena iliyo na programu kwenye kompyuta ya ndani ya mtumiaji na kutoa seva mbadala kutoka kwa nguzo kwenda kwake na kurudi. Mbinu hii hukuruhusu kukuza ndani kwa kuhariri faili tu katika IDE yako uipendayo: matokeo yatapatikana mara moja.

Faida za kuendesha ndani ya nchi ni urahisi wa uhariri na matokeo ya papo hapo, uwezo wa kutatua programu kwa njia ya kawaida. Upande wa chini ni kwamba inadai kasi ya unganisho, ambayo inaonekana sana wakati unapaswa kufanya kazi na programu iliyo na RPS ya juu na trafiki. Kwa kuongeza, Telepresence ina matatizo na kuongezeka kwa kiasi kwenye Windows, ambayo inaweza kuwa kizuizi cha maamuzi kwa watengenezaji waliozoea OS hii.

Tayari tumeshiriki uzoefu wetu wa kutumia Telepresence hapa.

Ksync

  • Mstari wa chini: karibu ulandanishi wa papo hapo wa msimbo na kontena kwenye nguzo.
  • GitHub.
  • Takwimu fupi za GH: nyota 555, ahadi 362, wachangiaji 11.
  • Lugha: Nenda.
  • Leseni: Leseni ya Apache 2.0.

Huduma hukuruhusu kusawazisha yaliyomo kwenye saraka ya ndani na saraka ya kontena inayoendesha kwenye nguzo. Chombo kama hiki ni sawa kwa wasanidi programu katika lugha za programu za uandishi, ambao shida yao kuu ni kutoa nambari kwenye kontena inayoendesha. Ksync imeundwa ili kupunguza maumivu haya ya kichwa.

Inapoanzishwa mara moja kwa amri ksync init DaemonSet imeundwa katika nguzo, ambayo hutumiwa kufuatilia hali ya mfumo wa faili wa chombo kilichochaguliwa. Kwenye kompyuta yake ya ndani, msanidi programu huendesha amri ksync watch, ambayo hufuatilia usanidi na kuendesha syncthing, ambayo husawazisha faili moja kwa moja na nguzo.

Kilichobaki ni kuelekeza ksync nini cha kusawazisha na nini. Kwa mfano, amri hii:

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

... itaunda mtazamaji anayeitwa myprojectambayo itatafuta ganda lenye lebo app=backend na jaribu kusawazisha saraka ya ndani /home/user/myproject/ na katalogi /var/www/myproject/ kwenye kontena aliita php.

Shida na vidokezo kwenye ksync kutoka kwa uzoefu wetu:

  • Lazima itumike kwenye nodi za nguzo za Kubernetes overlay2 kama dereva wa kuhifadhi kwa Docker. Huduma haitafanya kazi na wengine wowote.
  • Unapotumia Windows kama OS ya mteja, kiangalizi cha mfumo wa faili kinaweza kisifanye kazi ipasavyo. Hitilafu hii iligunduliwa wakati wa kufanya kazi na saraka kubwa - na idadi kubwa ya faili zilizowekwa na saraka. Tumeunda suala husika katika mradi wa kusawazisha, lakini hakuna maendeleo juu yake bado (tangu mwanzo wa Julai).
  • Tumia faili .stignore kubainisha njia au ruwaza za faili ambazo hazihitaji kusawazishwa (kwa mfano, saraka app/cache ΠΈ .git).
  • Kwa chaguo-msingi, ksync itaanzisha tena kontena wakati wowote faili zinapobadilika. Kwa Node.js hii ni rahisi, lakini kwa PHP sio lazima kabisa. Ni bora kuzima opcache na kutumia bendera --reload=false.
  • Usanidi unaweza kusahihishwa kila wakati $HOME/.ksync/ksync.yaml.

Boga

  • Mstari wa chini: Tatua michakato moja kwa moja kwenye nguzo.
  • GitHub.
  • Takwimu fupi za GH: nyota 1154, ahadi 279, wachangiaji 23.
  • Lugha: Nenda.
  • Leseni: Leseni ya Apache 2.0.

Chombo hiki kimeundwa kwa michakato ya kurekebisha moja kwa moja kwenye maganda. Huduma ni rahisi na kwa maingiliano hukuruhusu kuchagua kitatuzi unachotaka (tazama hapa chini) na nafasi ya majina + ganda, katika mchakato ambao unahitaji kuingilia kati. Inatumika kwa sasa:

  • delve - kwa maombi ya Go;
  • GDB - kupitia lengo la kijijini + usambazaji wa bandari;
  • Usambazaji mlango wa JDWP kwa utatuzi wa programu za Java.

Kwa upande wa IDE, msaada unapatikana tu katika VScode (kwa kutumia upanuzi), hata hivyo, mipango ya mwaka wa sasa (2019) ni pamoja na Eclipse na Intellij.

Ili kutatua hitilafu, Squash huendesha kontena iliyobahatika kwenye nodi za nguzo, kwa hivyo lazima kwanza ujitambue na uwezo. hali salama ili kuepuka matatizo ya usalama.

Suluhisho kamili

Wacha tuendelee kwenye ufundi mzito wa sanaa - miradi zaidi "mikubwa" iliyoundwa ili kukidhi mahitaji mengi ya watengenezaji mara moja.

NB: Katika orodha hii, bila shaka, kuna mahali pa matumizi yetu ya Open Source werf (zamani ilijulikana kama dapp). Walakini, tayari tumeandika na kuzungumza juu yake zaidi ya mara moja, na kwa hivyo tuliamua kutoijumuisha katika hakiki. Kwa wale wanaotaka kufahamu zaidi uwezo wake, tunapendekeza kusoma/kusikiliza ripoti β€œwerf ni zana yetu ya CI/CD katika Kubernetes'.

DevSpace

  • Mstari wa chini: kwa wale ambao wanataka kuanza kufanya kazi huko Kubernetes, lakini hawataki kuzama ndani ya msitu wake.
  • GitHub.
  • Takwimu fupi za GH: nyota 630, ahadi za 1912, wachangiaji 13.
  • Lugha: Nenda.
  • Leseni: Leseni ya Apache 2.0.

Suluhisho kutoka kwa kampuni ya jina moja, ambayo hutoa vikundi vinavyosimamiwa na Kubernetes kwa maendeleo ya timu. Huduma iliundwa kwa vikundi vya kibiashara, lakini inafanya kazi vizuri na zingine zozote.

Wakati wa kuendesha amri devspace init katika katalogi ya mradi utapewa (kwa maingiliano):

  • chagua nguzo ya Kubernetes inayofanya kazi,
  • tumia zilizopo Dockerfile (au toa mpya) kuunda kontena kulingana nayo,
  • chagua hifadhi ya kuhifadhi picha za chombo, nk.

Baada ya hatua hizi zote za maandalizi, unaweza kuanza maendeleo kwa kuendesha amri devspace dev. Itaunda kontena, ipakie kwenye hazina, itasambaza uwekaji kwenye nguzo na kuanza usambazaji wa bandari na usawazishaji wa kontena na saraka ya ndani.

Kwa hiari, utaombwa kuhamisha terminal kwenye kontena. Haupaswi kukataa, kwa sababu kwa kweli chombo huanza na amri ya usingizi, na kwa kupima halisi maombi inahitaji kuzinduliwa kwa mikono.

Hatimaye, timu devspace deploy inasambaza programu na miundombinu inayohusishwa kwenye nguzo, baada ya hapo kila kitu huanza kufanya kazi katika hali ya kupambana.

Usanidi wote wa mradi umehifadhiwa kwenye faili devspace.yaml. Mbali na mipangilio ya mazingira ya maendeleo, unaweza pia kupata maelezo ya miundombinu ndani yake, sawa na maonyesho ya kawaida ya Kubernetes, yaliyorahisishwa sana.

Zana za watengenezaji wa programu zinazoendeshwa kwenye Kubernetes
Usanifu na hatua kuu za kufanya kazi na DevSpace

Kwa kuongeza, ni rahisi kuongeza kijenzi kilichoainishwa (kwa mfano, MySQL DBMS) au chati ya Helm kwenye mradi. Soma zaidi katika nyaraka - sio ngumu.

Skafu

  • Site; GitHub.
  • Takwimu fupi za GH: nyota 7423, ahadi 4173, wachangiaji 136.
  • Lugha: Nenda.
  • Leseni: Leseni ya Apache 2.0.

Huduma hii kutoka kwa Google inadai kukidhi mahitaji yote ya msanidi programu ambaye msimbo wake utaendeshwa kwenye kundi la Kubernetes. Kuanza kuitumia si rahisi kama devspace: hakuna mwingiliano, utambuzi wa lugha na kuunda kiotomatiki Dockerfile hawatakupa hapa.

Walakini, ikiwa hii haikuogopi, hii ndio Skaffold inakuruhusu kufanya:

  • Fuatilia mabadiliko ya msimbo wa chanzo.
  • Sawazisha na chombo cha ganda ikiwa hauhitaji kusanyiko.
  • Kusanya vyombo vyenye msimbo, ikiwa lugha inafasiriwa, au kusanya vizalia vya programu na uzipakie kwenye vyombo.
  • Picha zinazotokana hukaguliwa kiotomatiki kwa kutumia mtihani wa muundo wa chombo.
  • Kuweka tagi na kupakia picha kwenye Usajili wa Docker.
  • Sambaza programu katika kundi ukitumia kubectl, Helm au kustomize.
  • Tekeleza usambazaji wa mlango.
  • Programu za utatuzi zilizoandikwa katika Java, Node.js, Python.

Mtiririko wa kazi katika tofauti tofauti umeelezewa wazi kwenye faili skaffold.yaml. Kwa mradi, unaweza pia kufafanua wasifu kadhaa ambao unaweza kubadilisha sehemu au kabisa hatua za kusanyiko na kupeleka. Kwa mfano, kwa maendeleo, taja picha ya msingi inayofaa kwa msanidi programu, na kwa utayarishaji na uzalishaji - ndogo (+ tumia securityContext vyombo au fafanua upya kundi ambalo maombi yatatumwa).

Vyombo vya Docker vinaweza kujengwa ndani au kwa mbali: in Google Cloud Build au kwa kutumia nguzo Kaniko. Bazel na Jib Maven/Gradle pia zinatumika. Kwa kuweka lebo, Skaffold inasaidia mikakati mingi: kwa git commit hash, tarehe/saa, sha256-jumla ya vyanzo, n.k.

Kwa kando, inafaa kuzingatia uwezekano wa kupima vyombo. Mfumo wa majaribio ya muundo wa kontena ambao tayari umetajwa hutoa mbinu zifuatazo za uthibitishaji:

  • Utekelezaji wa amri katika muktadha wa chombo kilicho na hali za kutoka na kuangalia matokeo ya maandishi ya amri.
  • Kuangalia uwepo wa faili kwenye chombo na kulinganisha sifa zilizoainishwa.
  • Udhibiti wa yaliyomo kwenye faili kwa kutumia misemo ya kawaida.
  • Uthibitishaji wa metadata ya picha (ENV, ENTRYPOINT, VOLUMES Nakadhalika.).
  • Inakagua uoanifu wa leseni.

Kusawazisha faili na kontena haifanyiki kwa njia bora zaidi: Skaffold inaunda kumbukumbu tu na vyanzo, inakili na kuifungua kwenye chombo (lami lazima isanikishwe). Kwa hivyo, ikiwa kazi yako kuu ni usawazishaji wa nambari, ni bora kutazama suluhisho maalum (ksync).

Zana za watengenezaji wa programu zinazoendeshwa kwenye Kubernetes
Hatua kuu za operesheni ya Skaffold

Kwa ujumla, zana haikuruhusu kujiondoa kutoka kwa maonyesho ya Kubernetes na haina mwingiliano wowote, kwa hivyo inaweza kuonekana kuwa ngumu kujua. Lakini hii pia ni faida yake - uhuru mkubwa wa hatua.

Bustani

  • Site; GitHub.
  • Takwimu fupi za GH: nyota 1063, ahadi za 1927, wachangiaji 17.
  • Lugha: TypeScript (imepangwa kugawanya mradi katika vipengee kadhaa, ambavyo vingine vitakuwa kwenye Go, na pia kutengeneza SDK ya kuunda nyongeza katika TypeScript/JavaScript na Go).
  • Leseni: Leseni ya Apache 2.0.

Kama Skaffold, Bustani inalenga kufanyia kazi michakato ya utoaji wa msimbo wa maombi kiotomatiki kwa nguzo ya K8s. Ili kufanya hivyo, kwanza unahitaji kuelezea muundo wa mradi katika faili ya YAML, na kisha uendesha amri garden dev. Atafanya uchawi wote:

  • Kusanya makontena yenye sehemu mbalimbali za mradi.
  • Inafanya majaribio ya ujumuishaji na kitengo, ikiwa yameelezewa.
  • Inasambaza vipengele vyote vya mradi kwenye nguzo.
  • Ikiwa msimbo wa chanzo utabadilika, itaanza upya bomba zima.

Lengo kuu la kutumia zana hii ni kushiriki kikundi cha mbali na timu ya maendeleo. Katika kesi hiyo, ikiwa baadhi ya hatua za kujenga na kupima tayari zimefanyika, hii itaharakisha kwa kiasi kikubwa mchakato mzima, tangu Bustani itaweza kutumia matokeo yaliyohifadhiwa.

Moduli ya mradi inaweza kuwa kontena, kontena la Maven, chati ya Helm, faili ya maelezo ya kubectl apply au hata kazi ya OpenFaaS. Kwa kuongezea, moduli zozote zinaweza kuvutwa kutoka kwa hazina ya mbali ya Git. Moduli inaweza au isiweze kufafanua huduma, kazi na majaribio. Huduma na kazi zinaweza kuwa na utegemezi, shukrani ambayo unaweza kuamua mlolongo wa kupelekwa kwa huduma fulani na kuandaa uzinduzi wa kazi na vipimo.

Bustani humpa mtumiaji dashibodi nzuri (ambayo kwa sasa iko ndani hali ya majaribio), ambayo inaonyesha grafu ya mradi: vipengele, mlolongo wa kusanyiko, utekelezaji wa kazi na vipimo, viunganisho vyao na utegemezi. Katika kivinjari, unaweza kutazama magogo ya vipengele vyote vya mradi na uangalie ni matokeo gani ya sehemu fulani kupitia HTTP (ikiwa, bila shaka, rasilimali ya ingress inatangazwa kwa ajili yake).

Zana za watengenezaji wa programu zinazoendeshwa kwenye Kubernetes
Jopo kwa bustani

Zana hii pia ina modi ya upakiaji upya wa moto, ambayo husawazisha tu mabadiliko ya hati na kontena kwenye nguzo, na kuharakisha sana mchakato wa utatuzi wa programu. Bustani ina nzuri nyaraka na sio mbaya seti ya mifano, hukuruhusu kuizoea haraka na kuanza kuitumia. Kwa njia, hivi karibuni tulichapisha tafsiri ya makala kutoka kwa waandishi wake.

Hitimisho

Kwa kweli, orodha hii ya zana za kukuza na kurekebisha programu katika Kubernetes sio tu. Kuna huduma nyingi muhimu sana na za vitendo ambazo zinastahili, ikiwa sio nakala tofauti, basi angalau kutajwa. Tuambie unatumia nini, ni matatizo gani uliyokumbana nayo na jinsi ulivyoyatatua!

PS

Soma pia kwenye blogi yetu:

Chanzo: mapenzi.com

Kuongeza maoni