Awọn irinṣẹ fun awọn olupilẹṣẹ ti awọn ohun elo nṣiṣẹ lori Kubernetes

Awọn irinṣẹ fun awọn olupilẹṣẹ ti awọn ohun elo nṣiṣẹ lori Kubernetes

Ọna ode oni si awọn iṣẹ ṣiṣe yanju ọpọlọpọ awọn iṣoro iṣowo titẹ. Awọn apoti ati awọn akọrin jẹ ki o rọrun lati ṣe iwọn awọn iṣẹ akanṣe ti eyikeyi idiju, jẹ ki itusilẹ ti awọn ẹya tuntun jẹ ki wọn jẹ igbẹkẹle diẹ sii, ṣugbọn ni akoko kanna wọn ṣẹda awọn iṣoro afikun fun awọn idagbasoke. Awọn pirogirama, akọkọ ti gbogbo, bikita nipa koodu rẹ: faaji, didara, išẹ, didara - ati ki o ko bi o ti yoo ṣiṣẹ ni Kubernetes ati bi lati se idanwo ati ki o yokokoro o lẹhin ṣiṣe ani pọọku ayipada. Nitorinaa, o tun jẹ adayeba pe awọn irinṣẹ fun Kubernetes ti ni idagbasoke ni itara, ṣe iranlọwọ lati yanju awọn iṣoro ti paapaa julọ awọn olupilẹṣẹ “archaic” ati gbigba wọn laaye lati dojukọ ohun akọkọ.

Atunwo yii n pese alaye kukuru nipa diẹ ninu awọn irinṣẹ ti o jẹ ki igbesi aye rọrun fun pirogirama ti koodu rẹ nṣiṣẹ ni pod’ax ti iṣupọ Kubernetes kan.

Awọn oluranlọwọ ti o rọrun

Kubectl-debug

  • Awọn lodi: ṣafikun apoti rẹ si Pod kan ki o wo ohun ti o ṣẹlẹ ninu rẹ.
  • GitHub.
  • Finifini GH statistiki: 715 irawọ, 54 ṣẹ, 9 olùkópa.
  • Ede: Lọ.
  • Iwe-aṣẹ: Iwe-aṣẹ Apache 2.0.

Ohun itanna yii fun kubectl ngbanilaaye lati ṣẹda apo eiyan afikun kan ninu apo ti iwulo, eyiti yoo pin aaye orukọ ilana pẹlu awọn apoti miiran. Ninu rẹ o le yokokoro iṣẹ adarọ ese: ṣayẹwo nẹtiwọọki, tẹtisi ijabọ nẹtiwọọki, ṣe ilana ti iwulo, ati bẹbẹ lọ.

O tun le yipada si eiyan ilana nipasẹ ṣiṣe chroot /proc/PID/root - Eyi le jẹ irọrun pupọ nigbati o nilo lati gba ikarahun gbongbo ninu apo eiyan fun eyiti o ti ṣeto ninu iṣafihan securityContext.runAs.

Ọpa naa rọrun ati doko, nitorinaa o le wulo fun gbogbo idagbasoke. A kọ diẹ sii nipa rẹ ni lọtọ ìwé.

Wiwa foonu

  • Awọn lodi: gbe ohun elo si kọmputa rẹ. Dagbasoke ati yokokoro ni agbegbe.
  • aaye ayelujara; GitHub.
  • Finifini GH statistiki: 2131 irawọ, 2712 ṣẹ, 33 olùkópa.
  • Ede: Python.
  • Iwe-aṣẹ: Iwe-aṣẹ Apache 2.0.

Ero ti imolara-in ni lati ṣe ifilọlẹ eiyan kan pẹlu ohun elo lori kọnputa olumulo agbegbe ati aṣoju gbogbo ijabọ lati iṣupọ si ati sẹhin. Ọna yii ngbanilaaye lati dagbasoke ni agbegbe nipa ṣiṣatunṣe awọn faili nirọrun ni IDE ayanfẹ rẹ: awọn abajade yoo wa lẹsẹkẹsẹ.

Awọn anfani ti ṣiṣiṣẹ ni agbegbe jẹ irọrun ti awọn atunṣe ati awọn abajade lẹsẹkẹsẹ, agbara lati ṣatunṣe ohun elo ni ọna deede. Ilẹ isalẹ ni pe o n beere lori iyara asopọ, eyiti o ṣe akiyesi paapaa nigbati o ni lati ṣiṣẹ pẹlu ohun elo kan pẹlu RPS giga ati ijabọ. Ni afikun, Telepresence ni awọn iṣoro pẹlu iwọn didun gbeko lori Windows, eyi ti o le jẹ kan decisive aropin fun Difelopa saba si yi OS.

A ti pin iriri wa tẹlẹ ti lilo Telepresence nibi.

Ksync

  • Awọn lodi: Amuṣiṣẹpọ lẹsẹkẹsẹ ti koodu pẹlu eiyan ninu iṣupọ.
  • GitHub.
  • Finifini GH statistiki: 555 irawọ, 362 ṣẹ, 11 olùkópa.
  • Ede: Lọ.
  • Iwe-aṣẹ: Iwe-aṣẹ Apache 2.0.

IwUlO n gba ọ laaye lati muu awọn akoonu inu iwe ilana agbegbe ṣiṣẹpọ pẹlu itọsọna ti eiyan ti n ṣiṣẹ ninu iṣupọ naa. Iru ọpa yii jẹ pipe fun awọn olupilẹṣẹ ni awọn ede siseto kikọ, eyiti iṣoro akọkọ rẹ jẹ fifi koodu jiṣẹ si apo eiyan ti nṣiṣẹ. A ṣe apẹrẹ Ksync lati yọkuro orififo yii.

Nigbati o ba bẹrẹ ni ẹẹkan nipasẹ aṣẹ ksync init A ṣẹda DaemonSet ninu iṣupọ, eyiti o lo lati ṣe atẹle ipo ti eto faili ti eiyan ti o yan. Lori kọnputa agbegbe rẹ, olupilẹṣẹ nṣiṣẹ aṣẹ naa ksync watch, eyiti o ṣe abojuto awọn atunto ati ṣiṣe mimuṣiṣẹpọ, eyiti o mu awọn faili ṣiṣẹpọ taara pẹlu iṣupọ.

Gbogbo ohun ti o ku ni lati kọ ksync kini lati muṣiṣẹpọ pẹlu kini. Fun apẹẹrẹ, aṣẹ yii:

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

... yoo ṣẹda oluṣọ ti a npè ni myprojecteyi ti yoo wa podu pẹlu aami kan app=backend ati ki o gbiyanju lati muu awọn agbegbe liana /home/user/myproject/ pẹlu katalogi /var/www/myproject/ ni eiyan ti a npe ni php.

Awọn iṣoro ati awọn akọsilẹ lori ksync lati iriri wa:

  • Gbọdọ ṣee lo lori awọn apa iṣupọ Kubernetes overlay2 bi awakọ ipamọ fun Docker. Awọn IwUlO yoo ko ṣiṣẹ pẹlu eyikeyi miiran.
  • Nigbati o ba nlo Windows bi OS alabara, oluṣọ eto faili le ma ṣiṣẹ ni deede. A ṣe akiyesi kokoro yii nigbati o n ṣiṣẹ pẹlu awọn ilana nla - pẹlu nọmba nla ti awọn faili itẹ-ẹiyẹ ati awọn ilana. A ṣẹda ti o yẹ oro ninu iṣẹ amuṣiṣẹpọ, ṣugbọn ko si ilọsiwaju lori rẹ sibẹsibẹ (lati ibẹrẹ Oṣu Keje).
  • Lo faili .stignore lati pato awọn ọna tabi awọn ilana faili ti ko nilo lati muuṣiṣẹpọ (fun apẹẹrẹ, awọn ilana app/cache и .git).
  • Nipa aiyipada, ksync yoo tun eiyan naa bẹrẹ nigbakugba ti awọn faili ba yipada. Fun Node.js eyi rọrun, ṣugbọn fun PHP ko ṣe pataki. O dara lati pa opcache ki o lo asia --reload=false.
  • Iṣeto ni nigbagbogbo le ṣe atunṣe ni $HOME/.ksync/ksync.yaml.

Elegede

  • Awọn lodi: yokokoro lakọkọ taara ninu awọn iṣupọ.
  • GitHub.
  • Finifini GH statistiki: 1154 irawọ, 279 ṣẹ, 23 olùkópa.
  • Ede: Lọ.
  • Iwe-aṣẹ: Iwe-aṣẹ Apache 2.0.

Ọpa yii jẹ apẹrẹ fun awọn ilana ti n ṣatunṣe aṣiṣe taara ni awọn adarọ-ese. Awọn IwUlO ni o rọrun ati ki o interactively faye gba o lati yan awọn ti o fẹ yokokoro (wo isalẹ) ati aaye orukọ + podu, ninu ilana eyiti o nilo lati laja. Lọwọlọwọ atilẹyin:

  • delve - fun awọn ohun elo Go;
  • GDB - nipasẹ ibi-afẹde latọna jijin + firanšẹ siwaju;
  • JDWP ibudo firanšẹ siwaju fun n ṣatunṣe aṣiṣe awọn ohun elo Java.

Ni ẹgbẹ IDE, atilẹyin wa nikan ni VScode (lilo gbooro), sibẹsibẹ, awọn eto fun ọdun ti o wa lọwọlọwọ (2019) pẹlu Eclipse ati Intellij.

Lati ṣatunṣe awọn ilana, Squash nṣiṣẹ ohun elo ti o ni anfani lori awọn apa iṣupọ, nitorinaa o gbọdọ kọkọ mọ ararẹ pẹlu awọn agbara. ailewu mode lati yago fun awọn iṣoro aabo.

Awọn ojutu pipe

Jẹ ki a lọ si ohun ija nla - diẹ sii awọn iṣẹ akanṣe “iwọn-nla” ti a ṣe apẹrẹ lati pade ọpọlọpọ awọn iwulo ti awọn olupilẹṣẹ lẹsẹkẹsẹ.

NB: Ninu atokọ yii, nitorinaa, aaye wa fun IwUlO Orisun Open wa werf (eyiti a mọ tẹlẹ bi dapp). Sibẹsibẹ, a ti kọ tẹlẹ ati sọrọ nipa rẹ diẹ sii ju ẹẹkan lọ, ati nitorinaa pinnu lati ma fi sii ninu atunyẹwo naa. Fun awọn ti o nfẹ lati ni imọ siwaju sii pẹlu awọn agbara rẹ, a ṣeduro kika / tẹtisi ijabọ naa "werf jẹ ọpa wa fun CI / CD ni Kubernetes».

DevSpace

  • Awọn lodi: fun awọn ti o fẹ bẹrẹ ṣiṣẹ ni Kubernetes, ṣugbọn ko fẹ lati jinna sinu igbo rẹ.
  • GitHub.
  • Finifini GH statistiki: 630 irawọ, 1912 ṣẹ, 13 olùkópa.
  • Ede: Lọ.
  • Iwe-aṣẹ: Iwe-aṣẹ Apache 2.0.

Ojutu lati ile-iṣẹ ti orukọ kanna, eyiti o pese awọn iṣupọ iṣakoso pẹlu Kubernetes fun idagbasoke ẹgbẹ. A ṣẹda ohun elo fun awọn iṣupọ iṣowo, ṣugbọn ṣiṣẹ nla pẹlu eyikeyi miiran.

Nigbati o ba nṣiṣẹ aṣẹ devspace init ninu katalogi iṣẹ akanṣe iwọ yoo funni (ni ibaraenisepo):

  • yan iṣupọ Kubernetes ti n ṣiṣẹ,
  • lo tẹlẹ Dockerfile (tabi ṣe ipilẹṣẹ tuntun) lati ṣẹda apoti kan ti o da lori rẹ,
  • yan ibi ipamọ kan fun titoju awọn aworan eiyan, ati bẹbẹ lọ.

Lẹhin gbogbo awọn igbesẹ igbaradi wọnyi, o le bẹrẹ idagbasoke nipasẹ ṣiṣe aṣẹ naa devspace dev. Yoo kọ eiyan naa, gbe e si ibi ipamọ, yipo imuṣiṣẹ si iṣupọ naa ki o bẹrẹ gbigbe ibudo ati mimuuṣiṣẹpọ ti eiyan pẹlu itọsọna agbegbe.

Ni iyan, iwọ yoo ti ọ lati gbe ebute naa lọ si apo eiyan naa. O yẹ ki o ko kọ, nitori ni otitọ eiyan naa bẹrẹ pẹlu aṣẹ oorun, ati fun idanwo gidi ohun elo nilo lati ṣe ifilọlẹ pẹlu ọwọ.

Níkẹyìn, awọn egbe devspace deploy yipo ohun elo ati awọn amayederun ti o somọ si iṣupọ, lẹhin eyi ohun gbogbo bẹrẹ lati ṣiṣẹ ni ipo ija.

Gbogbo iṣeto ise agbese ti wa ni ipamọ sinu faili kan devspace.yaml. Ni afikun si awọn eto ayika idagbasoke, o tun le rii apejuwe ti awọn amayederun ninu rẹ, ti o jọra si awọn ifihan Kubernetes boṣewa, ni irọrun pupọ.

Awọn irinṣẹ fun awọn olupilẹṣẹ ti awọn ohun elo nṣiṣẹ lori Kubernetes
Faaji ati awọn ipele akọkọ ti ṣiṣẹ pẹlu DevSpace

Ni afikun, o rọrun lati ṣafikun paati asọye tẹlẹ (fun apẹẹrẹ, MySQL DBMS) tabi iwe aworan Helm si iṣẹ akanṣe naa. Ka siwaju ninu iwe - kii ṣe idiju.

Skaffold

  • aaye ayelujara; GitHub.
  • Finifini GH statistiki: 7423 irawọ, 4173 ṣẹ, 136 olùkópa.
  • Ede: Lọ.
  • Iwe-aṣẹ: Iwe-aṣẹ Apache 2.0.

IwUlO yii lati ọdọ Google sọ pe o bo gbogbo awọn iwulo ti idagbasoke ti koodu rẹ yoo ṣiṣẹ bakan lori iṣupọ Kubernetes kan. Bibẹrẹ lati lo ko rọrun bi devspace: ko si ibaraenisepo, wiwa ede ati ṣiṣẹda adaṣe Dockerfile wọn kii yoo fun ọ nihin.

Sibẹsibẹ, ti eyi ko ba dẹruba ọ, eyi ni ohun ti Skaffold gba ọ laaye lati ṣe:

  • Tọpinpin awọn iyipada koodu orisun.
  • Muṣiṣẹpọ pẹlu eiyan podu ti ko ba nilo apejọ.
  • Gba awọn apoti pẹlu koodu, ti o ba jẹ itumọ ede, tabi ṣajọ awọn ohun-ọṣọ ki o di wọn sinu awọn apoti.
  • Awọn aworan ti o jade ni a ṣayẹwo laifọwọyi ni lilo eiyan-igbeyewo.
  • Ifi aami si ati ikojọpọ awọn aworan si iforukọsilẹ Docker.
  • Ran ohun elo kan sinu iṣupọ nipa lilo kubectl, Helm tabi kustomize.
  • Ṣe ifiranšẹ ibudo.
  • Awọn ohun elo yokokoro ti a kọ sinu Java, Node.js, Python.

Ṣiṣan iṣẹ ni ọpọlọpọ awọn iyatọ jẹ asọye ni asọye ninu faili naa skaffold.yaml. Fun iṣẹ akanṣe kan, o tun le ṣalaye awọn profaili pupọ ninu eyiti o le ni apakan tabi paarọ apejọ ati awọn ipele imuṣiṣẹ. Fun apẹẹrẹ, fun idagbasoke, pato aworan ipilẹ ti o rọrun fun olupilẹṣẹ, ati fun iṣeto ati iṣelọpọ - ọkan ti o kere julọ (+ lilo securityContext awọn apoti tabi tun-tumọ iṣupọ ninu eyiti ohun elo naa yoo gbe lọ).

Awọn apoti Docker le ṣe ni agbegbe tabi latọna jijin: ni Google awọsanma Kọ tabi ni a iṣupọ lilo Kaniko. Bazel ati Jib Maven/Gradle tun ṣe atilẹyin. Fun fifi aami si, Skaffold ṣe atilẹyin ọpọlọpọ awọn ọgbọn: nipasẹ git commit hash, ọjọ/akoko, sha256-apao awọn orisun, ati bẹbẹ lọ.

Lọtọ, o tọ lati ṣe akiyesi iṣeeṣe ti awọn apoti idanwo. Ilana idanwo eiyan ti a ti mẹnuba tẹlẹ n funni ni awọn ọna ijerisi wọnyi:

  • Ṣiṣe awọn aṣẹ ni ipo ti eiyan kan pẹlu ipasẹ awọn ipo ijade ati ṣayẹwo abajade ọrọ ti aṣẹ naa.
  • Ṣiṣayẹwo wiwa awọn faili ninu apo eiyan ati ibaamu awọn abuda ti a sọ.
  • Iṣakoso ti awọn akoonu faili nipa lilo awọn ikosile deede.
  • Ijẹrisi metadata aworan (ENV, ENTRYPOINT, VOLUMES ati bẹbẹ lọ.).
  • Ṣiṣayẹwo ibamu iwe-aṣẹ.

Amuṣiṣẹpọ awọn faili pẹlu apo eiyan naa ko ṣe ni ọna ti o dara julọ: Skaffold nirọrun ṣẹda iwe-ipamọ pẹlu awọn orisun, daakọ rẹ ati ṣiṣi silẹ ninu apo eiyan (o gbọdọ fi sori ẹrọ tar). Nitorinaa, ti iṣẹ akọkọ rẹ ba jẹ amuṣiṣẹpọ koodu, o dara lati wo si ọna ojutu pataki kan (ksync).

Awọn irinṣẹ fun awọn olupilẹṣẹ ti awọn ohun elo nṣiṣẹ lori Kubernetes
Awọn ipele akọkọ ti iṣẹ Skaffold

Ni gbogbogbo, ohun elo naa ko gba ọ laaye lati inu awọn ifihan Kubernetes ati pe ko ni ibaraenisepo eyikeyi, nitorinaa o le dabi pe o nira lati ṣakoso. Ṣugbọn eyi tun jẹ anfani rẹ - ominira iṣe ti o tobi julọ.

Ọgbà

  • aaye ayelujara; GitHub.
  • Awọn iṣiro GH kukuru: awọn irawọ 1063, 1927 ṣe, awọn oluranlọwọ 17.
  • Èdè: TypeScript (o ti gbero lati pin iṣẹ akanṣe si ọpọlọpọ awọn paati, diẹ ninu eyiti yoo wa ni Go, ati tun ṣe SDK fun ṣiṣẹda awọn afikun ni TypeScript/JavaScript ati Go).
  • Iwe-aṣẹ: Iwe-aṣẹ Apache 2.0.

Bii Skaffold, Ọgba ni ero lati ṣe adaṣe awọn ilana ti jiṣẹ koodu ohun elo si iṣupọ K8s. Lati ṣe eyi, o nilo lati kọkọ ṣapejuwe eto iṣẹ akanṣe ni faili YAML kan, lẹhinna ṣiṣe aṣẹ naa garden dev. O yoo ṣe gbogbo idan:

  • Gba awọn apoti pẹlu ọpọlọpọ awọn ẹya ti iṣẹ akanṣe naa.
  • Ṣe adaṣe iṣọpọ ati awọn idanwo ẹyọkan, ti eyikeyi ba ti ṣapejuwe.
  • Yipo jade gbogbo ise agbese irinše to iṣupọ.
  • Ti koodu orisun ba yipada, yoo tun bẹrẹ gbogbo opo gigun ti epo.

Idojukọ akọkọ ti lilo ọpa yii ni lati pin iṣupọ latọna jijin pẹlu ẹgbẹ idagbasoke kan. Ni ọran yii, ti diẹ ninu awọn ile ati awọn igbesẹ idanwo ti ṣe tẹlẹ, eyi yoo mu ki gbogbo ilana yara yara ni pataki, nitori Ọgba yoo ni anfani lati lo awọn abajade ti a fipamọ.

A ise agbese module le jẹ a eiyan, a Maven eiyan, a Helm chart, a farahan fun kubectl apply tabi paapaa iṣẹ OpenFaaS kan. Pẹlupẹlu, eyikeyi awọn modulu le fa lati ibi ipamọ Git latọna jijin kan. A module le tabi ko le setumo awọn iṣẹ, awọn iṣẹ-ṣiṣe, ati awọn igbeyewo. Awọn iṣẹ ati awọn iṣẹ ṣiṣe le ni awọn igbẹkẹle, o ṣeun si eyiti o le pinnu ilana imuṣiṣẹ ti iṣẹ kan pato ati ṣeto ifilọlẹ awọn iṣẹ ṣiṣe ati awọn idanwo.

Ọgba pese olumulo pẹlu dasibodu ẹlẹwa kan (Lọwọlọwọ ni esiperimenta ipinle), eyi ti o han ise agbese awonya: irinše, ijọ ọkọọkan, ipaniyan ti awọn iṣẹ-ṣiṣe ati awọn igbeyewo, wọn awọn isopọ ati awọn ti o gbẹkẹle. Ni ẹrọ aṣawakiri, o le wo awọn akọọlẹ ti gbogbo awọn paati iṣẹ akanṣe ati ṣayẹwo kini paati kan pato ti o jade nipasẹ HTTP (ti o ba jẹ pe, nitorinaa, a ti kede orisun ingress fun rẹ).

Awọn irinṣẹ fun awọn olupilẹṣẹ ti awọn ohun elo nṣiṣẹ lori Kubernetes
Panel fun Ọgba

Ọpa yii tun ni ipo atungbejade gbigbona, eyiti o rọrun muuṣiṣẹpọ awọn iyipada iwe afọwọkọ pẹlu eiyan ninu iṣupọ, iyara pupọ ilana ṣiṣe n ṣatunṣe aṣiṣe ohun elo. Ọgba ni kan ti o dara iwe ati ki o ko buburu ṣeto ti apẹẹrẹ, gbigba ọ laaye lati yara lo lati bẹrẹ lilo rẹ. Nipa ọna, laipe a ṣe atẹjade translation ti awọn article lati awọn oniwe-onkọwe.

ipari

Nitoribẹẹ, atokọ awọn irinṣẹ fun idagbasoke ati awọn ohun elo n ṣatunṣe aṣiṣe ni Kubernetes ko ni opin si. Ọpọlọpọ awọn ohun elo ti o wulo pupọ ati ti o wulo ti o yẹ, ti kii ṣe nkan ti o yatọ, lẹhinna o kere ju darukọ. Sọ fun wa kini o lo, awọn iṣoro wo ni o pade ati bii o ṣe yanju wọn!

PS

Ka tun lori bulọọgi wa:

orisun: www.habr.com

Fi ọrọìwòye kun