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!
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.
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:
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."
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).
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.
Á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
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:
Agus tá sé mar seo:
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.
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).
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.