Amûrên ji bo pêşdebirên serîlêdanên ku li Kubernetes têne xebitandin

Amûrên ji bo pêşdebirên serîlêdanên ku li Kubernetes têne xebitandin

Nêzîkatiyek nûjen a operasyonan gelek pirsgirêkên karsaziyê yên bi lez çareser dike. Konteyner û orkestravan pîvandina projeyên her tevliheviyê hêsan dikin, serbestberdana guhertoyên nû hêsan dikin, wan pêbawertir dikin, lê di heman demê de ew ji pêşdebiran re pirsgirêkên din jî diafirînin. Bernamesaz, berî her tiştî, li koda xwe eleqedar e: mîmarî, kalîte, performans, zerafet - û ne ku ew ê çawa li Kubernetes bixebite û piştî ku guheztinên hindiktirîn jî were ceribandin û jêbirin. Ji ber vê yekê, di heman demê de pir xwezayî ye ku amûrên ji bo Kubernetes bi rengek çalak têne pêşve xistin, ji bo çareserkirina pirsgirêkên pêşdebirên herî "arkaîk" jî dibe alîkar û dihêle ku ew balê bikişînin ser tiştê sereke.

Ev vekolîn agahdariya kurt li ser hin amûrên ku jiyanê ji bo bernamenûsek ku koda wî di pod'axek komek Kubernetes de dimeşe hêsantir dike.

Alîkarên hêsan

Kubectl-debug

  • Rêza jêrîn konteynera xwe li Podek zêde bikin û bibînin ka tê de çi diqewime.
  • GitHub.
  • Kurte statîstîkên GH: 715 stêrk, 54 peywirdar, 9 beşdar.
  • Ziman: Çûn.
  • Lîsans: Apache License 2.0.

Ev pêvek ji bo kubectl dihêle hûn di hundurê podê berjewendiyê de konteynirek zêde biafirînin, ku dê cîhê navên pêvajoyê bi konteynerên din re parve bike. Di wê de hûn dikarin operasyona pod debug bikin: torê kontrol bikin, li seyrûsefera torê guhdarî bikin, şopek pêvajoya berjewendiyê bikin, hwd.

Her weha hûn dikarin bi xebitandinê veguherînin konteynera pêvajoyê chroot /proc/PID/root - ev dikare pir hêsan be dema ku hûn hewce ne ku di konteynirek ku ji bo wê di manîfestoyê de hatî danîn de kelekek root bistînin securityContext.runAs.

Amûr sade û bandorker e, ji ber vê yekê ew dikare ji her pêşdebir re kêrhatî be. Me li ser wê bêtir nivîsand gotara cuda.

telepresence

  • Rêza jêrîn sepanê bi komputera xwe veguhezînin. Pêşveçûn û debugkirina herêmî.
  • malpera; GitHub.
  • Kurte statîstîkên GH: 2131 stêrk, 2712 peywirdar, 33 beşdar.
  • Ziman: Python.
  • Lîsans: Apache License 2.0.

Fikra vê snap-in ev e ku konteynir bi serîlêdanê re li ser komputera bikarhênerê herêmî bide destpêkirin û hemî seyrûseferê ji komê berbi wê û paş ve bişopîne. Ev nêzîkatî dihêle hûn bi tenê bi guherandina pelan di IDE-ya xweya bijare de herêmî pêşve bibin: encam dê tavilê peyda bibin.

Feydeyên xebitandina herêmî rehetiya guherandin û encamên tavilê, şiyana debugkirina sepanê bi awayê asayî ye. Nebaş ev e ku ew ji leza girêdanê daxwaz e, ku bi taybetî dema ku hûn neçar in ku bi serîlêdanek bi RPS û seyrûsefera pir bilind re bixebitin, diyar dibe. Digel vê yekê, Telepresence bi çîpên dengdanê yên li ser Windows-ê re pirsgirêk hene, ku dikare ji bo pêşdebirên ku bi vê OS-ê re fêr bûne sînorek diyarker be.

Me berê ezmûna xwe ya karanîna Telepresence parve kir vir.

Ksync

  • Rêza jêrîn hema hema tavilê hevdengkirina kodê bi konteynerê di komê de.
  • GitHub.
  • Kurte statîstîkên GH: 555 stêrk, 362 peywirdar, 11 beşdar.
  • Ziman: Çûn.
  • Lîsans: Apache License 2.0.

Vebijêrk dihêle hûn naveroka pelrêçek herêmî bi pelrêça konteynirek ku di komê de dimeşe hevdeng bikin. Amûrek wusa ji bo pêşdebirên di zimanên bernamesaziyê yên nivîsandinê de bêkêmasî ye, ku pirsgirêka wan a sereke şandina kodê li konteynerek xebitandinê ye. Ksync ji bo rakirina vê serêşê hatiye çêkirin.

Dema ku bi fermanê carekê dest pê kirin ksync init DaemonSet di komê de tê afirandin, ku ji bo şopandina rewşa pergala pelê ya konteynerê hilbijartî tê bikar anîn. Li ser komputera xweya herêmî, pêşdebir fermanê dimeşîne ksync watch, ku mîhengan dişopîne û dimeşîne hevgirtin, ku rasterast pelan bi komê re hevdeng dike.

Tiştê ku dimîne ev e ku em rê bidin ksync ku çi bi çi re hevdeng bike. Ji bo nimûne, ev ferman:

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

... dê çavdêrek bi navê çêbike myprojectku dê ji bo podek bi etîketek bigerin app=backend û hewl bidin ku pelrêça herêmî hevdeng bikin /home/user/myproject/ bi katalog /var/www/myproject/ li konteynerê tê gotin php.

Pirsgirêk û notên li ser ksync ji ezmûna me:

  • Pêdivî ye ku li ser girêkên koma Kubernetes were bikar anîn overlay2 wekî ajokerek hilanînê ji bo Docker. Karûbar dê bi kesên din re nexebite.
  • Dema ku Windows-ê wekî OS-ya xerîdar bikar tîne, dibe ku çavdêriya pergala pelan rast nexebite. Ev xeletî dema ku bi pelrêçên mezin re xebitî - bi hejmareke mezin a pel û peldankên hêlînkirî re hate dîtin. Me afirandin pirsgirêka têkildar di projeya hevdengkirinê de, lê hêj pêşkeftinek li ser wê tune ye (ji destpêka Tîrmehê ve).
  • Pelê bikar bînin .stignore ji bo diyarkirina rê û qalibên pelan ên ku ne hewceyî hevdemkirinê ne (mînak, pelrêçan app/cache и .git).
  • Ji hêla xwerû ve, ksync gava ku pel biguhere dê konteynerê ji nû ve bide destpêkirin. Ji bo Node.js ev hêsan e, lê ji bo PHP-ê ew bi tevahî nepêwist e. Çêtir e ku hûn opcache-ê vekin û ala bikar bînin --reload=false.
  • Veavakirin her gav dikare tê de were rast kirin $HOME/.ksync/ksync.yaml.

Squash

  • Rêza jêrîn pêvajoyên debug rasterast di komê de.
  • GitHub.
  • Kurte statîstîkên GH: 1154 stêrk, 279 peywirdar, 23 beşdar.
  • Ziman: Çûn.
  • Lîsans: Apache License 2.0.

Ev amûr ji bo rastkirina pêvajoyên rasterast di pods de hatî çêkirin. Karûbar hêsan e û bi înteraktîf destûrê dide we ku hûn debuggerê xwestin hilbijêrin (li jêr binêre) û navan + pod, di pêvajoya ku hûn hewce ne ku destwerdanê bikin. Niha piştgirî:

  • delve - ji bo serîlêdanên Go;
  • GDB - bi riya dûr a armanc + şandina portê;
  • Pêşkêşkirina porta JDWP ji bo xeletkirina sepanên Java.

Li aliyê IDE, piştgirî tenê di VScode de heye (bikaranîna firehbûnî), Lêbelê, plansaziyên sala niha (2019) Eclipse û Intellij hene.

Ji bo xeletkirina pêvajoyên, Squash konteynirek îmtiyaz li ser girêkên komê dimeşîne, ji ber vê yekê divê hûn pêşî xwe bi kapasîteyên xwe nas bikin. moda ewle ji bo pirsgirêkên ewlehiyê dûr bixin.

Çareseriyên temam

Ka em biçin ser topên giran - projeyên "mezin" ên bêtir hatine çêkirin ku tavilê gelek hewcedariyên pêşdebiran bicîh bînin.

NB: Di vê navnîşê de, bê guman, cîhek ji bo karanîna meya Çavkaniya Vekirî heye werf (berê wekî dapp tê zanîn). Lêbelê, me berê ji carekê zêdetir li ser wê nivîsî û peyivî, û ji ber vê yekê biryar da ku em wê nexin nav lêkolînê. Ji bo kesên ku dixwazin bi kapasîteyên wê bêtir nas bibin, em pêşniyar dikin ku rapor bixwînin/guhdarî bikin "werf amûrê me ye ji bo CI/CD li Kubernetes".

DevSpace

  • Rêza jêrîn ji bo kesên ku dixwazin li Kubernetes dest bi xebatê bikin, lê naxwazin di daristana wê de kûr bigerin.
  • GitHub.
  • Kurte statîstîkên GH: 630 stêrk, 1912 peywirdar, 13 beşdar.
  • Ziman: Çûn.
  • Lîsans: Apache License 2.0.

Çareseriyek ji pargîdaniya bi heman navî, ku ji bo pêşkeftina tîmê bi Kubernetes re komên birêvebir peyda dike. Karûbar ji bo komên bazirganî hate afirandin, lê bi yên din re pir baş dixebite.

Dema ku emrê dimeşîne devspace init di kataloga projeyê de hûn ê werin pêşkêş kirin (bi înteraktîf):

  • komek Kubernetes a xebatê hilbijêrin,
  • heyî bikar bînin Dockerfile (an yekî nû çêbike) da ku li ser bingeha wê konteynir biafirîne,
  • depoyek ji bo hilanîna wêneyên konteynerê, hwd hilbijêrin.

Piştî van hemî gavên amadekariyê, hûn dikarin bi xebitandina fermanê dest bi pêşveçûnê bikin devspace dev. Ew ê konteynerê ava bike, wê li depoyê dakêşîne, veguheztinê li komê bike û dest bi şandina portê û hevdengkirina konteynerê bi pelrêça herêmî re bike.

Vebijarkî, dê ji we were xwestin ku termînalê biguhezînin konteynerê. Pêdivî ye ku hûn red nekin, ji ber ku di rastiyê de konteynir bi fermana xewê dest pê dike, û ji bo ceribandina rastîn pêdivî ye ku serîlêdan bi destan were destpêkirin.

Di dawiyê de, tîm devspace deploy serîlêdanê û binesaziya têkildar li komê radixe, piştî ku her tişt di moda şer de dest pê dike.

Hemî veavakirina projeyê di pelê de têne hilanîn devspace.yaml. Digel mîhengên hawîrdora pêşkeftinê, hûn dikarin danasîna binesaziya tê de jî bibînin, mîna xuyangên standard Kubernetes, tenê pir hêsankirî.

Amûrên ji bo pêşdebirên serîlêdanên ku li Kubernetes têne xebitandin
Mîmarî û qonaxên sereke yên xebata bi DevSpace

Digel vê yekê, hêsan e ku meriv hêmanek pêşwext (mînakek MySQL DBMS) an nexşeyek Helm li projeyê zêde bike. Zêdetir bixwînin belgekirin - ne tevlihev e.

Skaffold

  • malpera; GitHub.
  • Kurte statîstîkên GH: 7423 stêrk, 4173 peywirdar, 136 beşdar.
  • Ziman: Çûn.
  • Lîsans: Apache License 2.0.

Ev karûbar ji Google îdîa dike ku hemî hewcedariyên pêşdebirek ku koda wî bi rengekî li ser komek Kubernetes dimeşîne vedigire. Destpêka karanîna wê wekî devspace ne hêsan e: bê înteraktîf, tespîtkirina ziman û xweser-afirandî Dockerfile ew ê li vir pêşkêşî we nekin.

Lêbelê, heke ev we natirsîne, li vir tiştê ku Skaffold dihêle hûn bikin ev e:

  • Guhertinên koda çavkaniyê bişopînin.
  • Ger ku ew ne hewceyî kombûnê ye, wê bi konteynera pod re hevdeng bikin.
  • Ger ziman were şîrovekirin konteynerên bi kodê berhev bikin, an jî huneran berhev bikin û wan di konteyneran de pak bikin.
  • Wêneyên encam bi karanîna bixweber têne kontrol kirin konteynir-struktur-test.
  • Nîşankirin û barkirina wêneyan li Docker Registry.
  • Bi karanîna kubectl, Helm an kustomize serîlêdanek di komekê de bicîh bikin.
  • Pêşkêşkirina portê bikin.
  • Serlêdanên debugkirinê yên ku di Java, Node.js, Python de hatine nivîsandin.

Xebata di guhertoyên cihêreng de bi eşkereyî di pelê de tê vegotin skaffold.yaml. Ji bo projeyekê, hûn dikarin çend profîlan jî diyar bikin ku tê de hûn dikarin qismî an bi tevahî qonaxên kombûn û bicîhkirinê biguhezînin. Mînakî, ji bo pêşkeftinê, wêneyek bingehîn ji bo pêşdebiran rehet diyar bikin, û ji bo qonaxkirin û hilberînê - yek hindiktirîn (+ bikar anîn) securityContext konteyneran an koma ku dê serîlêdan tê de were bicîh kirin ji nû ve pênase bikin).

Konteynirên Docker dikarin herêmî an ji dûr ve bêne çêkirin: di Google Cloud Build an jî di komekê de bi kar tînin Kaniko. Bazel û Jib Maven/Gradle jî têne piştgirî kirin. Ji bo nîşankirinê, Skaffold gelek stratejiyan piştgirî dike: ji hêla git commit hash, dîrok / dem, sha256-hevokek çavkaniyan, hwd.

Ji hev veqetandî, hêja ye ku îhtîmala ceribandina konteyneran were destnîşankirin. Çarçoveya konteynir-avahî-testa ku berê hatî behs kirin rêbazên verastkirinê yên jêrîn pêşkêşî dike:

  • Di çarçoweya konteynerek de bi şopandina statûyên derketinê û kontrolkirina derana nivîsê ya fermanê de fermanan pêk tîne.
  • Kontrolkirina hebûna pelan di konteynerê de û berhevkirina taybetmendiyên diyarkirî.
  • Kontrolkirina naveroka pelê bi karanîna vegotinên rêkûpêk.
  • Verastkirina metadata wêneyê (ENV, ENTRYPOINT, VOLUMES wate ya vê çîye.).
  • Kontrolkirina lihevhatina lîsansê.

Hevdengkirina pelan bi konteynerê re bi awayê herî çêtirîn pêk nayê: Skaffold tenê bi çavkaniyan re arşîvek diafirîne, wê kopî dike û di konteynerê de vedike (divê tar were saz kirin). Ji ber vê yekê, heke karê weya sereke hevdemkirina kodê ye, çêtir e ku hûn li çareseriyek pispor (ksync) bigerin.

Amûrên ji bo pêşdebirên serîlêdanên ku li Kubernetes têne xebitandin
Qonaxên sereke yên operasyona Skaffold

Bi gelemperî, amûr nahêle ku hûn ji diyardeyên Kubernetes veqetînin û ti înteraktîfiyek wê tune ye, ji ber vê yekê dibe ku serwerkirina wê dijwar xuya bike. Lê ev di heman demê de avantaja wê ye - azadiya çalakiyê.

Baxçe

  • malpera; GitHub.
  • Kurte statîstîkên GH: 1063 stêrk, 1927 peywirdar, 17 beşdar.
  • Ziman: TypeScript (Tê plan kirin ku proje li çend beşan dabeş bibe, hin ji wan dê di Go de bin, û di heman demê de ji bo afirandina pêvekan di TypeScript/JavaScript û Go de SDKek çêbikin).
  • Lîsans: Apache License 2.0.

Mîna Skaffold, Garden armanc dike ku pêvajoyên radestkirina koda serîlêdanê ji koma K8s re otomatîk bike. Ji bo kirina vê yekê, hûn pêşî hewce ne ku strukturek projeyê di pelek YAML de rave bikin, û dûv re fermanê bimeşînin garden dev. Ew ê hemî sêrbaziyê bike:

  • Bi beşên cihêreng ên projeyê konteynir berhev bikin.
  • Ger ku yek hatibe diyar kirin, ceribandinên entegrasyonê û yekîneyê dike.
  • Hemî hêmanên projeyê li komê radixe.
  • Ger koda çavkaniyê biguhere, ew ê tevahiya boriyê ji nû ve bide destpêkirin.

Mebesta sereke ya karanîna vê amûrê parvekirina komek dûr bi tîmek pêşkeftinê re ye. Di vê rewşê de, heke hin gavên avahî û ceribandinê jixwe hatine kirin, ev ê bi girîngî pêvajoyê bileztir bike, ji ber ku Garden dê bikaribe encamên cache bikar bîne.

Modulek projeyek dikare bibe konteynerek, konteynirek Maven, nexşeyek Helm, diyariyek ji bo kubectl apply an jî fonksiyonek OpenFaaS. Wekî din, yek ji modulan dikare ji depoyek Git-ê ya dûr ve were kişandin. Dibe ku modulek karûbar, peywir û ceribandinan diyar bike an jî neke. Karûbar û peywir dikarin girêdayî bin, ji ber vê yekê hûn dikarin rêza bicîhkirina karûbarek taybetî diyar bikin û destpêkirina kar û ceribandinan organîze bikin.

Garden dashboardek xweşik ji bikarhêner re peyda dike (niha tê de ye dewleta ceribandinê), ku grafiya projeyê destnîşan dike: pêkhate, rêza kombûnê, pêkanîna kar û ceribandinan, girêdan û girêdanên wan. Rast di gerokê de, hûn dikarin têketinên hemî hêmanên projeyê bibînin û kontrol bikin ka pêkhateyek taybetî bi riya HTTP-ê çi derdixe (heke, bê guman, çavkaniyek ketinê ji bo wê were ragihandin).

Amûrên ji bo pêşdebirên serîlêdanên ku li Kubernetes têne xebitandin
Panel ji bo Baxçeyê

Vê amûrê di heman demê de modek nû-barkirina germ heye, ku bi tenê guheztinên nivîsarê bi konteynera di nav komê re hevdeng dike, pir lezkirina pêvajoya rakirina sepanê zêde dike. Baxçeyek baş heye belgekirin û ne xerab komek mînakan, destûrê dide te ku hûn zû zû jê re bikar bînin û dest bi karanîna wê bikin. Bi awayê, di van demên dawî de me çap kir wergera gotarê ji nivîskarên wê.

encamê

Bê guman, ev navnîşa amûrên ji bo pêşdebirin û rakirina sepanên li Kubernetes ne bi sînorkirî ye. Gelek karûbarên pir bikêr û bikêr hene ku hêja ne, heke ne gotarek veqetandî, bi kêmanî behs kirin. Ji me re bêje ka hûn çi bikar tînin, hûn bi kîjan pirsgirêkan re rû bi rû mane û we ew çawa çareser kirine!

PS

Li ser bloga me jî bixwînin:

Source: www.habr.com

Add a comment