Southbridge oo ku taal Chelyabinsk iyo Bitrix ee Kubernetes

Shirarka maamulaha nidaamka Sysadminka ayaa ka dhacaya Chelyabinsk, ugu dambeyntiina waxaan bixiyay warbixin ku saabsan xalkayaga socodsiinta codsiyada 1C-Bitrix ee Kubernetes.

Bitrix, Kubernetes, Ceph - isku dhafka weyn?

Waxaan kuu sheegi doonaa sida aan u soo ururinay xal shaqo oo dhan waxaas oo dhan.

Aan tagno!

Southbridge oo ku taal Chelyabinsk iyo Bitrix ee Kubernetes

Kulanku wuxuu dhacay Abriil 18 ee Chelyabinsk. Waxaad ka akhrisan kartaa kulankeena halkan Timepad oo eeg YouTube.

Haddii aad rabto in aad noo timaadid warbixin ama dhegaysi ahaan - ku soo dhawaada, qoraal u soo dir [emailka waa la ilaaliyay] iyo Telegram t.me/vadimisakanov.

Warbixintayda

Southbridge oo ku taal Chelyabinsk iyo Bitrix ee Kubernetes

Bogag

Xalka "Bitrix ee Kubernetes, nooca Southbridge 1.0"

Waxaan uga hadli doonaa xalkayaga qaabka "for dummies in Kubernetes", sida lagu sameeyay kulanka. Laakiin waxaan u maleynayaa inaad taqaano ereyada Bitrix, Docker, Kubernetes, Ceph ugu yaraan heerka maqaallada Wikipedia.

Maxaa ka diyaarsan Bitrix gudaha Kubernetes?

Waxaa jira macluumaad aad u yar oo ku saabsan internetka oo dhan oo ku saabsan hawlgalka codsiyada Bitrix ee Kubernetes.
Kaliya waxaan helay agabkan:

Waxaa soo tebiyay Alexander Serbul, 1C-Bitrix, iyo Anton Tuzlukov oo ka socda Qsoft:

Waxaan ku talinayaa in la dhegeysto.

Abuuritaanka xalkaaga isticmaalaha Serkyron ee Habré.
Wax badan la helay go'aanka noocaas ah.

Aad... dhab ahaantii, taasi waa intaas.

Waxaan kaaga digayaa, ma aanan hubin tayada xalalka xiriirinta sare :)
Jid ahaan, markii aan diyaarinay xalkeena, waxaan la hadlay Alexander Serbul, ka dibna warbixintiisu wali ma soo muuqan, sidaas darteed sawiradayda waxaa ku jira shay "Bitrix ma isticmaalo Kubernetes."

Laakiin waxaa horeyba u jiray sawirro badan oo Docker ah oo diyaarsan oo loogu talagalay socodsiinta Bitrix gudaha Docker: https://hub.docker.com/search?q=bitrix&type=image

Tani miyay ku filan tahay inay abuurto xal dhamaystiran Bitrix gudaha Kubernetes?
Maya Waxaa jira tiro badan oo dhibaatooyin ah oo u baahan in la xalliyo.

Waa maxay dhibaatooyinka Bitrix ee Kubernetes?

Marka hore, sawirada diyaarsan ee Dockerhub kuma haboona Kubernetes

Haddii aan rabno inaan dhisno qaab-dhismeedka microservices (iyo Kubernetes inta badan waxaan ku sameynaa), waxaan u baahanahay inaan kala saarno codsigayaga Kubernetes weelasha oo weel kasta ha qabto hal shaqo oo yar (oo si fiican u samee). Waa maxay sababta hal kaliya? Marka la soo koobo, sida ugu fudud ayaa la isku halleyn karaa.
Si aad u gaar noqoto, daawo maqaalkan iyo muuqaalkan, fadlan: https://habr.com/ru/company/southbridge/blog/426637/

Sawirada Dockerhub waxay inta badan ku dhisan yihiin mabda'a dhan-in-hal, markaa wali waxay ahayd inaan samayno baaskiil noo gaar ah oo aan xitaa sawiro ka abuurno xoq.

Labaad - koodhka goobta waxaa laga tifaftiray guddiga maamulka

Waxaan ka abuurnay qayb cusub goobta - koodhka waa la cusboonaysiiyay (tusaha magaca qaybta cusub ayaa lagu daray).

Haddii aad ka beddeshay sifooyinka qayb ka mid ah guddida maamulka, koodka ayaa beddelay.

Kubernetes "by default" kuma shaqayn karaan tan; weelasha waa inay ahaadaan kuwo bilaa dal ah.

Sababta: Weel kasta (pod) oo ku jira kooxdu waxay socodsiisaa qayb ka mid ah taraafikada. Haddii aad ku beddesho koodhka hal weel oo keliya (pod), markaa koodka ayaa ku kala duwanaan doona qaybo kala duwan, goobtu waxay u shaqayn doontaa si kala duwan, noocyada kala duwan ee goobta ayaa lagu tusi doonaa isticmaalayaasha kala duwan. Ma noolaan kartid sidaas.

Seddexaad - waxaad u baahan tahay inaad ku xalliso arrinta la geynta

Haddii aan haysano monolith iyo hal server "classic", wax walbaa waa sahlan yihiin: waxaan geynaa saldhig kood cusub, u guuri xogta xogta, u beddelo taraafikada nooca cusub ee koodhka. Bedeshadu waxay dhacdaa isla markiiba.
Haddii aan ku leenahay goob ku taal Kubernetes, googooyaa microservices, waxaa jira weelal badan oo leh koodh - oh. Waxaad u baahan tahay inaad ku ururiso weelasha leh nooc cusub oo kood ah, soo rogo halkii kuwii hore, si sax ah u guurto kaydka xogta, oo aad si fiican u sameyso tan iyada oo aan la dareemin booqdayaashu. Nasiib wanaag, Kubernetes wuu naga caawiyaa tan, isagoo taageeraya tiro dhan oo noocyo kala duwan ah oo la diro.

Afar - waxaad u baahan tahay inaad xalliso arrinta kaydinta statics

Haddii goobtaadu tahay "kaliya" 10 gigabytes oo aad gabi ahaanba geliso weelasha, waxaad ku dhamaan doontaa 10 gigabyte weel oo waligeed qaadanaysa in la geeyo.
Waxaad u baahan tahay inaad ku kaydiso qaybaha "ugu culus" ee goobta ka baxsan weelasha, su'aashu waxay soo baxaysaa sida tan si sax ah loo sameeyo.

Maxaa ka maqan xalkeena?

Koodhka Bitrix oo dhan looma kala qaybin microfunctions/services (si diiwangelintu u kala gaarto, moduleka dukaanka onlineku waa gooni, iwm.). Waxaan ku kaydinnaa dhammaan saldhigga koodka weel kasta.

Waxaan sidoo kale ku kaydin xogta Kubernetes (waxaan wali hirgeliyay xalalka kaydka Kubernetes ee deegaanka horumarinta, laakiin maaha wax soo saarka).

Wali waxay noqon doontaa mid la dareemo maamulayaasha goobta in goobtu ku shaqeyso Kubernetes. Shaqada "System Check" si sax ah uma shaqeyso; si aad u saxdo code ka goobta maamulka, waa in aad marka hore gujisaa "Waxaan rabaa in aan wax ka beddelo koodka".

Dhibaatooyinka ayaa la aqoonsaday, baahida loo qabo hirgelinta microservices ayaa la go'aamiyay, ujeedadu waa caddahay - in la helo nidaam shaqo oo loogu talagalay codsiyada ku saabsan Bitrix ee Kubernetes, ilaalinta labadaba awoodda Bitrix iyo faa'iidooyinka Kubernetes. Aan bilowno fulinta.

naqshadaha

Waxa jira boodhyo badan oo “shaqeeya” oo leh adeegaha shabakadda (shaqaale).
Mid ka hooseeya oo leh hawlaha cron (mid kaliya ayaa loo baahan yahay).
Hal casriyeyn oo loogu talagalay tafatirka koodka goobta ee guddiga maamulka (sidoo kale hal kaliya ayaa loo baahan yahay).

Southbridge oo ku taal Chelyabinsk iyo Bitrix ee Kubernetes

Waxaan xallinaa su'aalaha:

  • Xagee lagu kaydiyaa fadhiyada?
  • Xagee lagu kaydiyaa kaydka?
  • Halkee lagu kaydiyaa statics, ma in la dhigo gigabytes of statics farabadan weel?
  • Sidee buu kaydku u shaqayn doonaa?

Sawirka docker

Waxaan ku bilaabeynaa dhisitaanka sawirka Docker.

Xulashada ugu habboon waa in aan hayno hal sawir oo caalami ah, iyada oo ku saleysan waxaan helnaa galalka shaqaalaha, pods leh Crontasks, iyo kor u qaadida galalka.

Waxaan samaynay kaliya sawirkan oo kale.

Waxaa ku jira nginx, apache/php-fpm (waa la dooran karaa inta lagu jiro dhismaha), msmtp dirida boostada, iyo cron.

Marka sawirka la ururiyo, dhammaan saldhigga koodka ee goobta waxaa lagu koobiyeeyay hagaha/app (marka laga reebo qaybahaas aan u guuri doono kayd gaar ah oo la wadaago).

Adeegyada yaryar, adeegyada

cawska shaqaalaha:

  • Weel ku jira nginx + weelka apache/php-fpm + msmtp
  • Ma shaqeynin in msmtp loo wareejiyo adeeg yar oo gaar ah, Bitrix wuxuu bilaabayaa inuu ka xanaaqo inuusan si toos ah u diri karin boostada
  • Weel kastaa wuxuu leeyahay saldhig codeed oo dhammaystiran.
  • Mamnuucida beddelka koodka weelasha.

cron hoos:

  • weel leh apache, php, cron
  • saldhig code dhamaystiran oo lagu daray
  • mamnuuc in la beddelo koodka weelasha

ku cusboonaysii hoos:

  • weelka nginx + apache/php-fpm weelka + msmtp
  • Ma jiro wax mamnuuc ah oo lagu beddelayo koodka weelasha

kaydinta fadhiga

Kaydinta kaydinta Bitrix

Waxyaabo kale oo muhiim ah: waxaan ku kaydineynaa furaha sirta ah ee lagu xiro wax walba, laga bilaabo database ilaa boostada, kubernetes sirta. Waxaan helnaa gunno: furayaasha sirta ah waxay u muuqdaan kaliya kuwa aan siino sirta, mana aha qof kasta oo marin u leh saldhigga code ee mashruuca.

Kaydinta statics

Waxaad isticmaali kartaa wax kasta: ceph, nfs (laakiin kuma talineyno nfs wax soo saarka), kaydinta shabakadaha bixiyeyaasha daruuraha, iwm.

Kaydinta waxa ay u baahan doontaa in lagu xidho weelasha ilaa tusaha goobta iyo hagayaasha kale ee leh nuxurka taagan.

Database

Si ay u fududaato, waxaan kugula talineynaa in laga raro keydka macluumaadka meel ka baxsan Kubernetes. Saldhigga Kubernetes waa hawl adag oo gooni ah; waxay ka dhigi doontaa nidaamka nidaam aad u adag.

Kaydinta fadhiga

Waxaan isticmaalnaa memcached :)

Waxay si fiican u maamushaa kaydinta fadhiga, waa la ururiyay, waxaana loo taageeraa "hooyo ahaan" sida session.save_path in php. Nidaamka noocan oo kale ah ayaa marar badan lagu tijaabiyay qaab dhismeedka monolithic ee qadiimiga ah, markii aan dhisnay kooxo leh tiro badan oo shabakado ah. Diyaarinta waxaan isticmaalnaa koofiyadda.

$ helm install stable/memcached --name session

php.ini - halkan sawirku waxa uu ka kooban yahay habayn lagu kaydinayo fadhiyada memcached

Waxaan u isticmaalnay Kala beddelashada Deegaanka si aan u gudbinno xogta ku saabsan martigeliyayaasha leh memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Tani waxay kuu ogolaaneysaa inaad isticmaasho koodka isku midka ah ee dev, marxaladda, tijaabada, deegaanka prod (magacyada martida loo yahay ee ku jira way kala duwanaan doonaan, markaa waxaan u baahanahay inaan u gudubno magac martigelin gaar ah oo loogu talagalay kalfadhiyada deegaan kasta).
Kaydinta kaydinta Bitrix

Waxaan u baahanahay kaydinta khaladka u dulqaadan kara oo dhammaan boodhadhku wax u qori karaan waxna ka akhriyi karaan.

Waxaan sidoo kale isticmaalnaa memcached.
Xalkan waxaa ku taliya Bitrix laftiisa.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - halkan Bitrix waxaa lagu qeexay halka kaydka lagu kaydiyo

Waxaan sidoo kale isticmaalnaa beddelka deegaanka.

Krontaski

Waxaa jira habab kala duwan oo loo socodsiiyo Crontasks gudaha Kubernetes.

  • geyn gooni ah oo leh boodh loogu talagalay socodsiinta Crontasks
  • cronjob ee fulinta crontasks (haddii kani yahay abka shabakadda - oo leh wget https://$host$cronjobname, ama kubectl exec gudaha mid ka mid ah cawska shaqaalaha, iwm.)
  • iwm

Waxaad ka doodi kartaa midka ugu saxsan, laakiin kiiskan waxaan dooranay ikhtiyaarka "diridda goonida ah oo leh boodhyo loogu talagalay Crontasks"

Sida loo sameeyo:

  • ku dar hawlaha cron iyada oo loo marayo ConfigMap ama faylka config/adcron
  • Hal tusaale waxaanu soo saarnay weel la mid ah boodhka shaqaalaha + u ogolow fulinta hawlaha taajka ee ku jira
  • Saldhig code isku mid ah ayaa loo isticmaalaa, mahadsanid mideynta, isku dhafka weelka waa mid fudud

Maxaa inoo fiican:

  • waxaan ku leenahay Crontasks ka shaqeeya deegaan la mid ah deegaanka horumariyeyaasha (docker)
  • Crontasks uma baahna in "dib loogu qoro" Kubernetes, waxay ku shaqeeyaan qaab isku mid ah iyo isla saldhigga koodka sidii hore
  • Hawlaha cron waxaa ku dari kara dhammaan xubnaha kooxda ee leh xuquuqaha ay ka go'an tahay laanta wax-soo-saarka, maaha kaliya admins

Southbridge K8Seploy module iyo code tifaftirka guddiga maamulka

Waxaan ka hadlayeen kor u qaadida hoos?
Sidee loo toosiyaa taraafikada halkaas?
Hurray, waxaan ku qornay cutub kan PHP :) Kani waa cutub yar oo heersare ah oo loogu talagalay Bitrix. Wali si guud looma heli karo, laakiin waxaan qorsheyneynaa inaan furno.
Moduleka waxa loo rakibay sida cutubka caadiga ah ee Bitrix:

Southbridge oo ku taal Chelyabinsk iyo Bitrix ee Kubernetes

Waxayna u egtahay sidan:

Southbridge oo ku taal Chelyabinsk iyo Bitrix ee Kubernetes

Waxay kuu ogolaanaysaa inaad dejiso buskud tilmaamaysa maamulaha goobta oo u oggolaanaya Kubernetes inay u soo dirto taraafikada boodhka cusboonaysiinta.

Marka isbeddelada la dhammeeyo, waxaad u baahan tahay inaad gujiso git riix, isbeddellada koodhka ayaa loo diri doonaa git, ka dib nidaamku wuxuu dhisi doonaa sawir leh nooc cusub oo koodhka oo "ku soo rogi" kutlada oo dhan, isagoo beddelaya boodhyadii hore. .

Haa, waa qayb yar, laakiin isla mar ahaantaana waxaanu ilaalinaynaa qaab dhismeedka microservice oo kama fogaan isticmaalayaasha Bitrix fursada ay ugu jecel yihiin inay ku saxaan koodka guddiga maamulka. Dhamaadka, tani waa ikhtiyaar; waxaad xallin kartaa dhibaatada habaynta koodka si ka duwan.

shaxda Helm

Si loo dhiso codsiyada Kubernetes, waxaan caadi ahaan isticmaalnaa maamulaha xirmada Helm.
Xalkayaga Bitrix ee Kubernetes, Sergey Bondarev, maamulaha nidaamkayaga hogaaminaya, ayaa qoray jaantus Helm gaar ah.

Waxay dhistaa shaqaalaha, kor u qaadida, cron pods, waxay dejisaa soo-gelinta, adeegyada, waxayna ka wareejisaa doorsoomayaasha sirta Kubernetes una wareejiso pods.

Waxaan ku kaydinay koodhka Gitlab, sidoo kale waxaanu ka wadnaa dhismaha Helm Gitlab.

Marka la soo koobo, waxay u egtahay sidan

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

Helm sidoo kale wuxuu kuu ogolaanayaa inaad sameyso dib-u-soo-noqod "la'aan" haddii si lama filaan ah ay wax u dhacaan inta lagu jiro hawlgalka. Way fiicantahay marka aanad argagax ku jirin "ku hagaaji koodhka adoo isticmaalaya ftp sababtoo ah prod ayaa dhacay," laakiin Kubernetes si toos ah ayuu u sameeyaa, iyo iyada oo aan wakhti la'aan ahayn.

La geeyo

Haa, waxaanu nahay taageerayaasha Gitlab & Gitlab CI, waan isticmaalnaa :)
Markaad ka go'an tahay Gitlab kaydka mashruuca, Gitlab waxay soo saartaa dhuumo geynaya nooc cusub oo deegaanka ah.

Heerarka:

  • dhis (dhisidda sawir cusub oo Docker)
  • imtixaan (tijaabo)
  • nadiifinta (kasaarida deegaanka tijaabada)
  • riix (waxaan u dirnaa diiwaanka Docker)
  • geyn (arjiga waxaan u direynaa Kubernetes anagoo sii marinayna Helm).

Southbridge oo ku taal Chelyabinsk iyo Bitrix ee Kubernetes

Hurray, waa diyaar, aan hirgelinno!
Hagaag, ama weydii su'aalo haddii ay jiraan.

Haddaba maxaan samaynay

Marka laga eego dhinaca farsamada:

  • Dockerized Bitrix;
  • "gooy" Bitrix weelasha, mid kasta oo ka mid ah kuwaas oo qabta hawlo yar;
  • la gaaray xaalad aan dal lahayn oo weel;
  • waxay xalliyeen dhibaatada cusboonaysiinta Bitrix ee Kubernetes;
  • dhammaan hawlaha Bitrix waxay sii wadeen inay shaqeeyaan (ku dhawaad ​​dhammaan);
  • Waxa aanu ka shaqaynay dirista Kubernetes iyo dib u soo celinta inta u dhaxaysa noocyada.

Marka laga eego dhinaca ganacsiga:

  • dulqaadka qaladka;
  • Qalabka Kubernetes (is-dhexgalka fudud ee Gitlab CI, hawlgelin aan kala go 'lahayn, iwm);
  • furaha sirta ah (la arki karo oo keliya kuwa si toos ah loo oggolaaday inay galaan ereyada sirta ah);
  • Way ku habboon tahay in la abuuro jawi dheeraad ah (horumarin, imtixaanno, iwm.) gudaha hal kaabayaal.

Source: www.habr.com

Add a comment