I-Southbridge e-Chelyabinsk kanye ne-Bitrix e-Kubernetes

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!

I-Southbridge e-Chelyabinsk kanye ne-Bitrix e-Kubernetes

Umhlangano wenziwa ngo-Ephreli 18 eChelyabinsk. Ungafunda mayelana nemihlangano yethu ku Iphedi yesikhathi futhi ubheke I-YouTube.

Uma ufuna ukuza kithi nombiko noma njengomlaleli - wamukelekile, bhalela [i-imeyili ivikelwe] nakuTelegram t.me/vadikisakanov.

Umbiko wami

I-Southbridge e-Chelyabinsk kanye ne-Bitrix e-Kubernetes

Amaslayidi

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 i-serkyron kuHabre.
Kutholwe okwengeziwe isinqumo esinjalo.

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: https://hub.docker.com/search?q=bitrix&type=image

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: https://habr.com/ru/company/southbridge/blog/426637/

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

I-Southbridge e-Chelyabinsk kanye ne-Bitrix e-Kubernetes

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.

Senze isithombe esinjalo.

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 https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
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:

I-Southbridge e-Chelyabinsk kanye ne-Bitrix e-Kubernetes

Futhi kubonakala kanje:

I-Southbridge e-Chelyabinsk kanye ne-Bitrix e-Kubernetes

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

I-Southbridge e-Chelyabinsk kanye ne-Bitrix e-Kubernetes

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

Engeza amazwana