Southbridge e Chelyabinsk le Bitrix e Kubernetes

Likopano tsa batsamaisi ba tsamaiso ea Sysadminka li ntse li etsahala Chelyabinsk, 'me qetellong ke fane ka tlaleho ka tharollo ea rona bakeng sa ho sebetsa likopo ho 1C-Bitrix ho Kubernetes.

Bitrix, Kubernetes, Ceph - motsoako o motle?

Ke tla u bolella kamoo re kopanyang tharollo e sebetsang ho tsoa ho tsena tsohle.

A re tsamaee!

Southbridge e Chelyabinsk le Bitrix e Kubernetes

Seboka se ile sa tšoaroa ka la 18 April Chelyabinsk. U ka bala ka likopano tsa rona ho Nako mme o shebe YouTube.

Haeba u batla ho tla ho rona ka tlaleho kapa u le momameli - amohela, ngolla [imeile e sirelelitsoe] le ho Telegram t.me/vadikisakanov.

Tlaleho ea ka

Southbridge e Chelyabinsk le Bitrix e Kubernetes

Li-slide

Tharollo "Bitrix ho Kubernetes, phetolelo ea Southbridge 1.0"

Ke tla bua ka tharollo ea rona ka mokhoa oa "for dummies in Kubernetes", joalo ka ha ho entsoe kopanong. Empa ke nahana hore u tseba mantsoe Bitrix, Docker, Kubernetes, Ceph bonyane boemong ba lingoliloeng ho Wikipedia.

Ho se ho entsoe eng ka Bitrix ho Kubernetes?

Ho na le tlhahisoleseling e nyane haholo ho Marang-rang kaofela mabapi le ts'ebetso ea lits'ebetso tsa Bitrix ho Kubernetes.
Ke fumane lisebelisoa tsena feela:

Tlaleho ea Alexander Serbul, 1C-Bitrix, le Anton Tuzlukov ho tloha Qsoft:

Ke khothaletsa ho e mamela.

Ho theha tharollo ea hau ho tsoa ho mosebelisi serkyron ho Habre.
Fumana tse ling qeto e joalo.

Aaand ... ha e le hantle, ke phetho.

Kea u lemosa, ha re so hlahlobe boleng ba tharollo lihokelong tse kaholimo :)
Ka tsela, ha ke lokisetsa tharollo ea rona, ke buile le Alexander Serbul, joale tlaleho ea hae e ne e e-s'o hlahe, kahoo ho li-slide tsa ka ho na le ntho "Bitrix ha e sebelise Kubernetes."

Empa ho se ho na le litšoantšo tse ngata tse lokiselitsoeng tsa Docker bakeng sa ho tsamaisa Bitrix ho Docker: https://hub.docker.com/search?q=bitrix&type=image

Na see se lekane ho theha tharollo e felletseng bakeng sa Bitrix ho Kubernetes?
Che. Ho na le palo e kholo ea mathata a lokelang ho rarolloa.

Mathata a Bitrix ho Kubernetes ke afe?

Ntlha ea pele, litšoantšo tse lokiselitsoeng ho tloha Dockerhub ha lia lokela Kubernetes

Haeba re batla ho aha meralo ea li-microservices ('me ho Kubernetes re tloaetse ho e etsa), re hloka ho arola ts'ebeliso ea rona ea Kubernetes ka lijaneng mme sets'oants'o se seng le se seng se etse mosebetsi o le mong o monyane (le ho o etsa hantle). Hobaneng a le mong feela? Ka bokhutšoanyane, ho bonolo haholoanyane ho ka tšeptjoa haholoanyane.
Ho bua ka ho hlaka haholoanyane, shebella sengoloa sena le video, ka kopo: https://habr.com/ru/company/southbridge/blog/426637/

Litšoantšo tsa Docker ho Dockerhub li hahiloe haholo-holo holim'a molao-motheo oa tsohle-in-one, kahoo re ne re ntse re tlameha ho iketsetsa baesekele ea rona esita le ho etsa litšoantšo ho tloha qalong.

Ea bobeli - khoutu ea sebaka e hlophisitsoe ho tsoa ho phanele ea admin

Re thehile karolo e ncha setšeng - khoutu e nchafalitsoe (sengolo se nang le lebitso la karolo e ncha se kentsoe).

Haeba o fetotse thepa ea karolo ho tsoa ho phanele ea admin, khoutu e fetohile.

Kubernetes "ka ho sa feleng" e ke ke ea sebetsa le sena; lijana li tlameha ho se be le maemo.

Lebaka: Setshelo se seng le se seng (pod) ka har'a sehlopha se sebetsa feela karolo ea sephethephethe. Haeba u fetola khoutu ka setshelo se le seng feela (pod), joale khoutu e tla fapana ka li-pods tse fapaneng, sebaka se tla sebetsa ka tsela e fapaneng, 'me mefuta e fapaneng ea sebaka sa marang-rang e tla bontšoa ho basebelisi ba fapaneng. O ka se phele jwalo.

Ea boraro - o hloka ho rarolla bothata ka ho romelloa

Haeba re na le "monolith" le "server" e le 'ngoe ea "classic", ntho e' ngoe le e 'ngoe e bonolo haholo: re kenya khoutu e ncha, re falla database, re fetole sephethephethe ho mofuta o mocha oa khoutu. Ho fetoha ho etsahala hang-hang.
Haeba re na le sebaka sa marang-rang ho Kubernetes, se khaotsoe ka li-microservices, ho na le lijana tse ngata tse nang le khoutu - oh. U hloka ho bokella lijana tse nang le mofuta o mocha oa khoutu, u li ntše ho fapana le tsa khale, u tsamaise database ka nepo, 'me u etse sena ho sa hlokomeloe ke baeti. Ka lehlohonolo, Kubernetes e re thusa ka sena, e ts'ehetsa bongata ba mefuta e fapaneng ea li-deployments.

Ea bone - o hloka ho rarolla taba ea ho boloka li-statics

Haeba sebaka sa hau sa marang-rang se le "feela" 10 gigabytes 'me u se sebelisa ka ho feletseng ka lijaneng, u tla qetella u e-na le lijana tsa gigabyte tse 10 tse nkang ka ho sa feleng ho sebelisoa.
U hloka ho boloka likarolo tse "boima" tsa sebaka ka ntle ho lijana, 'me ho hlaha potso ea hore na u ka etsa sena joang ka nepo.

Ke eng e haellang tharollong ea rona?

Khoutu eohle ea Bitrix ha e arotsoe ka li-microfuncs / microservices (e le hore ngoliso e arohane, module ea lebenkele la inthanete e arohane, joalo-joalo). Re boloka motheo oa khoutu eohle ka har'a setshelo ka seng.

Hape ha re boloke database ho Kubernetes (ke ne ke ntse ke kenya ts'ebetsong litharollo ka database ea Kubernetes bakeng sa libaka tsa nts'etsopele, empa eseng bakeng sa tlhahiso).

E ntse e tla bonahala ho batsamaisi ba sebaka seo sebaka sa marang-rang se sebetsang ho Kubernetes. Mosebetsi oa "system check" ha o sebetse ka nepo; ho hlophisa khoutu ea sebaka ho tsoa ho phanele ea admin, o tlameha ho tobetsa konopo ea "Ke batla ho hlophisa khoutu".

Mathata a fumanoe, tlhokahalo ea ho kenya ts'ebetsong li-microservices e ikemiselitse, sepheo se hlakile - ho fumana tsamaiso ea ho sebetsa bakeng sa ho sebetsa likopo ho Bitrix ho Kubernetes, ho boloka bokhoni ba Bitrix le melemo ea Kubernetes. Ha re qaleng ts'ebetsong.

mehaho

Ho na le li-pods tse ngata tse "sebetsang" tse nang le seva sa marang-rang (basebetsi).
One under with cron tasks (ho hlokahala e le 'ngoe feela).
Ntlafatso e le 'ngoe bakeng sa ho hlophisa khoutu ea sebaka ho tsoa ho phanele ea admin (hape ke e le' ngoe feela e hlokahalang).

Southbridge e Chelyabinsk le Bitrix e Kubernetes

Re araba lipotso:

  • Hoka boloka linako?
  • Ke hokae moo u ka bolokang cache?
  • Moo u ka bolokang li-statics, eseng ho beha li-gigabytes tsa statics ka har'a sehlopha sa lijana?
  • Database e tla sebetsa joang?

Setšoantšo sa Docker

Re qala ka ho aha setšoantšo sa Docker.

Khetho e nepahetseng ke hore re na le setšoantšo se le seng sa bokahohleng, motheong oa eona re fumana li-pods tsa basebetsi, li-pods tse nang le Crontasks, le li-pods tse ntlafatsang.

Re entse setšoantšo se joalo feela.

E kenyelletsa nginx, apache/php-fpm (e ka khethoa nakong ea kaho), msmtp bakeng sa ho romella mangolo, le cron.

Ha o kopanya setšoantšo, motheo oa khoutu eohle ea sebaka sa marang-rang o kopitsoa ho / app directory (ntle le likarolo tseo re tla li fetisetsa sebakeng se arohaneng se arolelanoang).

Litšebeletso tse nyenyane, litšebeletso

likarolo tsa basebetsi:

  • Setshelo se nang le nginx + setshelo apache/php-fpm + msmtp
  • Ha ea ka ea sebetsa ho tsamaisa msmtp ho microservice e arohaneng, Bitrix o qala ho halefisoa ke hore ha e khone ho romela mangolo ka ho toba.
  • Setshelo se seng le se seng se na le codebase e felletseng.
  • Thibelo ea ho fetola khoutu ka lijaneng.

cron ka tlase:

  • setshelo se nang le apache, php, cron
  • feletseng khoutu motheo kenyelelitsoe
  • thibelo ea ho fetola khoutu ka lijaneng

ntlafatsa tlasa:

  • nginx setshelo + apache/php-fpm setshelo + msmtp
  • Ha ho na thibelo ea ho fetola khoutu ka lijaneng

polokelo ea kopano

Sebaka sa polokelo ea cache ea Bitrix

Ntho e 'ngoe ea bohlokoa: re boloka li-passwords bakeng sa ho hokahanya ntho e' ngoe le e 'ngoe, ho tloha ho database ho ea ho poso, ka liphiri tsa kubernetes. Re fumana bonus: li-passwords li bonahala feela ho bao re ba fang monyetla oa ho fumana liphiri, eseng ho bohle ba khonang ho fumana motheo oa khoutu ea morero.

Ho boloka li-statics

U ka sebelisa eng kapa eng: ceph, nfs (empa ha re khothaletse nfs bakeng sa tlhahiso), polokelo ea marang-rang ho tsoa ho bafani ba maru, joalo-joalo.

Sebaka sa polokelo se tla hloka ho hokahanngoa ka lijaneng ho / upload/ directory ea sebaka sa marang-rang le li-directory tse ling tse nang le litaba tse tsitsitseng.

Sebaka sa polokelo ea litaba

Bakeng sa ho nolofatsa, re khothaletsa ho tsamaisa database ka ntle ho Kubernetes. Motheo oa Kubernetes ke mosebetsi o rarahaneng o arohaneng; e tla etsa hore morero e be taelo ea boholo bo rarahaneng le ho feta.

Polokelo ea nako

Re sebelisa memcached :)

E sebetsana le polokelo ea nako hantle, e kopantsoe, 'me e tšehetsoa "natively" e le session.save_path ho php. Tsamaiso e joalo e 'nile ea lekoa ka makhetlo a mangata mohahong oa khale oa monolithic, ha re haha ​​lihlopha tse nang le palo e kholo ea lisebelisoa tsa marang-rang. Bakeng sa ho tsamaisa re sebelisa helm.

$ helm install stable/memcached --name session

php.ini - mona setšoantšo se na le litlhophiso tsa ho boloka linako ka memcached

Re sebelisitse Liphetoho tsa Tikoloho ho fetisa lintlha tse mabapi le baamoheli ka memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Sena se o lumella ho sebelisa khoutu e ts'oanang sebakeng sa dev, sethala, liteko, prod (mabitso a memcached a ho bona a tla fapana, kahoo re hloka ho fetisa lebitso le ikhethileng la moamoheli bakeng sa mananeo tikolohong ka 'ngoe).
Sebaka sa polokelo ea cache ea Bitrix

Re hloka polokelo e mamellang liphoso eo li-pods tsohle li ka ngollang le ho bala ho tsoa ho tsona.

Re boetse re sebelisa memcached.
Tharollo ena e khothaletsoa ke Bitrix ka boeona.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - mona ho Bitrix e hlalositsoe moo cache e bolokiloeng teng

Re boetse re sebelisa Liphetoho tsa Tikoloho.

Krontaski

Ho na le mekhoa e fapaneng ea ho tsamaisa Crontasks ho Kubernetes.

  • phano e arohaneng ka pod bakeng sa ho tsamaisa Crontasks
  • cronjob bakeng sa ho etsa crontasks (haeba sena e le sesebelisoa sa marang-rang - se nang le wget https://$host$cronjobname, kapa kubectl exec ka hare ho e 'ngoe ea li-pods tsa basebetsi, joalo-joalo)
  • joalo-joalo

O ka ngangisana ka e nepahetseng ka ho fetesisa, empa ntlheng ena re khethile khetho ea "ho arola ka thoko ka li-pods tsa Crontasks"

E etsoa joang:

  • eketsa mesebetsi ea cron ka ConfigMap kapa ka faele ea config/addcron
  • ketsahalong e 'ngoe re qala setshelo se ts'oanang le pod ea basebetsi + lumella ho etsoa ha mesebetsi ea moqhaka ho eona.
  • ho sebelisoa khoutu e tšoanang, ka lebaka la ho kopanya, kopano ea lijana e bonolo

Molemo oo re o fumanang:

  • re na le li-Crontask tse sebetsang tikolohong e ts'oanang le tikoloho ea bahlahisi (docker)
  • Li-Crontask ha li hloke ho "ngolloa hape" bakeng sa Kubernetes, li sebetsa ka mokhoa o ts'oanang le ka mokhoa o ts'oanang oa khoutu joaloka pele.
  • cron tasks e ka eketsoa ke litho tsohle tsa sehlopha tse nang le litokelo tsa boitlamo lekaleng la tlhahiso, eseng feela li-admins

Southbridge K8SDeploy module le khoutu ea ho hlophisa ho tsoa ho phanele ea admin

Re ne re bua ka upgrade under?
Mokhoa oa ho tsamaisa sephethephethe moo?
Hurray, re ngotse mojule oa sena ho PHP :) Ena ke module e nyane ea khale ea Bitrix. Ha e so fumanehe phatlalatsa, empa re rera ho e bula.
Module e kentsoe joalo ka mojule o tloaelehileng ho Bitrix:

Southbridge e Chelyabinsk le Bitrix e Kubernetes

'Me e shebahala tjena:

Southbridge e Chelyabinsk le Bitrix e Kubernetes

E u lumella ho beha cookie e khethollang mookameli oa sebaka mme e lumella Kubernetes ho romela sephethephethe ho pod ea ntlafatso.

Ha liphetoho li phethiloe, o hloka ho tobetsa git push, liphetoho tsa khoutu li tla romelloa ho git, ebe sistimi e tla haha ​​​​sets'oants'o ka mofuta o mocha oa khoutu ebe o e "rola" ho pholletsa le sehlopha, e nkela li-pods tsa khale sebaka. .

E, ke ntho e nyenyane, empa ka nako e ts'oanang re boloka meralo ea microservice mme re se ke ra tlosa basebelisi ba Bitrix monyetla oa bona oo ba o ratang oa ho lokisa khoutu ho tswa ho phanele ea tsamaiso. Qetellong, ena ke khetho; o ka rarolla bothata ba ho hlophisa khoutu ka tsela e fapaneng.

Chate ea helm

Ho aha lits'ebetso ho Kubernetes, hangata re sebelisa mookameli oa sephutheloana sa Helm.
Bakeng sa tharollo ea rona ea Bitrix ho Kubernetes, Sergey Bondarev, motsamaisi oa rona ea ka sehloohong oa tsamaiso, o ngotse chate e khethehileng ea Helm.

E haha ​​​​mosebetsi, e ntlafatsa, cron pods, e lokisa li-ingress, lits'ebeletso, le ho fetisetsa mefuta e fapaneng ho tloha ho liphiri tsa Kubernetes ho ea ho li-pods.

Re boloka khoutu ho Gitlab, hape re tsamaisa Helm build ho tloha Gitlab.

Ka bokhutšoanyane, e shebahala tjena

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

Helm e boetse e u lumella ho etsa "seamless" rollback haeba ka tšohanyetso ho na le ntho e sa tsamaeeng hantle nakong ea ho romelloa. Ho monate ha o sa ts'oenyehe "lokisa khoutu ka ftp hobane prod e oele," empa Kubernetes o e etsa ka bo eona, 'me ntle le nako ea ho theoha.

Tsamaisa

Ee, re balateli ba Gitlab & Gitlab CI, rea e sebelisa :)
Ha e etsa Gitlab sebakeng sa polokelo ea projeke, Gitlab e qala pompo e sebelisang mofuta o mocha oa tikoloho.

Mehato:

  • haha (ho aha setšoantšo se secha sa Docker)
  • teko (teko)
  • hloekisa (ho tlosa tikoloho ea teko)
  • push (re e romella ho ngoliso ea Docker)
  • deploy (re kenya kopo ho Kubernetes ka Helm).

Southbridge e Chelyabinsk le Bitrix e Kubernetes

Hurray, e se e lokile, ha re e kenye ts'ebetsong!
Hantle, kapa botsa lipotso haeba ho na le.

Joale re ile ra etsa’ng

Ho latela pono ea tekheniki:

  • Dockerized Bitrix;
  • "khaola" Bitrix ka lijaneng, tseo e 'ngoe le e 'ngoe ea tsona e etsang bonyane ba mesebetsi;
  • finyelletse boemo bo se nang naha ba linkho;
  • e rarolle bothata ka ho ntlafatsa Bitrix ho Kubernetes;
  • mesebetsi eohle ea Bitrix e ile ea tsoela pele ho sebetsa (hoo e ka bang tsohle);
  • Re sebelitse ho romelloa ho Kubernetes le ho khutlisa lipakeng tsa liphetolelo.

Ho ea ka pono ea khoebo:

  • mamello ea liphoso;
  • Lisebelisoa tsa Kubernetes (ho kopanya habonolo le Gitlab CI, ho tsamaisoa ka seam, joalo-joalo);
  • li-passwords tsa lekunutu (tse bonoang feela ho ba fuoeng monyetla oa ho fumana li-password);
  • Ho loketse ho theha tikoloho e eketsehileng (bakeng sa nts'etsopele, liteko, joalo-joalo) ka har'a sesebelisoa se le seng.

Source: www.habr.com

Eketsa ka tlhaloso