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.

Uru dị n'ịgba ọsọ na mpaghara bụ ịdị mma nke ndezi na nsonaazụ ozugbo, ikike ịmegharị ngwa ahụ n'ụzọ ọ na-adị. Ihe dị ala bụ na ọ na-achọ ọsọ ọsọ njikọ, nke a na-ahụ anya karịsịa mgbe ị na-arụ ọrụ na ngwa nwere RPS dị elu na okporo ụzọ. Na mgbakwunye, Telepresence nwere nsogbu na oke olu na Windows, nke nwere ike ịbụ oke oke maka ndị mmepe maara OS a.

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 dị ka OS ahịa, onye na-ahụ maka sistemụ faịlụ nwere ike ọ gaghị arụ ọrụ nke ọma. Achọpụtara ahụhụ a mgbe ọ na-arụ ọrụ na nnukwu akwụkwọ ndekọ aha - yana ọnụ ọgụgụ buru ibu nke faịlụ na akwụkwọ ndekọ aha. Anyị kere 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

Tinye a comment