Nā mea hana no nā mea hoʻomohala o nā noi e holo ana ma Kubernetes

Nā mea hana no nā mea hoʻomohala o nā noi e holo ana ma Kubernetes

ʻO kahi ala hou i nā hana e hoʻonā i nā pilikia ʻoihana koʻikoʻi. Hiki i nā pahu a me nā mea hoʻokani pila ke maʻalahi i nā papahana o nā mea paʻakikī, e hoʻomaʻamaʻa i ka hoʻokuʻu ʻana i nā mana hou, e hoʻolilo iā lākou i hilinaʻi, akā i ka manawa like lākou e hana ai i nā pilikia hou no nā mea hoʻomohala. ʻO ka mea papahana, ʻo ka mea mua, mālama i kāna code: ka hale hana, ka maikaʻi, ka hana, ka nani - a ʻaʻole pehea e hana ai ma Kubernetes a pehea e hoʻāʻo ai a hoʻopau iā ia ma hope o ka hana ʻana i nā loli liʻiliʻi. No laila, he mea maʻamau ka hoʻomohala ʻana o nā mea hana no Kubernetes, e kōkua ana i ka hoʻoponopono ʻana i nā pilikia o nā mea hoʻomohala "archaic" a ʻae iā lākou e nānā i ka mea nui.

Hāʻawi kēia loiloi i ka ʻike pōkole e pili ana i kekahi o nā mea hana e maʻalahi ai ke ola no ka mea papahana nona ka code e holo ana ma ka podʻax o kahi hui Kubernetes.

Nā mea kōkua maʻalahi

Kubectl-debug

  • ʻO ka laina lalo: hoʻohui i kāu pahu i kahi Pod a ʻike i ka mea e hana ai i loko.
  • GitHub.
  • Nā helu helu GH pōkole: 715 hōkū, 54 hana, 9 mea kōkua.
  • ʻŌlelo: Hele.
  • Laikini: Laikini Apache 2.0.

ʻO kēia plugin no kubectl hiki iā ʻoe ke hana i kahi pahu hou i loko o ka pod o ka hoihoi, e kaʻana like i ke kaʻina hana me nā ipu ʻē aʻe. I loko o ia mea hiki iā ʻoe ke debug i ka hana o ka pod: nānā i ka pūnaewele, hoʻolohe i ka neʻe ʻana o ka pūnaewele, hana i kahi strace o ke kaʻina hana hoihoi, etc.

Hiki iā ʻoe ke hoʻololi i ka pahu hana ma ka holo ʻana chroot /proc/PID/root - hiki ke maʻalahi kēia i ka wā e pono ai ʻoe e kiʻi i kahi pūpū aʻa i loko o kahi pahu i hoʻonohonoho ʻia ai i ka hōʻike securityContext.runAs.

He mea maʻalahi a maikaʻi ka mea hana, no laila hiki ke hoʻohana i kēlā me kēia mea hoʻomohala. Ua kākau hou mākou e pili ana iā ia ma ʻokoʻa ka ʻatikala.

telepresence

  • ʻO ka laina lalo: e hoʻoili i ka palapala noi i kāu kamepiula. E hoʻomohala a hoʻopau i ka ʻāina.
  • paena; GitHub.
  • Nā helu helu GH pōkole: 2131 hōkū, 2712 hana, 33 mea kōkua.
  • ʻŌlelo: Python.
  • Laikini: Laikini Apache 2.0.

ʻO ka manaʻo o kēia snap-in ʻo ia ka hoʻomaka ʻana i kahi pahu me ka noi ma ka kamepiula mea hoʻohana kūloko a hoʻololi i nā kaʻa a pau mai ka puʻupuʻu i laila a i hope. ʻAe kēia ala iā ʻoe e hoʻomohala kūloko ma ka hoʻoponopono ʻana i nā faila i kāu IDE punahele: e loaʻa koke nā hopena.

ʻO nā mea maikaʻi o ka holo ʻana ma ka ʻāina ʻo ia ka ʻoluʻolu o nā hoʻoponopono a me nā hopena koke, ka hiki ke debug i ka noi ma ke ʻano maʻamau. ʻO ka ʻaoʻao haʻahaʻa ʻo ia ke koi ʻana i ka wikiwiki pili, ʻike nui ʻia inā pono ʻoe e hana me kahi noi me ka RPS kiʻekiʻe a me ke kaʻa. Eia kekahi, loaʻa iā Telepresence nā pilikia me nā piʻi nui ma Windows, hiki ke lilo i palena hoʻoholo no nā mea hoʻomohala maʻa i kēia OS.

Ua hōʻike mua mākou i kā mākou ʻike no ka hoʻohana ʻana i Telepresence maanei.

Ksync

  • ʻO ka laina lalo: ʻaneʻane hikiwawe ka hoʻonohonoho ʻana o ke code me ka ipu i loko o ka pūʻulu.
  • GitHub.
  • Nā helu helu GH pōkole: 555 hōkū, 362 hana, 11 mea kōkua.
  • ʻŌlelo: Hele.
  • Laikini: Laikini Apache 2.0.

Hāʻawi ka pono iā ʻoe e hoʻonohonoho i nā ʻike o kahi papa kuhikuhi kūloko me ka papa kuhikuhi o kahi pahu e holo ana i ka hui. He kūpono ia mea hana no nā mea hoʻomohala i ka kākau ʻana i nā ʻōlelo papahana, nona ka pilikia nui i ka hāʻawi ʻana i ke code i kahi pahu holo. Hoʻolālā ʻia ʻo Ksync e hoʻomaha i kēia poʻo.

Ke hoʻomaka mua ʻia e ke kauoha ksync init Hoʻokumu ʻia kahi DaemonSet i loko o ka pūpū, i hoʻohana ʻia e nānā i ke kūlana o ka ʻōnaehana faila o ka ipu i koho ʻia. Ma kāna kamepiula kūloko, holo ka mea hoʻomohala i ke kauoha ksync watch, nāna e nānā i nā hoʻonohonoho a me nā holo hui pū, ka mea e hoʻonohonoho pololei i nā faila me ka pūʻulu.

ʻO nā mea a pau e aʻo iā ksync i ka mea e hoʻohui pū me ka mea. Eia kekahi laʻana, kēia kauoha:

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

...e hana i kahi kiaʻi i kapa ʻia myprojectkahi e ʻimi ai i kahi pod me kahi lepili app=backend a e hoʻāʻo e hoʻonohonoho i ka papa kuhikuhi kūloko /home/user/myproject/ me ka papa helu /var/www/myproject/ ma ka ipu i kapaia php.

Nā pilikia a me nā memo ma ksync mai kā mākou ʻike:

  • Pono e hoʻohana ʻia ma nā node pūʻulu Kubernetes overlay2 ma ke ʻano he mea hoʻokele mālama no Docker. ʻAʻole e hana ka pono me nā mea ʻē aʻe.
  • I ka hoʻohana ʻana iā Windows ma ke ʻano he OS mea kūʻai aku, ʻaʻole hiki ke hana pololei ka ʻōnaehana waihona. Ua ʻike ʻia kēia bug i ka wā e hana ana me nā papa kuhikuhi nui - me ka nui o nā faila nested a me nā papa kuhikuhi. Ua hana mākou pili pili i ka papahana syncthing, akā ʻaʻohe holomua ma ia mea (mai ka hoʻomaka ʻana o Iulai).
  • E hoʻohana i ka faila .stignore e kuhikuhi i nā ala a i ʻole nā ​​faila faila ʻaʻole pono e hoʻonohonoho ʻia (no ka laʻana, nā papa kuhikuhi app/cache и .git).
  • Ma ka paʻamau, e hoʻomaka hou ʻo ksync i ka pahu i ka wā e loli ai nā faila. No Node.js he mea maʻalahi kēia, akā no PHP ʻaʻole pono. ʻOi aku ka maikaʻi e hoʻopau i ka opcache a hoʻohana i ka hae --reload=false.
  • Hiki ke hoʻoponopono ʻia ka hoʻonohonoho i nā manawa a pau $HOME/.ksync/ksync.yaml.

ʻO Squash

  • ʻO ka laina lalo: nā kaʻina hana debug i loko o ka pūʻulu.
  • GitHub.
  • Nā helu helu GH pōkole: 1154 hōkū, 279 hana, 23 mea kōkua.
  • ʻŌlelo: Hele.
  • Laikini: Laikini Apache 2.0.

Hoʻolālā ʻia kēia mea hana no ka hoʻopau ʻana i nā kaʻina hana i loko o nā pods. He mea maʻalahi ka mea hoʻohana a hiki iā ʻoe ke koho i ka debugger makemake (e nānā ma lalo) a me ka namespace + pod, i ke kaʻina hana e pono ai ʻoe e komo. Kākoʻo ʻia i kēia manawa:

  • delve - no nā polokalamu Go;
  • GDB - ma o ka mamao mamao + ka hoʻouna ʻana i ke awa;
  • ʻO ka hoʻouna ʻana i ke awa JDWP no ka hoʻopau ʻana i nā noi Java.

Ma ka ʻaoʻao IDE, loaʻa ke kākoʻo ma VScode (hoʻohana hoʻopau), akā naʻe, ʻo nā hoʻolālā no kēia makahiki (2019) me Eclipse a me Intellij.

No ka hoʻopau ʻana i nā kaʻina hana, holo ʻo Squash i kahi pahu waiwai ma nā nodes cluster, no laila pono ʻoe e hoʻomaʻamaʻa mua iā ʻoe iho me nā hiki. ʻano palekana e pale i nā pilikia palekana.

Nā hoʻonā piha

E neʻe kākou i ka puʻupuʻu kaumaha - ʻoi aku ka nui o nā papahana "nui" i hoʻolālā ʻia e hoʻokō koke i nā pono o nā mea hoʻomohala.

NB: Ma kēia papa inoa, ʻoiaʻiʻo, aia kahi wahi no kā mākou mea hoʻohana Open Source werf (ʻike mua ʻia ʻo dapp). Eia naʻe, ua kākau mua mākou a kamaʻilio e pili ana iā ia ma mua o hoʻokahi manawa, a no laila ua hoʻoholo e hoʻokomo ʻole i loko o ka loiloi. No ka poʻe e makemake ana e kamaʻāina hou i kona hiki, paipai mākou e heluhelu/hoʻolohe i ka hōʻike "ʻO werf kā mākou mea hana no CI/CD ma Kubernetes".

DevSpace

  • ʻO ka laina lalo: no ka poʻe makemake e hoʻomaka i ka hana ma Kubernetes, akā ʻaʻole makemake e komo hohonu i loko o kāna ululāʻau.
  • GitHub.
  • Nā helu GH pōkole: 630 hōkū, 1912 hana, 13 mea kōkua.
  • ʻŌlelo: Hele.
  • Laikini: Laikini Apache 2.0.

ʻO kahi hoʻonā mai ka hui o ka inoa like, e hāʻawi ana i nā pūʻulu hoʻokele me nā Kubernetes no ka hoʻomohala ʻana i ka hui. Hoʻokumu ʻia ka pono no nā pūʻulu kalepa, akā hana maikaʻi me nā mea ʻē aʻe.

Ke holo i ke kauoha devspace init i loko o ka papahana papahana e hāʻawi ʻia iā ʻoe (ma ka launa pū):

  • koho i kahi hui Kubernetes hana,
  • hoʻohana i kēia manawa Dockerfile (a i ʻole e hana i kahi mea hou) e hana i kahi pahu e pili ana iā ia,
  • koho i kahi waihona no ka mālama ʻana i nā kiʻi pahu, etc.

Ma hope o kēia mau hana hoʻomākaukau, hiki iā ʻoe ke hoʻomaka i ka hoʻomohala ʻana ma ka holo ʻana i ke kauoha devspace dev. E kūkulu ia i ka ipu, e hoʻouka i ka waihona, e ʻōwili i ka hoʻoili ʻana i ka hui a hoʻomaka i ka hoʻouna ʻana i ke awa a me ka synchronization o ka ipu me ka papa kuhikuhi kūloko.

ʻO ke koho, e hoʻoneʻe ʻia ʻoe e neʻe i ka pahu i ka pahu. ʻAʻole pono ʻoe e hōʻole, no ka mea ʻoiaʻiʻo, hoʻomaka ka pahu me ke kauoha hiamoe, a no ka hoʻāʻo maoli ʻana pono e hoʻokuʻu ʻia ka noi me ka lima.

ʻO ka hope, ka hui devspace deploy ʻōwili i ka noi a me nā ʻōnaehana pili i ka hui, a laila hoʻomaka nā mea a pau e hana i ke ʻano hakakā.

Mālama ʻia nā hoʻonohonoho papahana āpau i kahi faila devspace.yaml. Ma waho aʻe o nā hoʻonohonoho hoʻomohala hoʻomohala, hiki iā ʻoe ke ʻike i kahi wehewehe o ka ʻōnaehana i loko, e like me nā hōʻike Kubernetes maʻamau, maʻalahi loa.

Nā mea hana no nā mea hoʻomohala o nā noi e holo ana ma Kubernetes
Hoʻolālā a me nā pae nui o ka hana ʻana me DevSpace

Eia hou, maʻalahi ka hoʻohui ʻana i kahi mea i koho mua ʻia (no ka laʻana, kahi MySQL DBMS) a i ʻole kahi pakuhi Helm i ka papahana. Heluhelu hou aku ma palapala - ʻaʻole paʻakikī.

Pākuʻi

  • paena; GitHub.
  • Nā helu helu GH pōkole: 7423 hōkū, 4173 hana, 136 mea kōkua.
  • ʻŌlelo: Hele.
  • Laikini: Laikini Apache 2.0.

Ke koi nei kēia pono mai Google e uhi i nā pono āpau o kahi mea hoʻomohala e holo ana kāna code ma kahi hui Kubernetes. ʻAʻole maʻalahi ka hoʻomaka ʻana e hoʻohana e like me devspace: ʻaʻohe interactive, ʻike ʻōlelo a me ka hana ʻana Dockerfile ʻAʻole lākou e hāʻawi iā ʻoe ma ʻaneʻi.

Eia naʻe, inā ʻaʻole hoʻoweliweli kēia iā ʻoe, eia ka mea a Skaffold e ʻae iā ʻoe e hana:

  • E hahai i nā hoʻololi kumu kumu.
  • E hui pū me ka pahu pod inā ʻaʻole pono ia e hui.
  • E hōʻiliʻili i nā pahu me ke code, inā i unuhi ʻia ka ʻōlelo, a i ʻole e hōʻuluʻulu i nā mea hana a hoʻopaʻa iā lākou i loko o nā pahu.
  • Hoʻopaʻa ʻia nā kiʻi hopena me ka hoʻohana ʻana ipu-kūkulu-hoʻāʻo.
  • Hoʻopili a hoʻouka i nā kiʻi i ka Docker Registry.
  • E hoʻolālā i kahi noi i loko o kahi hui me ka kubectl, Helm a i ʻole kustomize.
  • Hana i ka hoʻouna ʻana i ke awa.
  • Debug palapala noi i kākau ʻia ma Java, Node.js, Python.

Hōʻike ʻia ke kahe hana ma nā ʻano like ʻole i ka faila skaffold.yaml. No kahi papahana, hiki iā ʻoe ke wehewehe i kekahi mau profiles kahi e hiki ai iā ʻoe ke hoʻololi ʻāpana a i ʻole ke hoʻololi piha ʻana i ka hui a me nā pae hoʻolālā. No ka laʻana, no ka hoʻomohala ʻana, e kuhikuhi i kahi kiʻi kumu kūpono no ka mea hoʻomohala, a no ka hana ʻana a me ka hana ʻana - kahi liʻiliʻi (+ hoʻohana securityContext nā ipu a i ʻole e wehewehe hou i ka pūʻulu kahi e kau ʻia ai ka noi).

Hiki ke kūkulu ʻia nā pahu Docker ma ka ʻāina a ma kahi mamao paha: in Google Cloud Build a i ʻole ma kahi hui e hoʻohana ana Kaniko. Kākoʻo ʻia ʻo Bazel a me Jib Maven/Gradle. No ka hōʻailona ʻana, kākoʻo ʻo Skaffold i nā hoʻolālā he nui: e git commit hash, lā / manawa, sha256-sum o nā kumu, etc.

Ma kahi kaʻawale, pono e ʻike i ka hiki ke hoʻāʻo i nā ipu. Hāʻawi ka pahu pahu-structure-test framework i kēia mau ʻano hōʻoia:

  • Ke hoʻokō nei i nā kauoha i loko o ka pōʻaiapili o kahi pahu me ka nānā ʻana i nā kūlana puka a me ka nānā ʻana i ka huaʻōlelo o ke kauoha.
  • Ke nānā nei i ka loaʻa ʻana o nā faila i loko o ka pahu a hoʻohālikelike i nā ʻano i kuhikuhi ʻia.
  • Ka mālama ʻana i nā waihona waihona me ka hoʻohana ʻana i nā ʻōlelo maʻamau.
  • Hōʻoia kiʻi metadata (ENV, ENTRYPOINT, VOLUMES a laila.).
  • Ke nānā nei i ka hoʻokō laikini.

ʻAʻole hoʻokō ʻia ka hoʻonohonoho ʻana i nā faila me ka ipu i ke ala maikaʻi loa: Hoʻokumu wale ʻo Skaffold i kahi waihona me nā kumu, kope a wehe ʻia i loko o ka ipu (pono e hoʻokomo ʻia ka tar). No laila, inā ʻo kāu hana nui ka code synchronization, ʻoi aku ka maikaʻi o ka nānā ʻana i kahi hopena kūikawā (ksync).

Nā mea hana no nā mea hoʻomohala o nā noi e holo ana ma Kubernetes
Nā pae nui o ka hana Skaffold

Ma keʻano laulā, ʻaʻole ʻae ka hāmeʻa iā ʻoe e hoʻokaʻawale mai nā hōʻike Kubernetes a ʻaʻohe mea pili, no laila paʻakikī paha ka haku. Akā ʻo kēia hoʻi kona pono - ʻoi aku ke kūʻokoʻa o ka hana.

Garden

  • paena; GitHub.
  • Nā helu helu GH pōkole: 1063 hōkū, 1927 hana, 17 mea kōkua.
  • ʻŌlelo: TypeScript (Ua hoʻolālā ʻia e hoʻokaʻawale i ka papahana i nā ʻāpana he nui, aia kekahi ma Go, a hana pū kekahi i SDK no ka hana ʻana i nā mea hoʻohui i TypeScript/JavaScript a me Go).
  • Laikini: Laikini Apache 2.0.

E like me Skaffold, manaʻo ʻo Garden e hoʻokaʻawale i nā kaʻina o ka hāʻawi ʻana i nā code noi i ka hui K8s. No ka hana ʻana i kēia, pono ʻoe e wehewehe i ke ʻano o ka papahana ma kahi faila YAML, a laila holo i ke kauoha garden dev. E hana ʻo ia i nā mea kilokilo a pau:

  • E hōʻiliʻili i nā pahu me nā ʻāpana like ʻole o ka papahana.
  • Hana i ka hoʻohui ʻana a me nā hoʻokolohua ʻāpana, inā i wehewehe ʻia kekahi.
  • Holoi i nā ʻāpana papahana a pau i ka hui.
  • Inā hoʻololi ke kumu kumu, e hoʻomaka hou ka pipeline holoʻokoʻa.

ʻO ka manaʻo nui o ka hoʻohana ʻana i kēia hāmeʻa ʻo ia ka kaʻana like ʻana i kahi pūʻulu mamao me kahi hui hoʻomohala. I kēia hihia, inā ua hana mua ʻia kekahi o ka hale a me ka hoʻāʻo ʻana, e wikiwiki loa kēia i ke kaʻina holoʻokoʻa, no ka mea hiki iā Garden ke hoʻohana i nā hopena i hūnā ʻia.

Hiki i kahi module papahana ke lilo i ipu, kahi pahu Maven, kahi pakuhi Helm, kahi hōʻike no kubectl apply a i ʻole kahi hana OpenFaaS. Eia kekahi, hiki ke huki ʻia kekahi o nā modula mai kahi waihona Git mamao. Hiki i kekahi module ke wehewehe i nā lawelawe, nā hana, a me nā ho'āʻo. Hiki i nā lawelawe a me nā hana ke loaʻa nā hilinaʻi, no laila hiki iā ʻoe ke hoʻoholo i ke kaʻina hana o kahi lawelawe kūikawā a hoʻonohonoho i ka hoʻomaka ʻana o nā hana a me nā hoʻāʻo.

Hāʻawi ʻo Garden i ka mea hoʻohana me kahi dashboard nani (i kēia manawa i loko kūlana hoʻokolohua), e hōʻike ana i ka pakuhi papahana: nā ʻāpana, ke kaʻina hui, ka hoʻokō ʻana i nā hana a me nā hoʻāʻo, nā pilina a me nā hilinaʻi. Ma ka polokalamu kele pūnaewele, hiki iā ʻoe ke ʻike i nā moʻolelo o nā ʻāpana papahana āpau a nānā i ka mea i hoʻopuka ʻia e kekahi ʻāpana ma o HTTP (inā, ʻoiaʻiʻo, ua haʻi ʻia kahi kumu waiwai komo no ia).

Nā mea hana no nā mea hoʻomohala o nā noi e holo ana ma Kubernetes
Panel no ka māla

Loaʻa i kēia mea hana ke ʻano hoʻouka hou, e hoʻonohonoho wale ana i nā hoʻololi script me ka ipu i loko o ka pūʻulu, e wikiwiki loa i ke kaʻina hana debugging noi. He maikaʻi ka māla ka palapala aole ino hoʻonohonoho hoʻohālike, hiki iā ʻoe ke maʻa koke iā ia a hoʻomaka e hoʻohana. ʻOiaʻiʻo, ua paʻi mākou i kēia manawa unuhi ʻatikala mai kona mau mea kakau.

hopena

ʻOiaʻiʻo, ʻaʻole i kaupalena ʻia kēia papa inoa o nā mea hana no ka hoʻomohala ʻana a me ka hoʻopau ʻana i nā noi ma Kubernetes. Nui aʻe nā pono pono a me nā pono kūpono, inā ʻaʻole he ʻatikala kaʻawale, a laila ʻōlelo ʻia. E haʻi mai iā mākou i kāu mea e hoʻohana ai, he aha nā pilikia āu i hālāwai ai a pehea ʻoe i hoʻoponopono ai iā lākou!

PS

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka