Southbridge i Chelyabinsk agus Bitrix i Kubernetes

Tá cruinnithe riarthóir córais Sysadminka ar siúl i Chelyabinsk, agus ag an gceann deireanach thug mé tuairisc ar ár réiteach maidir le hiarratais a reáchtáil ar 1C-Bitrix i Kubernetes.

Bitrix, Kubernetes, Ceph - meascán iontach?

Inseoidh mé duit conas a chuireamar réiteach oibre le chéile as seo go léir.

A ligean ar dul!

Southbridge i Chelyabinsk agus Bitrix i Kubernetes

Bhí an cruinniú ar siúl ar 18 Aibreán i Chelyabinsk. Is féidir leat léamh faoinár gcruinnithe ag Teip ama agus féach ar YouTube.

Más mian leat teacht chugainn le tuairisc nó mar éisteoir - fáilte romhat, scríobh chuig [ríomhphost faoi chosaint] agus ar Telegram t.me/vadimisakanov.

Mo thuarascáil

Southbridge i Chelyabinsk agus Bitrix i Kubernetes

Sleamhnáin

Réiteach "Bitrix in Kubernetes, leagan Southbridge 1.0"

Labhróidh mé faoinár réiteach san fhormáid “do dummies in Kubernetes”, mar a rinneadh ag an gcruinniú. Ach glacaim leis go bhfuil na focail Bitrix, Docker, Kubernetes, Ceph ar eolas agat ar a laghad ag leibhéal na n-alt ar Vicipéid.

Cad atá réidh faoi Bitrix i Kubernetes?

Is beag eolas atá ar an Idirlíon ar fad faoi fheidhmiú feidhmchláir Bitrix i Kubernetes.
Ní bhfuair mé ach na hábhair seo:

Tuairisc ó Alexander Serbul, 1C-Bitrix, agus Anton Tuzlukov ó Qsoft:

Molaim éisteacht leis.

Do réiteach féin a fhorbairt ón úsáideoir serkyron ar Habré.
Aimsíodh níos mó cinneadh den sórt sin.

Aaand... i ndáiríre, sin uile.

Tugaim rabhadh duit, níl cáilíocht na réitigh sna naisc thuas seiceáilte againn :)
Dála an scéil, agus mé ag ullmhú ár réiteach, labhair mé le Alexander Serbul, ansin ní raibh a thuairisc le feiceáil go fóill, mar sin i mo sleamhnáin tá mír "Ní Bitrix úsáid Kubernetes."

Ach tá go leor íomhánna Docker réamhdhéanta cheana féin chun Bitrix a rith in Docker: https://hub.docker.com/search?q=bitrix&type=image

An leor é seo chun réiteach iomlán a chruthú do Bitrix i Kubernetes?
Níl. Tá líon mór fadhbanna ann a chaithfear a réiteach.

Cad iad na fadhbanna le Bitrix i Kubernetes?

Ar dtús, níl íomhánna réamhdhéanta ó Dockerhub oiriúnach do Kubernetes

Más mian linn ailtireacht microservices a thógáil (agus i Kubernetes a dhéanaimid de ghnáth), ní mór dúinn ár n-iarratas Kubernetes a scaradh i gcoimeádáin agus go mbeidh feidhm bheag amháin ag gach coimeádán (agus é a dhéanamh go maith). Cén fáth ach ceann amháin? I mbeagán focal, an simplí an níos iontaofa.
Le bheith níos sainiúla, féach ar an alt seo agus ar an bhfíseán seo, le do thoil: https://habr.com/ru/company/southbridge/blog/426637/

Tá íomhánna docker i Dockerhub tógtha go bunúsach ar an bprionsabal uile-i-amháin, agus mar sin bhí orainn ár rothar féin a dhéanamh fós agus fiú íomhánna a dhéanamh ón tús.

Dara - tá an cód suímh curtha in eagar ón bpainéal admin

Chruthaíomar alt nua ar an suíomh - nuashonraíodh an cód (cuireadh eolaire le hainm na rannóige nua leis).

Má d'athraigh tú airíonna comhpháirte ón bpainéal riaracháin, d'athraigh an cód.

Ní féidir le Kubernetes “de réir réamhshocraithe” oibriú leis seo;

Cúis: Ní phróiseálann gach coimeádán (pod) sa bhraisle ach cuid den trácht. Má athraíonn tú an cód i gcoimeádán amháin (pod), ansin beidh an cód difriúil i pods éagsúla, oibreoidh an suíomh ar bhealach difriúil, agus taispeánfar leaganacha éagsúla den láithreán d'úsáideoirí éagsúla. Ní féidir leat maireachtáil mar sin.

Tríú - ní mór duit an cheist a réiteach leis an imscaradh

Má tá monolith agus freastalaí “clasaiceach” amháin againn, tá gach rud simplí go leor: imscaraimid bonn cód nua, aistrímid an bunachar sonraí, aistrímid trácht go dtí an leagan nua den chód. Tarlaíonn aistriú láithreach.
Má tá suíomh againn i Kubernetes, gearrtha i microservices, tá go leor coimeádán ann le cód - OH. Ní mór duit coimeádáin a bhailiú le leagan nua den chód, iad a rolladh amach in ionad na sean-cinn, an bunachar sonraí a aistriú i gceart, agus go hidéalach é seo a dhéanamh gan aird ag cuairteoirí. Go fortunately, cabhraíonn Kubernetes linn leis seo, ag tacú le sraith iomlán de chineálacha éagsúla imscaradh.

Ceathrú - ní mór duit an cheist maidir le statach a stóráil a réiteach

Más “amháin” do shuíomh 10 ghigibheart agus má imscarann ​​tú go hiomlán i gcoimeádáin é, beidh 10 gcoimeádán gigabyte agat a thógfaidh sé go deo iad a imscaradh.
Ní mór duit na codanna “is troime” den láithreán a stóráil lasmuigh de na coimeádáin, agus tá ceist ann conas é seo a dhéanamh i gceart.

Cad atá ar iarraidh ónár réiteach?

Níl an cód Bitrix ar fad roinnte i micrifheidhmeanna/micreasheirbhísí (ionas go bhfuil an clárú ar leithligh, tá modúl an tsiopa ar líne ar leithligh, etc.). Stóráilimid an bonn cód iomlán i ngach coimeádán.

Ní stóráilimid an bunachar sonraí i Kubernetes freisin (chuir mé réitigh i bhfeidhm fós le bunachar sonraí i Kubernetes le haghaidh timpeallachtaí forbartha, ach ní le haghaidh táirgeadh).

Beidh sé fós faoi deara do riarthóirí láithreáin go ritheann an suíomh ar Kubernetes. Ní oibríonn an fheidhm “seiceáil córais” i gceart; chun cód an tsuímh a chur in eagar ón bpainéal riaracháin, ní mór duit an cnaipe “Ba mhaith liom an cód a chur in eagar” a chliceáil ar dtús.

Aithníodh na fadhbanna, socraíodh an gá atá le microservices a chur i bhfeidhm, tá an sprioc soiléir - córas oibre a fháil chun iarratais a reáchtáil ar Bitrix i Kubernetes, ag caomhnú cumais Bitrix agus buntáistí Kubernetes araon. A ligean ar tús a chur i bhfeidhm.

ailtireacht

Tá go leor pods “oibre” ann le freastalaí gréasáin (oibrithe).
Ceann amháin faoi le tascanna cron (níl ach ceann amháin ag teastáil).
Uasghrádú amháin chun cód an tsuímh a chur in eagar ón bpainéal riaracháin (ní theastaíonn ach ceann amháin freisin).

Southbridge i Chelyabinsk agus Bitrix i Kubernetes

Réitímid ceisteanna:

  • Cá háit le seisiúin a stóráil?
  • Cá háit a stórálfar an taisce?
  • Cá háit le statach a stóráil, gan ghigibheart statach a chur i sraith coimeádán?
  • Conas a oibreoidh an bunachar sonraí?

Íomhá docker

Tosaímid trí íomhá Docker a thógáil.

Is é an rogha idéalach ná go bhfuil íomhá uilíoch amháin againn, ar a mbonn faigheann muid pods oibrithe, pods le Crontasks, agus pods uasghrádaithe.

Rinneamar ach íomhá den sórt sin.

Áiríonn sé nginx, apache / php-fpm (is féidir a roghnú le linn tógála), msmtp chun ríomhphost a sheoladh, agus cron.

Agus an íomhá á chur le chéile, déantar bunchód iomlán an tsuímh a chóipeáil chuig an eolaire / aip (seachas na codanna sin a bhogfaimid chuig stóras comhroinnte ar leith).

Micreirbhísí, seirbhísí

pods oibrithe:

  • Coimeádán le nginx + coimeádán apache/php-fpm + msmtp
  • Níor oibrigh sé amach msmtp a bhogadh isteach i micrisheirbhís ar leith, tá Bitrix ag tosú ar a bheith feargach nach féidir leis ríomhphost a sheoladh go díreach
  • Tá bunchód iomlán ag gach coimeádán.
  • Toirmeasc ar chód a athrú i gcoimeádáin.

cron faoi:

  • coimeádán le apache, php, cron
  • bonn cód iomlán san áireamh
  • toirmeasc ar chód a athrú i gcoimeádáin

uasghrádú faoi:

  • nginx coimeádán + apache/php-fpm coimeádán + msmtp
  • Níl aon toirmeasc ar chód a athrú i gcoimeádáin

stórála seisiúin

Stóráil taisce Bitrix

Rud tábhachtach eile: stóráilimid pasfhocail chun nascadh le gach rud, ón mbunachar sonraí go post, i rúin kubernetes. Faighimid bónas: níl pasfhocail le feiceáil ach amháin dóibh siúd a dtugaimid rochtain ar na rúin dóibh, agus ní do gach duine a bhfuil rochtain acu ar bhunchód an tionscadail.

Stóráil le haghaidh statach

Is féidir leat aon rud a úsáid: ceph, nfs (ach ní mholaimid nfs le haghaidh táirgeadh), stóráil líonra ó sholáthraithe scamall, etc.

Ní mór an stóras a nascadh i gcoimeádáin leis an eolaire / uaslódáil / an tsuímh agus eolairí eile le hábhar statach.

Bunachar Sonraí

Ar mhaithe le simplíocht, molaimid an bunachar sonraí a bhogadh lasmuigh de Kubernetes. Is tasc casta ar leith é an bonn i Kubernetes;

Stóráil seisiúin

Úsáidimid memcached :)

Láimhseálann sé stóráil seisiúin go maith, cnuasaítear é, agus tacaítear leis “go dúchais” mar session.save_path i php. Tá córas den sórt sin a thástáil go leor uaireanta san ailtireacht monolithic clasaiceach, nuair a thógamar braislí le líon mór de na freastalaithe gréasáin. Le haghaidh imscaradh bainimid úsáid as Helm.

$ helm install stable/memcached --name session

php.ini - anseo tá socruithe san íomhá chun seisiúin a stóráil i memcached

D’úsáideamar Athróga Comhshaoil ​​chun sonraí faoi óstaigh a chur ar aghaidh le memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Ligeann sé seo duit an cód céanna a úsáid sna timpeallachtaí dev, stáitse, tástála, prod (beidh na hainmneacha óstacha memcached iontu difriúil, agus mar sin ní mór dúinn ainm óstach uathúil do sheisiúin a chur ar aghaidh chuig gach timpeallacht).
Stóráil taisce Bitrix

Tá gá againn le stóráil locht-fhulangach ar féidir le gach pods scríobh chucu agus léamh uaidh.

Úsáidimid memcached freisin.
Tá an réiteach seo molta ag Bitrix féin.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - anseo i Bitrix sonraítear an áit a stóráiltear an taisce

Bainimid úsáid freisin as Athróga Comhshaoil.

Crontaski

Tá cineálacha cur chuige éagsúla ann maidir le Crontasks a rith i Kubernetes.

  • imscaradh ar leith le pod chun Crontasks a rith
  • cronjob chun crontasks a fhorghníomhú (más app gréasáin é seo - le wget https://$host$cronjobname, nó kubectl exec taobh istigh de cheann de na pods oibrithe, etc.)
  • etc.

Is féidir leat a mhaíomh faoin gceann is ceart, ach sa chás seo roghnaigh muid an rogha “imscaradh ar leithligh le pods do Crontasks”

Conas a dhéantar é:

  • cuir tascanna cron leis trí ConfigMap nó tríd an gcomhad config/addcron
  • i gcás amháin seolann muid coimeádán atá comhionann le pod an oibrí + ceadaíonn sé tascanna coróin a chur i gcrích ann
  • úsáidtear an bonn cód céanna, a bhuíochas le haontú, tá tionól coimeádáin simplí

Cad maith a fhaigheann muid:

  • tá Crontasks oibre againn i dtimpeallacht atá comhionann le timpeallacht na bhforbróirí (dugálaí)
  • Ní gá crotasks a “athscríobh” do Kubernetes, oibríonn siad san fhoirm chéanna agus sa bhunchód céanna agus a bhí roimhe
  • is féidir le gach ball foirne a bhfuil cearta gealltanais acu don bhrainse táirgthe, ní hamháin na riarthóirí, tascanna cron a chur leis

Southbridge K8SDDeploy eagarthóireacht modúl agus cód ón bpainéal riaracháin

Bhí muid ag caint faoi uasghrádú faoi?
Conas trácht a threorú ann?
Hurray, scríobhamar modúl chuige seo i PHP :) Is modúl beag clasaiceach é seo do Bitrix. Níl sé ar fáil go poiblí go fóill, ach tá sé beartaithe againn é a oscailt.
Tá an modúl suiteáilte mar mhodúl rialta i Bitrix:

Southbridge i Chelyabinsk agus Bitrix i Kubernetes

Agus tá sé mar seo:

Southbridge i Chelyabinsk agus Bitrix i Kubernetes

Ligeann sé duit fianán a shocrú a shainaithníonn riarthóir an tsuímh agus ligeann do Kubernetes trácht a sheoladh chuig an pod uasghrádaithe.

Nuair a bheidh na hathruithe críochnaithe, ní mór duit cliceáil ar git push, seolfar na hathruithe cód chuig git, ansin tógfaidh an córas íomhá le leagan nua den chód agus "rolladh amach" é ar fud an bhraisle, ag athsholáthar na sean-pods .

Sea, tá sé beagán crutch, ach ag an am céanna coinnímid an ailtireacht microservice agus ní thógann sé ar shiúl ó úsáideoirí Bitrix an deis is fearr leo an cód a cheartú ón bpainéal riaracháin. Sa deireadh, is rogha é seo; is féidir leat an fhadhb a bhaineann le eagarthóireacht an chóid a réiteach ar bhealach difriúil.

Cairt Helm

Chun feidhmchláir a thógáil ar Kubernetes, de ghnáth bainimid úsáid as bainisteoir pacáiste Helm.
Maidir lenár réiteach Bitrix i Kubernetes, scríobh Sergey Bondarev, ár riarthóir córais tosaigh, cairt Helm speisialta.

Tógann sé pods oibrithe, ugrade, cron, cumraíonn sé ionghabhálacha, seirbhísí, agus aistríonn sé athróga ó rúin Kubernetes go pods.

Stórálaimid an cód i Gitlab, agus reáchtáilimid an tógáil Helm ó Gitlab freisin.

I mbeagán focal, tá sé mar seo

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

Ligeann Helm duit freisin athrolladh “gan uaim” a dhéanamh má théann rud éigin mícheart go tobann le linn imscartha. Tá sé go deas nuair nach bhfuil tú i scaoll “deisigh an cód trí ftp toisc gur thit an táirge,” ach déanann Kubernetes é go huathoibríoch, agus gan am aga.

Imscaradh

Sea, is lucht leanúna Gitlab & Gitlab CI muid, úsáidimid é :)
Agus é ag gabháil do stór an tionscadail i Gitlab, seolann Gitlab píblíne a úsáideann leagan nua den chomhshaol.

Céimeanna:

  • tógáil (ag tógáil íomhá Docker nua)
  • tástáil (tástáil)
  • glanadh suas (an timpeallacht tástála a bhaint)
  • brúigh (cuirimid chuig clárlann Docker é)
  • imscaradh (imscaraimid an feidhmchlár chuig Kubernetes via Helm).

Southbridge i Chelyabinsk agus Bitrix i Kubernetes

Hurray, tá sé réidh, a ligean ar é a chur i bhfeidhm!
Bhuel, nó cuir ceisteanna má tá aon cheann ann.

Mar sin, cad a rinne muid

Ó thaobh teicniúil de:

  • Bitrix dockerized;
  • Bitrix “gearrtha” i gcoimeádáin, a gcomhlíonfaidh gach ceann acu íosmhéid feidhmeanna;
  • staid na gcoimeádán gan stát bainte amach;
  • réitigh sé an fhadhb le Bitrix a nuashonrú i Kubernetes;
  • lean gach feidhm Bitrix ag obair (beagnach gach);
  • D'oibríomar ar imscaradh go Kubernetes agus rolladh siar idir leaganacha.

Ó thaobh gnó de:

  • lamháltas locht;
  • Uirlisí Kubernetes (comhtháthú éasca le Gitlab CI, imscaradh gan uaim, srl);
  • pasfhocail rúnda (nach bhfuil le feiceáil ach amháin dóibh siúd a bhfuil rochtain dhíreach acu ar na pasfhocail);
  • Tá sé áisiúil timpeallachtaí breise a chruthú (le haghaidh forbartha, tástálacha, etc.) laistigh d’aon bhonneagar.

Foinse: will.com

Add a comment