Southbridge muChelyabinsk uye Bitrix muKubernetes

Sysadminka system administrator meetups iri kuitika muChelyabinsk, uye pakupedzisira ndakapa mushumo pamusoro pemhinduro yedu yekushandisa zvikumbiro pa1C-Bitrix muKubernetes.

Bitrix, Kubernetes, Ceph - musanganiswa mukuru?

Ini ndichakuudza kuti tinoisa sei pamwe chete mhinduro yekushanda kubva kune izvi zvese.

Ngatitangei!

Southbridge muChelyabinsk uye Bitrix muKubernetes

Musangano wakaitwa musi waApril 18 muChelyabinsk. Unogona kuverenga nezvemisangano yedu pa Timepad uye tarisa YouTube.

Kana iwe uchida kuuya kwatiri nemushumo kana semuteereri - kugamuchirwa, nyorera kune [email inodzivirirwa] uye paTeregiramu t.me/vadikisakanov.

Mharidzo yangu

Southbridge muChelyabinsk uye Bitrix muKubernetes

Masiraidhi

Solution "Bitrix muKubernetes, shanduro Southbridge 1.0"

Ini ndichataura nezve mhinduro yedu mune "yedummies muKubernetes" fomati, sezvakaitwa pamusangano. Asi ini ndinofungidzira kuti iwe unoziva mazwi Bitrix, Docker, Kubernetes, Ceph zvirinani pamwero wezvinyorwa paWikipedia.

Chii chakagadzirira-chakagadzirwa nezveBitrix muKubernetes?

Pane ruzivo rushoma paInternet yese nezvekushanda kweBitrix application muKubernetes.
Ndakangowana zvinhu izvi:

Chirevo chaAlexander Serbul, 1C-Bitrix, naAnton Tuzlukov kubva kuQsoft:

Ndinokurudzira kuiteerera.

Kugadzira yako mhinduro kubva kumushandisi serkyron pana Habré.
Wakawana zvimwe chisarudzo chakadaro.

Aaand ... chaizvoizvo, ndizvo chete.

Ndinokuyambira, isu hatina kutarisa mhando yemhinduro mune zvinongedzo zviri pamusoro :)
Nenzira, pakugadzirira mhinduro yedu, ndakataura naAlexander Serbul, ipapo chirevo chake chakanga chisati chaoneka, saka mumasiraidhi angu pane chinhu "Bitrix haishandisi Kubernetes."

Asi kwatove neakawanda akagadzirira-akagadzirwa Docker mifananidzo yekumhanyisa Bitrix muDocker: https://hub.docker.com/search?q=bitrix&type=image

Izvi zvakakwana here kugadzira mhinduro yakakwana yeBitrix muKubernetes?
Aihwa. Kune nhamba huru yezvinetso zvinoda kugadziriswa.

Ndeapi matambudziko neBitrix muKubernetes?

Kutanga, mifananidzo yakagadzirwa kubva kuDockerhub haina kukodzera Kubernetes

Kana isu tichida kuvaka microservices architecture (uye muKubernetes isu tinowanzo kuita), isu tinofanirwa kupatsanura yedu Kubernetes application mumidziyo uye kuita kuti mudziyo wega wega uite rimwe diki basa (uye riite nemazvo). Sei imwe chete? Muchidimbu, zviri nyore zvinovimbika.
Kuti uve wakajeka, tarisa chinyorwa ichi uye vhidhiyo, ndapota: https://habr.com/ru/company/southbridge/blog/426637/

Mifananidzo yeDocker muDockerhub inonyanya kuvakwa pane zvese-mu-imwe musimboti, saka isu taifanirwa kugadzira yedu bhasikoro uye kunyange kugadzira mifananidzo kubva kutanga.

Chechipiri - iyo saiti kodhi inogadziriswa kubva pane admin panhi

Isu takagadzira chikamu chitsva pane saiti - iyo kodhi yakagadziridzwa (dhairekitori rine zita rechikamu chitsva rakawedzerwa).

Kana iwe wakashandura zvivakwa zvechikamu kubva pane admin panhi, iyo kodhi yakachinja.

Kubernetes "nekusarudzika" haigone kushanda neizvi; midziyo inofanira kunge isina chimiro.

Chikonzero: Chigadziko chega chega (pod) chiri muchikwata chinogadzirisa chikamu chetraffic. Kana iwe ukashandura kodhi mumudziyo mumwe chete (pod), ipapo kodhi ichave yakasiyana mumapodhi akasiyana, saiti ichashanda zvakasiyana, uye shanduro dzakasiyana dzesaiti dzicharatidzwa kune vashandisi vakasiyana. Iwe unokona kurarama zvakadaro.

Chechitatu - iwe unofanirwa kugadzirisa nyaya yacho nekutumirwa

Kana isu tiine monolith uye imwe "yechinyakare" sevha, zvese zviri nyore: isu tinoshandisa kodhi nyowani base, fambisa dhatabhesi, shandura traffic kune iyo itsva vhezheni yekodhi. Kuchinja kunoitika pakarepo.
Kana isu tine saiti muKubernetes, cheka kuita mamicroservices, kune akawanda midziyo ine kodhi - oh. Iwe unofanirwa kuunganidza midziyo ine nyowani vhezheni yekodhi, ibvise kunze kweiyo yekare, fambisa nenzira kwayo dhatabhesi, uye zvine mutsindo ita izvi zvisingaonekwe nevashanyi. Neraki, Kubernetes inotibatsira neizvi, tichitsigira boka rose remhando dzakasiyana dzekutumira.

Chechina - unoda kugadzirisa nyaya yekuchengetedza statics

Kana saiti yako iri "chete" 10 gigabytes uye iwe uchiisa zvachose mumidziyo, iwe unozopedzisira uine 10 gigabyte midziyo inotora nekusingaperi kuendesa.
Iwe unofanirwa kuchengetedza "zvinorema" zvikamu zvesaiti kunze kwemidziyo, uye mubvunzo unomuka wekuti ungaita sei izvi nenzira kwayo.

Chii chinoshaikwa kubva pamhinduro yedu?

Iyo yese Bitrix kodhi haina kukamurwa kuita microfunctions/microservices (kuitira kuti kunyoresa kwakaparadzana, online store module yakaparadzana, nezvimwewo). Isu tinochengeta iyo yose nheyo yekodhi mumudziyo wega wega.

Isu zvakare hatichengete dhatabhesi muKubernetes (ini ndichiri kuita mhinduro nedhatabhesi muKubernetes yenzvimbo dzekusimudzira, asi kwete yekugadzira).

Izvo zvicharamba zvichionekwa kune vatariri vesaiti kuti saiti inomhanya paKubernetes. Iyo "system cheki" basa harishande nemazvo; kugadzirisa iyo saiti kodhi kubva kune admin panhizha, unofanira kutanga wadzvanya bhatani rekuti "Ndinoda kugadzirisa kodhi".

Matambudziko akaonekwa, kudiwa kwekushandisa microservices kwakatemwa, chinangwa chakajeka - kuwana hurongwa hwekushanda hwekushandisa zvikumbiro paBitrix muKubernetes, kuchengetedza zvese kugona kweBitrix uye zvakanakira Kubernetes. Ngatitangei kushandisa.

akitekicha

Kune akawanda "ekushanda" pods ane web server (vashandi).
Imwe pasi ine cron mabasa (imwe chete inodiwa).
Imwe kusimudzira kwekugadzirisa iyo saiti kodhi kubva kune admin panhi (zvakare imwe chete inodiwa).

Southbridge muChelyabinsk uye Bitrix muKubernetes

Tinopindura mibvunzo:

  • Ndekupi kwekuchengetera zvirongwa?
  • Ndekupi kuchengeta cache?
  • Ndekupi kwekuchengetedza statics, kwete kuisa gigabytes ye statics muboka remidziyo?
  • Ko dhatabhesi richashanda sei?

Docker mufananidzo

Isu tinotanga nekuvaka mufananidzo weDocker.

Sarudzo yakanaka ndeyekuti isu tine mufananidzo wepasi rose, pahwaro hwayo tinowana mapodhi evashandi, mapodhi ane Crontasks, uye kusimudzira mapodhi.

Isu takagadzira mufananidzo wakadaro.

Inosanganisira nginx, apache/php-fpm (inogona kusarudzwa panguva yekuvaka), msmtp yekutumira tsamba, uye cron.

Paunenge uchiunganidza mufananidzo, iyo yese kodhi base yesaiti inoteedzerwa kune / app dhairekitori (kunze kweiyo zvikamu izvo isu tichaenda kune yakaparadzaniswa yakagovaniswa chengetedzo).

Microservices, masevhisi

mapepa evashandi:

  • Container ine nginx + mudziyo apache/php-fpm + msmtp
  • Izvo hazvina kushanda kufambisa msmtp mune yakaparadzana microservice, Bitrix iri kutanga kutsamwa kuti haikwanise kutumira tsamba zvakananga.
  • Chigaba chimwe nechimwe chine codebase yakakwana.
  • Kurambidza kushandura kodhi mumidziyo.

cron pasi:

  • mudziyo une apache, php, cron
  • yakazara kodhi base inosanganisirwa
  • kurambidza kuchinja kodhi mumidziyo

upgrade pasi pe:

  • nginx mudziyo + apache/php-fpm mudziyo + msmtp
  • Iko hakuna kurambidzwa kushandura kodhi mumidziyo

kuchengetwa kwechikamu

Bitrix cache kuchengetedza

Chimwe chinhu chakakosha: tinochengeta mapassword ekubatanidza kune zvese, kubva kudhatabhesi kuenda kune tsamba, mune kubernetes zvakavanzika. Isu tinowana bhonasi: mapassword anoonekwa chete kune avo vatinopa mukana kune zvakavanzika, uye kwete kune wese ane mukana weiyo kodhi yekodhi base.

Kuchengetera statics

Unogona kushandisa chero chinhu: ceph, nfs (asi isu hatikurudzire nfs yekugadzira), network kuchengetedza kubva kune makore vanopa, nezvimwe.

Iyo yekuchengetedza ichada kubatanidzwa mumidziyo kune / kurodha / dhairekitori resaiti uye mamwe madhairekitori ane static zvemukati.

Database

Kuti zvive nyore, tinokurudzira kufambisa dhatabhesi kunze kweKubernetes. Hwaro muKubernetes ibasa rakasiyana rakaomesesa; ichaita kuti chirongwa hurongwa hwehukuru hwakaoma.

Session storage

Isu tinoshandisa memcached :)

Inobata kuchengetwa kwesesheni zvakanaka, yakaunganidzwa, uye inotsigirwa "natively" sechikamu.save_path muphp. Sistimu yakadaro yakaedzwa kakawanda mukirasi yemonolithic architecture, patakavaka masumbu ane nhamba huru yemaseva ewebhu. Kuendesa tinoshandisa helm.

$ helm install stable/memcached --name session

php.ini - heino mufananidzo une zvigadziriso zvekuchengetedza zvikamu mu memcached

Isu takashandisa Environment Variables kupfuudza data nezvevaenzi vane memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Izvi zvinokutendera kuti ushandise iyo imwechete kodhi mu dev, nhanho, bvunzo, prod nharaunda (iyo memcached mazita evaenzi mavari achasiyana, saka isu tinoda kupfuudza rakasiyana zita remuenzi rezvikamu kune yega yega nharaunda).
Bitrix cache kuchengetedza

Tinoda chengetedzo inoshivirira iyo mapodhi ese anogona kunyora nekuverenga kubva.

Isu tinoshandisawo memcached.
Iyi mhinduro inokurudzirwa neBitrix pachayo.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - pano muBitrix inotsanangurwa panochengetwa cache

Isu tinoshandisa zvakare Environment Variables.

Krontaski

Pane nzira dzakasiyana dzekumhanyisa Crontasks muKubernetes.

  • kupatsanura kutumirwa nepodhi yekumhanyisa Crontasks
  • cronjob yekuita crontasks (kana iyi iri yewebhu app - ine wget https://$host$cronjobname, kana kubectl exec mukati meimwe yevashandi pods, nezvimwewo)
  • etc.

Iwe unogona kukakavara pamusoro peiyo yakanyanya kunaka, asi mune ino kesi takasarudza sarudzo "yakaparadzana kutumirwa nemapods eCrontasks"

Zvinoitwa sei:

  • wedzera cron mabasa kuburikidza neConfigMap kana kuburikidza neiyo config/addcron faira
  • mune imwe nguva isu tinovhura mudziyo wakafanana neyevashandi pod + bvumidza kuitwa kwekorona mabasa mairi.
  • iyo imwechete kodhi base inoshandiswa, nekuda kwekubatana, musangano wemidziyo uri nyore

Chii chakanaka chatinowana:

  • isu tine maCrontask anoshanda munzvimbo yakafanana neyevagadziri nharaunda (docker)
  • Crontasks haidi "kunyorwa patsva" yeKubernetes, inoshanda mune imwechete fomu uye mune imwecheteyo kodhi base sepakutanga.
  • cron mabasa anogona kuwedzerwa nenhengo dzese dzechikwata dzine kodzero dzekuzvipira kubazi rekugadzira, kwete admins chete

Southbridge K8SDeploy module uye kodhi yekugadzirisa kubva pane admin panhi

Takanga tichitaura nezvekusimudzira pasi?
Nzira yekutungamira traffic ipapo?
Hurray, takanyora module yeiyi muPHP :) Iyi idiki yekirasi module yeBitrix. Haisati yave kuwanikwa pachena, asi isu tinoronga kuivhura.
Iyo module yakaiswa seyakajairwa module muBitrix:

Southbridge muChelyabinsk uye Bitrix muKubernetes

Uye zvinoita seizvi:

Southbridge muChelyabinsk uye Bitrix muKubernetes

Iyo inokutendera iwe kuseta cookie inozivisa saiti maneja uye inobvumira Kubernetes kutumira traffic kune yekusimudzira pod.

Kana shanduko dzapera, unofanirwa kudzvanya git push, shanduko yekodhi inotumirwa kune git, ipapo sisitimu inovaka mufananidzo neiyo vhezheni yekodhi uye "kuburitsa" iyo mhiri kwesumbu, ichitsiva mapodhi ekare. .

Ehe, idiki remudonzvo, asi panguva imwechete isu tinochengetedza iyo microservice architecture uye hatitore kubva kune vashandisi veBitrix mukana wavo wavanofarira wekugadzirisa kodhi kubva kune admin panel. Mukupedzisira, iyi isarudzo; unogona kugadzirisa dambudziko rekugadzirisa kodhi neimwe nzira.

Helm chati

Kuvaka maapplication paKubernetes, isu tinowanzo shandisa iyo Helm package maneja.
Kune yedu Bitrix mhinduro muKubernetes, Sergey Bondarev, anotungamira sisitimu maneja, akanyora yakakosha Helm chati.

Iyo inovaka mushandi, kusimudzira, cron pods, inogadzirisa ingresses, masevhisi, uye kutamisa zvinosiyana kubva Kubernetes zvakavanzika kune pods.

Isu tinochengeta kodhi muGitlab, uye isu zvakare tinomhanyisa Helm kuvaka kubva kuGitlab.

Muchidimbu, zvinoita seizvi

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

Helm zvakare inobvumidza iwe kuita "isina musono" rollback kana kamwe kamwe chimwe chinhu chikatadza panguva yekutumirwa. Zvakanaka kana usiri mukuvhunduka "gadzirisa kodhi kuburikidza neftp nekuti prod yakadonha," asi Kubernetes anozviita otomatiki, uye pasina kudzika.

Deploy

Ehe, isu tiri mafani eGitlab & Gitlab CI, isu tinoishandisa :)
Paunenge uchizvipira muGitlab kune purojekiti repository, Gitlab inotangisa pombi inoisa imwe vhezheni yenharaunda.

Nhanho:

  • kuvaka (kuvaka mufananidzo mutsva weDocker)
  • bvunzo (testing)
  • kuchenesa (kubvisa nzvimbo yekuedza)
  • push (tinoitumira kuDocker registry)
  • deploy (isu tinotumira application kuKubernetes kuburikidza neHelm).

Southbridge muChelyabinsk uye Bitrix muKubernetes

Hurray, yagadzirira, ngatiishandise!
Zvakanaka, kana kubvunza mibvunzo kana iripo.

Saka takaitei

Kubva pakuona kwehunyanzvi:

  • dockerized Bitrix;
  • "cheka" Bitrix mumidziyo, imwe neimwe inoita mashoma emabasa;
  • yakawana mamiriro asina mamiriro emidziyo;
  • yakagadzirisa dambudziko nekuvandudza Bitrix muKubernetes;
  • mabasa ose eBitrix akaramba achishanda (anenge ose);
  • Takashanda pakuendesa kuKubernetes uye kudzoreredza pakati peshanduro.

Kubva pakuona kwebhizinesi:

  • kukanganisa kushivirira;
  • Kubernetes zvishandiso (kubatanidzwa zviri nyore neGitlab CI, kutumirwa kusina musono, nezvimwewo);
  • mapassword anochengetwa akavanzika (anoonekwa chete kune avo vanopihwa zvakananga mapassword);
  • Zviri nyore kugadzira mamwe nharaunda (yekuvandudza, bvunzo, nezvimwewo) mukati meimwe gadziriro.

Source: www.habr.com

Voeg