Southbridge ku Chelyabinsk ndi Bitrix ku Kubernetes
Misonkhano ya oyang'anira dongosolo la Sysadminka ikuchitika ku Chelyabinsk, ndipo pamapeto pake ndidapereka lipoti la yankho lathu pakuyendetsa ntchito pa 1C-Bitrix ku Kubernetes.
Yankho "Bitrix ku Kubernetes, mtundu wa Southbridge 1.0"
Ndilankhula za yankho lathu mumtundu wa "dummies in Kubernetes", monga zidachitikira pamsonkhano. Koma ndikuganiza kuti mukudziwa mawu akuti Bitrix, Docker, Kubernetes, Ceph osachepera pamlingo wa zolemba pa Wikipedia.
Zomwe zapangidwa kale za Bitrix ku Kubernetes?
Pali chidziwitso chochepa pa intaneti yonse yokhudzana ndi magwiridwe antchito a Bitrix ku Kubernetes.
Ndangopeza zida izi:
Lipoti la Alexander Serbul, 1C-Bitrix, ndi Anton Tuzlukov ochokera ku Qsoft:
Chifukwa: Chidebe chilichonse (pod) chomwe chili mgululi chimayendetsa gawo limodzi la magalimoto. Ngati musintha kachidindo mu chidebe chimodzi chokha (pod), ndiye kuti codeyo idzakhala yosiyana m'magulu osiyanasiyana, malowa adzagwira ntchito mosiyana, ndipo mitundu yosiyanasiyana ya tsamba idzawonetsedwa kwa ogwiritsa ntchito osiyanasiyana. Inu simungakhoze kukhala moyo wotero.
Chachitatu - muyenera kuthetsa vutoli ndi kutumiza
Ngati tili ndi seva ya monolith ndi imodzi "yachikale", chilichonse ndi chosavuta: timayika ma code atsopano, kusuntha nkhokwe, kusintha magalimoto ku mtundu watsopano wa code. Kusintha kumachitika nthawi yomweyo.
Ngati tili ndi tsamba ku Kubernetes, kudula ma microservices, pali zotengera zambiri zomwe zili ndi code - o. Muyenera kusonkhanitsa zotengera ndi mtundu watsopano wa code, kutulutsa m'malo mwa akale, kusamutsa nkhokwe molondola, ndikuchita izi mosazindikira ndi alendo. Mwamwayi, Kubernetes amatithandiza ndi izi, kuthandizira gulu lonse la mitundu yosiyanasiyana yotumizira.
Chachinayi - muyenera kuthetsa nkhani yosungira ma statics
Ngati malo anu ali "okha" 10 gigabytes ndipo mumawayika kwathunthu m'mitsuko, mudzakhala ndi zida za gigabyte 10 zomwe zimatenga nthawi zonse.
Muyenera kusunga mbali "zolemera kwambiri" za tsambalo kunja kwa zotengera, ndipo funso limadzuka la momwe mungachitire izi molondola.
Ndi chiyani chomwe chikusoweka pa yankho lathu?
Khodi yonse ya Bitrix sinagawidwe kukhala ma microfunctions/microservices (kotero kuti kulembetsa kukhale kosiyana, gawo la sitolo yapaintaneti ndi losiyana, etc.). Timasunga ma code onse mu chidebe chilichonse.
Sitimasunganso nkhokwe ku Kubernetes (Ndidakhazikitsabe mayankho ndi database ku Kubernetes pazotukuka, koma osati kupanga).
Zidzawonekerabe kwa oyang'anira webusayiti kuti tsambalo likuyenda Kubernetes. Ntchito ya "kufufuza kachitidwe" sikugwira ntchito bwino; kuti musinthe kachidindo watsambalo kuchokera pagulu la admin, muyenera kudina kaye batani "Ndikufuna kusintha code".
Mavuto adziwika, kufunikira kogwiritsa ntchito ma microservices kwatsimikiziridwa, cholinga chake ndi chodziwikiratu - kupeza njira yogwirira ntchito yogwiritsira ntchito Bitrix ku Kubernetes, kusunga mphamvu zonse za Bitrix ndi ubwino wa Kubernetes. Tiyeni tiyambe kukhazikitsa.
zomangamanga
Pali ma pods ambiri "ogwira ntchito" okhala ndi seva yapaintaneti (ogwira ntchito).
Mmodzi pansi ndi ntchito za cron (imodzi yokha ndiyofunikira).
Kusintha kumodzi kosintha kachidindo katsamba kuchokera pagulu la admin (komanso imodzi yokha ndiyofunikira).
Timayankha mafunso:
Kosungirako magawo?
Kusunga posungira?
Momwe mungasungire ma statics, osayika ma gigabytes a statics mugulu la muli?
Kodi database idzagwira ntchito bwanji?
Chithunzi cha Docker
Timayamba ndikupanga chithunzi cha Docker.
Njira yabwino ndiyakuti tili ndi chithunzi chimodzi chapadziko lonse lapansi, pamaziko ake timapeza ma pod a antchito, ma pod okhala ndi Crontasks, ndikukweza ma pod.
Chinthu chinanso chofunikira: timasunga mawu achinsinsi olumikizirana ndi chilichonse, kuchokera ku database kupita ku imelo, mu zinsinsi za kubernetes. Timapeza bonasi: mapasiwedi amawonekera kwa iwo okha omwe timawapatsa mwayi wopeza zinsinsi, osati kwa aliyense amene ali ndi mwayi wopeza ma code a polojekiti.
Kusungirako kwa ma statics
Mutha kugwiritsa ntchito chilichonse: ceph, nfs (koma sitikupangira ma nfs kupanga), kusungirako maukonde kuchokera kwa opereka mtambo, ndi zina zambiri.
Zosungirako ziyenera kulumikizidwa muzotengera ku / upload/ chikwatu cha tsambalo ndi zolemba zina zokhala ndi zokhazikika.
Nawonsomba
Kuti zikhale zosavuta, timalimbikitsa kusamutsa nkhokwe kunja kwa Kubernetes. Maziko a Kubernetes ndi ntchito yosiyana; ipangitsa dongosololi kukhala lovuta kwambiri.
Kusungirako gawo
Timagwiritsa ntchito memcached :)
Imasamalira kusungirako gawo bwino, imaphatikizidwa, ndipo imathandizidwa "natively" monga session.save_path mu php. Dongosolo loterolo layesedwa nthawi zambiri muzomangamanga zachikale za monolithic, pomwe tidamanga masango okhala ndi ma seva ambiri. Kutumiza timagwiritsa ntchito helm.
$ helm install stable/memcached --name session
php.ini - apa chithunzichi chili ndi zoikamo zosungira magawo mu memcached
Tidagwiritsa ntchito Zosintha Zachilengedwe kuti tipereke zambiri za omwe ali ndi memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Izi zimakupatsani mwayi wogwiritsa ntchito kachidindo komweko mu dev, siteji, kuyesa, malo opangira (mayina osungidwa omwe ali mkati mwake adzakhala osiyana, chifukwa chake tifunika kupititsa dzina lapadera la magawo kudera lililonse).
Bitrix cache yosungirako
Tikufuna kusungirako kosalakwitsa komwe ma pod onse amatha kulemba ndikuwerenga.
Timagwiritsanso ntchito memcached.
Yankho ili likulimbikitsidwa ndi Bitrix palokha.
$ helm install stable/memcached --name cache
bitrix/.settings_extra.php - apa mu Bitrix imatchulidwa kumene cache imasungidwa
Timagwiritsanso ntchito Zosintha Zachilengedwe.
Krontaski
Pali njira zosiyanasiyana zoyendetsera Crontasks ku Kubernetes.
kupatukana kosiyana ndi poto yoyendetsa Crontasks
cronjob pochita crontasks (ngati iyi ndi pulogalamu yapaintaneti - yokhala ndi wget https://$host$cronjobname, kapena kubectl exec mkati mwa imodzi mwazinthu zantchito, ndi zina zotero)
etc.
Mutha kutsutsa zolondola kwambiri, koma pakadali pano tidasankha njira "yogawa padera ndi ma pod a Crontasks"
Momwe zimachitikira:
onjezani ntchito za cron kudzera pa ConfigMap kapena kudzera pa fayilo ya config/addcron
nthawi ina timakhazikitsa chidebe chofanana ndi poto wa antchito + kulola kuchitidwa kwa korona mmenemo.
khodi yomweyi imagwiritsidwa ntchito, chifukwa cha kugwirizana, msonkhano wa chidebe ndi wosavuta
Zabwino zomwe timapeza:
tili ndi ma Crontask omwe amagwira ntchito m'malo ofanana ndi omwe amapanga (docker)
Ma Crontasks safunikira "kulembedwanso" kwa Kubernetes, amagwira ntchito mofananamo komanso pama code omwewo monga kale.
cron zitha kuwonjezeredwa ndi mamembala onse amagulu omwe ali ndi ufulu wodzipereka kunthambi yopanga, osati ma admins okha
Southbridge K8SDeploy module ndikusintha ma code kuchokera pagulu la admin
Tinkanena za kukweza pansi?
Momwe mungawongolere magalimoto kumeneko?
Hurray, tinalemba gawo la izi mu PHP :) Iyi ndi gawo laling'ono la Bitrix. Sichinapezeke poyera, koma tikukonzekera kutsegula.
Module imayikidwa ngati gawo lokhazikika mu Bitrix:
Zosintha zikamalizidwa, muyenera dinani git push, kusintha kwa code kudzatumizidwa ku git, ndiye dongosolo lidzapanga chithunzi ndi mtundu watsopano wa code ndi "kutulutsa" kudutsa gululo, m'malo mwa ma pod akale. .
Inde, ndizovuta pang'ono, koma nthawi yomweyo timasunga kamangidwe ka microservice ndipo osachotsera ogwiritsa ntchito Bitrix mwayi wawo wokonda kukonza code kuchokera pagulu la admin. Pamapeto pake, iyi ndi njira; mutha kuthana ndi vuto losintha ma code mwanjira ina.
Tchati cha helm
Kuti mupange mapulogalamu pa Kubernetes, timagwiritsa ntchito Helm package manager.
Kwa yankho lathu la Bitrix ku Kubernetes, Sergey Bondarev, woyang'anira dongosolo lathu, adalemba tchati chapadera cha Helm.
Imamanga ogwira ntchito, kukweza, ma cron pods, imakonza ma ingress, mautumiki, ndikusintha zosintha kuchokera ku zinsinsi za Kubernetes kupita ku ma pod.
Timasunga kachidindo ku Gitlab, ndipo timayendetsanso Helm build kuchokera ku Gitlab.