Southbridge na Chelyabinsk na Bitrix na Kubernetes

Sysadminka usoro nchịkwa nzukọ nzukọ na-ewere ọnọdụ na Chelyabinsk, na nke ikpeazụ m nyere akụkọ banyere ngwọta anyị maka ịgba ọsọ ngwa na 1C-Bitrix na Kubernetes.

Bitrix, Kubernetes, Ceph - nnukwu ngwakọta?

Aga m agwa gị otu anyị si ejikọta ihe ngwọta na-arụ ọrụ site na ihe a niile.

Ka anyị gawa!

Southbridge na Chelyabinsk na Bitrix na Kubernetes

Nzukọ ahụ mere n'April 18 na Chelyabinsk. Ị nwere ike ịgụ gbasara nzukọ anyị na Oge mpe mpe akwa ma lee YouTube.

Ọ bụrụ na ịchọrọ ịbịakwute anyị na akụkọ ma ọ bụ dị ka onye na-ege ntị - nabata, degara anyị akwụkwọ ozi [email protected] na na Telegram t.me/vadimisakanov.

Akụkọ m

Southbridge na Chelyabinsk na Bitrix na Kubernetes

Ihe ngosi

Ngwọta "Bitrix na Kubernetes, ụdị Southbridge 1.0"

M ga-ekwu maka ngwọta anyị na usoro "maka dummies na Kubernetes", dị ka e mere na meetup. Mana echere m na ị maara okwu Bitrix, Docker, Kubernetes, Ceph opekata mpe na ọkwa nke akụkọ na Wikipedia.

Kedu ihe emebere maka Bitrix na Kubernetes?

Enwere obere ozi na ịntanetị niile gbasara ọrụ nke ngwa Bitrix na Kubernetes.
Naanị ihe ndị a ka m hụrụ:

Akuko nke Alexander Serbul, 1C-Bitrix na Anton Tuzlukov sitere na Qsoft:

Ana m akwado ige ya ntị.

Ịmepụta ngwọta nke gị site n'aka onye ọrụ serkyron na Habre.
Achọtara ọzọ mkpebi dị otú ahụ.

Aaand... n'ezie, nke ahụ bụ ihe niile.

A na m adọ gị aka ná ntị, anyị enyochaghị ogo nke ngwọta na njikọ dị n'elu :)
Site n'ụzọ, mgbe m na-akwadebe ihe ngwọta anyị, mụ na Alexander Serbul kwurịtara okwu, mgbe ahụ akụkọ ya apụtabeghị, ya mere na slides m, e nwere otu ihe "Bitrix adịghị eji Kubernetes."

Mana enweelarị ọtụtụ ihe onyonyo Docker emebere maka ịgba ọsọ Bitrix na Docker: https://hub.docker.com/search?q=bitrix&type=image

Nke a ọ bụ iji mepụta ngwọta zuru oke maka Bitrix na Kubernetes?
Mba. Enwere ọnụ ọgụgụ buru ibu nke nsogbu ndị a ga-edozi.

Kedu nsogbu dị na Bitrix na Kubernetes?

Nke mbụ, onyonyo emebere site na Dockerhub adabaghị maka Kubernetes

Ọ bụrụ na anyị chọrọ iwu ụlọ ọrụ microservices (na na Kubernetes anyị na-emekarị), anyị kwesịrị ikewapụ ngwa Kubernetes n'ime arịa ma mee ka akpa ọ bụla rụọ otu obere ọrụ (ma mee ya nke ọma). Gịnị kpatara naanị otu? Na nkenke, ndị dị mfe ka a pụrụ ịdabere na ya.
Iji kọwaa nke ọma, lelee akụkọ a na vidiyo, biko: https://habr.com/ru/company/southbridge/blog/426637/

A na-ewu ihe onyonyo Dockerhub na ụkpụrụ niile na otu, yabụ anyị ka ga-eme igwe kwụ otu ebe na ọbụna mepụta onyonyo site na ọkọ.

Nke abụọ - a na-edezi koodu saịtị site na nchịkwa nchịkwa

Anyị mepụtara ngalaba ọhụrụ na saịtị ahụ - emelitere koodu ahụ (agbakwunyere ndekọ aha nke ngalaba ọhụrụ).

Ọ bụrụ na ị gbanwee akụrụngwa nke akụrụngwa sitere na panel nchịkwa, koodu gbanwere.

Kubernetes “site na ndabara” enweghị ike iji nke a rụọ ọrụ;

Ihe kpatara ya: Akpa ọ bụla (pod) na usoro ụyọkọ bụ naanị akụkụ nke okporo ụzọ. Ọ bụrụ na ị gbanwee koodu na naanị otu akpa (pod), mgbe ahụ koodu ahụ ga-adị iche na pọd dị iche iche, saịtị ahụ ga-arụ ọrụ dị iche iche, a ga-egosikwa ndị ọrụ dị iche iche nke saịtị ahụ. Ị gaghị ebi ndụ otú ahụ.

Nke atọ - ịkwesịrị iji dozie nsogbu ahụ na ntinye

Ọ bụrụ na anyị nwere monolith na otu ihe nkesa "kpochapụwo", ihe niile dị mfe: anyị na-ebuga ntọala koodu ọhụrụ, kwaga nchekwa data, gbanwee okporo ụzọ gaa na ụdị koodu ọhụrụ. Mgbanwe na-apụta ozugbo.
Ọ bụrụ na anyị nwere saịtị na Kubernetes, bee n'ime microservices, enwere ọtụtụ arịa nwere koodu - oh. Ịkwesịrị iji ụdị koodu ọhụrụ na-anakọta arịa, bupụ ha kama nke ochie, kwaga ebe nchekwa data nke ọma, wee mee nke a na ndị ọbịa ahụghị ya. Ọ dabara nke ọma, Kubernetes na-enyere anyị aka na nke a, na-akwado ọtụtụ ụdị ntinye dị iche iche.

Nke anọ - ịkwesịrị idozi nsogbu nke ịchekwa statics

Ọ bụrụ na saịtị gị bụ "naanị" 10 gigabytes ma tinye ya kpamkpam na arịa, ị ga-ejedebe na 10 gigabyte containers na-ewe ruo mgbe ebighị ebi ibuga.
Ịkwesịrị ịchekwa akụkụ "kachasị njọ" nke saịtị ahụ na mpụga arịa, ajụjụ na-ebilite otu esi eme nke a n'ụzọ ziri ezi.

Kedu ihe na-efu na ngwọta anyị?

A naghị ekewa koodu Bitrix dum na microfunctions / microservices (ka ndebanye aha dị iche, modul ụlọ ahịa ịntanetị dị iche, wdg). Anyị na-echekwa ntọala koodu niile n'ime akpa ọ bụla.

Anyị anaghị echekwa nchekwa data na Kubernetes (M ka na-emejuputa ngwọta na nchekwa data na Kubernetes maka gburugburu mmepe, ma ọ bụghị maka mmepụta).

Ọ ka ga-ahụrịrị ndị nchịkwa saịtị na saịtị ahụ na-agba na Kubernetes. Ọrụ "nyocha sistemụ" anaghị arụ ọrụ nke ọma; iji dezie koodu saịtị site na nchịkwa nchịkwa, ị ga-ebu ụzọ pịa bọtịnụ "Achọrọ m dezie koodu".

Achọpụtala nsogbu ndị ahụ, ekpebiela mkpa ọ dị iji mejuputa microservices, ihe mgbaru ọsọ doro anya - iji nweta usoro ọrụ maka ngwa ngwa na Bitrix na Kubernetes, na-echekwa ma ike nke Bitrix na uru nke Kubernetes. Ka anyị bido mmejuputa iwu.

ije

Enwere ọtụtụ pọd "na-arụ ọrụ" nwere sava weebụ (ndị ọrụ).
Otu n'okpuru nwere ọrụ cron (naanị otu achọrọ).
Otu nkwalite maka idezi koodu saịtị site na ngalaba nchịkwa (ọkwa naanị otu achọrọ).

Southbridge na Chelyabinsk na Bitrix na Kubernetes

Anyị na-edozi ajụjụ:

  • Ebe a ga-echekwa oge?
  • Ebe a ga-echekwa cache?
  • Ebe ị ga-echekwa statics, ọ bụghị itinye gigabytes nke statics na ụyọkọ arịa?
  • Kedu ka nchekwa data ga-esi arụ ọrụ?

Foto docker

Anyị na-amalite site n'ịrụ ihe oyiyi Docker.

Nhọrọ kacha mma bụ na anyị nwere otu onyonyo zuru ụwa ọnụ, na ndabere ya, anyị na-enweta pọd ndị ọrụ, pọd nwere Crontasks, na nkwalite pọd.

Anyị mere ụdị ihe oyiyi ahụ.

Ọ gụnyere nginx, apache/php-fpm (enwere ike ịhọrọ n'oge arụ ọrụ), msmtp maka izipu ozi, na cron.

Mgbe ị na-agbakọta onyonyo a, a na-eṅomi koodu ntọala niile nke saịtị ahụ na ndekọ / ngwa (ewezuga akụkụ ndị ahụ anyị ga-akwaga na ebe nchekwa nkekọrịta dị iche).

Microservices, ọrụ

akpụkpọ ụkwụ ndị ọrụ:

  • Akpa nwere nginx + akpa apache/php-fpm + msmtp
  • Ọ naghị arụ ọrụ ịkwaga msmtp n'ime microservice dị iche, Bitrix na-amalite iwe na ọ nweghị ike izipu ozi ozugbo.
  • Akpa ọ bụla nwere codebase zuru oke.
  • Mmachibido iwu ịgbanwe koodu n'ime akpa.

cron n'okpuru:

  • akpa nwere apache, php, cron
  • ntọala koodu zuru oke gụnyere
  • machibido ịgbanwe koodu n'ime arịa

kwalite n'okpuru:

  • akpa nginx + apache/php-fpm akpa + msmtp
  • Enweghị mmachibido ịgbanwe koodu n'ime akpa

nchekwa oge

Nchekwa cache bitrix

Ihe ọzọ dị mkpa: anyị na-echekwa okwuntughe maka ijikọ ihe niile, site na nchekwa data gaa na mail, na nzuzo kubernetes. Anyị na-enweta ego: a na-ahụ okwuntughe naanị nye ndị anyị na-enye ohere ịnweta ihe nzuzo, ọ bụghịkwa onye ọ bụla nwere ohere ịnweta koodu koodu ọrụ ahụ.

Nchekwa maka statics

Ị nwere ike iji ihe ọ bụla: ceph, nfs (ma anyị anaghị akwado nfs maka mmepụta), nchekwa netwọk sitere na ndị na-eweta igwe ojii, wdg.

Ọ ga-adị mkpa ijikọ nchekwa ahụ n'ime arịa gaa na / bulite/ ndekọ nke saịtị yana akwụkwọ ndekọ aha ndị ọzọ nwere ọdịnaya kwụ ọtọ.

Database

Maka ịdị mfe, anyị na-akwado ịkwaga nchekwa data na mpụga Kubernetes. Ntọala dị na Kubernetes bụ ọrụ dị mgbagwoju anya dị iche iche, ọ ga-eme ka atụmatụ ahụ bụrụ usoro nke ịdị ukwuu.

Nchekwa oge

Anyị na-eji memcached :)

Ọ na-ejikwa nchekwa oge nke ọma, na-achịkọta ya, ma na-akwado ya "na obodo" dị ka session.save_path na php. A nwalere usoro dị otú ahụ ọtụtụ oge na ihe owuwu monolithic oge gboo, mgbe anyị wuru ụyọkọ nwere ọnụ ọgụgụ buru ibu nke sava weebụ. Maka ntinye anyị na-eji helm.

$ helm install stable/memcached --name session

php.ini - ebe a onyonyo a nwere ntọala maka ịchekwa oge na memcached

Anyị na-eji mgbanwe gburugburu ebe obibi were memcached nyefee data gbasara ndị ọbịa https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Nke a na-enye gị ohere iji otu koodu ahụ na dev, ogbo, ule, prod gburugburu (aha ndị ọbịa memcached dị na ha ga-adị iche, yabụ anyị kwesịrị ịnyefe aha nnabata pụrụ iche maka nnọkọ na mpaghara ọ bụla).
Nchekwa cache bitrix

Anyị chọrọ nchekwa na-anabata mmejọ nke pọd niile nwere ike ide ma gụọ ya.

Anyị na-ejikwa memcached.
A na-atụ aro ngwọta a site na Bitrix n'onwe ya.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - ebe a na Bitrix ka akọwapụtara ebe echekwara cache

Anyị na-ejikwa Environment Variables.

Krontaski

Enwere ụzọ dị iche iche maka ịgba ọsọ Crontasks na Kubernetes.

  • nkesa dị iche iche na pọd maka ịgba ọsọ Crontasks
  • cronjob maka ime crontasks (ọ bụrụ na nke a bụ ngwa weebụ - yana wget https://$host$cronjobname, ma ọ bụ kubectl exec n'ime otu pọd ndị ọrụ, wdg)
  • wdg

Ị nwere ike na-arụ ụka maka nke kachasị mma, mana na nke a, anyị họọrọ nhọrọ "kewapụ iche iche na pods maka Crontasks"

Otu esi eme ya:

  • tinye ọrụ cron site na ConfigMap ma ọ bụ site na faịlụ config/adcron
  • N'otu oge, anyị na-ebupụta akpa nke yiri pọd onye ọrụ + kwe ka arụ ọrụ okpueze na ya.
  • A na-eji otu ntọala koodu ahụ, ekele maka ịdị n'otu, mgbakọ akpa dị mfe

Kedu ihe ọma anyị nwetara:

  • anyị nwere Crontasks na-arụ ọrụ na gburugburu ebe obibi nke ndị mmepe (docker)
  • Crontasks adịghị mkpa ka e "degharịa" maka Kubernetes, ha na-arụ ọrụ n'otu ụdị na n'otu koodu ntọala dị ka ọ dị na mbụ.
  • Enwere ike ịgbakwunye ọrụ cron site n'aka ndị otu niile nwere ikike na ngalaba mmepụta, ọ bụghị naanị ndị admins

Southbridge K8SDeploy modul na koodu edezi site na ngalaba nchịkwa

Anyị na-ekwu maka nkwalite n'okpuru?
Kedu ka esi eduzi okporo ụzọ ebe ahụ?
Biko, anyị dere modul maka nke a na PHP :) Nke a bụ obere modul kpochapụwo maka Bitrix. Ọ bụghị n'ihu ọha ma, ma anyị na-eme atụmatụ imeghe ya.
Awụnyere modul ahụ dị ka modul mgbe niile na Bitrix:

Southbridge na Chelyabinsk na Bitrix na Kubernetes

Ọ dịkwa ka nke a:

Southbridge na Chelyabinsk na Bitrix na Kubernetes

Ọ na-enye gị ohere ịtọ kuki nke na-achọpụta onye nchịkwa saịtị na-enye Kubernetes ohere iziga okporo ụzọ gaa na pọd nkwalite.

Mgbe emechara mgbanwe ndị ahụ, ịkwesịrị pịa git push, a ga-eziga mgbanwe koodu na git, mgbe ahụ, usoro ahụ ga-eji ụdị koodu ọhụrụ wuo ihe oyiyi wee "tụgharịa" ya n'ofe ụyọkọ ahụ, dochie pods ochie. .

Ee, ọ bụ ntakịrị ihe mgbochi, mana n'otu oge ahụ anyị na-edobe ihe owuwu microservice ma ghara ịnapụ ndị ọrụ Bitrix ohere kachasị amasị ha iji dozie koodu ahụ site na nchịkwa nchịkwa. N'ikpeazụ, nke a bụ nhọrọ ị nwere ike dozie nsogbu nke idezi koodu ahụ n'ụzọ dị iche.

chaatị Helm

Iji wuo ngwa na Kubernetes, anyị na-ejikarị njikwa ngwugwu Helm.
Maka ngwọta Bitrix anyị na Kubernetes, Sergey Bondarev, onye na-ahụ maka sistemụ anyị na-eduga, dere eserese Helm pụrụ iche.

Ọ na-ewulite onye ọrụ, kwalite, cron pods, na-ahazi ingresses, ọrụ, ma na-ebufe mgbanwe site na nzuzo Kubernetes gaa na pọd.

Anyị na-echekwa koodu ahụ na Gitlab, anyị na-agbakwa Helm wuo site na Gitlab.

Na nkenke, ọ dị ka nke a

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

Helm na-enye gị ohere ịmegharị "enweghị nkebi" ma ọ bụrụ na mberede ihe na-aga n'ihu n'oge ntinye. Ọ dị mma mgbe ịnọghị na ụjọ "dozie koodu site na ftp n'ihi na prod dara," mana Kubernetes na-eme ya na-akpaghị aka, na-enweghị oge.

Nyefee

Ee, anyị bụ ndị na-akwado Gitlab & Gitlab CI, anyị na-eji ya :)
Mgbe ị na-etinye aka na Gitlab na ebe nchekwa ọrụ ahụ, Gitlab na-ebupụta pipeline na-ebuga ụdị ọhụrụ nke gburugburu ebe obibi.

Ọnọdụ:

  • wuo (ewu ihe onyonyo Docker ọhụrụ)
  • ule (ule)
  • kpochaa (wepu gburugburu ule)
  • push (anyị na-eziga ya na ndekọ Docker)
  • deploy (anyị na-ebuga ngwa ahụ na Kubernetes site na Helm).

Southbridge na Chelyabinsk na Bitrix na Kubernetes

Ngwa ngwa, ọ dịla njikere, ka anyị mejuputa ya!
Ọfọn, ma ọ bụ jụọ ajụjụ ma ọ bụrụ na ọ dị.

Yabụ kedu ihe anyị mere

Site n'echiche teknụzụ:

  • Bitrix dockerized;
  • "bee" Bitrix n'ime akpa, nke ọ bụla na-arụ ọrụ kacha nta;
  • enwetara enweghị obodo nke containers;
  • dozie nsogbu ahụ site na imelite Bitrix na Kubernetes;
  • ọrụ Bitrix niile nọgidere na-arụ ọrụ (ihe fọrọ nke nta ka ọ bụrụ ihe niile);
  • Anyị na-arụ ọrụ na mbugharị na Kubernetes na nlọghachi n'etiti nsụgharị.

Site n'echiche azụmahịa:

  • nnabata mmejọ;
  • Ngwa Kubernetes (mmekọrịta dị mfe na Gitlab CI, ntinye enweghị nkebi, wdg);
  • okwuntughe nzuzo (nke a na-ahụ maka naanị ndị enyere ikike ịnweta okwuntughe);
  • Ọ dị mma ịmepụta gburugburu ọzọ (maka mmepe, ule, wdg) n'ime otu akụrụngwa.

isi: www.habr.com

Tinye a comment