ProHoster > Blog > Pulega > Southbridge i Chelyabinsk ma Bitrix i Kubernetes
Southbridge i Chelyabinsk ma Bitrix i Kubernetes
Sysadminka system administrator meetups o loʻo faia i Chelyabinsk, ma i le mea mulimuli na ou tuʻuina atu se lipoti i la matou fofo mo le faʻaogaina o talosaga i le 1C-Bitrix i Kubernetes.
Bitrix, Kubernetes, Ceph - o se faʻafefiloi lelei?
O le a ou taʻu atu ia te oe pe faapefea ona matou tuʻufaʻatasia se fofo galue mai nei mea uma.
Tatou o!
O le feiloaiga na faia ia Aperila 18 i Chelyabinsk. E mafai ona e faitau e uiga i a matou feiloaiga i Timepad ma vaai i YouTube.
Afai e te manaʻo e sau ia i matou ma se lipoti poʻo se faʻalogo - faʻafeiloaʻi, tusi i [imeli puipuia] ma luga ole Telegram t.me/vadimisakanov.
Fofo "Bitrix i Kubernetes, version Southbridge 1.0"
O le a ou talanoa e uiga i la matou fofo i le faatulagaga "mo dummies i Kubernetes", e pei ona faia i le feiloaiga. Ae ou te manatu e te iloa upu Bitrix, Docker, Kubernetes, Ceph a itiiti ifo i le tulaga o tala i Wikipedia.
O le a le mea ua saunia e uiga i le Bitrix i Kubernetes?
E itiiti lava faʻamatalaga i luga ole Initaneti atoa e uiga i le faʻaogaina o talosaga Bitrix i Kubernetes.
Na o mea nei na ou mauaina:
Lipoti a Alexander Serbul, 1C-Bitrix, ma Anton Tuzlukov mai Qsoft:
Ou te lapatai atu ia te oe, matou te leʻi siakiina le lelei o fofo ile sootaga i luga :)
I le ala, pe a saunia la matou fofo, sa ou talanoa ma Alexander Serbul, ona leʻi oʻo mai lea o lana lipoti, o lea i totonu o aʻu ata o loʻo i ai se mea "E le faʻaaogaina e Bitrix Kubernetes."
Pe lava lea e fai ai se fofo atoatoa mo Bitrix i Kubernetes?
Leai. O loʻo i ai le tele o faʻafitauli e manaʻomia ona foia.
O a faʻafitauli i le Bitrix i Kubernetes?
Muamua, o ata saunia mai Dockerhub e le talafeagai mo Kubernetes
Afai tatou te manana'o e fau se fa'ata'ita'iga microservices (ma i Kubernetes e masani ona tatou faia), e mana'omia ona tu'u'ese'ese a tatou talosaga Kubernetes i totonu o koneteina ma fa'atino e atigipusa ta'itasi se galuega la'ititi (ma fai lelei). Aisea na o le tasi? I se faapuupuuga, o le faigofie o le sili atu ona faatuatuaina.
Ina ia faʻamalamalama atili, matamata i lenei tusiga ma le vitio, faʻamolemole: https://habr.com/ru/company/southbridge/blog/426637/
O ata Docker i Dockerhub e masani lava ona fausia i luga o le mataupu faavae uma, o lea e tatau lava ona fai a matou lava uila ma e oʻo lava i le fatuina o ata mai le sasa.
Lona lua - o le code site e faʻasaʻo mai le admin panel
Na matou faia se vaega fou i luga o le 'upega tafaʻilagi - na faʻafouina le code (faʻaopoopoina se lisi ma le igoa o le vaega fou).
Afai na e suia meatotino o se vaega mai le admin panel, ua suia le code.
Kubernetes "e ala i le faaletonu" e le mafai ona galue i lenei mea; pusa e tatau ona leai ni setete.
Mafua'aga: O koneteina ta'itasi (pod) i totonu o le fuifui e fa'agasolo na'o se vaega o feoaiga. Afai e te suia le code i totonu o le pusa e tasi (pod), ona ese lea o le code i pods eseese, o le a ese le galue o le saite, ma o le a faʻaalia ituaiga eseese o le saite i tagata faʻaoga eseese. E le mafai ona e ola faapena.
Lona tolu - e tatau ona e foia le mataupu i le faʻapipiʻiina
Afai ei ai a matou monolith ma se tasi "malaga" server, e faigofie lava mea uma: matou te faʻapipiʻi se faʻavae fou, faʻafeiloaʻi le database, fesuiaʻi feoaiga i le faʻasologa fou o le code. O le suiga e tupu vave lava.
Afai ei ai sa matou 'upega tafaʻilagi i Kubernetes, tipi i microservices, e tele naua koneteina ma code - oh. E te manaʻomia le aoina o koneteina ma se faʻamatalaga fou o le code, taʻavale i fafo nai lo mea tuai, faʻafeiloaʻi saʻo le faʻamaumauga, ma faia lelei lenei mea e le iloa e tagata asiasi. O le mea e lelei ai, o Kubernetes e fesoasoani ia i matou i lenei mea, lagolagoina le tele o ituaiga eseese o faʻatinoga.
Lona fa - e tatau ona e foia le mataupu o le teuina statics
Afai o lau 'upega tafaʻilagi e "naʻo" 10 gigabytes ma e te faʻapipiʻiina atoa i totonu o koneteina, o le ae faʻaiʻu i 10 gigabyte koneteina e faʻavavau e faʻapipiʻi.
E te manaʻomia le teuina o vaega "sili ona mamafa" o le saite i fafo atu o pusa, ma o le fesili e tulaʻi mai pe faʻafefea ona fai saʻo.
O le a le mea o lo'o misi mai la tatou fofo?
O le Bitrix code atoa e le vaevaeina i microfunctions / microservices (ina ia tuʻu ese le resitalaina, o le faleoloa i luga ole laiga e ese, ma isi). Matou te teuina le faʻavae code atoa i totonu o pusa taʻitasi.
Matou te le teuina foi faʻamaumauga i Kubernetes (O loʻo ou faʻatinoina pea fofo ma se faʻamaumauga i Kubernetes mo siosiomaga atinaʻe, ae le mo le gaosiga).
O le a maitauina pea e pule o le upega tafaʻilagi o loʻo faʻaogaina le saite ile Kubernetes. E le sa'o lelei le galuega "check system"; e fa'asa'o le code site mai le admin panel, e tatau ona e kiliki muamua le "Ou te mana'o e fa'asa'o le code" fa'amau.
O faʻafitauli ua faʻaalia, o le manaʻoga e faʻatino microservices ua faʻamoemoeina, ua manino le sini - ia maua se faiga galue mo le faʻatinoina o talosaga ile Bitrix i Kubernetes, faʻasaoina uma le gafatia o Bitrix ma le lelei o Kubernetes. Tatou amata faatino.
atiga
E tele "galue" pods ma se 'upega tafaʻilagi (tagata faigaluega).
Tasi i lalo ma galuega cron (na'o le tasi e mana'omia).
Tasi le faʻaleleia mo le faʻasaʻoina o le code site mai le admin panel (e naʻo le tasi e manaʻomia).
Matou te foia fesili:
O fea e teu ai sauniga?
O fea e teu ai le cache?
O fea e teu ai statics, ae le o le tuʻuina o gigabytes o statics i totonu o le tele o koneteina?
E fa'afefea ona galue le database?
Ata Docker
Matou te amata i le fausiaina o se ata Docker.
O le filifiliga sili o loʻo i ai le tasi ata lautele, i luga o lona faʻavae tatou te maua ai pusa faigaluega, pods ma Crontasks, ma faʻaleleia pods.
E aofia ai le nginx, apache/php-fpm (e mafai ona filifilia i le taimi o le fausiaina), msmtp mo le lafoina o meli, ma le cron.
Pe a faʻapipiʻi le ata, o le faʻavae atoa o le upega tafaʻilagi e kopiina i le /app directory (sei vagana ai na vaega o le a matou siitia atu i se isi mea e teu faʻasoa).
Microservices, tautua
tagata faigaluega:
Container ma nginx + container apache/php-fpm + msmtp
E leʻi manuia le faʻanofoina o le msmtp i se isi microservice, o Bitrix ua amata ona ita ona e le mafai ona lafo saʻo meli.
E leai se fa'asaina o le suia o code i totonu o pusa
teuina o sauniga
Bitrix cache teuina
O le isi mea taua: matou te teuina faʻaupuga mo le faʻafesoʻotaʻi i mea uma, mai le database i meli, i kubernetes mealilo. Matou te maua se ponesi: o faʻaupuga e faʻaalia naʻo i latou matou te tuʻuina atu i ai le avanoa i mealilo, ae le o tagata uma e mafai ona maua le faʻavae o le code base.
Teuina mo statics
E mafai ona e faʻaogaina soʻo se mea: ceph, nfs (ae matou te le fautuaina nfs mo le gaosiga), faʻapipiʻi fesoʻotaʻiga mai le auʻaunaga ao, ma isi.
O le teuina o le a mana'omia ona fa'afeso'ota'i i totonu o koneteina i le /upload/ directory o le saite ma isi fa'atonuga fa'atasi ai ma mea fa'amautu.
Faʻamaumauga
Mo le fa'afaigofie, matou te fautuaina le fa'anofoina o fa'amaumauga i fafo atu o Kubernetes. Ole faavae ile Kubernetes ose galuega faʻalavelave ese; o le a faʻaogaina ai le polokalame o se faʻatonuga o le tele e sili atu ona faigata.
Teuga o sauniga
Matou te faʻaaogaina memcached :)
E taulimaina lelei le teuina o sauniga, faʻapipiʻi, ma lagolagoina "native" e pei o session.save_path i le php. O sea faiga na faʻataʻitaʻiina i le tele o taimi i le faʻataʻitaʻiga masani o le monolithic, pe a matou fausia fuifui ma se numera tele o 'upega tafaʻilagi. Mo le faʻapipiʻiina matou te faʻaaogaina foʻi.
$ helm install stable/memcached --name session
php.ini - iinei o le ata o loʻo i ai tulaga mo le teuina o sauniga ile memcached
Na matou fa'aogaina le Si'osi'omaga Variables e pasi ai fa'amatalaga e uiga i 'au fa'atasi ma le memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
O lenei mea e mafai ai ona e faʻaogaina le code tutusa i le dev, stage, test, prod environments (o le memcached host names i totonu o le a eseese, o lea e tatau ai ona tatou pasia se igoa talimalo tulaga ese mo sauniga i siosiomaga taʻitasi).
Bitrix cache teuina
Matou te manaʻomia le teuina o mea sese e mafai e pusa uma ona tusi i ai ma faitau mai ai.
Matou te faʻaaogaina foi memcached.
O lenei fofo e fautuaina e Bitrix lava ia.
$ helm install stable/memcached --name cache
bitrix/.settings_extra.php - iinei i le Bitrix o loʻo faʻamaonia le mea o loʻo teuina ai le cache
Matou te fa'aogaina fo'i Su'esu'ega Si'osi'omaga.
Krontaski
E i ai auala eseese e faʻatautaia ai Crontasks i Kubernetes.
tu'ufa'atasiga tu'ufa'atasia fa'atasi ai ma se pusa mo le ta'avale Crontasks
cronjob mo le faʻatinoina o crontasks (pe a fai o se upega tafaʻilagi lenei - ma wget https://$host$cronjobname, poʻo le kubectl exec i totonu o se tasi o pusa faigaluega, ma isi.)
ma isi tulaga faapena
E mafai ona e finau e uiga i le mea e sili ona saʻo, ae i lenei tulaga na matou filifilia le filifiliga "tuuese le faʻaogaina ma pods mo Crontasks"
E faapefea ona fai:
fa'aopoopo galuega cron e ala i le ConfigMap po'o le faila config/addcron
i se tasi faʻataʻitaʻiga matou te faʻalauiloaina se atigipusa e tutusa ma le worker pod + faʻatagaina le faʻatinoina o galuega pale i totonu
o loʻo faʻaaogaina le faʻavae tutusa, faʻafetai i le faʻatasi, faʻapipiʻi pusa e faigofie
O le a le lelei tatou te maua:
o loʻo matou galulue Crontasks i se siʻosiʻomaga e tutusa ma le atinaʻe' siosiomaga (docker)
Crontasks e le manaʻomia le "toe tusi" mo Kubernetes, latou te galulue i le faiga lava e tasi ma i le faʻavae tutusa e pei o muamua.
cron galuega e mafai ona fa'aopoopoina e tagata uma o le 'au ma tu'uina atu aia tatau i le lala gaosiga, ae le na'o fa'atonu
Southbridge K8SDeploy module ma le faʻasologa o tulafono mai le vaega faʻatonu
Sa matou talanoa e uiga i le faʻaleleia i lalo?
E fa'afefea ona fa'atonu feoaiga iina?
Hurray, matou tusia se module mo lenei i le PHP :) O se laʻititi laʻititi laʻititi lea mo Bitrix. E le'i avanoa fa'alaua'itele, ae matou te fuafua e tatala.
O loʻo faʻapipiʻiina le module e pei o se module masani ile Bitrix:
Ma e pei o lenei:
E fa'atagaina oe e setiina se kuki e fa'ailoa ai le pule o le saite ma fa'ataga ai Kubernetes e fa'asolo atu fefa'ataua'iga i le fa'aleleia pod.
A maeʻa suiga, e tatau ona e kiliki git push, o suiga o le code o le a lafoina i git, ona fausia ai lea e le faiga o se ata ma se faʻailoga fou o le code ma "taʻavale" i luga o le fuifui, sui ai pusa tuai. .
Ioe, o se vaega o le tootoo, ae i le taimi lava e tasi tatou te tausia le fausaga o le microservice ma e le aveesea mai tagata Bitrix le latou avanoa e sili ona fiafia e faasaʻo ai le code mai le admin panel. I le faaiuga, o se filifiliga lea; e mafai ona e foia le faʻafitauli o le faʻasaʻoina o le code i se isi auala.
Siata foeuli
Ina ia fausia ni talosaga ile Kubernetes, e masani ona matou fa'aogaina le pule o pusa Helm.
Mo la matou fofo Bitrix i Kubernetes, na tusia e Sergey Bondarev, le matou pule sili o le faiga, se siata Helm faapitoa.
E fausia ai tagata faigaluega, ugrade, cron pods, configures ingresses, services, ma fesiitai fesuiaiga mai mea lilo Kubernetes i pods.
Matou te teuina le code i Gitlab, ma matou faʻatautaia foi le Helm build mai Gitlab.
O le foeuli e mafai ai foi ona e faia se "seamless" rollback pe a faʻafuaseʻi se mea e tupu i le taimi o le faʻapipiʻiina. E manaia pe a e le popole "faʻalelei le code e ala i le ftp ona o le prod na paʻu," ae o Kubernetes e otometi, ma e aunoa ma se taimi malolo.
Fa'atino
Ioe, matou te fiafia i Gitlab & Gitlab CI, matou te faʻaaogaina :)
Pe a tuʻuina atu i Gitlab i le fale teu oloa, Gitlab faʻalauiloa se paipa e faʻaogaina ai se faʻamatalaga fou o le siosiomaga.
Tulaga:
fausia (fausia se ata fou Docker)
su'ega (su'ega)
fa'amama (ave'ese le siosiomaga su'ega)
tulei (matou te lafoina i le Docker resitara)
fa'apipi'i (matou te tu'uina atu le talosaga i Kubernetes e ala i le Helm).
Hurray, ua sauni, tatou fa'atinoina!
Ia, pe fai ni fesili pe a iai.
O le a la le mea na matou faia
Mai se vaaiga faʻapitoa:
fa'amauina Bitrix;
“Otioti” le Bitrix i totonu o koneteina, o ia mea ta'itasi e fa'atino ai le la'ititi o galuega;
maua le tulaga e leai ni setete o koneteina;
foia le faafitauli i le faʻafouina o Bitrix i Kubernetes;
sa fa'aauau pea galuega uma a Bitrix (toetoe o mea uma);
Na matou galulue i le faʻapipiʻiina i Kubernetes ma toe faʻafoʻi i le va o lomiga.
Mai le tulaga pisinisi:
faapalepale masei;
Meafaigaluega Kubernetes (faʻapipiʻi faigofie ma Gitlab CI, faʻaogaina le faʻaogaina, ma isi);
upu fa'alilolilo (e na'o i latou e tu'u sa'o le avanoa i upu fa'aupuga);
E faigofie le fatuina o siʻosiʻomaga faaopoopo (mo atinaʻe, suʻega, ma isi) i totonu o se atinaʻe e tasi.