Fitaovana ho an'ny mpamorona fampiharana mandeha amin'ny Kubernetes

Fitaovana ho an'ny mpamorona fampiharana mandeha amin'ny Kubernetes

Ny fomba fiasa maoderina amin'ny fampandehanana dia mamaha olana ara-barotra marobe. Ny kaontenera sy ny orkestra dia manamora ny fampitomboana ny tetikasa amin'ny fahasarotana rehetra, manamora ny famoahana dikan-teny vaovao, mahatonga azy ireo ho azo itokisana kokoa, fa amin'ny fotoana iray ihany dia miteraka olana fanampiny ho an'ny mpamorona. Ny programmer, voalohany indrindra, dia miahy ny kaody: maritrano, kalitao, fampisehoana, kanto - fa tsy ny fomba fiasa ao amin'ny Kubernetes sy ny fomba hitsapana sy debug azy rehefa avy nanao fanovana kely. Noho izany, ara-dalàna ihany koa fa ny fitaovana ho an'ny Kubernetes dia mivoatra mavitrika, manampy amin'ny famahana ny olan'ny mpamorona "archaic" indrindra ary mamela azy ireo hifantoka amin'ny zava-dehibe indrindra.

Ity famerenana ity dia manome fampahalalana fohy momba ny sasany amin'ireo fitaovana manamora ny fiainana ho an'ny mpandrindra fandaharana izay ny kaody dia mandeha ao amin'ny pod'ax an'ny cluster Kubernetes.

Mpanampy tsotra

Kubectl-debug

  • Ny tena dikany: ampio ny fitoeranao amin'ny Pod ary jereo izay mitranga ao.
  • GitHub.
  • Statistique GH fohifohy: 715 kintana, 54 commits, 9 mpandray anjara.
  • Fiteny: Mandehana.
  • Fahazoan-dàlana: Apache License 2.0.

Ity plugin ho an'ny kubectl ity dia ahafahanao mamorona fitoeran-javatra fanampiny ao anatin'ny pod mahaliana, izay hizara ny anaran'ny dingana amin'ny kaontenera hafa. Ao anatin'izany dia azonao atao ny debug ny fiasan'ny pod: jereo ny tambajotra, mihaino ny fifamoivoizana amin'ny tambajotra, manaova dingan'ny fahalianana, sns.

Azonao atao ihany koa ny mifamadika amin'ny fitoeran'entana amin'ny alàlan'ny fandehanana chroot /proc/PID/root - mety ho tena mety izany rehefa mila maka akorandriaka faka ao anaty fitoeran-javatra misy azy ao amin'ny manifest securityContext.runAs.

Tsotra sy mandaitra ilay fitaovana, ka mety ho ilaina ho an'ny mpamorona tsirairay. Nanoratra bebe kokoa momba izany izahay tao lahatsoratra misaraka.

telepresence

  • Ny tena dikany: hamindra ny fampiharana amin'ny solosainao. Mamorona sy debug eo an-toerana.
  • tranonkala; GitHub.
  • Statistique GH fohifohy: 2131 kintana, 2712 commits, 33 mpandray anjara.
  • Fiteny: Python.
  • Fahazoan-dàlana: Apache License 2.0.

Ny hevitr'ity snap-in ity dia ny fandefasana container miaraka amin'ny fampiharana amin'ny solosaina mpampiasa eo an-toerana ary proxy ny fifamoivoizana rehetra avy amin'ny cluster mankany aminy sy miverina. Ity fomba fiasa ity dia ahafahanao mivoatra eo an-toerana amin'ny alàlan'ny fanitsiana tsotra ny rakitra ao amin'ny IDE tianao indrindra: ho hita avy hatrany ny valiny.

Ny tombony amin'ny fampandehanana eo an-toerana dia ny fanamorana ny fanitsiana sy ny vokatra eo noho eo, ny fahafahana manara-maso ny fampiharana amin'ny fomba mahazatra. Ny lafy ratsiny dia ny fitakiana ny hafainganam-pandehan'ny fifandraisana, izay tsikaritra indrindra rehefa tsy maintsy miasa miaraka amin'ny rindranasa misy RPS sy fifamoivoizana avo be. Ankoatr'izay, Telepresence dia manana olana amin'ny fampitomboana ny volume amin'ny Windows, izay mety ho famerana lehibe ho an'ny mpamorona zatra ity OS ity.

Efa nizara ny traikefanay tamin'ny fampiasana Telepresence izahay eto.

Ksync

  • Ny tena dikany: saika eo no ho eo ny fampifanarahana ny kaody miaraka amin'ny kaontenera ao amin'ny cluster.
  • GitHub.
  • Statistique GH fohifohy: 555 kintana, 362 commits, 11 mpandray anjara.
  • Fiteny: Mandehana.
  • Fahazoan-dàlana: Apache License 2.0.

Ny fitaovana dia ahafahanao mampifanaraka ny votoatin'ny lahatahiry eo an-toerana miaraka amin'ny lahatahiry misy kaontenera mandeha ao amin'ny cluster. Ny fitaovana toy izany dia tonga lafatra ho an'ny mpamorona amin'ny fiteny fandaharana amin'ny scripting, izay ny olana lehibe indrindra dia ny fandefasana kaody amin'ny fitoeran-javatra mihazakazaka. Ksync dia natao hanamaivanana io aretin'andoha io.

Rehefa natomboka indray mandeha tamin'ny baiko ksync init DaemonSet dia noforonina ao amin'ny cluster, izay ampiasaina hanaraha-maso ny toetry ny rafitry ny rakitra ao amin'ny kaontenera voafantina. Ao amin'ny solosainy eo an-toerana, ny developer no mitantana ny baiko ksync watch, izay manara-maso ny fanamafisana sy ny fandehanana fampitahana, izay mampifanaraka mivantana ny rakitra amin'ny cluster.

Ny hany sisa tavela dia ny mampianatra ksync izay tokony hampifanaraka amin'ny inona. Ohatra, ity baiko ity:

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

...dia hamorona mpanara-maso antsoina hoe myprojectizay hitady pod misy marika app=backend ary andramo ny hampifanaraka ny lahatahiry eo an-toerana /home/user/myproject/ miaraka amin'ny katalaogy /var/www/myproject/ amin'ny fitoeran-javatra antsoina php.

Olana sy fanamarihana momba ny ksync avy amin'ny traikefanay:

  • Tsy maintsy ampiasaina amin'ny node cluster Kubernetes overlay2 ho mpamily fitahirizana ho an'ny Docker. Ny fitaovana dia tsy hiasa amin'ny hafa.
  • Rehefa mampiasa Windows ho OS mpanjifa dia mety tsy mandeha tsara ny mpanara-maso ny rafi-drakitra. Voamarika ity bug ity rehefa miasa miaraka amin'ny lahatahiry lehibe - miaraka amin'ny rakitra sy lahatahiry marobe. Namorona izahay olana mifandraika amin'ny tetikasa syncthing, saingy tsy mbola misy fivoarana izany (hatramin'ny fiandohan'ny volana jolay).
  • Ampiasao ny rakitra .stignore mba hamaritana ny lalana na ny lamin'ny rakitra izay tsy mila ampifandraisina (ohatra, directories app/cache и .git).
  • Amin'ny alàlan'ny default, ny ksync dia hamerina indray ny container isaky ny miova ny rakitra. Ho an'ny Node.js dia mety izany, fa ho an'ny PHP dia tsy ilaina izany. Aleo vonoina ny opcache ary ampiasao ny saina --reload=false.
  • Azo ahitsy foana ny tefy $HOME/.ksync/ksync.yaml.

Voatavo korza

  • Ny tena dikany: ny fizotran'ny debug mivantana ao amin'ny cluster.
  • GitHub.
  • Statistique GH fohifohy: 1154 kintana, 279 commits, 23 mpandray anjara.
  • Fiteny: Mandehana.
  • Fahazoan-dàlana: Apache License 2.0.

Ity fitaovana ity dia natao ho an'ny fizotry ny debugging mivantana amin'ny pods. Ny fitaovana dia tsotra sy interactive mamela anao hisafidy ny tiana debugger (Zahao etsy ambany) ary namespace + pod, ao anatin'ny dingana izay tokony hidiranao. Tohanana amin'izao fotoana izao:

  • delve - ho an'ny fampiharana Go;
  • GDB - amin'ny alàlan'ny tanjona lavitra + seranan-tsambo;
  • Fandefasana seranan-tsambo JDWP ho an'ny debugging ny rindranasa Java.

Amin'ny lafiny IDE, ny fanohanana dia tsy misy afa-tsy amin'ny VScode (mampiasa fanitarana), na izany aza, ny drafitra ho an'ny taona ankehitriny (2019) dia ahitana Eclipse sy Intellij.

Mba hanesorana ny dingana, Squash dia mitantana fitoeran-javatra manokana eo amin'ny node cluster, noho izany dia tsy maintsy mahafantatra ny fahaiza-manaonao aloha ianao. fomba azo antoka mba hisorohana ny olana ara-piarovana.

Vahaolana feno

Andao hiroso amin'ny fitaovam-piadiana mahery vaika - tetikasa “lehibe” maro kokoa natao hamaliana avy hatrany ny filan'ny mpamorona.

NB: Amin'ity lisitra ity, mazava ho azy, misy toerana ho an'ny fitaovana Open Source werf (fantatra taloha hoe dapp). Na izany aza, efa nanoratra sy niresaka momba izany mihoatra ny indray mandeha izahay, ary noho izany dia nanapa-kevitra ny tsy hampiditra izany ao amin'ny famerenana. Ho an'ireo izay te hahafantatra bebe kokoa momba ny fahaiza-manaony, dia manoro hevitra izahay hamaky / hihaino ny tatitra "werf no fitaovanay ho an'ny CI/CD ao amin'ny Kubernetes".

DevSpace

  • Ny tena dikany: ho an'ireo izay te-hanomboka hiasa ao Kubernetes, nefa tsy te-hiditra lalina ao anaty ala.
  • GitHub.
  • Statistique GH fohifohy: kintana 630, 1912 commits, mpandray anjara 13.
  • Fiteny: Mandehana.
  • Fahazoan-dàlana: Apache License 2.0.

Vahaolana avy amin'ny orinasa mitovy anarana, izay manome cluster voatanisa miaraka amin'ny Kubernetes ho an'ny fampandrosoana ny ekipa. Ny fitaovana dia noforonina ho an'ny cluster ara-barotra, saingy miasa tsara amin'ny hafa.

Rehefa mihazakazaka ny baiko devspace init ao amin'ny katalaogin'ny tetikasa dia hatolotra anao (interactive):

  • mifidiana cluster Kubernetes miasa,
  • mampiasa efa misy Dockerfile (na mamorona vaovao) mba hamoronana fitoeran-javatra mifototra amin'izany,
  • safidio ny toerana fitehirizana sary fitoeran-javatra, sns.

Aorian'ireo dingana fanomanana rehetra ireo dia afaka manomboka fampandrosoana ianao amin'ny alàlan'ny fampandehanana ny baiko devspace dev. Izy io dia hanangana ny kaontenera, hampiditra azy any amin'ny tahiry, hamoaka ny fandefasana amin'ny cluster ary hanomboka ny fandefasana seranan-tsambo sy ny fampifanarahana ny kaontenera miaraka amin'ny lahatahiry eo an-toerana.

Raha azo atao, dia hasaina ianao hamindra ny terminal mankany amin'ny kaontenera. Tsy tokony handà ianao, satria raha ny marina dia manomboka amin'ny baikon'ny torimaso ny kaontenera, ary ho an'ny tena fitsapana dia mila atomboka amin'ny tanana ny fampiharana.

Farany, ny ekipa devspace deploy Mamoaka ny fampiharana sy ny fotodrafitrasa mifandraika amin'ny cluster, ary avy eo dia manomboka miasa amin'ny fomba fiadiana ny zava-drehetra.

Voatahiry ao anaty rakitra iray ny fandrindrana tetikasa rehetra devspace.yaml. Ho fanampin'ny firafitry ny tontolo iainana fampandrosoana, azonao atao ihany koa ny mahita famaritana ny fotodrafitrasa ao, mitovy amin'ny fisehoan'ny Kubernetes mahazatra, izay nohazavaina fotsiny.

Fitaovana ho an'ny mpamorona fampiharana mandeha amin'ny Kubernetes
Architecture sy dingana lehibe amin'ny fiaraha-miasa amin'ny DevSpace

Fanampin'izany, mora ny manampy singa efa voafaritra mialoha (ohatra, MySQL DBMS) na tabilao Helm amin'ny tetikasa. Vakio bebe kokoa ao amin'ny tahirin-kevitra - tsy sarotra izany.

Skaffold

  • tranonkala; GitHub.
  • Statistique GH fohifohy: kintana 7423, 4173 commits, mpandray anjara 136.
  • Fiteny: Mandehana.
  • Fahazoan-dàlana: Apache License 2.0.

Ity fitaovana avy amin'ny Google ity dia milaza fa mahafeno ny filan'ny mpamorona iray izay ny kaody dia handeha amin'ny cluster Kubernetes. Tsy mora toy ny devspace ny fanombohana ny fampiasana azy: tsy misy fifampiraharahana, fitadiavana fiteny ary famoronana mandeha ho azy Dockerfile tsy hanolotra izany aminao eto izy ireo.

Na izany aza, raha tsy mampatahotra anao izany, dia izao no avelan'i Skaffold hataonao:

  • Araho ny fanovana kaody loharano.
  • Ampifandraiso amin'ny fitoeran'ny pod raha tsy mila fivorian.
  • Angony kaontenera misy kaody, raha adika ny fiteny, na manangòna ​​artifacts ary ampidiro ao anaty fitoeran-javatra.
  • Ny sary vokarina dia voamarika ho azy amin'ny fampiasana container-structure-test.
  • Mametaka sy mampakatra sary ao amin'ny Docker Registry.
  • Mametraka fampiharana ao anaty cluster mampiasa kubectl, Helm na kustomize.
  • Manaova fandefasana port.
  • Fampiharana debug voasoratra amin'ny Java, Node.js, Python.

Ny fizotran'ny asa amin'ny fiovaovana isan-karazany dia voafaritra mazava ao amin'ny rakitra skaffold.yaml. Ho an'ny tetikasa iray, azonao atao ihany koa ny mamaritra ny mombamomba anao izay ahafahanao manova ampahany na tanteraka ny dingana fananganana sy fametrahana. Ohatra, ho an'ny fampandrosoana, mamaritra sary fototra mety ho an'ny mpamorona, ary ho an'ny fampisehoana sy ny famokarana - kely indrindra (+ fampiasana securityContext kaontenera na avereno faritana ny cluster izay hametrahana ny fampiharana).

Ny kaontenera Docker dia azo amboarina eo an-toerana na lavitra: in Google Cloud Build na amin'ny cluster mampiasa Kaniko. Bazel sy Jib Maven/Gradle koa dia tohanana. Ho an'ny fametahana, Skaffold dia manohana paikady maro: amin'ny alàlan'ny git commit hash, date/time, sha256-sum of source, sns.

Misaraka dia tsara ny manamarika ny mety hisian'ny fitiliana fitoeran-javatra. Ny rafitra fitiliana container-structure-test dia manolotra ireto fomba fanamarinana manaraka ireto:

  • Manatanteraka baiko ao anatin'ny tontolon'ny kaontenera miaraka amin'ny sata fivoahana fanaraha-maso ary manamarina ny famoahana lahatsoratra amin'ny baiko.
  • Fanamarinana ny fisian'ny rakitra ao anaty fitoeran-javatra ary mifanandrify amin'ireo toetra voalaza.
  • Fanaraha-maso ny votoatin'ny rakitra mampiasa fomba fiteny mahazatra.
  • Fanamarinana metadata sary (ENV, ENTRYPOINT, VOLUMES ary ny toy izany).
  • Fanamarinana ny fifanarahana fahazoan-dàlana.

Ny fampifanarahana ny rakitra miaraka amin'ny kaontenera dia tsy atao amin'ny fomba faran'izay tsara indrindra: Skaffold dia mamorona arisiva miaraka amin'ireo loharano fotsiny, mandika azy ary mamoha azy ao anaty container (tsy maintsy apetraka ny tara). Noho izany, raha ny kaody synchronization no tena asanao, dia tsara kokoa ny mijery ny vahaolana manokana (ksync).

Fitaovana ho an'ny mpamorona fampiharana mandeha amin'ny Kubernetes
Dingana lehibe amin'ny fiasan'ny Skaffold

Amin'ny ankapobeny, ny fitaovana dia tsy mamela anao haka sary avy amin'ny Kubernetes manifests ary tsy misy interactivity, noho izany dia toa sarotra ny hifehy. Fa izany ihany koa ny tombony - fahalalahana bebe kokoa amin'ny asa.

Garden

  • tranonkala; GitHub.
  • Statistique GH fohifohy: kintana 1063, 1927 commits, mpandray anjara 17.
  • Fiteny: TypeScript (voakasa ny hizara ny tetikasa ho singa maromaro, ny sasany amin'izy ireo dia ho ao amin'ny Go, ary koa hanao SDK hamoronana add-ons amin'ny TypeScript/JavaScript sy Go).
  • Fahazoan-dàlana: Apache License 2.0.

Sahala amin'i Skaffold, i Garden dia mikendry ny hanao automatique ny fizotran'ny fandefasana kaody fampiharana amin'ny cluster K8s. Mba hanaovana izany dia mila mamaritra ny firafitry ny tetikasa amin'ny rakitra YAML aloha ianao, ary avy eo dia araho ny baiko garden dev. Hanao ny majika rehetra izy:

  • Angony kaontenera misy ampahany isan-karazany amin'ny tetikasa.
  • Manao fitiliana fampidirana sy unit, raha misy nofaritana.
  • Mamoaka ny singa rehetra amin'ny tetikasa mankany amin'ny cluster.
  • Raha miova ny kaody loharano dia hamerina ny fantsona manontolo.

Ny tena ifantohan'ny fampiasana an'ity fitaovana ity dia ny fizarana cluster lavitra miaraka amin'ny ekipa fampandrosoana. Amin'ity tranga ity, raha efa vita ny dingana sasany amin'ny fanorenana sy ny fitsapana, dia hanafaingana ny dingana manontolo izany, satria ny Garden dia afaka mampiasa ny vokatra voatahiry.

Ny maodelin'ny tetikasa dia mety ho container, container Maven, tabilao Helm, fanehoana ho an'ny kubectl apply na asa OpenFaaS aza. Ankoatr'izay, ny iray amin'ireo maody dia azo alaina avy amin'ny tahiry Git lavitra. Ny mody iray dia mety na tsy mamaritra ny serivisy, ny asa ary ny fitsapana. Ny serivisy sy ny asa dia mety manana fiankinan-doha, mba hahafahanao mamaritra ny filaharan'ny fandefasana serivisy iray manokana ary mandamina ny fandefasana asa sy fitsapana.

Garden dia manome ny mpampiasa ny dashboard tsara tarehy (amin'izao fotoana izao in fanjakana andrana), izay mampiseho ny kirin'ny tetikasa: singa, filaharan'ny fivoriambe, fanatanterahana ny asa sy ny fitsapana, ny fifandraisany sy ny fiankinany. Ao amin'ny navigateur, azonao atao ny mijery ny diarin'ny singa rehetra amin'ny tetikasa ary manamarina izay avoakan'ny singa manokana amin'ny alàlan'ny HTTP (raha mazava ho azy fa misy loharanon-kevitra miditra ho azy).

Fitaovana ho an'ny mpamorona fampiharana mandeha amin'ny Kubernetes
Panel ho an'ny zaridaina

Ity fitaovana ity koa dia manana maodely hot-reload, izay mampifanaraka tsotra izao ny fiovan'ny script miaraka amin'ny kaontenera ao amin'ny cluster, manafaingana ny fizotran'ny debugging fampiharana. Garden dia manana iray tsara tahirin-kevitra ary tsy ratsy ohatra, mamela anao hizatra haingana sy hanomboka hampiasa azy io. Raha ny marina, vao haingana izahay no namoaka fandikana lahatsoratra avy amin’ny mpanoratra azy.

famaranana

Mazava ho azy fa tsy voafetra ho an'ny Kubernetes ity lisitry ny fitaovana ity amin'ny fampivoarana sy ny debugging ny rindranasa. Betsaka ny fitaovana tena ilaina sy azo ampiharina izay mendrika, raha tsy lahatsoratra misaraka, dia farafaharatsiny. Lazao anay hoe inona no ampiasainao, inona no olana sedrainao ary ahoana no namaha izany!

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment