Imihlangano yomqondisi wesistimu ye-Sysadminka iyenzeka e-Chelyabinsk, futhi ekugcineni nginikeze umbiko ngesixazululo sethu sokuqalisa izinhlelo zokusebenza ku-1C-Bitrix e-Kubernetes.
I-Bitrix, Kubernetes, Ceph - ingxube enhle?
Ngizokutshela ukuthi sihlanganisa kanjani isixazululo esisebenzayo kukho konke lokhu.
Hamba!
Umhlangano wenziwa ngo-Ephreli 18 eChelyabinsk. Ungafunda mayelana nemihlangano yethu ku
Uma ufuna ukuza kithi nombiko noma njengomlaleli - wamukelekile, bhalela [i-imeyili ivikelwe] nakuTelegram t.me/vadikisakanov.
Umbiko wami
Isixazululo "Bitrix in Kubernetes, version Southbridge 1.0"
Ngizokhuluma ngesixazululo sethu ngefomethi ethi “for dummies in Kubernetes”, njengoba kwenziwa emhlanganweni. Kepha ngicabanga ukuthi uyawazi amagama athi Bitrix, Docker, Kubernetes, Ceph okungenani ezingeni lezindatshana ku-Wikipedia.
Yini esele yenziwe nge-Bitrix e-Kubernetes?
Kunolwazi oluncane kakhulu kuyo yonke i-inthanethi mayelana nokusebenza kwezinhlelo zokusebenza ze-Bitrix ku-Kubernetes.
Ngithole lezi zinsiza kuphela:
Umbiko ka-Alexander Serbul, 1C-Bitrix, kanye no-Anton Tuzlukov wase-Qsoft:
Ngincoma ukuyilalela.
Ukuthuthukisa isixazululo sakho kusuka kumsebenzisi
Kutholwe okwengeziwe
Aaand... empeleni, yilokho kuphela.
Ngiyakuxwayisa, asizange sihlole ikhwalithi yezixazululo kuzixhumanisi ezingenhla :)
Ngendlela, lapho ngilungiselela isisombululo sethu, ngakhuluma no-Alexander Serbul, ngakho-ke umbiko wakhe wawungakaveli, ngakho-ke kumaslayidi ami kukhona into ethi "I-Bitrix ayisebenzisi i-Kubernetes."
Kepha sekuvele kunezithombe eziningi ze-Docker esezenziwe ngomumo zokusebenzisa i-Bitrix ku-Docker:
Ingabe lokhu kwanele ukudala isisombululo esiphelele se-Bitrix ku-Kubernetes?
Cha. Kunenqwaba yezinkinga ezidinga ukuxazululwa.
Yiziphi izinkinga nge-Bitrix e-Kubernetes?
Okokuqala, izithombe ezenziwe ngomumo ezivela ku-Dockerhub aziyilungele i-Kubernetes
Uma sifuna ukwakha i-microservices architecture (futhi ku-Kubernetes sivame ukwenza), sidinga ukuhlukanisa uhlelo lwethu lokusebenza lwe-Kubernetes ezitsheni futhi senze isiqukathi ngasinye senze umsebenzi owodwa omncane (futhi siwenze kahle). Kungani eyodwa kuphela? Ngamafuphi, kulula kunokwethenjelwa.
Ukuze ucacise kabanzi, sicela ubuke lesi sihloko nevidiyo:
Izithombe ze-Docker e-Dockerhub zakhiwe ngokuyinhloko kumgomo othi konke-kukodwa, ngakho-ke bekusadingeka senze ibhayisikili lethu futhi sidale nezithombe kusukela ekuqaleni.
Okwesibili - ikhodi yesayithi ihlelwa kusuka kuphaneli yomqondisi
Senze isigaba esisha kusayithi - ikhodi ibuyekeziwe (inkomba enegama lesigaba esisha yengezwe).
Uma ushintshe izici zengxenye kusuka kuphaneli yomqondisi, ikhodi ishintshile.
I-Kubernetes “ngokuzenzakalelayo” ayikwazi ukusebenza nalokhu; iziqukathi kumele zingabi nasimo.
Isizathu: Isiqukathi ngasinye (i-pod) ku-cluster sicubungula ingxenye yethrafikhi kuphela. Uma ushintsha ikhodi esitsheni esisodwa kuphela (i-pod), khona-ke ikhodi izohluka kuma-pods ahlukene, isayithi lizosebenza ngokuhlukile, futhi izinguqulo ezahlukene zesayithi zizoboniswa kubasebenzisi abahlukene. Awukwazi ukuphila kanjalo.
Okwesithathu - udinga ukuxazulula inkinga ngokuthumela
Uma sineseva ye-monolith kanye neyodwa "yakudala", yonke into ilula kakhulu: sisebenzisa isisekelo sekhodi esisha, sithutha isizindalwazi, sishintshe ithrafikhi siye enguqulweni entsha yekhodi. Ukushintsha kwenzeka ngokushesha.
Uma sinesiza ku-Kubernetes, sinqunywa kuma-microservices, kuneziqukathi eziningi ezinekhodi - oh. Udinga ukuqoqa iziqukathi ezinenguqulo entsha yekhodi, uzikhiphe esikhundleni sezindala, uthuthe kahle isizindalwazi, futhi wenze lokhu ngaphandle kokubonwa yizivakashi. Ngenhlanhla, i-Kubernetes iyasisiza ngalokhu, isekela inqwaba yezinhlobo ezahlukene zokuthunyelwa.
Okwesine - udinga ukuxazulula indaba yokugcina ama-statics
Uma isayithi lakho lingamagigabhayithi angu-10 “kuphela” futhi ulisebenzisa ngokuphelele ezitsheni, uzogcina uneziqukathi ezingu-10 zamagigabhayithi ezithatha unomphela ukuthunyelwa.
Udinga ukugcina izingxenye "ezisinda kakhulu" zesayithi ngaphandle kweziqukathi, futhi kuphakama umbuzo wokuthi ungakwenza kanjani lokhu ngendlela efanele.
Yini engekho esixazululweni sethu?
Ikhodi yonke ye-Bitrix ayihlukaniswanga ngama-microfuncs/microservices (ukuze ukubhalisa kuhlukaniswe, imojula yesitolo se-inthanethi ihlukene, njll.). Sigcina yonke isisekelo sekhodi esitsheni ngasinye.
Futhi asigcini imininingwane egciniwe ku-Kubernetes (ngisasebenzisa izixazululo ngesizindalwazi ku-Kubernetes ngendawo yokuthuthukiswa, kodwa hhayi ezokukhiqiza).
Kusazobonakala kubaphathi besayithi ukuthi isiza sisebenza ku-Kubernetes. Umsebenzi othi “ukuhlola isistimu” awusebenzi ngendlela efanele; ukuze uhlele ikhodi yesayithi kuphaneli yomqondisi, kufanele uqale uchofoze inkinobho ethi “Ngifuna ukuhlela ikhodi”.
Izinkinga zikhonjiwe, isidingo sokuqalisa ama-microservices sinqunyiwe, umgomo ucacile - ukuthola uhlelo lokusebenza lokuqhuba izinhlelo zokusebenza ku-Bitrix ku-Kubernetes, ukulondoloza kokubili amandla e-Bitrix kanye nezinzuzo ze-Kubernetes. Ake siqale ukuqaliswa.
bokwakha
Kunama-pods amaningi "asebenzayo" aneseva yewebhu (abasebenzi).
Eyodwa ngaphansi enemisebenzi ye-cron (kudingeka eyodwa kuphela).
Ukuthuthukiswa okukodwa kokuhlela ikhodi yesayithi kusuka kuphaneli yomqondisi (kudingeka eyodwa kuphela).
Siphendula imibuzo:
- Ungagcina kuphi izikhathi?
- Ungagcina kuphi inqolobane?
- Kuphi ukugcina ama-statics, hhayi ukubeka ama-gigabytes we-statics kuqoqo leziqukathi?
- Ngabe isizindalwazi sizosebenza kanjani?
Isithombe se-Docker
Siqala ngokwakha isithombe se-Docker.
Inketho ekahle ukuthi sinesithombe esisodwa somhlaba wonke, ngesisekelo saso sithola ama-pods abasebenzi, ama-pods ane-Crontasks, futhi sithuthukise ama-pods.
Kuhlanganisa i-nginx, i-apache/php-fpm (ingakhethwa ngesikhathi sokwakha), i-msmtp yokuthumela i-imeyili, ne-cron.
Lapho uhlanganisa isithombe, yonke isisekelo sekhodi yesayithi sikopishwa kunkomba yohlelo lokusebenza (ngaphandle kwalezo zingxenye esizozithuthela endaweni ehlukile yokwabelana).
Microservices, amasevisi
izici zabasebenzi:
- Isitsha esine-nginx + container apache/php-fpm + msmtp
- Akuphumelelanga ukuhambisa i-msmtp ku-microservice ehlukile, i-Bitrix isiqala ukuthukuthela ukuthi ayikwazi ukuthumela imeyili ngokuqondile.
- Isiqukathi ngasinye sine-codebase ephelele.
- Ukwenqatshelwa ekushintsheni ikhodi ezitsheni.
cron ngaphansi:
- isitsha esine-apache, php, cron
- isisekelo sekhodi esiphelele sifakiwe
- ukuvimbela ukushintsha ikhodi ezitsheni
thuthukisa ngaphansi:
- nginx container + apache/php-fpm container + msmtp
- Akukho ukuvinjelwa ekushintsheni ikhodi ezitsheni
isitoreji sesikhathi
Isitoreji senqolobane ye-Bitrix
Enye into ebalulekile: sigcina amaphasiwedi okuxhuma kuyo yonke into, kusukela kusizindalwazi kuya kumeyili, kuzimfihlo ze-kubernetes. Sithola ibhonasi: amaphasiwedi abonakala kuphela kulabo esibanika ukufinyelela ezimfihlo, hhayi kuwo wonke umuntu okwazi ukufinyelela isisekelo sekhodi yephrojekthi.
Isitoreji sama-statics
Ungasebenzisa noma yini: i-ceph, i-nfs (kodwa asincomi ama-nfs ukuze akhiqize), isitoreji senethiwekhi esivela kubahlinzeki bamafu, njll.
Isitoreji sizodinga ukuxhunywa ezitsheni ku-/load/ uhla lwemibhalo lwesayithi nezinye izinkomba ezinokuqukethwe okumile.
Isizindalwazi
Ukwenza kube lula, sincoma ukuthi uhambise isizindalwazi ngaphandle kwe-Kubernetes. Isisekelo esiku-Kubernetes siwumsebenzi ohlukile oyinkimbinkimbi; sizokwenza uhlelo uhlelo lobukhulu oluyinkimbinkimbi kakhulu.
Isitoreji sesikhathi
Sisebenzisa i-memcached :)
Iphatha kahle isitoreji seseshini, ihlanganisiwe, futhi isekelwa "ngokwemvelo" njengeseshini.save_path ku-php. Uhlelo olunjalo luhlolwe izikhathi eziningi ku-architecture yakudala ye-monolithic, lapho sakha amaqoqo ngenani elikhulu lamaseva ewebhu. Ukuze sisetshenziswe sisebenzisa i-helm.
$ helm install stable/memcached --name session
php.ini - lapha isithombe siqukethe izilungiselelo zokugcina izikhathi ku-memcached
Sisebenzise Okuguquguqukayo Kwemvelo ukuze sidlulise idatha mayelana nabasingathi nge-memcached
Lokhu kukuvumela ukuthi usebenzise ikhodi efanayo ku-dev, isiteji, ukuhlolwa, indawo ye-prod (amagama abamba i-memcached kuwo azohluka, ngakho-ke sidinga ukudlulisa igama lomsingathi elihlukile lamaseshini endaweni ngayinye).
Isitoreji senqolobane ye-Bitrix
Sidinga isitoreji esibekezelela amaphutha lapho wonke ama-pod angabhalela futhi afunde kuso.
Siphinde sisebenzisa i-memcached.
Lesi sixazululo sinconywa yi-Bitrix ngokwayo.
$ helm install stable/memcached --name cache
bitrix/.settings_extra.php - lapha ku-Bitrix kucacisiwe lapho inqolobane igcinwa khona
Siphinde sisebenzisa i-Environmental Variables.
I-Krontaski
Kunezindlela ezahlukahlukene zokusebenzisa ama-Crontasks ku-Kubernetes.
- ukuthunyelwa okuhlukene nge-pod yokusebenzisa ama-Crontasks
- cronjob yokwenza ama-crontasks (uma lolu kuwuhlelo lokusebenza lwewebhu - olune-wget
https://$host$cronjobname , noma i-kubectl exec ngaphakathi kwe-pod yesisebenzi, njll.) - njll
Ungakwazi ukuphikisana mayelana nelungile kakhulu, kodwa kulokhu sikhethe inketho "ukusabalalisa okuhlukile ngama-pods we-Crontasks"
Kwenziwe kanjani:
- engeza imisebenzi ye-cron nge-ConfigMap noma ngefayela le-config/addcron
- kwesinye isikhathi sethula isitsha esifana ne-pod yesisebenzi + sivumela ukwenziwa kwemisebenzi yomqhele kuso.
- kusetshenziswa isisekelo sekhodi esifanayo, ngenxa yokuhlanganiswa, ukuhlanganiswa kweziqukathi kulula
Okuhle esikutholayo:
- sinamaCrontask asebenzayo endaweni efana nemvelo yonjiniyela (docker)
- Ama-Crontask awadingi “ukubhalwa kabusha” ku-Kubernetes, asebenza ngendlela efanayo nangesisekelo sekhodi esifanayo nangaphambili.
- imisebenzi ye-cron ingangezwa yiwo wonke amalungu eqembu anamalungelo azibophezele egatsheni lokukhiqiza, hhayi nje abaphathi
Imojula ye-Southbridge K8SDeploy kanye nokuhlelwa kwekhodi kusuka kuphaneli yokuphatha
Besikhuluma ngokuthuthukiswa ngaphansi?
Indlela yokuqondisa ithrafikhi lapho?
Hurray, sibhale imojuli yalokhu ku-PHP :) Lena imojuli encane yakudala ye-Bitrix. Ayikatholakali esidlangalaleni, kodwa sihlela ukuyivula.
Imojula ifakwe njengemojula evamile ku-Bitrix:
Futhi kubonakala kanje:
Ikuvumela ukuthi usethe ikhukhi elikhomba umlawuli wesayithi futhi ivumele i-Kubernetes ukuthi ithumele ithrafikhi ku-pod yokuthuthukisa.
Lapho izinguquko seziqediwe, udinga ukuchofoza i-git push, izinguquko zekhodi zizothunyelwa ku-git, bese uhlelo luzokwakha isithombe ngenguqulo entsha yekhodi futhi "luyikhiphe" kulo lonke iqoqo, esikhundleni sama-pods amadala. .
Yebo, iwudondolo, kodwa ngesikhathi esifanayo sigcina ukwakheka kwe-microservice futhi singabaphuci abasebenzisi be-Bitrix ithuba labo abalithandayo lokulungisa ikhodi kusuka kuphaneli yomqondisi. Ekugcineni, lena inketho; ungakwazi ukuxazulula inkinga yokuhlela ikhodi ngendlela ehlukile.
Ishadi lesigqoko
Ukwakha izinhlelo zokusebenza ku-Kubernetes, sivamise ukusebenzisa umphathi wephakheji ye-Helm.
Ngesixazululo sethu se-Bitrix ku-Kubernetes, u-Sergey Bondarev, umlawuli wethu oholayo, wabhala ishadi elikhethekile le-Helm.
Yakha abasebenzi, ithuthukise, i-cron pods, ilungise ukungena, izinsizakalo, idlulise okuguquguqukayo kusuka ezimfihlo ze-Kubernetes kuya kuma-pods.
Sigcina ikhodi ku-Gitlab, futhi siphinde sisebenzise isakhiwo se-Helm esivela ku-Gitlab.
Ngamafuphi, kubukeka kanjena
$ helm upgrade --install project .helm --set image=registrygitlab.local/k8s/bitrix -f .helm/values.yaml --wait --timeout 300 --debug --tiller-namespace=production
I-Helm iphinde ikuvumela ukuthi wenze ukubuyisela emuva "okungenamthungo" uma kungazelelwe kukhona okungahambi kahle ngesikhathi sokuthunyelwa. Kuhle uma ungathukile "lungisa ikhodi nge-ftp ngoba i-prod iwile," kodwa i-Kubernetes ikwenza ngokuzenzakalelayo, futhi ngaphandle kwesikhathi sokuphumula.
Sebenzisa
Yebo, singabalandeli be-Gitlab & Gitlab CI, siyisebenzisa :)
Lapho izibophezela ku-Gitlab endaweni yokugcina iphrojekthi, i-Gitlab yethula ipayipi elithumela inguqulo entsha yemvelo.
Izigaba:
- ukwakha (ukwakha isithombe esisha se-Docker)
- test (testing)
- hlanza (ukukhipha indawo yokuhlola)
- push (siyithumela ebhukwini le-Docker)
- hambisa (sithumela isicelo ku-Kubernetes nge-Helm).
Hurray, sekulungile, asikusebenzise!
Hhayi-ke, noma buza imibuzo uma ikhona.
Pho senzeni
Ngokombono wezobuchwepheshe:
- i-dockerized Bitrix;
- "sika" i-Bitrix ezitsheni, ngayinye eyenza imisebenzi encane;
- bathole isimo esingenasimo seziqukathi;
- uxazulule inkinga ngokubuyekeza i-Bitrix ku-Kubernetes;
- yonke imisebenzi ye-Bitrix yaqhubeka nokusebenza (cishe yonke);
- Sisebenzele ukuthunyelwa ku-Kubernetes nokuhlehlisa phakathi kwezinguqulo.
Ngokombono webhizinisi:
- ukubekezelelana kwamaphutha;
- Amathuluzi e-Kubernetes (ukuhlanganiswa okulula ne-Gitlab CI, ukuthunyelwa okungenamthungo, njll);
- amaphasiwedi ayimfihlo (abonakala kuphela kulabo abanikezwe ngokuqondile ukufinyelela kumagama-mfihlo);
- Kulungele ukudala izindawo ezengeziwe (zokuthuthukiswa, izivivinyo, njll.) ngaphakathi kwengqalasizinda eyodwa.
Source: www.habr.com