Zida zopangira mapulogalamu omwe akuyendetsa Kubernetes

Zida zopangira mapulogalamu omwe akuyendetsa Kubernetes

Njira yamakono yogwirira ntchito imathetsa mavuto ambiri omwe akukakamizika abizinesi. Zotengera ndi oimba zimapangitsa kuti zikhale zosavuta kukulitsa mapulojekiti azovuta zilizonse, kupangitsa kuti matembenuzidwe atsopano akhale odalirika, koma nthawi yomweyo amapanga zovuta zowonjezera kwa opanga. Wolemba mapulogalamu, choyamba, amasamala za code yake: zomangamanga, khalidwe, machitidwe, kukongola - osati momwe zidzagwirira ntchito ku Kubernetes ndi momwe mungayesere ndikuzikonza pambuyo posintha ngakhale pang'ono. Chifukwa chake, ndizachilengedwenso kuti zida za Kubernetes zikupangidwa mwachangu, zomwe zimathandiza kuthana ndi mavuto aopanga "akale" kwambiri ndikuwalola kuyang'ana kwambiri.

Ndemangayi imapereka chidziwitso chachidule cha zida zina zomwe zimapangitsa moyo kukhala wosavuta kwa wopanga mapulogalamu omwe code yake imayenda mu pod'ax ya gulu la Kubernetes.

Othandizira osavuta

Kubectl-debug

  • Mfundo yofunika kuikumbukira: onjezani chidebe chanu ku Pod ndikuwona zomwe zimachitika mmenemo.
  • GitHub.
  • Ziwerengero zazifupi za GH: 715 nyenyezi, 54 kuchita, 9 opereka.
  • Chiyankhulo: Pitani.
  • License: Apache License 2.0.

Pulagi iyi ya kubectl imakupatsani mwayi wopanga chidebe chowonjezera mkati mwa pod yachidwi, yomwe imagawana malo a mayina ndi zotengera zina. Mmenemo mukhoza kuthetsa ntchito ya pod: yang'anani maukonde, mvetserani kuchuluka kwa maukonde, chitani ndondomeko ya chidwi, ndi zina zotero.

Mukhozanso kusinthana kwa ndondomeko chidebe ndi kuthamanga chroot /proc/PID/root - izi zitha kukhala zabwino kwambiri mukafuna kupeza chipolopolo cha mizu mu chidebe chomwe chimayikidwa mu chiwonetsero securityContext.runAs.

Chidacho ndi chosavuta komanso chothandiza, kotero chikhoza kukhala chothandiza kwa aliyense wopanga mapulogalamu. Tinalemba zambiri za izo mu nkhani yapadera.

telepresence

  • Mfundo yofunika kuikumbukira: kusamutsa ntchito kuti kompyuta. Konzani ndikuwongolera kwanuko.
  • webusaiti; GitHub.
  • Ziwerengero zazifupi za GH: 2131 nyenyezi, 2712 amachita, 33 othandizira.
  • Chiyankhulo: Python.
  • License: Apache License 2.0.

Lingaliro la snap-in iyi ndikuyambitsa chidebe chokhala ndi pulogalamuyo pamakompyuta am'deralo ndikuyimira magalimoto onse kuchokera pagulu kupita komweko ndi kumbuyo. Njira iyi imakupatsani mwayi wopanga kwanuko ndikungosintha mafayilo mu IDE yomwe mumakonda: zotsatira zake zizipezeka nthawi yomweyo.

Ubwino wothamangira kwanuko ndikusavuta kwa zosintha ndi zotsatira zanthawi yomweyo, kutha kuthetsa vutoli mwachizolowezi. Choyipa chake ndikuti chimafuna kuthamanga kwa kulumikizana, komwe kumawonekera makamaka mukamagwira ntchito ndi RPS yokwera komanso magalimoto. Kuphatikiza apo, Telepresence ili ndi zovuta pakukweza voliyumu pa Windows, zomwe zitha kukhala zolepheretsa kwa opanga omwe azolowera OS iyi.

Tagawana kale zomwe takumana nazo pogwiritsa ntchito Telepresence apa.

Ksync

  • Mfundo yofunika kuikumbukira: pafupifupi kulunzanitsa nthawi yomweyo kwa code ndi chidebe chomwe chili pagulu.
  • GitHub.
  • Ziwerengero zazifupi za GH: 555 nyenyezi, 362 kuchita, 11 opereka.
  • Chiyankhulo: Pitani.
  • License: Apache License 2.0.

Ntchitoyi imakulolani kuti mulunzanitse zomwe zili mu bukhu lapafupi ndi chikwatu cha chidebe chomwe chili mgululi. Chida choterocho ndi chabwino kwa omanga m'zinenero zolembera, omwe vuto lawo lalikulu ndikupereka code ku chidebe chothamanga. Ksync idapangidwa kuti ichepetse mutuwu.

Pamene anayambitsa kamodzi ndi lamulo ksync init DaemonSet imapangidwa mgulu, yomwe imagwiritsidwa ntchito kuyang'anira momwe mafayilo amachitidwe a chidebe chosankhidwa. Pa kompyuta yake yakwanuko, woyambitsa amayendetsa lamulo ksync watch, yomwe imayang'anira masinthidwe ndikuyendetsa kulunzanitsa, yomwe imagwirizanitsa mwachindunji mafayilo ndi masango.

Chotsalira ndikulangiza ksync zomwe zikugwirizana ndi chiyani. Mwachitsanzo, lamulo ili:

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

...apanga wowonera dzina lake myprojectyomwe idzafufuza poto yokhala ndi chizindikiro app=backend ndi kuyesa kulunzanitsa chikwatu chapafupi /home/user/myproject/ ndi catalog /var/www/myproject/ pa chidebe anaitanidwa php.

Mavuto ndi zolemba pa ksync kuchokera pazomwe takumana nazo:

  • Iyenera kugwiritsidwa ntchito pamagulu amagulu a Kubernetes overlay2 ngati dalaivala yosungirako Docker. Zothandizira sizigwira ntchito ndi zina zilizonse.
  • Mukamagwiritsa ntchito Windows ngati kasitomala OS, wowonera mafayilo sangagwire ntchito moyenera. Vutoli lidawonedwa pogwira ntchito ndi maulalo akulu - okhala ndi mafayilo ambiri okhala ndi zikwatu. Tinalenga nkhani yoyenera mu pulojekiti yogwirizanitsa, koma palibe kupita patsogolo pa izo (kuyambira kumayambiriro kwa July).
  • Gwiritsani ntchito fayilo .stignore kuti mutchule njira kapena mafayilo omwe safunikira kulunzanitsidwa (mwachitsanzo, akalozera app/cache ΠΈ .git).
  • Mwachikhazikitso, ksync imayambiranso chidebe chilichonse mafayilo akasintha. Kwa Node.js izi ndizosavuta, koma kwa PHP ndizosafunikira. Ndikwabwino kuzimitsa opcache ndikugwiritsa ntchito mbendera --reload=false.
  • Zosinthazi zitha kukonzedwa nthawi zonse $HOME/.ksync/ksync.yaml.

Sikwashi

  • Mfundo yofunika kuikumbukira: debug process molunjika pagulu.
  • GitHub.
  • Ziwerengero zazifupi za GH: 1154 nyenyezi, 279 amachita, 23 opereka.
  • Chiyankhulo: Pitani.
  • License: Apache License 2.0.

Chida ichi chapangidwa kuti chizitha kukonza zolakwika m'ma pod. Zomwe zimagwiritsidwa ntchito ndizosavuta ndipo zimakulolani kuti musankhe debugger yomwe mukufuna (Onani pansipa) ndi namespace + pod, munjira yomwe muyenera kulowererapo. Zothandizidwa pano:

  • delve - kwa mapulogalamu a Go;
  • GDB - kudzera pa chandamale chakutali + kutumiza padoko;
  • Kutumiza kwa doko la JDWP kuti muchepetse mapulogalamu a Java.

Kumbali ya IDE, chithandizo chimapezeka mu VScode (pogwiritsa ntchito kukulitsa), komabe, mapulani azaka zamakono (2019) akuphatikizapo Eclipse ndi Intellij.

Kuti muthane ndi vuto, Squash imayendetsa chidebe chamwayi pamagawo amagulu, chifukwa chake muyenera kudziwa kaye zomwe zimatha. mode otetezeka kupewa mavuto achitetezo.

Mayankho athunthu

Tiyeni tipitirire ku zida zankhondo zolemera - mapulojekiti "akuluakulu" opangidwa kuti akwaniritse zosowa zambiri za opanga.

NB: Pamndandandawu, zachidziwikire, pali malo ogwiritsira ntchito Open Source werf (omwe poyamba ankadziwika kuti dapp). Komabe, talemba kale ndikulankhula za izo kangapo, choncho tinaganiza kuti tisaphatikizepo mu ndemanga. Kwa iwo omwe akufuna kudziwa zambiri za kuthekera kwake, timalimbikitsa kuwerenga / kumvera lipotilo "werf ndiye chida chathu cha CI / CD ku Kubernetes".

DevSpace

  • Mfundo yofunika kuikumbukira: kwa iwo omwe akufuna kuyamba kugwira ntchito ku Kubernetes, koma sakufuna kulowa mkati mwa nkhalango yake.
  • GitHub.
  • Ziwerengero zazifupi za GH: Nyenyezi za 630, 1912 amachita, 13 othandizira.
  • Chiyankhulo: Pitani.
  • License: Apache License 2.0.

Yankho lochokera ku kampani ya dzina lomwelo, lomwe limapereka magulu oyendetsedwa ndi Kubernetes pakukula kwamagulu. Ntchitoyi idapangidwira magulu azamalonda, koma imagwira ntchito bwino ndi ena aliwonse.

Poyendetsa lamulo devspace init m'ndandanda wa polojekiti mudzaperekedwa (mogwirizana):

  • sankhani gulu la Kubernetes lomwe likugwira ntchito,
  • kugwiritsa ntchito zomwe zilipo Dockerfile (kapena kupanga chatsopano) kuti mupange chidebe chochokera pamenepo,
  • sankhani malo osungiramo zithunzi zotengera, ndi zina.

Pambuyo pokonzekera zonsezi, mukhoza kuyamba chitukuko poyendetsa lamulo devspace dev. Idzamanga chidebecho, ndikuyiyika kumalo osungirako, kutulutsa zotumizidwa kumagulu ndikuyamba kutumiza ndi kulumikiza chidebecho ndi bukhu lapafupi.

Mukasankha, mudzapemphedwa kuti musamutsire terminal ku chidebe. Simuyenera kukana, chifukwa kwenikweni chidebecho chimayamba ndi lamulo la kugona, ndipo kuyesa kwenikweni ntchitoyo iyenera kukhazikitsidwa pamanja.

Pomaliza, gulu devspace deploy imatulutsa pulogalamuyo ndi zomangamanga zomwe zimagwirizanitsidwa ndi gululo, pambuyo pake zonse zimayamba kugwira ntchito molimbana.

Zosintha zonse za polojekiti zimasungidwa mufayilo devspace.yaml. Kuphatikiza pa zosintha zachitukuko, mutha kupezanso kufotokozera kwazomwe zilimo, zofanana ndi mawonekedwe a Kubernetes, osavuta kwambiri.

Zida zopangira mapulogalamu omwe akuyendetsa Kubernetes
Zomangamanga ndi magawo akulu ogwirira ntchito ndi DevSpace

Kuonjezera apo, n'zosavuta kuwonjezera chigawo chodziwikiratu (mwachitsanzo, MySQL DBMS) kapena tchati cha Helm ku polojekitiyi. Werengani zambiri mu zolemba - sizovuta.

Skaffold

  • webusaiti; GitHub.
  • Ziwerengero zazifupi za GH: 7423 nyenyezi, 4173 amachita, 136 othandizira.
  • Chiyankhulo: Pitani.
  • License: Apache License 2.0.

Chida ichi chochokera ku Google chimati chimakwaniritsa zosowa zonse za wopanga mapulogalamu omwe code yake idzayenda pagulu la Kubernetes. Kuyamba kugwiritsa ntchito sikophweka monga devspace: palibe kuyanjana, kuzindikira zilankhulo ndi kupanga zokha Dockerfile sangakupatseni pano.

Komabe, ngati izi sizikuwopsyezani, izi ndi zomwe Skaffold amakulolani kuchita:

  • Tsatani gwero lakusintha.
  • Lumikizani ndi chidebe chapodo ngati sichikufuna kuphatikiza.
  • Sonkhanitsani zotengera zomwe zili ndi code, ngati chilankhulocho chikutanthauziridwa, kapena phatikizani zinthu zakale ndikuzinyamula m'mitsuko.
  • The chifukwa zithunzi ndi basi kufufuzidwa ntchito chotengera-kapangidwe-mayeso.
  • Kuyika ndikuyika zithunzi ku Docker Registry.
  • Tumizani ntchito m'magulu pogwiritsa ntchito kubectl, Helm kapena kustomize.
  • Chitani zotumiza padoko.
  • Kuthetsa zolakwika zolembedwa mu Java, Node.js, Python.

Mayendedwe amitundu yosiyanasiyana amafotokozedwa momveka bwino mu fayilo skaffold.yaml. Kwa pulojekiti, mutha kufotokozeranso mbiri zingapo momwe mungasinthire pang'ono kapena kusintha magawo a msonkhano ndi kutumiza. Mwachitsanzo, pa chitukuko, tchulani chithunzi choyambira chomwe chili choyenera kwa wopanga, komanso pakupanga ndi kupanga - chochepa (+ gwiritsani ntchito securityContext zotengera kapena kutanthauziranso gulu lomwe ntchitoyo idzatumizidwa).

Zotengera za docker zitha kumangidwa kwanuko kapena kutali: mkati Google Cloud Build kapena m'gulu pogwiritsa ntchito Kaniko. Bazel ndi Jib Maven/Gradle amathandizidwanso. Pakulemba ma tag, Skaffold imathandizira njira zambiri: ndi git commit hash, tsiku/nthawi, sha256-sum of sources, etc.

Payokha, ndikofunikira kuzindikira kuthekera koyesa zotengera. Zomwe zanenedwa kale zoyesa-chotengera-chimake zimapereka njira zotsimikizira izi:

  • Kupereka malamulo mu chidebe chokhala ndi zizindikiro zotuluka ndikuyang'ana zomwe zatuluka mu lamulolo.
  • Kuyang'ana kupezeka kwa mafayilo mu chidebe ndikufananiza zomwe zafotokozedwa.
  • Kuwongolera zomwe zili mufayilo pogwiritsa ntchito mawu okhazikika.
  • Kutsimikizira metadata yazithunzi (ENV, ENTRYPOINT, VOLUMES ndi zina zotero.).
  • Kuyang'ana kugwirizana kwa layisensi.

Kulunzanitsa mafayilo ndi chidebe sikuchitika m'njira yabwino kwambiri: Skaffold amangopanga zosungidwa ndi magwero, amazikopera ndikuzimasula mumtsuko (phula liyenera kuyikidwa). Chifukwa chake, ngati ntchito yanu yayikulu ndikugwirizanitsa ma code, ndibwino kuyang'ana yankho lapadera (ksync).

Zida zopangira mapulogalamu omwe akuyendetsa Kubernetes
Magawo akuluakulu a ntchito ya Skaffold

Mwambiri, chidacho sichikulolani kuti mumvetsetse mawonekedwe a Kubernetes ndipo mulibe kulumikizana kulikonse, chifukwa chake zitha kuwoneka zovuta kuzidziwa. Koma uwu ndi mwayi wake - ufulu wochitapo kanthu.

Garden

  • webusaiti; GitHub.
  • Ziwerengero zazifupi za GH: 1063 nyenyezi, 1927 achita, 17 othandizira.
  • Chiyankhulo: TypeScript (ikukonzekera kugawa pulojekitiyi m'zigawo zingapo, zina zomwe zidzakhala mu Go, ndikupanganso SDK yopanga zowonjezera mu TypeScript/JavaScript ndi Go).
  • License: Apache License 2.0.

Monga Skaffold, Garden ikufuna kusinthiratu njira zoperekera ma code ku K8s cluster. Kuti muchite izi, choyamba muyenera kufotokoza kapangidwe ka polojekiti mu fayilo ya YAML, kenako ndikuyendetsa lamulo garden dev. Adzachita matsenga onse:

  • Sungani zotengera zomwe zili ndi magawo osiyanasiyana a polojekiti.
  • Imayesa kuphatikiza ndi kuyesa mayunitsi, ngati afotokozedwa.
  • Kutulutsa zigawo zonse za polojekiti ku cluster.
  • Ngati code source isintha, idzayambitsanso payipi yonse.

Cholinga chachikulu chogwiritsira ntchito chida ichi ndikugawana gulu lakutali ndi gulu lachitukuko. Pankhaniyi, ngati zina mwazomangamanga ndi kuyesa njira zachitika kale, izi zidzafulumizitsa kwambiri ndondomeko yonseyi, popeza Garden adzatha kugwiritsa ntchito zotsatira zosungidwa.

Gawo la polojekiti likhoza kukhala chidebe, chotengera cha Maven, tchati cha Helm, chiwonetsero cha kubectl apply kapena ntchito ya OpenFaaS. Kuphatikiza apo, ma module aliwonse amatha kukokedwa kuchokera kumalo akutali a Git. Ma module atha kufotokozera ntchito, ntchito, ndi mayeso kapena ayi. Ntchito ndi ntchito zimatha kukhala ndi zodalira, kotero mutha kudziwa momwe mungayendetsere ntchito inayake ndikukonzekera kukhazikitsidwa kwa ntchito ndi mayeso.

Garden imapatsa wogwiritsa ntchito dashboard yokongola (yomwe ili mkati dziko loyesera), yomwe imasonyeza graph ya polojekiti: zigawo, ndondomeko ya msonkhano, kuchitidwa kwa ntchito ndi mayesero, kugwirizana kwawo ndi kudalira. Pomwe mu msakatuli, mutha kuwona zipika za magawo onse a projekiti ndikuwona zomwe gawo lina limatulutsa kudzera pa HTTP (ngati, ndithudi, gwero la ingress likulengezedwa).

Zida zopangira mapulogalamu omwe akuyendetsa Kubernetes
Gulu la Garden

Chida ichi chilinso ndi mawonekedwe owonjezera otentha, omwe amangogwirizanitsa kusintha kwa script ndi chidebe chomwe chili mgululi, kufulumizitsa kwambiri ntchito yochotsa zolakwika. Garden ali ndi zabwino zolemba ndipo osati zoipa zitsanzo, kukulolani kuti muzolowere msanga ndikuyamba kugwiritsa ntchito. Mwa njira, posachedwapa ife lofalitsidwa kumasulira nkhani kuchokera kwa olemba ake.

Pomaliza

Zachidziwikire, izi mndandanda wa zida zopangira ndi kukonza zolakwika ku Kubernetes sizimangokhala. Pali zina zambiri zothandiza komanso zothandiza zomwe zili zoyenera, ngati si nkhani yosiyana, ndiye kutchulapo. Tiuzeni zomwe mumagwiritsa ntchito, mavuto omwe mudakumana nawo komanso momwe mudawathetsera!

PS

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga