{"id":35581,"date":"2019-10-31T22:05:09","date_gmt":"2019-10-31T19:05:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/southbridge-v-chelyabinske-i-bitriks-v-kubernetes\/"},"modified":"2019-10-31T22:05:09","modified_gmt":"2019-10-31T19:05:09","slug":"southbridge-v-chelyabinske-i-bitriks-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/southbridge-v-chelyabinske-i-bitriks-v-kubernetes","title":{"rendered":"Southbridge \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 ja Bitrix Kuberneteses.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>T\u0161eljabinskis toimuvad s\u00fcsteemihaldurite Sysadminka kohtumised, ja viimasel neist tegin ettekande meie lahendusest 1C-Bitrix rakenduste t\u00f6\u00f6tamiseks Kuberneteses.<\/p>\n<p><\/p>\n<p>Bitrix, Kubernetes, Ceph \u2014 suurep\u00e4rane segu?<\/p>\n<p><\/p>\n<p>R\u00e4\u00e4gin, kuidas me sellest k\u00f5ik koos t\u00f6\u00f6tava lahenduse kokku panime.<\/p>\n<p><\/p>\n<p>L\u00e4hme!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Southbridge \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 ja Bitrix Kuberneteses.\" src=\"\/wp-content\/uploads\/3f1b760eeab9dc07124a6353ccd2f004.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kohtumine toimus 18. aprillil T\u0161eljabinskis. Meie kohtumiste kohta saate lugeda <noindex><a rel=\"nofollow\" href=\"https:\/\/sysadminka.timepad.ru\">Timepad<\/a><\/noindex> ja vaadata <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/channel\/UCMblNgU0Gt-TXb9GdVeeinw\/\">YouTube'is.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Kui soovite meiega esitlema tulla v\u00f5i lihtsalt kuulajana, kirjutage aadressile vadim.isakanov@gmail.com ja Telegramis t.me\/vadimisakanov. <\/p>\n<p><\/p>\n<h2 id=\"moy-doklad\">Minu ettekande teema<\/h2>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MZqPNMUjr_M\" title=\"Ettekanne Bitrixist Kuberneteses\"><img decoding=\"async\" alt=\"Southbridge \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 ja Bitrix Kuberneteses.\" src=\"\/wp-content\/uploads\/eb02d3ceb8248faad927c2bcae0074de.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/yadi.sk\/i\/1q0YpFHBGBdtcg\">Slaidid<\/a><\/noindex><\/p>\n<p><\/p>\n<h2 id=\"reshenie-bitriks-v-kubernetes-versiya-southbridge-10\">Lahendus \u201eBitrix Kuberneteses, versioon Southbridge 1.0\u201c<\/h2>\n<p><\/p>\n<p>R\u00e4\u00e4gin meie lahendusest formaadis \u201eKubernetesi algajatele\u201c, kuidas see kohtumisel tehtud oli. Kuid eeldan, et s\u00f5nad Bitrix, Docker, Kubernetes, Ceph on teile v\u00e4hemalt tuntud Wikipediast.<\/p>\n<p><\/p>\n<h4 id=\"chto-voobsche-est-gotovogo-pro-bitriks-v-kubernetes\">Mis on \u00fcldiselt valmislahendusi Bitrixi jaoks Kuberneteses?<\/h4>\n<p><\/p>\n<p>Internetrus on Bitrixi rakenduste t\u00f6\u00f6tamise kohta Kuberneteses v\u00e4ga v\u00e4he teavet.<br \/>\nLeidsin vaid sellised materjalid:<\/p>\n<p><\/p>\n<p>Ettekande autoriks on Aleksandr Serbul, 1C-Bitrix ja Anton Tuzlukov Qsoftist: <\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"lHK4eOvLbRM\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/lHK4eOvLbRM\/hqdefault.jpg\" alt=\"M\u00e4ngi videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Soovitan seda kuulata.<\/p>\n<p><\/p>\n<p>Oma lahenduse arendus kasutaja poolt <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/serkyron\/\" class=\"user_link\">serkyron<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/351286\/\">Habr's<\/a><\/noindex>.<br \/>\nLeidsin veel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ESSch\/kubernetes\">sellise lahenduse.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Ja\u2026 tegelikult k\u00f5ik.<\/p>\n<p><\/p>\n<p>Hoiatan, et nende linkide kvaliteeti me ei ole kontrollinud \ud83d\ude42<br \/>\nMuide, meie lahenduse ettevalmistamise k\u00e4igus sukeldu, et Aleksandr Serbul v\u00e4hemalt tookord oma ettekannet ei olnud, seet\u00f5ttu on mu slaididel punkti \u201eBitrix ei kasuta Kuberneteset\u201c.<\/p>\n<p><\/p>\n<p>Kuid siiski on Bitrixi t\u00f6\u00f6tamiseks Dockeris juba palju valmis Docker-image'e: <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/search?q=bitrix&amp;type=image\">https:\/\/hub.docker.com\/search?q=bitrix&amp;type=image<\/a><\/noindex> <\/p>\n<p><\/p>\n<p>Kas seda piisab, et luua t\u00e4iuslik lahendus Bitrixi jaoks Kuberneteses?<br \/>\nEi. On palju probleeme, mis tuleb lahendada.<\/p>\n<p><\/p>\n<h4 id=\"v-chem-problemy-s-bitriks-v-kubernetes\">Millised on probleemid Bitrixiga Kuberneteses?<\/h4>\n<p><\/p>\n<p><strong>Esimene \u2014 valmis pildid Dockerhubis ei sobi Kubernetesesse.<\/strong><\/p>\n<p><\/p>\n<p>Kui soovime ehitada mikroteenuste arhitektuuri (ja Kuberneteses soovime seda tavaliselt), siis tuleb rakendus Kuberneteses jagada konteineriteks ja saavutada, et iga konteiner t\u00e4idab \u00fche v\u00e4ikese funktsiooni (ja teeb seda h\u00e4sti). Miks ainult \u00fcks? L\u00fchidalt \u2014 mida lihtsam, seda usaldusv\u00e4\u00e4rsem.<br \/>\nKui pikemalt \u2014 palun vaadake seda artiklit ja videot: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/426637\/\">https:\/\/habr.com\/ru\/company\/southbridge\/blog\/426637\/<\/a><\/noindex> <\/p>\n<p><\/p>\n<p>Docker pildid Dockerhubis on peamiselt ehitatud p\u00f5him\u00f5ttel \u201ek\u00f5ik \u00fches\u201c, seet\u00f5ttu pidime ikkagi oma jalgratta valmistama ja isegi pildid nullist tegema.<\/p>\n<p><\/p>\n<p><strong>Teine \u2014 saidi kood muudetakse administraatori paneelilt.<\/strong><\/p>\n<p><\/p>\n<p>Loomi uus jaotis saidil \u2014 kood on uuendatud (ilmunud uue jaotise nimega kaust).<\/p>\n<p><\/p>\n<p>Komponendi omadusi muudeti admin-paneelist \u2014 kood muutus.<\/p>\n<p><\/p>\n<p>Kubernetes ei oska sellisega vaikimisi t\u00f6\u00f6tada, konteinerid peavad olema muutumatud (Stateless).<\/p>\n<p><\/p>\n<p>P\u00f5hjus: iga konteiner (pod) klastris t\u00f6\u00f6tab ainult osa liiklust. Kui muuta koodi ainult \u00fches konteineris (podis), on erinevates podides erinev kood, veebisait t\u00f6\u00f6tab erinevalt, erinevatele kasutajatele kuvatakse erinevaid versioone veebisaidist. Nii ei saa elada.<\/p>\n<p><\/p>\n<p><strong>Kolmas \u2014 tuleb lahendada juurutamise k\u00fcsimus.<\/strong><\/p>\n<p><\/p>\n<p>Kui meil on monoliitne ja \u00fcks \u00abklassikaline\u00bb server, on k\u00f5ik v\u00e4ga lihtne: t\u00f5stame uue koodibaasi \u00fcles, teeme andmebaasi migratsiooni, suuname liikluse uue koodi versiooni peale. \u00dcleminek toimub hetkega.<br \/>\nKui meie sait on Kuberneteses, jagatud mikroteenusteks, konteineri koode on palju \u2014 see on keerulisem. Peame koguma konteinerid uue koodi versiooniga, vabastama need vanade asemel, \u00f5igesti teostama andmebaasi migratsiooni ning ideaaljuhul tegema seda k\u00fclastajate jaoks m\u00e4rkamatult. \u00d5nneks aitab Kubernetes meid selles, toetades mitmeid erinevaid juurutamise viise.<\/p>\n<p><\/p>\n<p><strong>Neljas \u2014 tuleb lahendada staatika hoidmise k\u00fcsimus.<\/strong><\/p>\n<p><\/p>\n<p>Kui teie sait kaalub \u00abvaid\u00bb 10 gigabaiti ja te t\u00f5state selle t\u00e4ielikult konteineritesse, saate 10-gigabaitised konteinerid, mis juurutatakse igavesti.<br \/>\nPeame hoidma k\u00f5ige \u00abraskemaid\u00bb osi saidist v\u00e4ljaspool konteinerite, ja tekib k\u00fcsimus, kuidas seda \u00f5igesti teha.<\/p>\n<p><\/p>\n<h4 id=\"chego-net-v-nashem-reshenii\">Mida meie lahendus ei paku.<\/h4>\n<p><\/p>\n<p>Kogu Bitrixi kood ei ole jagatud mikroteenusteks (nii, et registreerimine eraldi, internetipood eraldi jne). Kogu koodibaas on meil igas konteineris t\u00e4ielikult tallel.<\/p>\n<p><\/p>\n<p>Me ei hoia andmebaasi Kuberneteses (olen k\u00fcll rakendanud lahendusi andmebaasiga Kuberneteses arenduskeskkondade jaoks, aga mitte tootmises).<\/p>\n<p><\/p>\n<p>Saidihaldurid m\u00e4rkavad siiski, et sait t\u00f6\u00f6tab Kuberneteses. Funktsioon \u00abs\u00fcsteemi kontroll\u00bb t\u00f6\u00f6tab valesti, et muuta saidi koodi admin-paneelist, tuleb esmalt vajutada nuppu \u00abtahan koodi redigeerida\u00bb.<\/p>\n<p><\/p>\n<p>Oleme probleemid lahendanud, mikroteenuste rakendamise vajadusega selgeks saanud, eesm\u00e4rk on selge \u2014 luua toimiv s\u00fcsteem Bitrixi rakenduste k\u00e4itamiseks Kuberneteses, s\u00e4ilitades nii Bitrixi funktsionaalsuse kui ka Kubernetesi eelised. Alustame rakendamist.<\/p>\n<p><\/p>\n<h4 id=\"arhitektura\">Arhitektuur<\/h4>\n<p><\/p>\n<p>Palju \u201et\u00f6\u00f6tavaid\u201d pod'e veebiserveriga (t\u00f6\u00f6tajad).<br \/>\n\u00dcks pod kront\u00f6\u00f6ride jaoks (kindlasti ainult \u00fcks).<br \/>\n\u00dcks upgrade pod saidi koodi redigeerimiseks administraatori paneelist (ka kindlasti ainult \u00fcks).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Southbridge \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 ja Bitrix Kuberneteses.\" src=\"\/wp-content\/uploads\/e26a787c11f78811b15a89f597331ef1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lahendame k\u00fcsimused:<\/p>\n<p><\/p>\n<ul>\n<li>Kus salvestada sessioonid?<\/li>\n<li>Kus salvestada cache?<\/li>\n<li>Kus salvestada statikat, ei saa ju gigabaitide kaupa statikat hunnikus konteinerites hoida?<\/li>\n<li>Kuidas t\u00f6\u00f6tatakse andmebaasiga?<\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"docker-obraz\">Docker\u2019i pilt<\/h4>\n<p><\/p>\n<p>Alustame Docker\u2019i pildi koostamisest.<\/p>\n<p><\/p>\n<p>Ideaalne variant \u2014 meil on \u00fcks universaalne pilt, mille p\u00f5hjal saame nii t\u00f6\u00f6tajate pod'id, kui ka pod'id kront\u00f6\u00f6ride ja upgrade'i jaoks.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/r\/centosadmin\/bitrixenv\">Olemegi just sellise pildi teinud<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Siia on lisatud nginx, apache\/php-fpm (v\u00f5ib valida koostamisel), msmtp e-kirjade saatmiseks ning cron.<\/p>\n<p><\/p>\n<p>Pildi koostamisel kopeeritakse kausta \/app kogu saidi koodibaas (v\u00e4lja arvatud need osad, mis viime eraldi jagatud salvestusse).<\/p>\n<p><\/p>\n<h4 id=\"mikroservisnost-servisy\">Mikroteenused, teenused<\/h4>\n<p><\/p>\n<p><strong>T\u00f6\u00f6tajate pod'id:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Konteiner nginx'i + konteiner apache\/php-fpm + msmtp<\/li>\n<li>msmtp eraldamine eraldi mikroteenuseks ei \u00f5nnestunud, Bitrix hakkab nurisema, et ei saa otse e-kirju saata<\/li>\n<li>Igas konteineris on terve koodibaas.<\/li>\n<li>Koodimuutuste keeld konteinerites.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>cron pod:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>konteiner apache, php, cron<\/li>\n<li>komplektis on t\u00e4iuslik koodibaas<\/li>\n<li>koodimuutuste keeld konteinerites<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>upgrade pod:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>konteiner nginx + konteiner apache\/php-fpm + msmtp<\/li>\n<li>koodimuutuste keeld konteinerites ei ole<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>sessioonide salvestus<\/strong><\/p>\n<p><\/p>\n<p><strong>Bitrixi cache'i salvestus<\/strong><\/p>\n<p><\/p>\n<p>Veel oluline: k\u00f5ik paroolid, sealhulgas andmebaasi ja e-kirjade \u00fchendamiseks, salvestame Kubernetesi saladustesse. Saame plussi \u2014 paroolid on n\u00e4htavad ainult neile, kellele anname \u00f5igused saladustele, mitte k\u00f5igile, kellel on p\u00e4\u00e4s projekti koodibaasi.<\/p>\n<p><\/p>\n<h4 id=\"hranilische-dlya-statiki\">Statika salvestus<\/h4>\n<p><\/p>\n<p>V\u00f5ib kasutada \u00fcksk\u00f5ik mida: ceph, nfs (aga nfs ei ole soovitatav tootmises), pilveteenuse pakkujate v\u00f5rgu salvestus jne.<\/p>\n<p><\/p>\n<p>Salvestus tuleb konteinerites \u00fchendada saidi \/upload\/ kausta ja teiste statika kaustadega.<\/p>\n<p><\/p>\n<h4 id=\"baza-dannyh\">Andmebaas<\/h4>\n<p><\/p>\n<p>Kerguse huvides soovitame viia andmebaas Kubernetesest v\u00e4lja. Andmebaas Kuberneteses \u2014 eraldi keeruline \u00fclesanne, muudab s\u00fcsteemi oluliselt keerulisemaks.<\/p>\n<p><\/p>\n<h4 id=\"hranilische-sessiy\">Sessioonide salvestus<\/h4>\n<p><\/p>\n<p>Kasutame memcached \ud83d\ude42<\/p>\n<p><\/p>\n<p>Seegehul on h\u00e4sti hakkama saama sessioonide salvestamisega, see r\u00fchmitatakse, toetatakse \"natiivselt\" nagu session.save_path php-s. Selline s\u00fcsteem on mitmeid kordi t\u00f6\u00f6le pandud klassikalises monoliitses arhitektuuris, kui me ehitasime klastreid suure arvu veebiserveritega. K\u00e4ivitamiseks kasutame helm.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ helm install stable\/memcached --name session<\/code><\/pre>\n<p><\/p>\n<p>php.ini \u2014 siin on pildis m\u00e4\u00e4ratud seadistused sessioonide salvestamiseks memcachedis<\/p>\n<p><\/p>\n<p>Kasutasime keskkonnamuutujaid memcachedi hostide andmete edastamiseks <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/inject-data-application\/define-environment-variable-container\/\">https:\/\/kubernetes.io\/docs\/tasks\/inject-data-application\/define-environment-variable-container\/<\/a><\/noindex>.<br \/>\nSee v\u00f5imaldab sama koodi kasutada dev, stage, test, prod keskkondades (memcachedi hostide nimed on erinevad, seega peame iga keskkonna jaoks edastama unikaalsed hostinimed sessioonide jaoks).<br \/>\nBitrixi puhvrihoidla<\/p>\n<p><\/p>\n<p>Meil on vaja talitlush\u00e4iretega vastupidavat hoidlit, kuhu k\u00f5ik pod'id saaksid kirjutada ja kust lugeda.<\/p>\n<p><\/p>\n<p>Kasutame ka memcachedi.<br \/>\nSeda lahendust soovitab Bitrix ise.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ helm install stable\/memcached --name cache<\/code><\/pre>\n<p><\/p>\n<p>bitrix\/.settings_extra.php \u2014 siin Bitrixis m\u00e4\u00e4ratakse, kus meie vahem\u00e4lu asub<\/p>\n<p><\/p>\n<p>Kasutame ka keskkonnamuutujaid.<\/p>\n<p><\/p>\n<h3 id=\"krontaski\">Kronit\u00f6\u00f6d<\/h3>\n<p><\/p>\n<p>Kuberneteses on erinevaid l\u00e4henemisviise kronit\u00f6\u00f6de t\u00e4itmiseks.<\/p>\n<p><\/p>\n<ul>\n<li>eraldi rakendamine pod'i jaoks, et t\u00e4ita kronit\u00f6id<\/li>\n<li>cronjob kronit\u00f6\u00f6de t\u00e4itmiseks (kui see on veebirakendus \u2014 koos wget <noindex>https:\/\/$host$cronjobname<\/noindex>, v\u00f5i kubectl exec \u00fche t\u00f6\u00f6tluspod'i sisse jne.)<\/li>\n<li>jne.<\/li>\n<\/ul>\n<p><\/p>\n<p>Selle \u00fcle v\u00f5ib vaielda, mis variant on k\u00f5ige \u00f5igem, kuid sel juhul valisime variandi \u201eeraldi deployment podidega crontaskide jaoks\u201d.<\/p>\n<p><\/p>\n<p>Kuidas see on tehtud:<\/p>\n<p><\/p>\n<ul>\n<li>kronit\u00f6id lisame l\u00e4bi ConfigMap'i v\u00f5i l\u00e4bi faili config\/addcron<\/li>\n<li>k\u00e4ivitame konteineri \u00fches eksemplaris, mis on identne t\u00f6\u00f6tluspod'iga + lubame sellel t\u00e4ita kronit\u00f6id<\/li>\n<li>kasutatakse sama koodibaasi, t\u00e4nu \u00fchtlustamisele on konteineri koostamine lihtne<\/li>\n<\/ul>\n<p><\/p>\n<p>Mida head me saame:<\/p>\n<p><\/p>\n<ul>\n<li>meil on t\u00f6\u00f6tavad kronit\u00f6\u00f6d keskkonnas, mis on identne arendajate keskkonnaga (docker)<\/li>\n<li>Crontask'e ei ole vaja Kubernetes'e jaoks \u201e\u00fclekirjutada\u201d, need t\u00f6\u00f6tavad t\u00e4pselt samas vormis ja samas koodibaasis nagu eelnevalt.<\/li>\n<li>kronit\u00f6id v\u00f5ivad lisada k\u00f5ik meeskonna liikmed, kellel on \u00f5igused commiteerida tootmispuusse, mitte ainult administraatorid<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"modul-southbridge-k8sdeploy-i-redaktirovanie-koda-iz-admin-paneli\">Moodul Southbridge K8SDeploy ja koodi redigeerimine halduspaneelist<\/h3>\n<p><\/p>\n<p>Kas me ei r\u00e4\u00e4kinud pod'i uuendamisest?<br \/>\nKuidas suunata sinna liiklust?<br \/>\nHoorraa, me kirjutasime selle jaoks mooduli php-s \ud83d\ude42 See on v\u00e4ike klassikaline moodul Bitrixi jaoks. Seda ei ole veel avalikult saadaval, aga me plaanime selle avada.<br \/>\nMoodul installitakse nagu tavaline moodul Bitrixis:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Southbridge \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 ja Bitrix Kuberneteses.\" src=\"\/wp-content\/uploads\/ba9f895ce645862c7ba003d523cd5656.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja see n\u00e4eb v\u00e4lja nii:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Southbridge \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 ja Bitrix Kuberneteses.\" src=\"\/wp-content\/uploads\/916ae9243fae9f6405cc68174ec5bb2b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See v\u00f5imaldab seada k\u00fcpsist, mis tuvastab saidi administraatori ja lubab Kubernetesel suunata liiklus uuendamise podi peale.<\/p>\n<p><\/p>\n<p>Kui muudatused on l\u00f5petatud, tuleb vajutada git push, koodimuudatused saadetakse git'i, seej\u00e4rel kogub s\u00fcsteem pildi uue koodiversiooniga ja \"teeb\" sellest klastrisse, asendades vanad podid.<\/p>\n<p><\/p>\n<p>Jah, see on veidi kohmakas, kuid sellegipoolest s\u00e4ilitame mikroteenuse arhitektuuri ja ei v\u00f5ta Bitrixi kasutajatelt \u00e4ra nende armastatud v\u00f5imalust oma koodi admin paneelilt muuta. L\u00f5ppude l\u00f5puks on see valik, koodi muutmise \u00fclesande saab lahendada ka teisiti.<\/p>\n<p><\/p>\n<h4 id=\"helm-chart\">Helm chart<\/h4>\n<p><\/p>\n<p>Rakenduste kogumiseks Kuberneteses kasutame me tavaliselt pakihaldurit Helm.<br \/>\nMeie Bitrixi lahendus Kuberneteses on spetsiaalselt kirjutatud Helm chart, mille autoriks on meie peamine s\u00fcsteemiadministraator Sergei Bondarev.<\/p>\n<p><\/p>\n<p>See teostab workerite, crontask'ide, ingress'ide ja teenuste \u00fclesehitust, seadistab ingress'e, teenuseid, edastab muutujaid Kubernetes'e saladustest pod'idesse.<\/p>\n<p><\/p>\n<p>Koodi hoiame Gitlabis ja Helm'i kogumise k\u00e4ivitame samuti Gitlabist.<\/p>\n<p><\/p>\n<p>L\u00fchidalt \u00f6eldes, see n\u00e4eb v\u00e4lja nii<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ helm upgrade --install project .helm --set image=registrygitlab.local\/k8s\/bitrix -f .helm\/values.yaml --wait --timeout 300 --debug --tiller-namespace=production<\/code><\/pre>\n<p><\/p>\n<p>Helm v\u00f5imaldab ka \"katkestusteta\" tagasip\u00f6\u00f6rdumist, kui midagi l\u00e4heb juurutamisel valesti. On tore, kui sa ei pea paanikas \"koodi FTP kaudu parandama, kuna tootmine on v\u00e4lja kukkunud\", vaid Kubernetes teeb seda automaatselt, ja veel ilma seisakuajata.<\/p>\n<p><\/p>\n<h4 id=\"deploy\">K\u00e4ivitamine<\/h4>\n<p><\/p>\n<p>Jah, me oleme Gitlab &amp; Gitlab CI f\u00e4nnid, kasutame seda \ud83d\ude42<br \/>\nKui Gitlabisse projektirepositooriumisse commiti, k\u00e4ivitab Gitlab toru, mis teostab uue keskkonna versiooni juurutamise.<\/p>\n<p><\/p>\n<p>Etapid:<\/p>\n<p><\/p>\n<ul>\n<li>build (kogume uue Docker pildi)<\/li>\n<li>test (testime)<\/li>\n<li>clean up (eemaldame testkeskkonna)<\/li>\n<li>push (saadame selle Docker registrisse)<\/li>\n<li>deploy (juurutame rakenduse Kuberneteses l\u00e4bi Helmi).<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Southbridge \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 ja Bitrix Kuberneteses.\" src=\"\/wp-content\/uploads\/74e565a0793b90c3cc19b8c7dedaff34.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hooray, valmis, viime ellu!<br \/>\nV\u00f5i esitame k\u00fcsimusi, kui neid on.<\/p>\n<p><\/p>\n<h2 id=\"itak-chto-my-sdelali\">Nii et, mida me tegime<\/h2>\n<p><\/p>\n<p><strong>Tehnilisest k\u00fcljest:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>dockeriseerisime Bitrixi;<\/li>\n<li>\"l\u00f5ikasime\" Bitrixi konteineriteks, millest iga\u00fcks t\u00e4idab minimaalset funktsiooni;<\/li>\n<li>saavutasime konteinerite state-less oleku;<\/li>\n<li>lahendasime Bitrixi uuendamise probleemi Kuberneteses;<\/li>\n<li>k\u00f5ik Bitrixi funktsioonid j\u00e4tkasid t\u00f6\u00f6tamist (peaaegu k\u00f5ik);<\/li>\n<li>t\u00f6\u00f6tasime v\u00e4lja juurutamise Kuberneteses ja tagasip\u00f6\u00f6rde versioonide vahel.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>\u00c4ri seisukohalt:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>veakindlus;<\/li>\n<li>Kubernetes'i t\u00f6\u00f6riistad (lihtne integratsioon Gitlab CI-ga, katkestusteta juurutamine jne);<\/li>\n<li>paroolid saladustes (n\u00e4htavad ainult neile, kellele on otseselt antud juurdep\u00e4\u00e4s paroolidele);<\/li>\n<li>veebikeskkonnas on mugav luua t\u00e4iendavaid keskkondi (arendamiseks, testimiseks jne).<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/456608\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0438\u0442\u0430\u043f\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 Sysadminka, \u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u044f \u0434\u0435\u043b\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u043e \u043d\u0430\u0448\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0432 Kubernetes. \u0411\u0438\u0442\u0440\u0438\u043a\u0441, Kubernetes, \u0421eph \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u043c\u0435\u0441\u044c? \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u044b \u0438\u0437 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041f\u043e\u0435\u0445\u0430\u043b\u0438! \u041c\u0438\u0442\u0430\u043f \u043f\u0440\u043e\u0448\u0435\u043b 18 \u0430\u043f\u0440\u0435\u043b\u044f \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435. \u041f\u0440\u043e \u043d\u0430\u0448\u0438 \u043c\u0438\u0442\u0430\u043f\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 Timepad \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35581","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0438\u0442\u0430\u043f\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 Sysadminka, \u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u044f \u0434\u0435\u043b\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u043e \u043d\u0430\u0448\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0432 Kubernetes. \u0411\u0438\u0442\u0440\u0438\u043a\u0441, Kubernetes, \u0421eph \u2014.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/southbridge-v-chelyabinske-i-bitriks-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Southbridge \u0432 \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 \u0438 \u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0438\u0442\u0430\u043f\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 Sysadminka, \u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u044f \u0434\u0435\u043b\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u043e \u043d\u0430\u0448\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0432 Kubernetes. \u0411\u0438\u0442\u0440\u0438\u043a\u0441, Kubernetes, \u0421eph \u2014.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/southbridge-v-chelyabinske-i-bitriks-v-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:05:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:05:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Southbridge T\u0161et\u0161eenias ja Bitrix Kuberneteses | ProHoster","description":"T\u0161et\u0161eenias toimuvad s\u00fcsteemiadministraatorite Sysadminka koosolekud ja viimase koosoleku k\u00e4igus tegin ettekande meie lahenduse kohta rakenduste t\u00f6\u00f6ks 1C-Bitrixis Kuberneteses. Bitrix, Kubernetes, Ceph \u2014.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/southbridge-v-chelyabinske-i-bitriks-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Southbridge \u0432 \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 \u0438 \u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0432 Kubernetes | ProHoster","og:description":"\u0412 \u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0438\u0442\u0430\u043f\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 Sysadminka, \u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u044f \u0434\u0435\u043b\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u043e \u043d\u0430\u0448\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0432 Kubernetes. \u0411\u0438\u0442\u0440\u0438\u043a\u0441, Kubernetes, \u0421eph \u2014.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/southbridge-v-chelyabinske-i-bitriks-v-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:05:09+00:00","article:modified_time":"2019-10-31T19:05:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35581","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 23:52:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:59:36","updated":"2026-01-21 23:52:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/35581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=35581"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/35581\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=35581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=35581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=35581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}