Southbridge ann an Chelyabinsk agus Bitrix ann an Kubernetes

Tha coinneamhan rianadair siostam Sysadminka a’ gabhail àite ann an Chelyabinsk, agus aig an fhear mu dheireadh thug mi seachad aithisg mun fhuasgladh againn airson a bhith a’ ruith thagraidhean air 1C-Bitrix ann an Kubernetes.

Bitrix, Kubernetes, Ceph - deagh mheasgachadh?

Innsidh mi dhut mar a chuir sinn ri chèile fuasgladh obrach bho seo uile.

Leamamaid!

Southbridge ann an Chelyabinsk agus Bitrix ann an Kubernetes

Chaidh an coinneamh a chumail air 18 Giblean ann an Chelyabinsk. Faodaidh tu leughadh mu na coinneamhan againn aig Clàr-ama agus seall air YouTube.

Ma tha sibh airson tighinn thugainn le aithisg neo mar neach-èisteachd – fàilte oirbh, sgrìobhaibh thugainn [post-d fo dhìon] agus air Telegram t.me/vadimisakanov.

An aithisg agam

Southbridge ann an Chelyabinsk agus Bitrix ann an Kubernetes

Sleamhnagan

Fuasgladh "Bitrix ann an Kubernetes, dreach Southbridge 1.0"

Bruidhnidh mi mun fhuasgladh againn ann an cruth “airson dummies ann an Kubernetes”, mar a chaidh a dhèanamh aig a’ choinneamh. Ach tha mi a 'gabhail ris gu bheil thu eòlach air na faclan Bitrix, Docker, Kubernetes, Ceph co-dhiù aig ìre nan artaigilean air Wikipedia.

Dè a tha deiseil mu Bitrix ann an Kubernetes?

Chan eil ach glè bheag de dh'fhiosrachadh air an eadar-lìon gu lèir mu obrachadh thagraidhean Bitrix ann an Kubernetes.
Cha do lorg mi ach na stuthan seo:

Aithisg le Alexander Serbul, 1C-Bitrix, agus Anton Tuzlukov bho Qsoft:

Tha mi a’ moladh èisteachd ris.

A 'leasachadh do fhuasgladh fhèin bhon neach-cleachdaidh serkyron air Habré.
Fhuaras tuilleadh leithid de cho-dhùnadh.

Aaand... gu dearbh, sin agad.

Tha mi a 'toirt rabhadh dhut, chan eil sinn air sgrùdadh a dhèanamh air càileachd nam fuasglaidhean anns na ceanglaichean gu h-àrd :)
Air an t-slighe, nuair a bha mi ag ullachadh ar fuasgladh, bhruidhinn mi ri Alexander Serbul, agus cha robh an aithisg aige air nochdadh fhathast, agus mar sin anns na sleamhnagan agam tha rud "Chan eil Bitrix a 'cleachdadh Kubernetes."

Ach tha tòrr ìomhaighean deiseil Docker ann mu thràth airson Bitrix a ruith ann an Docker: https://hub.docker.com/search?q=bitrix&type=image

A bheil seo gu leòr airson fuasgladh iomlan a chruthachadh airson Bitrix ann an Kubernetes?
Chan eil. Tha àireamh mhòr de dhuilgheadasan ann a dh'fheumar a rèiteachadh.

Dè na duilgheadasan a th ’ann le Bitrix ann an Kubernetes?

An toiseach, chan eil ìomhaighean deiseil bho Dockerhub freagarrach airson Kubernetes

Ma tha sinn airson ailtireachd microservices a thogail (agus ann an Kubernetes mar as trice bidh sinn a’ dèanamh), feumaidh sinn an tagradh Kubernetes againn a sgaradh ann an soithichean agus toirt air gach inneal aon ghnìomh beag a dhèanamh (agus a dhèanamh gu math). Carson a-mhàin aon? Ann an ùine ghoirid, mar as sìmplidh, is ann as earbsaiche.
Gus a bhith nas mionaidiche, thoir sùil air an artaigil seo agus bhidio, feuch: https://habr.com/ru/company/southbridge/blog/426637/

Tha ìomhaighean docker ann an Dockerhub air an togail sa mhòr-chuid air a’ phrionnsapal uile-ann-aon, agus mar sin bha againn fhathast ri ar baidhc fhèin a dhèanamh agus eadhon ìomhaighean a chruthachadh bhon fhìor thoiseach.

San dàrna àite - tha còd na làraich air a dheasachadh bhon phannal rianachd

Chruthaich sinn earrann ùr air an làrach - chaidh an còd ùrachadh (chaidh eòlaire le ainm na h-earrainn ùir a chur ris).

Ma dh’ atharraich thu feartan pàirt bhon phannal rianachd, dh’ atharraich an còd.

Chan urrainn dha Kubernetes “gu bunaiteach” obrachadh le seo; feumaidh soithichean a bhith gun stàit.

Adhbhar: Chan eil a h-uile soitheach (pod) anns a’ bhuidheann a’ pròiseasadh ach cuibhreann den trafaic. Ma dh'atharraicheas tu an còd ann an aon ghobhar (pod), bidh an còd eadar-dhealaichte ann an diofar pods, obraichidh an làrach ann an dòigh eadar-dhealaichte, agus thèid dreachan eadar-dhealaichte den làrach a shealltainn do luchd-cleachdaidh eadar-dhealaichte. Chan urrainn dhut a bhith beò mar sin.

San treas àite - feumaidh tu a 'chùis fhuasgladh le cleachdadh

Ma tha monolith agus aon fhrithealaiche “clasaigeach” againn, tha a h-uile dad gu math sìmplidh: bidh sinn a’ cleachdadh bunait còd ùr, a ’gluasad an stòr-dàta, ag atharrachadh trafaic chun dreach ùr den chòd. Bidh tionndadh a’ tachairt sa bhad.
Ma tha làrach againn ann an Kubernetes, air a ghearradh ann am microservices, tha tòrr shoithichean ann le còd - oh. Feumaidh tu soithichean a chruinneachadh le dreach ùr den chòd, an roiligeadh a-mach an àite an t-seann fheadhainn, an stòr-dàta a ghluasad gu ceart, agus na b’ fheàrr seo a dhèanamh gun mhothachadh luchd-tadhail. Gu fortanach, bidh Kubernetes gar cuideachadh le seo, a’ toirt taic do ghrunn sheòrsan de chleachdadh.

Ceathramh - feumaidh tu fuasgladh fhaighinn air a 'cheist mu bhith a' stòradh staitichean

Ma tha an làrach agad “a-mhàin” 10 gigabytes agus gu bheil thu ga chleachdadh gu tur ann an soithichean, thig thu gu crìch le soithichean 10 gigabytes a bheir gu bràth a chleachdadh.
Feumaidh tu na pàirtean “as truime” den làrach a stòradh taobh a-muigh soithichean, agus tha ceist ag èirigh ciamar a nì thu seo ceart

Dè tha a dhìth bhon fhuasgladh againn?

Chan eil an còd Bitrix gu lèir air a roinn ann am microfunctions / microservices (gus am bi clàradh air leth, tha modal stòr air-loidhne air leth, msaa). Bidh sinn a 'stòradh a' bhunait còd gu lèir anns gach soitheach.

Cha bhith sinn cuideachd a’ stòradh an stòr-dàta ann an Kubernetes (chuir mi an gnìomh fuasglaidhean fhathast le stòr-dàta ann an Kubernetes airson àrainneachdan leasachaidh, ach chan ann airson cinneasachadh).

Bidh e fhathast follaiseach do luchd-rianachd na làraich gu bheil an làrach a’ ruith air Kubernetes. Chan eil an gnìomh “sgrùdadh siostam” ag obair gu ceart; gus còd na làraich a dheasachadh bhon phannal rianachd, feumaidh tu an toiseach cliogadh air a’ phutan “Tha mi airson an còd a dheasachadh”.

Chaidh na duilgheadasan a chomharrachadh, chaidh an fheum air microservices a chuir an gnìomh a dhearbhadh, tha an amas soilleir - gus siostam obrachaidh fhaighinn airson a bhith a ’ruith thagraidhean air Bitrix ann an Kubernetes, a’ gleidheadh ​​​​an dà chuid comasan Bitrix agus buannachdan Kubernetes. Feuch an tòisich sinn air buileachadh.

ailtireachd

Tha mòran pods “ag obair” le frithealaiche lìn (luchd-obrach).
Aon fo le gnìomhan cron (chan eil feum air ach aon).
Aon ùrachadh airson còd na làraich a dheasachadh bhon phannal rianachd (chan eil feum air ach aon).

Southbridge ann an Chelyabinsk agus Bitrix ann an Kubernetes

Bidh sinn a’ fuasgladh cheistean:

  • Càite an tèid seiseanan a stòradh?
  • Càite an tèid an tasgadan a stòradh?
  • Càite an stòradh statics, gun a bhith a 'cur gigabytes de statics ann am buidheann de shoithichean?
  • Ciamar a bhios an stòr-dàta ag obair?

Dealbh docker

Bidh sinn a 'tòiseachadh le bhith a' togail ìomhaigh Docker.

Is e an roghainn as fheàrr gu bheil aon ìomhaigh uile-choitcheann againn, air a bhunait gheibh sinn pods luchd-obrach, pods le Crontasks, agus pods ùrachadh.

Rinn sinn dìreach ìomhaigh mar sin.

Tha e a’ toirt a-steach nginx, apache / php-fpm (faodar a thaghadh aig àm togail), msmtp airson post a chuir, agus cron.

Nuair a bhios tu a’ cruinneachadh na h-ìomhaigh, thèid bonn còd iomlan na làraich a chopaigeadh chun eòlaire / app (ach a-mhàin na pàirtean sin a ghluaiseas sinn gu stòradh co-roinnte air leth).

Microservices, seirbheisean

pods luchd-obrach:

  • Container le nginx + container apache/php-fpm + msmtp
  • Cha do dh’ obraich e a-mach msmtp a ghluasad gu meanbh-sheirbheis air leth, tha Bitrix a’ tòiseachadh a’ fàs diombach nach urrainn dha post a chuir gu dìreach
  • Tha bunait còd iomlan aig gach container.
  • Toirmeasg air còd atharrachadh ann an soithichean.

cron fo:

  • soitheach le apache, php, cron
  • bunait còd iomlan air a thoirt a-steach
  • casg air còd atharrachadh ann an soithichean

ùrachadh fo:

  • nginx container + apache/php-fpm container + msmtp
  • Chan eil casg sam bith air còd atharrachadh ann an soithichean

stòradh seisean

Bitrix stòradh tasgadan

Rud cudromach eile: bidh sinn a 'stòradh faclan-faire airson ceangal ris a h-uile càil, bhon stòr-dàta gu post, ann an dìomhaireachd kubernetes. Bidh sinn a’ faighinn bònas: chan fhaicear faclan-faire ach dhaibhsan a bheir sinn cothrom air na dìomhaireachdan, agus chan ann don h-uile duine aig a bheil cothrom air bunait còd a’ phròiseict.

Stòradh airson statics

Faodaidh tu rud sam bith a chleachdadh: ceph, nfs (ach chan eil sinn a’ moladh nfs airson cinneasachadh), stòradh lìonra bho sholaraichean sgòthan, msaa.

Feumaidh an stòradh a bhith ceangailte ann an soithichean ri / luchdachadh suas / eòlaire na làraich agus clàran eile le susbaint statach.

Stòr-dàta

Airson sìmplidh, tha sinn a’ moladh an stòr-dàta a ghluasad taobh a-muigh Kubernetes. Tha an ionad ann an Kubernetes na obair iom-fhillte air leth; nì e an sgeama òrdugh meudachd nas iom-fhillte.

Stòradh seisean

Bidh sinn a' cleachdadh memcached :)

Bidh e a’ làimhseachadh stòradh seisean gu math, air a chruinneachadh, agus a’ faighinn taic “gu dùthchasach” mar session.save_path ann am php. Chaidh siostam leithid seo a dhearbhadh iomadh uair anns an ailtireachd monolithic clasaigeach, nuair a thog sinn cruinneachaidhean le àireamh mhòr de luchd-frithealaidh lìn. Airson cleachdadh bidh sinn a 'cleachdadh stiùir.

$ helm install stable/memcached --name session

php.ini - an seo tha roghainnean san ìomhaigh airson seiseanan a stòradh ann am memcached

Chleachd sinn Caochlaidhean Àrainneachd gus dàta a thoirt seachad mu luchd-aoigheachd le memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Leigidh seo leat an aon chòd a chleachdadh anns na h-àrainneachdan dev, àrd-ùrlar, deuchainn, prod (bidh na h-ainmean aoigheachd memcached annta eadar-dhealaichte, agus mar sin feumaidh sinn ainm aoigheachd sònraichte a thoirt seachad airson seiseanan gu gach àrainneachd).
Bitrix stòradh tasgadan

Feumaidh sinn stòradh a tha fulangach air lochdan as urrainn do na pods uile sgrìobhadh thuige agus leughadh bhuapa.

Bidh sinn cuideachd a’ cleachdadh memcached.
Tha am fuasgladh seo air a mholadh le Bitrix fhèin.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - an seo ann am Bitrix tha e air a shònrachadh far a bheil an tasgadan air a stòradh

Bidh sinn cuideachd a’ cleachdadh Caochlaidhean Àrainneachd.

Crontaski

Tha diofar dhòighean ann airson Crontasks a ruith ann an Kubernetes.

  • cleachdadh air leth le pod airson Crontasks a ruith
  • cronjob airson crontasks a chuir gu bàs (mas e app lìn a tha seo - le wget https://$host$cronjobname, no kubectl exec taobh a-staigh aon de na pods luchd-obrach, msaa.)
  • msaa

Faodaidh tu argamaid a dhèanamh mun fhear as ceart, ach sa chùis seo thagh sinn an roghainn “cleachdadh air leth le pods airson Crontasks”

Mar a tha e air a dhèanamh:

  • cuir gnìomhan cron tro ConfigMap no tron ​​​​fhaidhle config/addcron
  • ann an aon suidheachadh bidh sinn a’ cur air bhog soitheach co-ionann ri pod an neach-obrach + leigidh sinn gnìomhan crùn a chuir gu bàs ann
  • tha an aon bhunait còd air a chleachdadh, le taing dha aonachadh, tha co-chruinneachadh container sìmplidh

Dè am math a gheibh sinn:

  • tha Crontasks ag obair againn ann an àrainneachd a tha co-ionann ri àrainneachd an luchd-leasachaidh (docker)
  • Chan fheum Crontasks a bhith “ath-sgrìobhadh” airson Kubernetes, bidh iad ag obair san aon chruth agus san aon bhunait còd ris roimhe
  • faodaidh gach ball den sgioba gnìomhan cron a chuir ris le còraichean gealltanas don mheur riochdachaidh, chan e dìreach luchd-rianachd

Modal Southbridge K8SDDeploy agus deasachadh còd bhon phannal rianachd

Bha sinn a’ bruidhinn mu dheidhinn ùrachadh fo?
Ciamar a stiùireas tu trafaic an sin?
Hurray, sgrìobh sinn modal airson seo ann am PHP :) Is e modal beag clasaigeach a tha seo airson Bitrix. Chan eil e ri fhaighinn gu poblach fhathast, ach tha sinn an dùil fhosgladh.
Tha am modal air a chuir a-steach mar mhodal àbhaisteach ann am Bitrix:

Southbridge ann an Chelyabinsk agus Bitrix ann an Kubernetes

Agus tha e coltach ri seo:

Southbridge ann an Chelyabinsk agus Bitrix ann an Kubernetes

Leigidh e leat briosgaid a shuidheachadh a dh’ aithnicheas rianadair na làraich agus a leigeas le Kubernetes trafaic a chuir chun pod ùrachadh.

Nuair a bhios na h-atharrachaidhean deiseil, feumaidh tu briogadh air git push, thèid na h-atharrachaidhean còd a chuir gu git, an uairsin togaidh an siostam ìomhaigh le dreach ùr den chòd agus “rolaig a-mach” e air feadh a’ bhraisle, a’ dol an àite nan seann pods .

Tha, is e rud beag a th’ ann, ach aig an aon àm bidh sinn a’ cumail suas an ailtireachd microservice agus cha bhith sinn a’ toirt air falbh an cothrom as fheàrr le luchd-cleachdaidh Bitrix an còd a cheartachadh bhon phannal rianachd. Aig a 'cheann thall, tha seo na roghainn; faodaidh tu fuasgladh fhaighinn air duilgheadas deasachadh a' chòd ann an dòigh eadar-dhealaichte.

Clàr stiùiridh

Gus tagraidhean a thogail air Kubernetes, mar as trice bidh sinn a’ cleachdadh manaidsear pacaid Helm.
Airson ar fuasgladh Bitrix ann an Kubernetes, sgrìobh Sergey Bondarev, ar prìomh rianadair siostam, clàr Helm sònraichte.

Bidh e a’ togail luchd-obrach, ugrade, pods cron, a’ rèiteachadh ingresss, seirbheisean, a’ gluasad caochladairean bho dhìomhaireachd Kubernetes gu pods.

Bidh sinn a’ stòradh a’ chòd ann an Gitlab, agus bidh sinn cuideachd a’ ruith togalach Helm bho Gitlab.

Ann an ùine ghoirid, tha e coltach ri seo

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

Leigidh Helm leat gluasad air ais “gun fhiosta” a dhèanamh ma thèid rudeigin ceàrr gu h-obann aig àm cleachdadh. Tha e math nuair nach eil thu ann an clisgeadh “socraich an còd tro ftp oir thuit am prod,” ach bidh Kubernetes ga dhèanamh gu fèin-ghluasadach, agus às aonais ùine downt.

Sgaoileadh

Tha, tha sinn nan luchd-leantainn de Gitlab & Gitlab CI, bidh sinn ga chleachdadh :)
Nuair a bhios e an sàs ann an Gitlab gu stòr a’ phròiseict, bidh Gitlab a’ cur loidhne-phìoban air bhog a bhios a’ cleachdadh dreach ùr den àrainneachd.

Ìrean:

  • togail (togail ìomhaigh Docker ùr)
  • deuchainn (deuchainn)
  • glanadh (toirt air falbh an àrainneachd deuchainn)
  • putadh (bidh sinn ga chuir gu clàr an Docker)
  • cleachdadh (bidh sinn a’ cleachdadh an aplacaid gu Kubernetes tro Helm).

Southbridge ann an Chelyabinsk agus Bitrix ann an Kubernetes

Hurray, tha e deiseil, leig dhuinn a chuir an gnìomh!
Uill, neo faighnich ceistean ma tha gin ann.

So dè rinn sinn

Bho shealladh teicnigeach:

  • Bitrix docker;
  • "gearradh" Bitrix ann an soithichean, gach aon dhiubh a 'coileanadh a' char as lugha de ghnìomhan;
  • air staid neo-stàite nan soithichean a choileanadh;
  • fuasgladh air an duilgheadas le bhith ag ùrachadh Bitrix ann an Kubernetes;
  • lean a h-uile gnìomh Bitrix ag obair (cha mhòr a h-uile);
  • Dh'obraich sinn air cleachdadh gu Kubernetes agus gluasad air ais eadar dreachan.

Bho shealladh gnìomhachais:

  • fulangas lochdan;
  • Innealan Kubernetes (aonachadh furasta le Gitlab CI, cleachdadh fuaigheil, msaa);
  • faclan-faire dìomhair (ri fhaicinn a-mhàin dhaibhsan a gheibh cothrom air na faclan-faire);
  • Tha e goireasach àrainneachdan a bharrachd a chruthachadh (airson leasachadh, deuchainnean, msaa) taobh a-staigh aon bhun-structair.

Source: www.habr.com

Cuir beachd ann