Izixhobo zabaphuhlisi bezicelo ezisebenza kwi-Kubernetes

Izixhobo zabaphuhlisi bezicelo ezisebenza kwi-Kubernetes

Indlela yanamhlanje yokusebenza isombulula iingxaki ezininzi zeshishini. Izikhongozeli kunye nee-orchestrators zenza kube lula ukulinganisa iiprojekthi zaluphi na ubunzima, ukwenza lula ukukhutshwa kweenguqulelo ezintsha, zenze zithembeke ngakumbi, kodwa kwangaxeshanye zidala iingxaki ezongezelelweyo kubaphuhlisi. Umdwelisi wenkqubo, okokuqala, ukhathalele ikhowudi yakhe: uyilo, umgangatho, ukusebenza, ubuhle - kwaye hayi indlela eya kusebenza ngayo eKubernetes kunye nendlela yokuvavanya kunye nokuyilungisa emva kokwenza utshintsho oluncinci. Ke ngoko, kungokwemvelo ukuba izixhobo ze-Kubernetes ziphuhliswa ngenkuthalo, zinceda ukusombulula iingxaki zabona baphuhlisi "bakudala" kwaye zibavumela ukuba bagxile kwinto ephambili.

Olu hlaziyo lubonelela ngolwazi olufutshane malunga nezinye zezixhobo ezenza ubomi bube lula kumdwelisi wenkqubo ogama lakhe lisebenza kwi-pod'ax yeqela le-Kubernetes.

Abancedi abalula

Kubectl-debug

  • Undoqo: yongeza isikhongozeli sakho kwiPod kwaye ubone ukuba kwenzeka ntoni kuyo.
  • GitHub.
  • Izibalo ezimfutshane ze-GH: Iinkwenkwezi ze-715, i-54 iboleka, i-9 abaxhasi.
  • Ulwimi: Hamba.
  • Ilayisensi: Apache License 2.0.

Le plugin ye kubectl ikuvumela ukuba wenze isikhongozeli esongezelelweyo ngaphakathi kwepod yomdla, eya kwabela inkqubo yendawo yegama kunye nezinye izikhongozeli. Kuyo unokulungisa ukusebenza kwe-pod: khangela inethiwekhi, mamela i-traffic yenethiwekhi, yenza i-strace yenkqubo yomdla, njl.

Ungatshintshela kwisikhongozeli senkqubo ngokubaleka chroot /proc/PID/root - oku kunokuba lula kakhulu xa ufuna ukufumana iqokobhe lengcambu kwisikhongozeli esimiselwe sona kwimanifest securityContext.runAs.

Isixhobo silula kwaye siyasebenza, ngoko sinokuba luncedo kubo bonke abaphuhlisi. Sabhala ngakumbi ngayo kwi inqaku elahlukileyo.

Umnxeba

  • Undoqo: tshintshela usetyenziso kwikhompyuter yakho. Phuhlisa kwaye ulungise endaweni.
  • website; GitHub.
  • Izibalo ezimfutshane ze-GH: Iinkwenkwezi ze-2131, i-2712 yenza, i-33 abaxhasi.
  • Ulwimi: Python.
  • Ilayisensi: Apache License 2.0.

Umbono wale snap-in kukuphehlelela isikhongozeli esinesicelo kwikhompyuter yomsebenzisi wasekhaya kunye neproxy yonke i-traffic ukusuka kwiqela ukuya kuyo nasemva. Le ndlela ikuvumela ukuba uphuhlise ekuhlaleni ngokuhlela ngokulula iifayile kwi-IDE oyithandayo: iziphumo ziya kufumaneka kwangoko.

Iinzuzo zokuqhuba ekuhlaleni kukulungeleka kokuhlelwa kunye neziphumo ezikhawulezayo, ukukwazi ukulungisa ingxaki yesicelo ngendlela eqhelekileyo. Icala elisezantsi lelokuba lifuna isantya soqhagamshelo, esiphawuleka ngakumbi xa kufuneka usebenze ngesicelo esine-RPS ephezulu kunye netrafikhi. Ukongeza, iTelepresence ineengxaki zokunyuswa kwevolumu kwiWindows, enokuthi ibe ngumda oqinisekileyo kubaphuhlisi abaqhelene nale OS.

Sele sabelane ngamava ethu okusebenzisa iTelepresence apha.

Ksync

  • Undoqo: phantse ungqamaniso olukhawulezileyo lwekhowudi kunye nesikhongozeli esikwiqela.
  • GitHub.
  • Izibalo ezimfutshane ze-GH: Iinkwenkwezi ze-555, i-362 iboleka, i-11 abaxhasi.
  • Ulwimi: Hamba.
  • Ilayisensi: Apache License 2.0.

Into eluncedo ikuvumela ukuba ungqamanise imixholo yolawulo lobulali ngolawulo lwesikhongozeli esisebenza kwiqela. Isixhobo esinjalo sifanelekile kubaphuhlisi kwiilwimi zeprogram yeskripthi, eyona ngxaki yabo ihambisa ikhowudi kwisitya esisebenzayo. I-Ksync yenzelwe ukukhulula le ntloko.

Xa iqalwa kanye ngomyalelo ksync init iDaemonSet yenziwe kwiqela, elisetyenziswa ukujonga imeko yefayile yesixokelelwano esikhethiweyo. Kwikhompyuter yakhe yendawo, umphuhlisi uqhuba umyalelo ksync watch, ebeka iliso kuqwalaselo kwaye iqhube ulungelelwaniso, engqamanisa iifayile kunye neqela.

Into eseleyo kukuyalela ksync ukuba ungqamanise ngantoni. Umzekelo, lo myalelo:

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

...iya kudala umlindi ogama lingu myprojecteyakukhangela i-pod eneleyibhile app=backend kwaye uzame ukungqamanisa ulawulo lobulali /home/user/myproject/ ngekhathalogu /var/www/myproject/ kwi container kwabizwa php.

Iingxaki kunye namanqaku kwi-ksync kumava ethu:

  • Kufuneka isetyenziswe kwi-Kubernetes cluster nodes overlay2 njengomqhubi wokugcina weDocker. Isixhobo asiyi kusebenza kunye nabanye.
  • Xa usebenzisa iWindows njenge-OS yomxhasi, umlindi wenkqubo yefayile usenokungasebenzi kakuhle. Le bug yaqatshelwa xa kusetyenzwa ngabalawuli abakhulu - ngenani elikhulu leefayile ezibekwe kwindlwane kunye nabalawuli. Sakha umba ofanelekileyo kwiprojekthi yongqamaniso, kodwa akukho nkqubela kuyo okwangoku (ukususela ekuqaleni kukaJulayi).
  • Sebenzisa ifayile .stignore ukukhankanya iindlela okanye iipatheni zefayile ezingadingi ngqamaniso (umzekelo, abalawuli app/cache ΠΈ .git).
  • Ngokungagqibekanga, iksync izakuphinda iqale isikhongozeli nanini na iifayile zitshintsha. Kwi-Node.js oku kukulungele, kodwa kwi-PHP akuyomfuneko kwaphela. Kungcono ukucima i-opcache kwaye usebenzise iflegi --reload=false.
  • Ubumbeko lungasoloko lulungiswa ngaphakathi $HOME/.ksync/ksync.yaml.

I-squash

  • Undoqo: debug iinkqubo ngokuthe ngqo kwiqela.
  • GitHub.
  • Izibalo ezimfutshane ze-GH: Iinkwenkwezi ze-1154, i-279 iboleka, i-23 abaxhasi.
  • Ulwimi: Hamba.
  • Ilayisensi: Apache License 2.0.

Esi sixhobo senzelwe iinkqubo zokulungisa ngokuthe ngqo kwiipods. Isixhobo silula kwaye sikuvumela ukuba ukhethe i-debugger oyifunayo (bona ngezantsi) kunye nesithuba segama + pod, kwinkqubo ekufuneka ungenelele kuyo. Ixhaswa ngoku:

  • i-deve - ye-Go izicelo;
  • I-GDB - ngethagethi ekude + nokuthunyelwa kwezibuko;
  • Ugqithiso lwezibuko lwe-JDWP lokulungisa ii-aplikeshini zeJava.

Kwicala le-IDE, inkxaso ifumaneka kuphela kwi-VScode (usebenzisa ukwanda), nangona kunjalo, izicwangciso zonyaka wangoku (2019) ziquka i-Eclipse kunye ne-Intellij.

Ukulungisa iinkqubo, iSquash iqhuba isikhongozeli esinelungelo kwiindawo zeqela, ke kufuneka uqale uziqhelanise nezakhono. uhlobo olukhuselekile ukuphepha iingxaki zokhuseleko.

Izisombululo ezidibeneyo

Masiqhubele phambili kwi-artillery enzima-engakumbi iiprojekthi "ezinkulu" ezenzelwe ukuhlangabezana ngokukhawuleza neemfuno ezininzi zabaphuhlisi.

NB: Kolu luhlu, kunjalo, kukho indawo yethu yomthombo ovulekileyo oluncedo i-werf (eyayisaziwa njenge-dapp). Nangona kunjalo, sele sibhale kwaye sithethe ngayo ngaphezu kweyodwa, kwaye ngoko ke sagqiba ekubeni singayifaki kuhlaziyo. Kwabo banqwenela ukuqhelana nezakhono zabo, sincoma ukufunda / ukumamela ingxelo "i-werf sisixhobo sethu seCI/CD eKubernetesΒ».

DevSpace

  • Undoqo: kwabo bafuna ukuqalisa ukusebenza e-Kubernetes, kodwa abafuni ukungena nzulu kwihlathi layo.
  • GitHub.
  • Izibalo ezimfutshane ze-GH: Iinkwenkwezi ze-630, i-1912 iboleka, i-13 abaxhasi.
  • Ulwimi: Hamba.
  • Ilayisensi: Apache License 2.0.

Isisombululo esivela kwinkampani yegama elifanayo, elibonelela ngamaqela alawulwayo kunye ne-Kubernetes kuphuhliso lweqela. Usetyenziso lwenzelwe amaqela orhwebo, kodwa lusebenza kakuhle naziphi na ezinye.

Xa uqhuba umyalelo devspace init kwikhathalogu yeprojekthi uya kunikwa (ngokusebenzisana):

  • khetha iqela elisebenzayo leKubernetes,
  • sebenzisa ekhoyo Dockerfile (okanye uvelise esitsha) ukwenza isikhongozeli esekwe kuso,
  • khetha indawo yokugcina imifanekiso yesikhongozeli, njl.

Emva kwawo onke la manyathelo okulungiselela, ungaqala uphuhliso ngokuqhuba umyalelo devspace dev. Iya kwakha isikhongozeli, ilayishe kwindawo yokugcina, ikhuphe ukuthunyelwa kwiqela kwaye iqalise ukuhanjiswa kwezibuko kunye nolungelelwaniso lwesikhongozeli kunye nolawulo lwendawo.

Ngokukodwa, uya kucelwa ukuba uhambise i-terminal kwisikhongozeli. Akufanele unqabe, kuba ngokwenene isitya siqala ngomyalelo wokulala, kwaye ukuvavanya kwangempela isicelo kufuneka siqaliswe ngesandla.

Ekugqibeleni, iqela devspace deploy ikhupha isicelo kunye neziseko ezihambelanayo kwi-cluster, emva koko yonke into iqala ukusebenza kwimodi yokulwa.

Lonke ubumbeko lweprojekthi lugcinwe kwifayile devspace.yaml. Ukongeza kwimimiselo yophuhliso lwendalo, unokufumana inkcazo yesiseko kuyo, efana ne-standard Kubernetes ibonakalisa, ilula kakhulu.

Izixhobo zabaphuhlisi bezicelo ezisebenza kwi-Kubernetes
Uyilo kunye nezigaba eziphambili zokusebenza kunye neDevSpace

Ukongezelela, kulula ukongeza icandelo elichazwe ngaphambili (umzekelo, i-MySQL DBMS) okanye i-Helm chart kwiprojekthi. Funda ngakumbi kwi amaxwebhu - ayinzima.

I-Skaffold

  • website; GitHub.
  • Izibalo ezimfutshane ze-GH: Iinkwenkwezi ze-7423, i-4173 iboleka, i-136 abaxhasi.
  • Ulwimi: Hamba.
  • Ilayisensi: Apache License 2.0.

Esi sixhobo sivela kuGoogle ibanga ukugubungela zonke iimfuno zomphuhlisi onekhowudi ngandlela thile iya kuqhuba kwiqela leKubernetes. Ukuqala ukuyisebenzisa akulula njenge-devspace: akukho ukusebenzisana, ukufumanisa ulwimi kunye nokudala ngokuzenzekelayo Dockerfile abayi kukunika yona apha.

Nangona kunjalo, ukuba oku akukoyiki, nantsi into ekuvumela ukuba wenze iSkaffold:

  • Khangela utshintsho lwekhowudi yemvelaphi.
  • Yingqamanise nesikhongozeli sepod ukuba ayifuni kudityaniswa.
  • Qokelela izikhongozeli ezinekhowudi, ukuba ulwimi luyatolikwa, okanye uqokelele izinto zakudala uze uzipakishe kwizikhongozeli.
  • Imifanekiso eneziphumo ikhangelwa ngokuzenzekelayo kusetyenziswa container-structure-test.
  • Ukuthegiswa kunye nokulayisha imifanekiso kwiRegistry yeDocker.
  • Faka isicelo kwiqela usebenzisa kubectl, Helm okanye kustomize.
  • Yenza ugqithiso lwezibuko.
  • Debug izicelo ezibhalwe Java, Node.js, Python.

Ukuhamba komsebenzi kwiinguqu ezahlukeneyo kuchazwe ngokuvakalisa kwifayile skaffold.yaml. Kwiprojekthi, unokuchaza iiprofayili ezininzi apho unokutshintsha ngokuyinxenye okanye ngokupheleleyo indibano kunye nezigaba zokusasazwa. Umzekelo, kuphuhliso, khankanya umfanekiso osisiseko olungele umphuhlisi, kunye neqonga kunye nemveliso-encinci (+ sebenzisa securityContext izikhongozeli okanye uchaze ngokutsha iqela apho isicelo siza kuthunyelwa khona).

Izikhongozeli zeDocker zinokwakhiwa ekuhlaleni okanye ukude: ngaphakathi Google Cloud Build okanye kwiqela usebenzisa Kaniko. IBazel kunye noJib Maven/Gradle nazo ziyaxhaswa. Ukuthegiswa, i-Skaffold ixhasa izicwangciso ezininzi: nge-git commit hash, umhla / ixesha, i-sha256-sum of sources, njl.

Ngokwahlukileyo, kuyafaneleka ukuba uqaphele ukuba kunokwenzeka ukuvavanya izitya. Isikhokelo sovavanyo lwesakhelo esele sikhankanyiwe sinika ezi ndlela zilandelayo zokuqinisekisa:

  • Ukwenza imiyalelo kumxholo wesikhongozeli esinemo yokuphuma yomkhondo kunye nokujonga imveliso yokubhaliweyo yomyalelo.
  • Ukujonga ubukho beefayile kwisikhongozeli kunye nokutshatisa iimpawu ezichaziweyo.
  • Ukulawulwa kwemixholo yefayile usebenzisa intetho eqhelekileyo.
  • Uqinisekiso lwemetadata yomfanekiso (ENV, ENTRYPOINT, VOLUMES kwaye nangokunjalo.).
  • Ukujonga ukuhambelana kwelayisensi.

Ungqamaniso lweefayile kunye nesikhongozeli alwenziwa ngeyona ndlela ilungileyo: I-Skaffold yenza ngokulula indawo egciniweyo enemithombo, iyikopishe kwaye iyikhuphe kwisingxobo (itha kufuneka ifakwe). Ke ngoko, ukuba umsebenzi wakho ophambili lungqamaniso lwekhowudi, kungcono ukujonga kwisisombululo esikhethekileyo (ksync).

Izixhobo zabaphuhlisi bezicelo ezisebenza kwi-Kubernetes
Izigaba eziphambili zeSkaffold operation

Ngokubanzi, isixhobo asikuvumeli ukuba ukhuphe kwi-Kubernetes ibonakalisa kwaye ayinayo nayiphi na intsebenziswano, ngoko kunokubonakala kunzima ukuyiqonda. Kodwa oku kuyinzuzo yayo - inkululeko enkulu yokwenza.

igadi

  • website; GitHub.
  • Izibalo ezimfutshane ze-GH: Iinkwenkwezi ze-1063, i-1927 iboleka, i-17 abaxhasi.
  • Ulwimi: I-TypeScript (kucwangcisiwe ukwahlula iprojekthi ibe ngamacandelo amaninzi, amanye awo aya kuba kwi-Go, kwaye enze i-SDK yokwenza izongezo kwi-TypeScript/JavaScript kunye ne-Go).
  • Ilayisensi: Apache License 2.0.

NjengoSkaffold, iGarden ijolise ekuzenzeleni iinkqubo zokuzisa ikhowudi yesicelo kwiqela le-K8s. Ukwenza oku, kufuneka uqale uchaze ubume beprojekthi kwifayile ye-YAML, kwaye emva koko usebenzise umyalelo garden dev. Uya kwenza bonke umlingo:

  • Qokelela izikhongozeli ezineendawo ezahlukeneyo zeprojekthi.
  • Uqhuba ukudibanisa kunye novavanyo lweeyunithi, ukuba kukho naziphi na ezichazwe.
  • Ukhupha onke amacandelo eprojekthi kwiqela.
  • Ukuba ikhowudi yomthombo iyatshintsha, iya kuqalisa kwakhona umbhobho wonke.

Ingqwalasela ephambili yokusebenzisa esi sixhobo kukwabelana ngeqela elikude kunye neqela lophuhliso. Kule meko, ukuba ezinye zezakhiwo kunye namanyathelo okuvavanya sele zenziwe, oku kuya kukhawuleza ngokukhawuleza yonke inkqubo, ekubeni iGarden iya kukwazi ukusebenzisa iziphumo ezifihliweyo.

Imodyuli yeprojekthi inokuba sisingxobo, isitya seMaven, itshathi yeHelm, i-manifest ye kubectl apply okanye nomsebenzi we-OpenFaaS. Ngaphezu koko, nayiphi na imodyuli inokutsalwa kwindawo ekude yeGit. Imodyuli inokuchaza okanye ingachazi iinkonzo, imisebenzi, kunye novavanyo. Iinkonzo kunye nemisebenzi ingaba nokuxhomekeka, ngoko unokugqiba ukulandelelana kokuthunyelwa kwenkonzo ethile kwaye uququzelele ukuqaliswa kwemisebenzi kunye neemvavanyo.

Isitiya sibonelela umsebenzisi ngedeshibhodi entle (ingaphakathi ngoku imeko yovavanyo), ebonisa igrafu yeprojekthi: amacandelo, ukulandelelana kwendibano, ukuphunyezwa kwemisebenzi kunye neemvavanyo, ukudibanisa kunye nokuxhomekeka kwabo. Kanye kwisikhangeli, unokujonga iilogi zazo zonke iinxalenye zeprojekthi kwaye ujonge ukuba yintoni icandelo elithile eliphumayo ngeHTTP (ukuba, ngokuqinisekileyo, isibonelelo sokungena sibhengezwe kuyo).

Izixhobo zabaphuhlisi bezicelo ezisebenza kwi-Kubernetes
Iphaneli yeGadi

Esi sixhobo sikwanayo nemowudi yokulayisha kwakhona eshushu, ethi ingqamanise ngokulula utshintsho lweskripthi kunye nesikhongozeli esikwiqela, ikhawulezisa kakhulu inkqubo yolungiso lweempazamo. Igadi inendawo entle amaxwebhu kwaye hayi embi iseti yemizekelo, ikuvumela ukuba ukhawuleze ukuqhela kwaye uqale ukuyisebenzisa. Ngendlela, kutshanje siye sapapasha inqaku translation kubabhali bayo.

isiphelo

Ngokuqinisekileyo, olu luhlu lwezixhobo zokuphuhlisa kunye nokulungiswa kwezicelo kwi-Kubernetes azikhawulelwanga. Kukho izinto ezininzi eziluncedo kakhulu nezisebenzayo ezifanelekileyo, ukuba ayilonqaku elahlukileyo, ke ubuncinci ukukhankanywa. Sixelele ukuba usebenzisa ntoni, zeziphi iingxaki oye wadibana nazo kunye nendlela ozisombulule ngayo!

PS

Funda nakwibhlog yethu:

umthombo: www.habr.com

Yongeza izimvo