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!

Southbridge i Chelyabinsk ma Bitrix i Kubernetes

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.

O la'u lipoti

Southbridge i Chelyabinsk ma Bitrix i Kubernetes

Ata faasolo

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 fautuaina e faalogo i ai.

Fausiaina o lau oe lava fofo mai le tagata faʻaoga serkyron i luga o Habré.
Maua atili sea ​​faaiuga.

Aaand... o le mea moni, pau lava lena.

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."

Ae ua leva ona i ai le tele o ata Docker ua saunia mo le faʻatinoina o Bitrix i Docker: https://hub.docker.com/search?q=bitrix&type=image

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).

Southbridge i Chelyabinsk ma Bitrix i Kubernetes

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.

Sa matou faia na o se ata faapena.

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.
  • O atigipusa taʻitasi e iai se faʻamaumauga atoa.
  • Fa'asa le suia o code i totonu o pusa.

cron i lalo:

  • pusa ma apache, php, cron
  • fa'avae code atoatoa ua aofia ai
  • fa'asa le suia o code i totonu o pusa

fa'aleleia i lalo:

  • nginx container + apache/php-fpm container + msmtp
  • 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:

Southbridge i Chelyabinsk ma Bitrix i Kubernetes

Ma e pei o lenei:

Southbridge i Chelyabinsk ma Bitrix i Kubernetes

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.

I se faapuupuuga, e pei o lenei

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

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).

Southbridge i Chelyabinsk ma Bitrix i Kubernetes

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.

puna: www.habr.com

Faaopoopo i ai se faamatalaga