Offer ar gyfer datblygwyr cymwysiadau sy'n rhedeg ar Kubernetes

Offer ar gyfer datblygwyr cymwysiadau sy'n rhedeg ar Kubernetes

Mae ymagwedd fodern at weithrediadau yn datrys llawer o broblemau busnes dybryd. Mae cynwysyddion a cherddorfawyr yn ei gwneud hi'n hawdd graddio prosiectau o unrhyw gymhlethdod, symleiddio rhyddhau fersiynau newydd, eu gwneud yn fwy dibynadwy, ond ar yr un pryd maent yn creu problemau ychwanegol i ddatblygwyr. Mae'r rhaglennydd, yn gyntaf oll, yn poeni am ei god: pensaernïaeth, ansawdd, perfformiad, ceinder - ac nid sut y bydd yn gweithio yn Kubernetes a sut i'w brofi a'i ddadfygio ar ôl gwneud newidiadau bach hyd yn oed. Felly, mae hefyd yn eithaf naturiol bod offer ar gyfer Kubernetes yn cael eu datblygu'n weithredol, gan helpu i ddatrys problemau hyd yn oed y datblygwyr mwyaf "hynafol" a chaniatáu iddynt ganolbwyntio ar y prif beth.

Mae'r adolygiad hwn yn darparu gwybodaeth gryno am rai o'r offer sy'n gwneud bywyd yn haws i raglennydd y mae ei god yn rhedeg yn pod'ax clwstwr Kubernetes.

Cynorthwywyr syml

Kubectl-debug

  • Y llinell waelod: ychwanegwch eich cynhwysydd at Pod a gweld beth sy'n digwydd ynddo.
  • GitHub.
  • Ystadegau GH cryno: 715 o sêr, 54 yn ymrwymo, 9 cyfrannwr.
  • Iaith: Ewch.
  • Trwydded: Trwydded Apache 2.0.

Mae'r ategyn hwn ar gyfer kubectl yn caniatáu ichi greu cynhwysydd ychwanegol y tu mewn i'r pod o ddiddordeb, a fydd yn rhannu gofod enw'r broses â chynwysyddion eraill. Ynddo gallwch ddadfygio gweithrediad y pod: gwirio'r rhwydwaith, gwrando ar draffig rhwydwaith, gwneud ychydig o'r broses o ddiddordeb, ac ati.

Gallwch hefyd newid i'r cynhwysydd proses trwy redeg chroot /proc/PID/root - gall hyn fod yn gyfleus iawn pan fydd angen i chi gael cragen wreiddiau mewn cynhwysydd y mae wedi'i osod yn y maniffest ar ei gyfer securityContext.runAs.

Mae'r offeryn yn syml ac yn effeithiol, felly gall fod yn ddefnyddiol i bob datblygwr. Fe wnaethon ni ysgrifennu mwy amdano yn erthygl ar wahân.

Telepresenoldeb

  • Y llinell waelod: trosglwyddo'r cais i'ch cyfrifiadur. Datblygu a dadfygio yn lleol.
  • Safle; GitHub.
  • Ystadegau GH cryno: 2131 o sêr, 2712 yn ymrwymo, 33 o gyfranwyr.
  • Iaith: Python.
  • Trwydded: Trwydded Apache 2.0.

Syniad y snap-in hwn yw lansio cynhwysydd gyda'r cais ar y cyfrifiadur defnyddiwr lleol a dirprwy holl draffig o'r clwstwr iddo ac yn ôl. Mae'r dull hwn yn caniatáu ichi ddatblygu'n lleol trwy olygu ffeiliau yn eich hoff DRhA: bydd y canlyniadau ar gael ar unwaith.

Manteision rhedeg yn lleol yw hwylustod golygiadau a chanlyniadau ar unwaith, y gallu i ddadfygio'r rhaglen yn y ffordd arferol. Yr anfantais yw ei fod yn feichus ar gyflymder cysylltu, sy'n arbennig o amlwg pan fydd yn rhaid i chi weithio gyda chymhwysiad gyda RPS a thraffig eithaf uchel. Yn ogystal, mae gan Telepresence broblemau gyda mowntiau cyfaint ar Windows, a all fod yn gyfyngiad pendant i ddatblygwyr sy'n gyfarwydd â'r OS hwn.

Rydym eisoes wedi rhannu ein profiad o ddefnyddio Telepresence yma.

Ksync

  • Y llinell waelod: cydamseru cod bron yn syth gyda'r cynhwysydd yn y clwstwr.
  • GitHub.
  • Ystadegau GH cryno: 555 o sêr, 362 yn ymrwymo, 11 cyfrannwr.
  • Iaith: Ewch.
  • Trwydded: Trwydded Apache 2.0.

Mae'r cyfleustodau yn caniatáu ichi gydamseru cynnwys cyfeiriadur lleol â chyfeiriadur cynhwysydd sy'n rhedeg yn y clwstwr. Mae offeryn o'r fath yn berffaith ar gyfer datblygwyr mewn ieithoedd rhaglennu sgriptio, a'u prif broblem yw cyflwyno cod i gynhwysydd rhedeg. Mae Ksync wedi'i gynllunio i leddfu'r cur pen hwn.

Pan ddechreuir unwaith gan y gorchymyn ksync init mae DaemonSet yn cael ei greu yn y clwstwr, a ddefnyddir i fonitro cyflwr system ffeiliau'r cynhwysydd a ddewiswyd. Ar ei gyfrifiadur lleol, mae'r datblygwr yn rhedeg y gorchymyn ksync watch, sy'n monitro ffurfweddiadau a rhediadau cysoni, sy'n cydamseru ffeiliau yn uniongyrchol â'r clwstwr.

Y cyfan sydd ar ôl yw cyfarwyddo ksync beth i'w gydamseru â beth. Er enghraifft, y gorchymyn hwn:

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

...yn creu gwyliwr o'r enw myprojecta fydd yn chwilio am god gyda label app=backend a cheisio cysoni'r cyfeiriadur lleol /home/user/myproject/ gyda chatalog /var/www/myproject/ yn y cynhwysydd a elwir php.

Problemau a nodiadau ar ksync o'n profiad ni:

  • Rhaid ei ddefnyddio ar nodau clwstwr Kubernetes overlay2 fel gyrrwr storio ar gyfer Docker. Ni fydd y cyfleustodau yn gweithio gydag unrhyw rai eraill.
  • Wrth ddefnyddio Windows fel cleient OS, efallai na fydd gwyliwr y system ffeiliau yn gweithio'n gywir. Sylwyd ar y byg hwn wrth weithio gyda chyfeiriaduron mawr - gyda nifer fawr o ffeiliau nythu a chyfeiriaduron. Fe wnaethon ni greu mater perthnasol yn y prosiect syncthing, ond nid oes unrhyw gynnydd arno eto (ers dechrau Gorffennaf).
  • Defnyddiwch ffeil .stignore i nodi llwybrau neu batrymau ffeil nad oes angen eu cysoni (er enghraifft, cyfeiriaduron app/cache и .git).
  • Yn ddiofyn, bydd ksync yn ailgychwyn y cynhwysydd pryd bynnag y bydd ffeiliau'n newid. Ar gyfer Node.js mae hyn yn gyfleus, ond ar gyfer PHP mae'n gwbl ddiangen. Mae'n well diffodd opcache a defnyddio'r faner --reload=false.
  • Gellir cywiro'r ffurfweddiad bob amser yn $HOME/.ksync/ksync.yaml.

Sboncen

  • Y llinell waelod: prosesau dadfygio yn uniongyrchol yn y clwstwr.
  • GitHub.
  • Ystadegau GH cryno: 1154 o sêr, 279 yn ymrwymo, 23 o gyfranwyr.
  • Iaith: Ewch.
  • Trwydded: Trwydded Apache 2.0.

Mae'r offeryn hwn wedi'i gynllunio ar gyfer prosesau dadfygio yn uniongyrchol mewn codennau. Mae'r cyfleustodau yn syml ac yn rhyngweithiol yn caniatáu ichi ddewis y dadfygiwr a ddymunir (gweler isod) ac namespace + pod, yn y broses mae angen i chi ymyrryd. Cefnogir ar hyn o bryd:

  • delve - ar gyfer ceisiadau Go;
  • GDB - trwy darged o bell + anfon ymlaen porthladd;
  • Anfon porthladd JDWP ar gyfer dadfygio cymwysiadau Java.

Ar yr ochr IDE, dim ond yn VScode y mae cymorth ar gael (gan ddefnyddio ehangu), fodd bynnag, mae cynlluniau ar gyfer y flwyddyn gyfredol (2019) yn cynnwys Eclipse ac Intellij.

I ddadfygio prosesau, mae Sboncen yn rhedeg cynhwysydd breintiedig ar nodau'r clwstwr, felly yn gyntaf rhaid i chi ymgyfarwyddo â'r galluoedd modd-Diogel er mwyn osgoi problemau diogelwch.

Datrysiadau integredig

Gadewch i ni symud ymlaen at y magnelau trwm - mwy o brosiectau “ar raddfa fawr” wedi'u cynllunio i ddiwallu llawer o anghenion datblygwyr ar unwaith.

NB: Yn y rhestr hon, wrth gwrs, mae lle ar gyfer ein cyfleustodau Ffynhonnell Agored werff (a elwid gynt yn dapp). Fodd bynnag, rydym eisoes wedi ysgrifennu a siarad amdano fwy nag unwaith, ac felly wedi penderfynu peidio â’i gynnwys yn yr adolygiad. I’r rhai sy’n dymuno dod yn fwy cyfarwydd â’i alluoedd, rydym yn argymell darllen/gwrando ar yr adroddiad “werf yw ein hofferyn ar gyfer CI/CD yn Kubernetes'.

DevSpace

  • Y llinell waelod: i'r rhai sydd am ddechrau gweithio yn Kubernetes, ond nad ydynt am dreiddio'n ddwfn i'w jyngl.
  • GitHub.
  • Ystadegau GH cryno: 630 o sêr, 1912 yn ymrwymo, 13 cyfrannwr.
  • Iaith: Ewch.
  • Trwydded: Trwydded Apache 2.0.

Datrysiad gan y cwmni o'r un enw, sy'n darparu Kubernetes i glystyrau a reolir ar gyfer datblygu tîm. Crëwyd y cyfleustodau ar gyfer clystyrau masnachol, ond mae'n gweithio'n wych gydag unrhyw rai eraill.

Wrth redeg y gorchymyn devspace init yng nghatalog y prosiect cewch gynnig (yn rhyngweithiol):

  • dewiswch glwstwr Kubernetes sy'n gweithio,
  • defnyddio presennol Dockerfile (neu gynhyrchu un newydd) i greu cynhwysydd yn seiliedig arno,
  • dewiswch ystorfa ar gyfer storio delweddau cynhwysydd, ac ati.

Ar ôl yr holl gamau paratoadol hyn, gallwch chi ddechrau datblygu trwy redeg y gorchymyn devspace dev. Bydd yn cydosod y cynhwysydd, yn ei uwchlwytho i'r ystorfa, yn cyflwyno'r gosodiad i'r clwstwr ac yn dechrau anfon porthladd ymlaen a chydamseru'r cynhwysydd â'r cyfeiriadur lleol.

Yn ddewisol, fe'ch anogir i symud y derfynell i'r cynhwysydd. Ni ddylech wrthod, oherwydd mewn gwirionedd mae'r cynhwysydd yn dechrau gyda'r gorchymyn cysgu, ac ar gyfer profi go iawn mae angen lansio'r cais â llaw.

Yn olaf, y tîm devspace deploy yn cyflwyno'r cais a'r seilwaith cysylltiedig i'r clwstwr, ac ar ôl hynny mae popeth yn dechrau gweithredu yn y modd ymladd.

Mae holl ffurfweddiad y prosiect yn cael ei storio mewn ffeil devspace.yaml. Yn ogystal â'r gosodiadau amgylchedd datblygu, gallwch hefyd ddod o hyd i ddisgrifiad o'r seilwaith ynddo, yn debyg i amlygiadau Kubernetes safonol, dim ond wedi'i symleiddio'n fawr.

Offer ar gyfer datblygwyr cymwysiadau sy'n rhedeg ar Kubernetes
Pensaernïaeth a phrif gamau gweithio gyda DevSpace

Yn ogystal, mae'n hawdd ychwanegu cydran wedi'i diffinio ymlaen llaw (er enghraifft, MySQL DBMS) neu siart Helm i'r prosiect. Darllenwch fwy yn dogfennaeth - nid yw'n gymhleth.

Sgaffald

  • Safle; GitHub.
  • Ystadegau cryno GH: 7423 o sêr, 4173 yn ymrwymo, 136 o gyfranwyr.
  • Iaith: Ewch.
  • Trwydded: Trwydded Apache 2.0.

Mae'r cyfleustodau hwn gan Google yn honni ei fod yn cwmpasu holl anghenion datblygwr y bydd ei god yn rhedeg rywsut ar glwstwr Kubernetes. Nid yw dechrau ei ddefnyddio mor hawdd â devspace: dim rhyngweithedd, canfod iaith a chreu auto Dockerfile ni fyddant yn ei gynnig i chi yma.

Fodd bynnag, os nad yw hyn yn eich dychryn, dyma beth mae Skaffold yn caniatáu ichi ei wneud:

  • Traciwch newidiadau cod ffynhonnell.
  • Cydamserwch ef â'r cynhwysydd pod os nad oes angen cydosod arno.
  • Casglwch gynwysyddion gyda chod, os caiff yr iaith ei dehongli, neu casglwch arteffactau a'u pacio mewn cynwysyddion.
  • Mae'r delweddau canlyniadol yn cael eu gwirio'n awtomatig gan ddefnyddio cynhwysydd-strwythur-prawf.
  • Tagio a llwytho delweddau i fyny i Gofrestrfa'r Docker.
  • Defnyddio cymhwysiad mewn clwstwr gan ddefnyddio kubectl, Helm neu kustomize.
  • Perfformio anfon porthladd ymlaen.
  • Ceisiadau dadfygio a ysgrifennwyd yn Java, Node.js, Python.

Disgrifir llif gwaith mewn amrywiadau amrywiol yn ddatganiadol yn y ffeil skaffold.yaml. Ar gyfer prosiect, gallwch hefyd ddiffinio sawl proffil lle gallwch chi newid y camau cydosod a defnyddio yn rhannol neu'n gyfan gwbl. Er enghraifft, ar gyfer datblygiad, nodwch y ddelwedd sylfaenol sy'n gyfleus i'r datblygwr, ac ar gyfer llwyfannu a chynhyrchu - un fach iawn (+ defnydd securityContext cynwysyddion neu ailddiffinio'r clwstwr y bydd y cais yn cael ei ddefnyddio ynddo).

Gellir adeiladu cynwysyddion docwyr yn lleol neu o bell: yn Google Cloud Build neu mewn clwstwr yn defnyddio Kaniko. Mae Bazel a Jib Maven/Gradle hefyd yn cael eu cefnogi. Ar gyfer tagio, mae Skaffold yn cefnogi llawer o strategaethau: trwy git ymrwymo hash, dyddiad / amser, sha256-swm ffynonellau, ac ati.

Ar wahân, mae'n werth nodi'r posibilrwydd o brofi cynwysyddion. Mae'r fframwaith prawf strwythur cynhwysydd a grybwyllwyd eisoes yn cynnig y dulliau gwirio canlynol:

  • Gweithredu gorchmynion yng nghyd-destun cynhwysydd gyda statws ymadael olrhain a gwirio allbwn testun y gorchymyn.
  • Gwirio presenoldeb ffeiliau yn y cynhwysydd a chyfateb y priodoleddau a nodir.
  • Rheoli cynnwys ffeil gan ddefnyddio mynegiadau rheolaidd.
  • Dilysu metadata delwedd (ENV, ENTRYPOINT, VOLUMES ac yn y blaen.).
  • Gwirio cydnawsedd trwydded.

Nid yw cysoni ffeiliau â'r cynhwysydd yn cael ei wneud yn y ffordd fwyaf optimaidd: mae Skaffold yn syml yn creu archif gyda'r ffynonellau, yn ei gopïo ac yn ei ddadbacio yn y cynhwysydd (rhaid gosod tar). Felly, os mai cydamseru cod yw'ch prif dasg, mae'n well edrych tuag at ddatrysiad arbenigol (ksync).

Offer ar gyfer datblygwyr cymwysiadau sy'n rhedeg ar Kubernetes
Prif gamau gweithrediad Skaffold

Yn gyffredinol, nid yw'r offeryn yn caniatáu ichi dynnu o amlygiadau Kubernetes ac nid oes ganddo unrhyw ryngweithedd, felly gall ymddangos yn anodd ei feistroli. Ond dyma ei fantais hefyd - mwy o ryddid i weithredu.

I'r ardd

  • Safle; GitHub.
  • Ystadegau cryno GH: 1063 o sêr, 1927 yn ymrwymo, 17 cyfrannwr.
  • Iaith: TypeScript (y bwriad yw rhannu'r prosiect yn sawl cydran, y bydd rhai ohonynt yn Go, a hefyd gwneud SDK ar gyfer creu ychwanegion yn TypeScript/JavaScript and Go).
  • Trwydded: Trwydded Apache 2.0.

Fel Skaffold, nod Garden yw awtomeiddio'r prosesau o gyflwyno cod cais i'r clwstwr K8s. I wneud hyn, yn gyntaf mae angen i chi ddisgrifio strwythur y prosiect mewn ffeil YAML, ac yna rhedeg y gorchymyn garden dev. Bydd hi'n gwneud yr holl hud:

  • Casglwch gynwysyddion gyda gwahanol rannau o'r prosiect.
  • Yn cynnal profion integreiddio a phrofi uned, os oes rhai wedi'u disgrifio.
  • Cyflwyno holl gydrannau'r prosiect i'r clwstwr.
  • Os bydd y cod ffynhonnell yn newid, bydd yn ailgychwyn y biblinell gyfan.

Prif ffocws defnyddio'r offeryn hwn yw rhannu clwstwr anghysbell gyda thîm datblygu. Yn yr achos hwn, os yw rhai o'r camau adeiladu a phrofi eisoes wedi'u gwneud, bydd hyn yn cyflymu'r broses gyfan yn sylweddol, gan y bydd Garden yn gallu defnyddio'r canlyniadau wedi'u storio.

Gall modiwl prosiect fod yn gynhwysydd, yn gynhwysydd Maven, yn siart Helm, yn faniffest ar gyfer kubectl apply neu hyd yn oed swyddogaeth OpenFaaS. Ar ben hynny, gellir tynnu unrhyw un o'r modiwlau o ystorfa Git anghysbell. Gall modiwl ddiffinio gwasanaethau, tasgau a phrofion neu beidio. Gall fod gan wasanaethau a thasgau ddibyniaethau, felly gallwch chi benderfynu ar ddilyniant lleoli gwasanaeth penodol a threfnu lansiad tasgau a phrofion.

Mae Garden yn darparu dangosfwrdd hardd i'r defnyddiwr (ar hyn o bryd yn cyflwr arbrofol), sy'n dangos graff y prosiect: cydrannau, dilyniant cydosod, cyflawni tasgau a phrofion, eu cysylltiadau a'u dibyniaethau. Yn union yn y porwr, gallwch weld logiau holl gydrannau'r prosiect a gwirio beth mae cydran benodol yn ei allbynnu trwy HTTP (os, wrth gwrs, mae adnodd mynediad yn cael ei ddatgan ar ei gyfer).

Offer ar gyfer datblygwyr cymwysiadau sy'n rhedeg ar Kubernetes
Panel ar gyfer yr Ardd

Mae gan yr offeryn hwn hefyd fodd ail-lwytho poeth, sy'n syml yn cydamseru newidiadau sgript gyda'r cynhwysydd yn y clwstwr, gan gyflymu'r broses dadfygio cais yn fawr. Mae gan yr ardd un dda dogfennaeth ac nid drwg set o enghreifftiau, sy'n eich galluogi i ddod i arfer ag ef yn gyflym a dechrau ei ddefnyddio. Gyda llaw, dim ond yn ddiweddar fe wnaethom gyhoeddi cyfieithu erthygl oddi wrth ei hawdwyr.

Casgliad

Wrth gwrs, nid yw'r rhestr hon o offer ar gyfer datblygu a dadfygio cymwysiadau yn Kubernetes yn gyfyngedig i. Mae yna lawer mwy o gyfleustodau defnyddiol ac ymarferol iawn sy'n deilwng, os nad erthygl ar wahân, yna o leiaf sôn. Dywedwch wrthym beth rydych chi'n ei ddefnyddio, pa broblemau y daethoch chi ar eu traws a sut wnaethoch chi eu datrys!

PS

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw