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.

Bitrix, Kubernetes, Ceph - kusakaniza kwakukulu?

Ndikuuzani momwe tingakhalire njira yothetsera zonsezi.

Tiyeni tipite!

Southbridge ku Chelyabinsk ndi Bitrix ku Kubernetes

Msonkhanowo unachitika pa Epulo 18 ku Chelyabinsk. Mutha kuwerenga za misonkhano yathu pa Timepad ndi kuyang'ana YouTube.

Ngati mukufuna kubwera kwa ife ndi lipoti kapena ngati womvera - kulandiridwa, lembani kwa [imelo ndiotetezedwa] ndi pa Telegram t.me/vadikisakanov.

Lipoti langa

Southbridge ku Chelyabinsk ndi Bitrix ku Kubernetes

Zithunzi

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:

Ndikupangira kumvetsera.

Kupanga yankho lanu kuchokera kwa wogwiritsa ntchito serkyron pa Habre.
Ndinapeza zambiri chisankho chotero.

Aaand ... kwenikweni, ndizo zonse.

Ndikukuchenjezani, sitinayang'ane mtundu wa mayankho pamalumikizidwe omwe ali pamwambapa :)
Mwa njira, pokonzekera yankho lathu, ndinayankhula ndi Alexander Serbul, ndiye kuti lipoti lake linali lisanawonekere, kotero muzithunzi zanga pali chinthu "Bitrix sagwiritsa ntchito Kubernetes."

Koma pali kale zithunzi zambiri zopangidwa kale za Docker zoyendetsa Bitrix ku Docker: https://hub.docker.com/search?q=bitrix&type=image

Kodi izi ndizokwanira kupanga yankho lathunthu la Bitrix ku Kubernetes?
Ayi. Pali mavuto ambiri omwe akuyenera kuthetsedwa.

Kodi mavuto ndi Bitrix ku Kubernetes ndi ati?

Choyamba, zithunzi zopangidwa kale kuchokera ku Dockerhub sizoyenera Kubernetes

Ngati tikufuna kupanga kamangidwe ka ma microservices (ndipo ku Kubernetes timachita nthawi zambiri), tiyenera kulekanitsa ntchito yathu ya Kubernetes m'mitsuko ndikupangitsa kuti chidebe chilichonse chigwire ntchito yaying'ono (ndikuchita bwino). Chifukwa chiyani m'modzi yekha? Mwachidule, chosavuta chimakhala chodalirika.
Kuti mumve zambiri, onani nkhaniyi ndi kanema, chonde: https://habr.com/ru/company/southbridge/blog/426637/

Zithunzi za Docker ku Dockerhub zimamangidwa pa mfundo zonse-mu-modzi, kotero tinkayenera kupanga njinga yathu komanso kupanga zithunzi kuyambira pachiyambi.

Chachiwiri - nambala yatsamba imasinthidwa kuchokera pagulu la admin

Tidapanga gawo latsopano patsambalo - nambalayo idasinthidwa (chilolezo chokhala ndi dzina la gawo latsopanolo chidawonjezedwa).

Ngati mudasintha mawonekedwe a gawo kuchokera pagulu la admin, code idasintha.

Kubernetes "mwachisawawa" sangathe kugwira ntchito ndi izi; zotengera ziyenera kukhala zopanda malire.

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).

Southbridge ku Chelyabinsk ndi Bitrix ku Kubernetes

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.

Tinapanga chithunzi choterocho.

Zimaphatikizapo nginx, apache/php-fpm (ikhoza kusankhidwa pomanga), msmtp potumiza makalata, ndi cron.

Mukasonkhanitsa chithunzicho, ma code onse a tsambalo amakopera ku / app directory (kupatulapo mbali zomwe tidzasunthira kumalo osungirako omwe amagawana nawo).

Microservices, ntchito

zida za akazi:

  • Chidebe chokhala ndi nginx + chidebe apache/php-fpm + msmtp
  • Sizinagwire ntchito kusuntha msmtp mu microservice yosiyana, Bitrix wayamba kukwiya kuti sangathe kutumiza makalata mwachindunji.
  • Chidebe chilichonse chili ndi codebase yathunthu.
  • Kuletsa kusintha ma code muzotengera.

cron pansi:

  • chidebe chokhala ndi apache, php, cron
  • wathunthu code maziko ophatikizidwa
  • kuletsa kusintha ma code mu makontena

onjezerani pansi:

  • nginx chidebe + apache/php-fpm chidebe + msmtp
  • Palibe choletsa kusintha ma code muzotengera

kusungirako gawo

Bitrix cache yosungirako

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:

Southbridge ku Chelyabinsk ndi Bitrix ku Kubernetes

Ndipo zikuwoneka motere:

Southbridge ku Chelyabinsk ndi Bitrix ku Kubernetes

Zimakuthandizani kuti muyike cookie yomwe imazindikiritsa woyang'anira webusayiti ndikuloleza Kubernetes kutumiza kuchuluka kwa anthu pamayendedwe okweza.

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.

Mwachidule, zikuwoneka ngati izi

$ helm upgrade --install project .helm --set image=registrygitlab.local/k8s/bitrix -f .helm/values.yaml --wait --timeout 300 --debug --tiller-namespace=production

Helm imakupatsaninso mwayi kuti mupange "zopanda" rollback ngati mwadzidzidzi chinachake sichikuyenda bwino panthawi yotumizidwa. Ndibwino kuti musakhale ndi mantha "konzani kachidindo kudzera pa ftp chifukwa prod inagwa," koma Kubernetes amangochita izi, popanda nthawi yopuma.

Ikani

Inde, ndife mafani a Gitlab & Gitlab CI, timagwiritsa ntchito :)
Podzipereka ku Gitlab kumalo osungirako polojekiti, Gitlab imayambitsa payipi yomwe imatumiza mtundu watsopano wa chilengedwe.

Miyendo:

  • kumanga (kumanga chithunzi chatsopano cha Docker)
  • kuyesa (kuyesa)
  • kuyeretsa (kuchotsa malo oyesera)
  • kukankha (timatumiza ku registry ya Docker)
  • deploy (titumiza ku Kubernetes kudzera pa Helm).

Southbridge ku Chelyabinsk ndi Bitrix ku Kubernetes

Hurray, zakonzeka, tiyeni tigwiritse ntchito!
Chabwino, kapena funsani mafunso ngati alipo.

Ndiye tinatani

Kuchokera pamalingaliro aukadaulo:

  • dockerized Bitrix;
  • "dulani" Bitrix muzotengera, chilichonse chimagwira ntchito zochepa;
  • adapeza zotengera zopanda malire;
  • anathetsa vuto ndi kukonzanso Bitrix ku Kubernetes;
  • ntchito zonse Bitrix anapitiriza kugwira ntchito (pafupifupi onse);
  • Tidagwira ntchito yotumiza ku Kubernetes ndikubweza pakati pamitundu.

Kuchokera pazamalonda:

  • kulekerera zolakwika;
  • Zida za Kubernetes (kuphatikizana kosavuta ndi Gitlab CI, kutumiza kosasunthika, ndi zina);
  • mawu achinsinsi achinsinsi (akuwoneka okha kwa iwo omwe apatsidwa mwayi wogwiritsa ntchito mawu achinsinsi);
  • Ndikosavuta kupanga malo owonjezera (achitukuko, mayeso, ndi zina) mkati mwachitukuko chimodzi.

Source: www.habr.com

Kuwonjezera ndemanga