Ngwa maka ndị nrụpụta ngwa na-agba na Kubernetes

Ngwa maka ndị nrụpụta ngwa na-agba na Kubernetes

Ụzọ ọgbara ọhụrụ iji rụọ ọrụ na-edozi ọtụtụ nsogbu azụmahịa dị egwu. Ngwongwo na ndị na-egwu egwu na-eme ka ọ dị mfe ịmepụta ọrụ nke mgbagwoju anya ọ bụla, mee ka ntọhapụ nke nsụgharị ọhụrụ dị mfe, na-eme ka ha bụrụ ndị a pụrụ ịdabere na ya, ma n'otu oge ahụ ha na-emepụta nsogbu ndị ọzọ maka ndị mmepe. Onye mmemme, nke mbụ, na-eche banyere koodu ya: ụkpụrụ ụlọ, àgwà, arụmọrụ, ịdị mma - ọ bụghị otú ọ ga-esi arụ ọrụ na Kubernetes na otu esi anwale na debug ya mgbe ọ na-eme ọbụna obere mgbanwe. Ya mere, ọ bụkwa ihe okike na a na-arụsi ọrụ ike ngwá ọrụ maka Kubernetes, na-enyere aka dozie nsogbu nke ọbụna ndị mmepe "archaic" kachasị ma na-enye ha ohere ilekwasị anya na isi ihe.

Nyochaa a na-enye ozi dị nkenke gbasara ụfọdụ ngwaọrụ na-eme ka ndụ dịrị mfe maka onye mmemme nke koodu ya na-agba na pod'ax nke ụyọkọ Kubernetes.

Ndị enyemaka dị mfe

Kubectl-debug

  • Usoro nke ala: tinye akpa gị na pọd wee hụ ihe na-eme na ya.
  • GitHub.
  • Nchịkọta GH dị nkenke: kpakpando 715, 54 eme, ndị ntinye aka 9.
  • Asụsụ: Gaa.
  • Ikikere: Akwụkwọ ikike Apache 2.0.

Ngwa mgbakwunye a maka kubectl na-enye gị ohere ịmepụta akpa ọzọ n'ime pọd mmasị, nke ga-ekekọrịta usoro aha na arịa ndị ọzọ. N'ime ya ị nwere ike mebie ọrụ pod: lelee netwọkụ, gee ntị na okporo ụzọ netwọkụ, mee usoro nke mmasị, wdg.

Ị nwekwara ike ịgbanwe na akpa usoro site na-agba ọsọ chroot /proc/PID/root - nke a nwere ike ịdị mma nke ukwuu mgbe ịchọrọ ịnweta shei mgbọrọgwụ n'ime akpa nke edobere ya na ngosipụta securityContext.runAs.

Ngwá ọrụ dị mfe ma dị irè, ya mere ọ nwere ike ịba uru nye onye nrụpụta ọ bụla. Anyị dere ihe banyere ya n'ime iche iche isiokwu.

Ekwentị

  • Usoro nke ala: nyefee ngwa na kọmputa gị. Zụlite ma mebie na mpaghara.
  • website; GitHub.
  • Nchịkọta GH dị nkenke: kpakpando 2131, 2712 eme, ndị ntinye aka 33.
  • Asụsụ: Python.
  • Ikikere: Akwụkwọ ikike Apache 2.0.

Echiche nke ọnyà a bụ ibido akpa nwere ngwa na kọmputa onye ọrụ mpaghara wee megharịa okporo ụzọ niile site na ụyọkọ gaa na ya na azụ. Usoro a na-enye gị ohere imepe obodo site na ịdezi faịlụ na IDE ọkacha mmasị gị: nsonaazụ ya ga-adị ozugbo.

Плюсы локального запуска — удобство правок и моментальный результат, возможность отлаживать приложение привычным способом. Из минусов — требовательность к скорости соединения, что особенно заметно, когда приходится работать с приложением с достаточно высоким RPS и трафиком. Кроме того, у Telepresence есть проблемы с volume mounts в Windows, что может стать решающим ограничителем для разработчиков, привыкшим к этой ОС.

Anyị ekekọrịtala ahụmịhe anyị nke iji Telepresence ebe a.

Ksync

  • Usoro nke ala: ihe fọrọ nke nta ka ọ bụrụ ozugbo ịmekọrịta koodu yana akpa dị na ụyọkọ ahụ.
  • GitHub.
  • Nchịkọta GH dị nkenke: kpakpando 555, 362 eme, ndị ntinye aka 11.
  • Asụsụ: Gaa.
  • Ikikere: Akwụkwọ ikike Apache 2.0.

Ngwa ahụ na-enye gị ohere ịmekọrịta ọdịnaya nke akwụkwọ ndekọ aha mpaghara yana ndekọ nke akpa na-agba na ụyọkọ ahụ. Ngwá ọrụ dị otú ahụ zuru oke maka ndị mmepe na-edepụta asụsụ mmemme, nke isi nsogbu ya bụ ịnye koodu na akpa na-agba ọsọ. Emebere Ksync iji belata isi ọwụwa a.

Mgbe ibido ya otu ugboro site na iwu ksync init A na-emepụta DaemonSet na ụyọkọ ahụ, nke a na-eji nyochaa ọnọdụ nke usoro faịlụ nke akpa ahọpụtara. Na kọmpụta mpaghara ya, onye nrụpụta na-eme iwu ahụ ksync watch, nke na-enyocha nhazi ma na-agba ọsọ mmekọrịta, nke na-emekọrịta faịlụ na ụyọkọ.

Naanị ihe fọdụrụ bụ ịkụziri ksync ihe a ga-emekọrịta na ihe. Dịka ọmụmaatụ, iwu a:

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

... ga-emepụta onye nche aha ya myprojectnke ga-achọ pọd nwere akara app=backend ma nwaa imekọrịta ndekọ ndekọ aha mpaghara /home/user/myproject/ ya na katalọgụ /var/www/myproject/ na akpa a na-akpọ php.

Nsogbu na ndetu na ksync sitere na ahụmịhe anyị:

  • Ekwesịrị iji ya na ọnụ ụyọkọ Kubernetes overlay2 dị ka onye ọkwọ ụgbọ ala nchekwa maka Docker. Ngwa ahụ agaghị arụ ọrụ na ndị ọzọ.
  • Mgbe ị na-eji Windows в качестве ОС клиента возможна некорректная работа watcher’а файловой системы. Данный баг замечен при работе с крупными каталогами — с большим количеством вложенных файлов и директорий. Мы создали mkpa okwu na ọrụ mmekọrịta, ma ọ dịghị ọganihu na ya (ebe ọ bụ na mmalite nke July).
  • Jiri faịlụ .stignore ịkọwapụta ụzọ ma ọ bụ usoro faịlụ na-achọghị ka emekọrịta ya (dịka ọmụmaatụ, akwụkwọ ndekọ aha app/cache и .git).
  • Site na ndabara, ksync ga-amalitegharị akpa ahụ mgbe ọ bụla faịlụ gbanwere. Maka Node.js nke a dabara adaba, mana maka PHP ọ dịghị mkpa kpamkpam. Ọ ka mma ịgbanyụ opcache wee jiri ọkọlọtọ --reload=false.
  • Enwere ike idozi nhazi ahụ mgbe niile na $HOME/.ksync/ksync.yaml.

Skwọsh

  • Usoro nke ala: usoro nbipu ozugbo na ụyọkọ.
  • GitHub.
  • Nchịkọta GH dị nkenke: kpakpando 1154, 279 na-eme, ndị ntinye aka 23.
  • Asụsụ: Gaa.
  • Ikikere: Akwụkwọ ikike Apache 2.0.

Emebere ngwá ọrụ a maka nhazi nhazi ozugbo na pods. Ihe bara uru dị mfe ma na-emekọrịta ihe na-enye gị ohere ịhọrọ onye nbibi chọrọ (hụ okpuru) na aha oghere + pod, na usoro nke ị kwesịrị itinye aka. Akwado ugbu a:

  • delve - maka ngwa ngwa Go;
  • GDB - site n'ebe dịpụrụ adịpụ + ebuga ọdụ ụgbọ mmiri;
  • Mbugharị ọdụ ụgbọ mmiri JDWP maka imezi ngwa Java.

N'akụkụ IDE, nkwado dị na VScode (iji nditat), Otú ọ dị, atụmatụ maka afọ dị ugbu a (2019) gụnyere Eclipse na Intellij.

Iji mebie usoro, Squash na-ebu akpa nwere ohere na ọnụ ụyọkọ, yabụ ị ga-ebu ụzọ mara onwe gị nke ọma na ikike ndị ahụ. ọnọdụ nchekwa iji zere nsogbu nchekwa.

Ngwọta agbakwunyere

Ka anyị gaa n'ihu n'ọgbọ ogbunigwe dị arọ - ọrụ "nnukwu" ndị ọzọ emebere iji gboo ọtụtụ mkpa nke ndị mmepe ozugbo.

NB: Na ndepụta a, n'ezie, e nwere ebe anyị Open Source ịba uru werf (nke a na-akpọbu dapp). Otú ọ dị, anyị edeworị ma kwuo banyere ya ihe karịrị otu ugboro, ya mere kpebie ịghara itinye ya na nyocha ahụ. Maka ndị chọrọ ịmatakwu ikike ya, anyị na-akwado ịgụ / gee akụkọ ahụ "werf bụ ngwá ọrụ anyị maka CI/CD na Kubernetes".

DevSpace

  • Usoro nke ala: maka ndị chọrọ ịmalite ịrụ ọrụ na Kubernetes, mana ha achọghị ịbanye n'ime ọhịa ya.
  • GitHub.
  • Nchịkọta GH dị mkpirikpi: kpakpando 630, 1912 eme, ndị ntinye aka 13.
  • Asụsụ: Gaa.
  • Ikikere: Akwụkwọ ikike Apache 2.0.

Ihe ngwọta sitere na ụlọ ọrụ nke otu aha ahụ, nke na-enye ụyọkọ jisiri ike na Kubernetes maka mmepe otu. Emepụtara ngwa ahụ maka ụyọkọ azụmahịa, mana ọ na-arụ ọrụ nke ọma na ndị ọzọ.

Mgbe ị na-agba ọsọ iwu devspace init na katalọgụ oru ngo a ga-enye gị (na-emekọrịta ihe):

  • họrọ ụyọkọ Kubernetes na-arụ ọrụ,
  • jiri dị adị Dockerfile (ma ọ bụ mepụta nke ọhụrụ) iji mepụta akpa dabere na ya,
  • họrọ ebe nchekwa maka ịchekwa onyonyo akpa, wdg.

Mgbe usoro nkwado ndị a niile gasịrị, ị nwere ike ịmalite mmepe site na ịme iwu ahụ devspace dev. Ọ ga-ewu akpa ahụ, bulite ya na ebe a na-edebe ihe, bufee ntinye ya na ụyọkọ wee malite mbugharị ọdụ ụgbọ mmiri na mmekọrịta nke akpa na ndekọ ndekọ mpaghara.

Nhọrọ, a ga-akpali gị ịkwaga ọnụ na akpa ahụ. I kwesịghị ịjụ, n'ihi na n'eziokwu, akpa ahụ na-amalite site na iwu ụra, na maka nyocha n'ezie, ọ dị mkpa ka ejiri aka malite ngwa ahụ.

N'ikpeazụ, otu devspace deploy na-atụgharị ngwa na akụrụngwa metụtara ya na ụyọkọ, mgbe nke ahụ gasịrị, ihe niile na-amalite ịrụ ọrụ na ọnọdụ ọgụ.

A na-echekwa nhazi ọrụ niile na faịlụ devspace.yaml. Na mgbakwunye na ntọala gburugburu ebe mmepe, ị nwekwara ike ịhụ nkọwa nke akụrụngwa dị na ya, dị ka ọkọlọtọ Kubernetes gosipụtara, naanị dị mfe.

Ngwa maka ndị nrụpụta ngwa na-agba na Kubernetes
Nhazi na isi usoro nke ịrụ ọrụ na DevSpace

Na mgbakwunye, ọ dị mfe ịgbakwunye akụrụngwa eburu ụzọ kọwaa (dịka ọmụmaatụ, MySQL DBMS) ma ọ bụ eserese Helm na ọrụ ahụ. Gụkwuo n'ime akwụkwọ - ọ bụghị mgbagwoju anya.

Skaffold

  • website; GitHub.
  • Nchịkọta GH dị nkenke: kpakpando 7423, 4173 na-eme, ndị ntinye aka 136.
  • Asụsụ: Gaa.
  • Ikikere: Akwụkwọ ikike Apache 2.0.

Ngwa a sitere na Google na-ekwu na ọ na-ekpuchi mkpa onye nrụpụta nke koodu ya ga-agba ọsọ na ụyọkọ Kubernetes. Ịmalite iji ya adịghị mfe dị ka devspace: enweghị mmekọrịta, nchọpụta asụsụ na ịmepụta onwe Dockerfile ha agaghị enye gị ya ebe a.

Agbanyeghị, ọ bụrụ na nke a anaghị atụ gị egwu, nke a bụ ihe Skaffold na-enye gị ohere ime:

  • Sochie mgbanwe koodu isi mmalite.
  • Mekọrịta ya na akpa pọd ma ọ bụrụ na ọ chọghị mgbakọ.
  • Chịkọta arịa nwere koodu, ọ bụrụ na a na-atụgharị asụsụ ahụ, ma ọ bụ chịkọta ihe arịa ma kwaba ha n'ime akpa.
  • A na-enyocha onyonyo nke arụpụta na-akpaghị aka akpa-nhazi-nnwale.
  • Ịkpado na ibugo onyonyo na ndekọ Docker.
  • Were kubectl, Helm ma ọ bụ kustomize tinye ngwa n'ime ụyọkọ.
  • Mee mbugharị ọdụ ụgbọ mmiri.
  • Ngwa debug edere na Java, Node.js, Python.

A na-akọwapụta usoro ọrụ n'ụdị dị iche iche na faịlụ ahụ skaffold.yaml. Maka oru ngo, ị nwekwara ike kọwapụta ọtụtụ profaịlụ nke ị nwere ike ịgbanwe akụkụ ma ọ bụ kpamkpam n'usoro mgbakọ na ntinye. Dịka ọmụmaatụ, maka mmepe, kọwaa isi ihe oyiyi dị mma maka onye mmepụta, yana maka nhazi na mmepụta - nke pere mpe (+ iji. securityContext arịa ma ọ bụ degharịa ụyọkọ nke a ga-ebuga ngwa ahụ).

Enwere ike wuo arịa docker na mpaghara ma ọ bụ nke dịpụrụ adịpụ: n'ime Google Cloud Mee ma ọ bụ na ụyọkọ na-eji Kaniko. Bazel na Jib Maven/Gradle na-akwadokwa. Maka mkpado, Skaffold na-akwado ọtụtụ atụmatụ: site na git hash, ụbọchị/oge, sha256-nchikota isi mmalite, wdg.

Iche iche, ọ bara uru ịmara na enwere ike ịnwale arịa. Usoro nnwale akpa-nhazi-ụba nke akpọtụrụla na-enye ụzọ nkwenye ndị a:

  • Na-eme iwu na ọnọdụ nke akpa nwere nsochi ụzọ ọpụpụ na ịlele mmepụta ederede nke iwu ahụ.
  • Na-enyocha ọnụnọ nke faịlụ na akpa na dakọtara àgwà ndị akọwapụtara.
  • Njikwa ọdịnaya faịlụ site na iji okwu oge niile.
  • Nyochaa metadata onyonyo (ENV, ENTRYPOINT, VOLUMES were gabazie.).
  • Na-enyocha ndakọrịta akwụkwọ ikike.

A naghị emekọrịta faịlụ na akpa n'ụzọ kachasị mma: Skaffold na-emepụta ebe nchekwa na isi mmalite, depụta ya ma bupu ya na akpa (a ga-etinyerịrị tar). Ya mere, ọ bụrụ na isi ọrụ gị bụ mmekọrịta koodu, ọ ka mma ile anya na ngwọta pụrụ iche (ksync).

Ngwa maka ndị nrụpụta ngwa na-agba na Kubernetes
Isi nkebi nke ọrụ Skaffold

N'ozuzu, ngwá ọrụ ahụ anaghị ekwe ka ị nweta nkọwa nke Kubernetes na enweghị mmekọrịta ọ bụla, ya mere ọ nwere ike iyi ihe siri ike ịmụta. Mana nke a bụkwa uru ya - nnwere onwe ime ihe ka ukwuu.

Garden

  • website; GitHub.
  • Nchịkọta GH dị mkpirikpi: kpakpando 1063, 1927 na-eme, ndị ntinye aka 17.
  • Asụsụ: TypeScript (a na-eme atụmatụ ikewa ọrụ ahụ n'ọtụtụ akụkụ, ụfọdụ n'ime ha ga-adị na Go, ma meekwa SDK maka ịmepụta add-ons na TypeScript/JavaScript na Go).
  • Ikikere: Akwụkwọ ikike Apache 2.0.

Dịka Skaffold, Ogige na-achọ imezi usoro nke ibuga koodu ngwa na ụyọkọ K8s. Iji mee nke a, ị ga-ebu ụzọ kọwaa nhazi ọrụ na faịlụ YAML, wee mee iwu ahụ garden dev. Ọ ga-eme anwansi niile:

  • Na-anakọta akpa nwere akụkụ dị iche iche nke ọrụ ahụ.
  • Na-eme mwekota na ule otu, ma ọ bụrụ na akọwara.
  • Na-ebupụ akụkụ ọrụ niile na ụyọkọ ahụ.
  • Ọ bụrụ na koodu isi mmalite gbanwere, ọ ga-amalitegharị pipeline dum.

Isi ihe a na-elekwasị anya n'iji ngwá ọrụ a bụ ịkekọrịta ụyọkọ dịpụrụ adịpụ na otu mmepe. N'okwu a, ọ bụrụ na emelarị ụfọdụ n'ime usoro ụlọ na ule, nke a ga-eme ka usoro ahụ dịkwuo ngwa ngwa, ebe ọ bụ na ubi ga-enwe ike iji nsonaazụ echekwabara.

Modul oru ngo nwere ike ịbụ akpa, akpa Maven, eserese Helm, ihe ngosi maka kubectl apply ma ọ bụ ọbụna ọrụ OpenFaaS. Ọzọkwa, enwere ike ịdọrọ modul ọ bụla site na ebe nchekwa Git dịpụrụ adịpụ. Otu modul nwere ike ma ọ bụ ọ gaghị akọwapụta ọrụ, ọrụ na ule. Ọrụ na ọrụ nwere ike ịdabere na ya, yabụ ị nwere ike ikpebi usoro ntinye nke otu ọrụ ma hazie mmalite nke ọrụ na ule.

Ogige na-enye onye ọrụ ọmarịcha dashboard (ugbu a ọnọdụ nnwale), nke na-egosiputa eserese ọrụ: components, usoro mgbakọ, mmezu nke ọrụ na ule, njikọ ha na ndabere. N'ime ihe nchọgharị ahụ, ị ​​​​nwere ike ịlele ndekọ nke akụrụngwa ọrụ niile wee lelee ihe otu akụrụngwa na-esi na HTTP pụta (ọ bụrụ n'ezie, ekwuputara akụrụngwa ingress maka ya).

Ngwa maka ndị nrụpụta ngwa na-agba na Kubernetes
Ogwe maka ubi

Ngwá ọrụ a nwekwara ọnọdụ ibugharị ọkụ, nke na-emekọrịta mgbanwe ederede na akpa dị na ụyọkọ ahụ, na-eme ka usoro nbipu ngwa ngwa ngwa ngwa. Ubi nwere nke ọma akwụkwọ na ọ bụghị ihe ọjọọ set nke ihe atụ, na-enye gị ohere ịme ngwa ngwa ma malite iji ya. N'agbanyeghị, dị nnọọ nso nso anyị bipụtara ntụgharị asụsụ edemede site n'aka ndị dere ya.

nkwubi

N'ezie, ndepụta a nke ngwaọrụ maka ịmepụta na debugging ngwa na Kubernetes abụghị nanị. Enwere ọtụtụ ihe bara uru na nke bara uru nke kwesịrị ekwesị, ma ọ bụrụ na ọ bụghị isiokwu dị iche, mgbe ahụ ọ dịkarịa ala ịkọ. Gwa anyị ihe ị na-eji, nsogbu ndị ị zutere na otu i siri dozie ha!

PS

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Zụta nnabata ntụkwasị obi maka saịtị nwere nchekwa DDoS, sava VPS VDS 🔥 Zụta ebe nrụọrụ weebụ a pụrụ ịtụkwasị obi na nchekwa DDoS, sava VPS VDS | ProHoster