Southbridge any Chelyabinsk sy Bitrix any Kubernetes

Ny fihaonan'ny mpitantana ny rafitra Sysadminka dia atao ao Chelyabinsk, ary tamin'ny farany dia nanao tatitra momba ny vahaolana ho an'ny fampiharana amin'ny 1C-Bitrix ao Kubernetes aho.

Bitrix, Kubernetes, Ceph - mifangaro tsara?

Holazaiko aminao ny fomba nanangonay vahaolana miasa amin'izany rehetra izany.

Andao handeha!

Southbridge any Chelyabinsk sy Bitrix any Kubernetes

Ny fihaonana dia natao ny 18 aprily tao Chelyabinsk. Azonao atao ny mamaky momba ny fihaonanay amin'ny Timepad ary jereo YOUTUBE.

Raha te-hanatona anay amin'ny tatitra na ho mpihaino ianao - tongasoa, manorata any [email voaaro] ary ao amin'ny Telegram t.me/vadimisakanov.

Ny tatitro

Southbridge any Chelyabinsk sy Bitrix any Kubernetes

-tsary

Vahaolana "Bitrix in Kubernetes, version Southbridge 1.0"

Hiresaka momba ny vahaolanay amin'ny endrika “ho an'ny dummies amin'ny Kubernetes” aho, toy ny natao tamin'ny fihaonana. Saingy heveriko fa fantatrao ny teny hoe Bitrix, Docker, Kubernetes, Ceph farafaharatsiny amin'ny haavon'ny lahatsoratra ao amin'ny Wikipedia.

Inona no efa vita momba ny Bitrix ao amin'ny Kubernetes?

Tsy dia misy fampahalalana firy ao amin'ny Internet manontolo momba ny fiasan'ny rindranasa Bitrix ao amin'ny Kubernetes.
ireto fitaovana ireto ihany no hitako:

Tatitra nataon'i Alexander Serbul, 1C-Bitrix, ary Anton Tuzlukov avy amin'ny Qsoft:

Manoro hevitra ny hihaino azy aho.

Mamolavola vahaolana manokana avy amin'ny mpampiasa serkyron amin'ny Habré.
Nahita bebe kokoa fanapahan-kevitra toy izany.

Aaand... raha ny marina, izay ihany.

Mampitandrina anao aho, tsy nanamarina ny kalitaon'ny vahaolana amin'ny rohy etsy ambony izahay :)
Teny an-dalana, rehefa nanomana ny vahaolanay aho dia niresaka tamin'i Alexander Serbul, avy eo dia tsy mbola niseho ny tatitra nataony, noho izany dia misy singa iray ao amin'ny slides "Bitrix tsy mampiasa Kubernetes."

Saingy efa misy sary Docker efa vonona ho an'ny fampandehanana Bitrix ao amin'ny Docker: https://hub.docker.com/search?q=bitrix&type=image

Ampy ve izany hamoronana vahaolana feno ho an'ny Bitrix ao amin'ny Kubernetes?
Tsia. Betsaka ny olana mila vahana.

Inona no olana amin'ny Bitrix ao amin'ny Kubernetes?

Voalohany, tsy mety amin'ny Kubernetes ny sary efa vita avy amin'ny Dockerhub

Raha te-hanorina maritrano microservices isika (ary ao amin'ny Kubernetes no ataontsika matetika), dia mila manasaraka ny fampiharana Kubernetes ho ao anaty kaontenera ary asaivo manao asa kely iray ny kaontenera tsirairay (ary manao izany tsara). Nahoana no iray ihany? Raha fintinina, ny tsotra kokoa no azo antoka kokoa.
Raha te hahalala bebe kokoa, jereo ity lahatsoratra sy video ity, azafady: https://habr.com/ru/company/southbridge/blog/426637/

Ny sarin'ny Docker ao amin'ny Dockerhub dia miorina amin'ny foto-kevitra tokana, noho izany dia mbola tsy maintsy nanao ny bisikiletanay manokana izahay ary na dia namorona sary hatrany am-boalohany aza.

Faharoa - ny kaody tranonkala dia novaina avy amin'ny tontonana admin

Namorona fizarana vaovao tao amin'ny tranokala izahay - nohavaozina ny kaody (nampiana lahatahiry misy ny anaran'ny fizarana vaovao).

Raha nanova ny fananan'ny singa iray avy amin'ny tontonana admin ianao dia niova ny kaody.

Tsy afaka miasa amin'izany ny Kubernetes "amin'ny alàlan'ny default"; tsy maintsy tsy misy fanjakana ny kaontenera.

Antony: Ny kaontenera tsirairay (pod) ao amin'ny cluster dia tsy manao afa-tsy ampahany amin'ny fifamoivoizana. Raha manova ny kaody ao anaty fitoeran-javatra iray ihany ianao (pod), dia ho hafa ny kaody amin'ny pods samihafa, ny tranokala dia hiasa amin'ny fomba hafa, ary ny dikan-teny samihafa amin'ny tranokala dia aseho amin'ny mpampiasa samihafa. Tsy afaka miaina toy izany ianao.

Fahatelo - mila mamaha ny olana amin'ny fametrahana ianao

Raha manana mpizara monolith sy "classic" iray isika, dia tsotra ny zava-drehetra: mametraka fototra code vaovao, mifindra monina ny angon-drakitra, mamadika ny fifamoivoizana amin'ny dikan-kaody vaovao. Mitranga eo no ho eo ny fifindrana.
Raha manana tranokala ao amin'ny Kubernetes izahay, tapaho ho microservices, be dia be ny kaontenera misy kaody - oh. Mila manangona kaontenera miaraka amin'ny dikan-kaody vaovao ianao, manodina azy ireo fa tsy ny taloha, mamindra tsara ny angon-drakitra, ary tsara indrindra ny manao izany tsy voamariky ny mpitsidika. Soa ihany fa manampy antsika amin'izany i Kubernetes, manohana karazana fametrahana maro samihafa.

Fahefatra - mila mamaha ny olana momba ny fitehirizana statics ianao

Raha 10 gigabytes "ihany" ny tranokalanao ary apetrakao amin'ny kaontenera manontolo izany, dia hiafara amin'ny kaontenera 10 gigabyte izay maharitra mandrakizay ny fametrahana azy.
Mila mitahiry ny faritra "mavesatra indrindra" amin'ny tranokala ivelan'ny kaontenera ianao, ary mipoitra ny fanontaniana momba ny fomba hanaovana izany tsara.

Inona no tsy ampy amin'ny vahaolana?

Ny kaody Bitrix manontolo dia tsy mizara ho microfunctions/microservices (mba misaraka ny fisoratana anarana, misaraka ny maody fivarotana an-tserasera, sns.). Tehirizinay ao anaty fitoeran-javatra tsirairay ny fototry ny code manontolo.

Tsy mitahiry ny angon-drakitra ao amin'ny Kubernetes ihany koa izahay (mbola nametraka vahaolana miaraka amin'ny angona ao amin'ny Kubernetes aho ho an'ny tontolo fampandrosoana, fa tsy ho an'ny famokarana).

Mbola ho tsikaritra amin'ny mpitantana ny tranokala fa mandeha amin'ny Kubernetes ny tranokala. Ny fiasan'ny "system check" dia tsy mandeha tsara; raha hanova ny kaody tranokala avy amin'ny tontonana admin dia tsy maintsy tsindrio aloha ny bokotra "Te-hanova ny code".

Voafaritra ny olana, voafaritra ny filana fampiharana microservices, mazava ny tanjona - hahazoana rafitra miasa amin'ny fampandehanana ny rindranasa amin'ny Bitrix ao amin'ny Kubernetes, mitahiry ny fahaiza-manaon'ny Bitrix sy ny tombontsoan'ny Kubernetes. Andao hanomboka ny fampiharana.

maritrano

Betsaka ny pods "miasa" miaraka amin'ny mpizara tranonkala (mpiasa).
Ny iray eo ambanin'ny asa cron (iray ihany no ilaina).
Fanavaozana iray ho an'ny fanovana ny kaody tranonkala avy amin'ny tontonana admin (iray ihany koa no ilaina).

Southbridge any Chelyabinsk sy Bitrix any Kubernetes

Mamaly fanontaniana izahay:

  • Aiza no hitehirizana fivoriana?
  • Aiza no hitahirizana ny cache?
  • Aiza no hitehirizana statics, fa tsy hametrahana gigabytes statika ao anaty kaontenera maromaro?
  • Ahoana no fiasan'ny database?

Sary Docker

Manomboka amin'ny fananganana sary Docker isika.

Ny safidy tsara indrindra dia ny manana sary iray manerana izao rehetra izao, miorina amin'izany dia mahazo pods mpiasa, pods miaraka amin'ny Crontasks, ary pod upgrade.

Nanao sary toy izany izahay.

Anisan'izany ny nginx, apache/php-fpm (azo voafidy mandritra ny fananganana), msmtp amin'ny fandefasana mailaka, ary cron.

Rehefa manangona ny sary, dia adika ao amin'ny lahatahiry / app ny fototry ny kaody manontolo amin'ny tranokala (afa-tsy ireo ampahany izay halehantsika any amin'ny fitahirizana misaraka).

Microservices, serivisy

mpiasa mpiasa:

  • Container misy nginx + container apache/php-fpm + msmtp
  • Tsy nahomby ny famindrana msmtp ho microservice manokana, manomboka tezitra i Bitrix fa tsy afaka mandefa mailaka mivantana
  • Ny kaontenera tsirairay dia manana codebase feno.
  • Fandrarana ny fanovana kaody ao anaty kaontenera.

cron eo ambany:

  • container misy apache, php, cron
  • feno kaody fototra tafiditra
  • fandrarana ny fanovana kaody ao anaty kaontenera

fanavaozana eo ambany:

  • nginx container + apache/php-fpm container + msmtp
  • Tsy misy fandrarana ny fanovana kaody ao anaty kaontenera

fitehirizana fivoriana

Bitrix cache fitehirizana

Zava-dehibe iray hafa: mitahiry tenimiafina izahay mba hifandraisana amin'ny zava-drehetra, manomboka amin'ny angon-drakitra mankany amin'ny mailaka, amin'ny tsiambaratelo kubernetes. Mahazo tombony izahay: ny tenimiafina dia tsy hita afa-tsy amin'ireo izay omenay fahafahana miditra amin'ny tsiambaratelo, fa tsy ho an'ny olona rehetra izay afaka miditra amin'ny fototry ny fehezan-dalàna.

Fitehirizana ho an'ny statika

Afaka mampiasa na inona na inona ianao: ceph, nfs (saingy tsy manoro ny nfs izahay amin'ny famokarana), fitahirizana tambajotra avy amin'ny mpamatsy rahona, sns.

Ny fitahirizana dia mila ampifandraisina amin'ny kaontenera amin'ny lahatahiry /upload/ an'ny tranokala sy ny lahatahiry hafa misy votoaty static.

banky angona

Ho fanatsorana dia manoro hevitra izahay hamindra ny angon-drakitra ivelan'ny Kubernetes. Ny fototra ao amin'ny Kubernetes dia asa saro-takarina misaraka; izany dia hahatonga ny drafitra ho saro-pady kokoa.

Fitehirizana fivoriana

Mampiasa memcached izahay :)

Izy io dia mitantana tsara ny fitehirizana session, mivondrona ary tohanana "natively" ho session.save_path ao amin'ny php. Ny rafitra toy izany dia nosedraina imbetsaka tao amin'ny maritrano monolithic klasika, rehefa nanangana clusters misy mpizara tranonkala marobe izahay. Ho an'ny fametrahana dia mampiasa helm izahay.

$ helm install stable/memcached --name session

php.ini - eto ny sary dia misy fitehirizana ny fotoam-pivoriana amin'ny memcached

Nampiasa Environment Variables izahay mba handefasana angona momba ny mpampiantrano miaraka amin'ny memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Izany dia ahafahanao mampiasa kaody mitovy amin'ny dev, sehatra, fitsapana, prod environments (tsy mitovy ny anaran'ny mpampiantrano memcached ao aminy, noho izany dia mila mandefa anarana mpampiantrano tokana ho an'ny sessions amin'ny tontolo tsirairay).
Bitrix cache fitehirizana

Mila fitahirizana mahazaka fahadisoana izay azon'ny pod rehetra hanoratana sy vakiana.

Mampiasa memcached koa izahay.
Ity vahaolana ity dia atolotry ny Bitrix mihitsy.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - eto amin'ny Bitrix dia voafaritra hoe aiza no misy ny cache

Mampiasa Environment Variables koa izahay.

Krontaski

Misy fomba fiasa samihafa amin'ny fampandehanana Crontasks ao amin'ny Kubernetes.

  • fanapariahana misaraka miaraka amin'ny pod iray hampandehanana ny Crontasks
  • cronjob amin'ny fanatanterahana crontasks (raha fampiharana tranonkala ity - miaraka amin'ny wget https://$host$cronjobname, na kubectl exec ao anatin'ny iray amin'ireo pods mpiasa, sns.)
  • etc.

Azonao atao ny miady hevitra momba ny tena marina, fa tamin'ity tranga ity dia nisafidy ny safidy "fametrahana misaraka miaraka amin'ny pods ho an'ny Crontasks" izahay.

Ahoana ny fomba anaovana azy:

  • ampio asa cron amin'ny alàlan'ny ConfigMap na amin'ny alàlan'ny rakitra config/addcron
  • Amin'ny tranga iray dia mametraka fitoeran-javatra mitovy amin'ny pod mpiasa izahay + mamela ny fanatanterahana ny asa satroboninahitra ao anatiny
  • ny fototry ny kaody mitovy ihany no ampiasaina, noho ny fampiraisana, ny fivorian'ny container dia tsotra

Inona no soa azontsika:

  • manana Crontasks miasa amin'ny tontolo mitovy amin'ny tontolon'ny mpamorona (docker) izahay
  • Tsy mila "voasoratana" ho an'ny Kubernetes ny crontasks, miasa amin'ny endrika mitovy sy amin'ny fototra fehezan-dalàna mitovy amin'ny teo aloha.
  • Ny asan'ny cron dia azon'ny mpikambana rehetra ao amin'ny ekipa manana zo manolo-tena amin'ny sampana famokarana, fa tsy admin fotsiny

Southbridge K8SDeploy Module sy fanitsiana kaody avy amin'ny tontonana admin

Niresaka momba ny fanavaozana eo ambany isika?
Ahoana ny fitantanana ny fifamoivoizana any?
Hurray, nanoratra module ho an'ity izahay amin'ny PHP :) Module mahazatra kely ho an'ny Bitrix ity. Mbola tsy hita ampahibemaso izany fa mikasa ny hanokatra izany izahay.
Ny module dia napetraka toy ny module mahazatra ao amin'ny Bitrix:

Southbridge any Chelyabinsk sy Bitrix any Kubernetes

Ary toa izao:

Southbridge any Chelyabinsk sy Bitrix any Kubernetes

Mamela anao hametraka cookie izay mamaritra ny mpitantana ny tranokala izany ary mamela an'i Kubernetes handefa fifamoivoizana amin'ny pod upgrade.

Rehefa vita ny fanovana dia mila manindry git push ianao, halefa any amin'ny git ny fanovana kaody, avy eo ny rafitra dia hanangana sary miaraka amin'ny dikan-teny vaovao amin'ny kaody ary "mamoaka" azy manerana ny cluster, manolo ny pods taloha .

Eny, somary manjavozavo izany, saingy amin'ny fotoana iray ihany dia mitazona ny maritrano microservice izahay ary tsy manaisotra ny mpampiasa Bitrix ny fotoana tiany hanitsiana ny kaody avy amin'ny tontonana admin. Amin'ny farany, safidy io; azonao atao ny mamaha ny olan'ny fanovana ny code amin'ny fomba hafa.

Sarin'ny familiana

Mba hamoronana rindranasa amin'ny Kubernetes dia matetika mampiasa ny mpitantana fonosana Helm izahay.
Ho an'ny vahaolana Bitrix ao Kubernetes, Sergey Bondarev, mpitantana ny rafitra lehibe, dia nanoratra tabilao Helm manokana.

Izy io dia manangana mpiasa, ugrade, cron pods, manamboatra ny fidirana, serivisy, ary mamindra ny fari-piadidiana avy amin'ny tsiambaratelo Kubernetes mankany amin'ny pods.

Mitahiry ny kaody ao amin'ny Gitlab izahay, ary mitantana ny fananganana Helm avy amin'ny Gitlab ihany koa.

Raha fintinina dia toa izao

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

Ny Helm koa dia ahafahanao manao famerenana "tsy misy dikany" raha misy zavatra tsy mety tampoka mandritra ny fametrahana. Mahafinaritra rehefa tsy mikorontana ianao "amboary ny kaody amin'ny alàlan'ny ftp satria nianjera ny prod", fa ny Kubernetes dia manao izany ho azy, ary tsy misy fiatoana.

miisa

Eny, mpankafy ny Gitlab & Gitlab CI izahay, mampiasa izany izahay :)
Rehefa manolo-tena amin'ny Gitlab amin'ny fitahirizana tetikasa, Gitlab dia mamoaka fantsona iray izay mametraka dikan-teny vaovao momba ny tontolo iainana.

dingana:

  • manangana (manorina sary Docker vaovao)
  • fitsapana (fitsapana)
  • manadio (manala ny tontolo iainana fitsapana)
  • manosika (alefanay any amin'ny rejisitra Docker)
  • deploy (apetrakay amin'ny Kubernetes amin'ny alàlan'ny Helm ny fampiharana).

Southbridge any Chelyabinsk sy Bitrix any Kubernetes

Hira, efa vonona, andao hampihatra izany!
Eny, na mametraha fanontaniana raha misy.

Dia inona no nataonay

Avy amin'ny lafiny teknika:

  • Dockerized Bitrix;
  • "manapaka" Bitrix ho fitoeran-javatra, izay samy manao asa faran'izay kely indrindra;
  • nahatratra ny toetry ny kaontenera tsy misy fanjakana;
  • namaha ny olana amin'ny fanavaozana ny Bitrix amin'ny Kubernetes;
  • ny asa rehetra Bitrix dia nitohy niasa (saika ny rehetra);
  • Niasa tamin'ny fametrahana ho an'ny Kubernetes izahay ary famerenana ny dikan-teny.

Avy amin'ny fomba fijery ara-barotra:

  • fandeferana fahadisoana;
  • Fitaovana Kubernetes (fampidirana mora amin'ny Gitlab CI, fametrahana tsy misy olana, sns);
  • tenimiafina miafina (tsy hita afa-tsy ho an'ireo izay nomena fahafahana miditra mivantana amin'ny tenimiafina);
  • Tsara ny mamorona tontolo fanampiny (ho fampandrosoana, fitsapana, sns.) ao anatin'ny fotodrafitrasa tokana.

Source: www.habr.com

Add a comment