Southbridge ni Chelyabinsk ati Bitrix ni Kubernetes

Awọn ipade alakoso eto Sysadminka n waye ni Chelyabinsk, ati ni ipari ti Mo fun iroyin kan lori ojutu wa fun ṣiṣe awọn ohun elo lori 1C-Bitrix ni Kubernetes.

Bitrix, Kubernetes, Ceph - adalu nla kan?

Emi yoo sọ fun ọ bi a ṣe ṣajọpọ ojutu iṣẹ kan lati gbogbo eyi.

Lọ!

Southbridge ni Chelyabinsk ati Bitrix ni Kubernetes

Ipade naa waye ni Oṣu Kẹrin Ọjọ 18 ni Chelyabinsk. O le ka nipa awọn ipade wa ni Timepad si wo YouTube.

Ti o ba fẹ wa si wa pẹlu ijabọ kan tabi bi olutẹtisi - kaabọ, kọ si [imeeli ni idaabobo] ati lori Telegram t.me/vadimisakanov.

Iroyin mi

Southbridge ni Chelyabinsk ati Bitrix ni Kubernetes

Awọn ifaworanhan

Solusan "Bitrix ni Kubernetes, ẹya Southbridge 1.0"

Emi yoo sọrọ nipa ojutu wa ni ọna kika "fun dummies ni Kubernetes", bi a ti ṣe ni ipade. Ṣugbọn Mo ro pe o mọ awọn ọrọ Bitrix, Docker, Kubernetes, Ceph o kere ju ni ipele awọn nkan lori Wikipedia.

Kini ti ṣetan-ṣe nipa Bitrix ni Kubernetes?

Alaye kekere wa lori gbogbo Intanẹẹti nipa iṣẹ ṣiṣe ti awọn ohun elo Bitrix ni Kubernetes.
Mo ti rii awọn ohun elo wọnyi nikan:

Iroyin nipasẹ Alexander Serbul, 1C-Bitrix, ati Anton Tuzlukov lati Qsoft:

Mo ṣeduro gbigbọ rẹ.

Ṣiṣe idagbasoke ojutu tirẹ lati ọdọ olumulo serkyron lori Habré.
Ri diẹ sii iru ipinnu.

Haa… nitootọ, iyẹn ni gbogbo rẹ.

Mo kilọ fun ọ, a ko ṣayẹwo didara awọn ojutu ni awọn ọna asopọ loke :)
Nipa ọna, nigbati ngbaradi ojutu wa, Mo sọrọ pẹlu Alexander Serbul, lẹhinna ijabọ rẹ ko ti han, nitorinaa ninu awọn kikọja mi ohun kan wa “Bitrix ko lo Kubernetes.”

Ṣugbọn ọpọlọpọ awọn aworan Docker ti o ti ṣetan fun ṣiṣe Bitrix ni Docker: https://hub.docker.com/search?q=bitrix&type=image

Ṣe eyi to lati ṣẹda ojutu pipe fun Bitrix ni Kubernetes?
Rara. Awọn nọmba nla ti awọn iṣoro wa ti o nilo lati yanju.

Kini awọn iṣoro pẹlu Bitrix ni Kubernetes?

Ni akọkọ, awọn aworan ti a ti ṣetan lati Dockerhub ko dara fun Kubernetes

Ti a ba fẹ kọ faaji microservices (ati ni Kubernetes a nigbagbogbo ṣe), a nilo lati ya ohun elo Kubernetes wa sinu awọn apoti ati ki o jẹ ki apoti kọọkan ṣe iṣẹ kekere kan (ati ṣe daradara). Kini idi kan nikan? Ni kukuru, rọrun diẹ sii ni igbẹkẹle.
Lati ni pato diẹ sii, wo nkan yii ati fidio, jọwọ: https://habr.com/ru/company/southbridge/blog/426637/

Awọn aworan Docker ni Dockerhub jẹ ipilẹ akọkọ lori ipilẹ gbogbo-ni-ọkan, nitorinaa a tun ni lati ṣe keke tiwa ati paapaa ṣẹda awọn aworan lati ibere.

Keji - koodu ojula ti wa ni satunkọ lati abojuto nronu

A ṣẹda apakan tuntun lori aaye naa - koodu ti ni imudojuiwọn (itọsọna kan pẹlu orukọ apakan tuntun ti ṣafikun).

Ti o ba yipada awọn ohun-ini ti paati kan lati inu nronu abojuto, koodu naa yipada.

Kubernetes “nipasẹ aiyipada” ko le ṣiṣẹ pẹlu eyi; awọn apoti gbọdọ jẹ alaini orilẹ-ede.

Idi: Eiyan kọọkan (podu) ninu awọn ilana iṣupọ nikan ni apakan ti ijabọ naa. Ti o ba yi koodu pada ninu apo eiyan kan nikan (pod), lẹhinna koodu naa yoo yatọ si awọn adarọ-ese oriṣiriṣi, aaye naa yoo ṣiṣẹ ni oriṣiriṣi, ati pe awọn ẹya oriṣiriṣi ti aaye naa yoo han si awọn olumulo oriṣiriṣi. O ko le gbe bi iyẹn.

Kẹta - o nilo lati yanju ọrọ naa pẹlu imuṣiṣẹ

Ti a ba ni monolith ati olupin “Ayebaye” kan, ohun gbogbo rọrun pupọ: a gbe ipilẹ koodu tuntun kan, gbe ibi ipamọ data, yipada ijabọ si ẹya tuntun ti koodu naa. Yipada waye lesekese.
Ti a ba ni aaye kan ni Kubernetes, ge sinu awọn microservices, ọpọlọpọ awọn apoti wa pẹlu koodu - oh. O nilo lati gba awọn apoti pẹlu ẹya tuntun ti koodu, yi wọn jade dipo awọn ti atijọ, jade lọ si ibi ipamọ data ni deede, ati ni pipe ṣe eyi laisi akiyesi nipasẹ awọn alejo. O da, Kubernetes ṣe iranlọwọ fun wa pẹlu eyi, ṣe atilẹyin gbogbo opo ti awọn oriṣiriṣi awọn imuṣiṣẹ.

Ẹkẹrin - o nilo lati yanju ọran ti titoju awọn iṣiro

Ti aaye rẹ ba jẹ “nikan” gigabytes 10 ati pe o gbe e patapata sinu awọn apoti, iwọ yoo pari pẹlu awọn apoti gigabyte 10 ti o gba lailai lati fi ranṣẹ.
O nilo lati tọju awọn ẹya “wuwo julọ” ti aaye naa ni ita awọn apoti, ati pe ibeere naa waye ti bii o ṣe le ṣe eyi ni deede

Kini o padanu lati ojutu wa?

Gbogbo koodu Bitrix ko pin si microfunctions / microservices (ki iforukọsilẹ jẹ lọtọ, module itaja ori ayelujara jẹ lọtọ, bbl). A tọju gbogbo ipilẹ koodu ni apoti kọọkan.

A tun ko tọju ibi ipamọ data ni Kubernetes (Mo tun ṣe awọn solusan pẹlu ibi ipamọ data ni Kubernetes fun awọn agbegbe idagbasoke, ṣugbọn kii ṣe fun iṣelọpọ).

Yoo tun jẹ akiyesi si awọn alakoso aaye pe aaye naa nṣiṣẹ lori Kubernetes. Iṣẹ “ṣayẹwo eto” ko ṣiṣẹ bi o ti tọ; lati ṣatunkọ koodu aaye lati ẹgbẹ alabojuto, o gbọdọ kọkọ tẹ bọtini “Mo fẹ satunkọ koodu naa”.

Awọn iṣoro naa ti ṣe idanimọ, iwulo lati ṣe awọn iṣẹ microservices ti pinnu, ibi-afẹde naa han gbangba - lati gba eto iṣẹ ṣiṣe fun ṣiṣe awọn ohun elo lori Bitrix ni Kubernetes, titọju mejeeji awọn agbara ti Bitrix ati awọn anfani ti Kubernetes. Jẹ ká bẹrẹ imuse.

faaji

Ọpọlọpọ awọn adarọ-ese “nṣiṣẹ” pẹlu olupin wẹẹbu kan (awọn oṣiṣẹ).
Ọkan labẹ pẹlu awọn iṣẹ-ṣiṣe cron (ọkan nikan ni o nilo).
Igbesoke kan fun ṣiṣatunṣe koodu aaye lati ọdọ igbimọ abojuto (tun nikan ni o nilo).

Southbridge ni Chelyabinsk ati Bitrix ni Kubernetes

A yanju awọn ibeere:

  • Nibo ni lati fipamọ awọn akoko?
  • Nibo ni lati fipamọ kaṣe naa?
  • Nibo ni lati tọju awọn iṣiro, kii ṣe lati gbe gigabytes ti awọn iṣiro sinu opo awọn apoti?
  • Bawo ni database yoo ṣiṣẹ?

Docker aworan

A bẹrẹ nipa kikọ aworan Docker kan.

Aṣayan ti o dara julọ ni pe a ni aworan agbaye kan, lori ipilẹ rẹ a gba awọn adarọ-ese osise, awọn adarọ-ese pẹlu Crontasks, ati awọn pods igbesoke.

A ṣe iru aworan kan.

O pẹlu nginx, apache/php-fpm (a le yan lakoko kikọ), msmtp fun fifiranṣẹ meeli, ati cron.

Nigbati o ba n ṣajọpọ aworan naa, gbogbo ipilẹ koodu ti aaye naa ni a daakọ si / app liana (ayafi awọn apakan wọnyẹn ti a yoo gbe lọ si ibi ipamọ pinpin lọtọ).

Microservices, awọn iṣẹ

awọn apoti oṣiṣẹ:

  • Apoti pẹlu nginx + eiyan apache/php-fpm + msmtp
  • Ko ṣiṣẹ lati gbe msmtp sinu microservice lọtọ, Bitrix bẹrẹ lati binu pe ko le fi meeli ranṣẹ taara
  • Kọọkan eiyan ni o ni kan pipe codebase.
  • Idinamọ lori iyipada koodu ninu awọn apoti.

cron labẹ:

  • eiyan pẹlu apache, php, cron
  • pipe koodu mimọ to wa
  • gbesele lori iyipada koodu ni awọn apoti

igbesoke labẹ:

  • apoti nginx + apache/php-fpm eiyan + msmtp
  • Ko si idinamọ lori yiyipada koodu ninu awọn apoti

ibi ipamọ igba

Bitrix kaṣe ipamọ

Ohun pataki miiran: a tọju awọn ọrọ igbaniwọle fun sisopọ si ohun gbogbo, lati ibi ipamọ data si meeli, ni awọn aṣiri kubernetes. A gba ẹbun kan: awọn ọrọ igbaniwọle han nikan si awọn ti a fun ni iwọle si awọn aṣiri, kii ṣe si gbogbo eniyan ti o ni iwọle si ipilẹ koodu iṣẹ naa.

Ibi ipamọ fun awọn iṣiro

O le lo ohunkohun: ceph, nfs (ṣugbọn a ko ṣeduro nfs fun iṣelọpọ), ibi ipamọ nẹtiwọki lati ọdọ awọn olupese awọsanma, ati bẹbẹ lọ.

Ibi ipamọ naa yoo nilo lati sopọ ni awọn apoti si / ikojọpọ/ ilana ti aaye naa ati awọn ilana miiran pẹlu akoonu aimi.

Aaye data

Fun ayedero, a ṣeduro gbigbe data data ni ita Kubernetes. Ipilẹ ni Kubernetes jẹ iṣẹ-ṣiṣe eka ọtọtọ; yoo jẹ ki ero naa jẹ aṣẹ titobi diẹ sii.

Ibi ipamọ igba

A lo memcached :)

O ṣe itọju ibi ipamọ igba daradara, jẹ iṣupọ, ati pe o ni atilẹyin “ni abinibi” bi session.save_path ni php. Iru eto yii ti ni idanwo ni ọpọlọpọ igba ni faaji monolithic kilasika, nigba ti a kọ awọn iṣupọ pẹlu nọmba nla ti awọn olupin wẹẹbu. Fun imuṣiṣẹ ti a lo Helm.

$ helm install stable/memcached --name session

php.ini - nibi aworan naa ni awọn eto fun titoju awọn akoko ni memcached

A lo Awọn oniyipada Ayika lati kọja data nipa awọn agbalejo pẹlu memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Eyi n gba ọ laaye lati lo koodu kanna ni dev, ipele, idanwo, awọn agbegbe prod (awọn orukọ agbalejo memcached ninu wọn yoo yatọ, nitorinaa a nilo lati kọja orukọ agbalejo alailẹgbẹ fun awọn akoko si agbegbe kọọkan).
Bitrix kaṣe ipamọ

A nilo ibi ipamọ ọlọdun ẹbi ti gbogbo awọn podu le kọ si ati ka lati.

A tun lo memcached.
Ojutu yii jẹ iṣeduro nipasẹ Bitrix funrararẹ.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - nibi ni Bitrix o ti wa ni pato ibi ti awọn kaṣe ti wa ni fipamọ

A tun lo Awọn iyipada Ayika.

Krontaski

Awọn ọna oriṣiriṣi wa si ṣiṣiṣẹ Crontasks ni Kubernetes.

  • imuṣiṣẹ lọtọ pẹlu podu kan fun ṣiṣiṣẹ Crontasks
  • cronjob fun ṣiṣe awọn crontasks (ti eyi ba jẹ ohun elo wẹẹbu kan - pẹlu wget https://$host$cronjobname, tabi kubectl exec inu ọkan ninu awọn adarọ-ese osise, bbl)
  • ati be be lo

O le jiyan nipa eyi ti o pe julọ, ṣugbọn ninu ọran yii a yan aṣayan “imuṣiṣẹ lọtọ pẹlu awọn adarọ-ese fun Crontasks”

Bi o ti ṣe:

  • ṣafikun awọn iṣẹ-ṣiṣe cron nipasẹ ConfigMap tabi nipasẹ faili atunto / addcron
  • Ni apẹẹrẹ kan a ṣe ifilọlẹ eiyan kan ti o jọra si adarọ-ese oṣiṣẹ + gba ipaniyan awọn iṣẹ-ṣiṣe ade ninu rẹ
  • ipilẹ koodu kanna ni a lo, o ṣeun si iṣọkan, apejọ eiyan jẹ rọrun

Kini o dara ti a gba:

  • a ni awọn Crontasks ṣiṣẹ ni agbegbe ti o jọra si agbegbe awọn idagbasoke (docker)
  • Crontasks ko nilo lati jẹ “tunkọ” fun Kubernetes, wọn ṣiṣẹ ni fọọmu kanna ati ni ipilẹ koodu kanna bi iṣaaju.
  • Awọn iṣẹ-ṣiṣe cron le ṣe afikun nipasẹ gbogbo awọn ọmọ ẹgbẹ ẹgbẹ pẹlu awọn ẹtọ ifaramọ si ẹka iṣelọpọ, kii ṣe awọn admins nikan

Southbridge K8SDeploy module ati koodu ṣiṣatunkọ lati abojuto nronu

A ni won sọrọ nipa igbesoke labẹ?
Bawo ni lati ṣe itọsọna ijabọ nibẹ?
Hurray, a kowe a module fun yi ni PHP :) Eleyi jẹ kekere kan Ayebaye module fun Bitrix. Ko tii wa ni gbangba, ṣugbọn a gbero lati ṣi i.
Module naa ti fi sii bi module deede ni Bitrix:

Southbridge ni Chelyabinsk ati Bitrix ni Kubernetes

Ati pe o dabi eyi:

Southbridge ni Chelyabinsk ati Bitrix ni Kubernetes

O gba ọ laaye lati ṣeto kuki kan ti o ṣe idanimọ alabojuto aaye ati gba Kubernetes laaye lati firanṣẹ ijabọ si adarọ-ese igbesoke.

Nigbati awọn ayipada ba ti pari, o nilo lati tẹ git titari, awọn iyipada koodu yoo firanṣẹ si git, lẹhinna eto naa yoo kọ aworan kan pẹlu ẹya tuntun ti koodu ati “yi jade” rẹ kọja iṣupọ, rọpo awọn adarọ-ese atijọ. .

Bẹẹni, o jẹ diẹ ti crutch, ṣugbọn ni akoko kanna a ṣetọju faaji microservice ati pe a ko gba kuro lọwọ awọn olumulo Bitrix aye ayanfẹ wọn lati ṣatunṣe koodu naa lati ọdọ igbimọ abojuto. Ni ipari, eyi jẹ aṣayan; o le yanju iṣoro ti ṣiṣatunṣe koodu ni ọna ti o yatọ.

Helm aworan atọka

Lati kọ awọn ohun elo lori Kubernetes, a lo nigbagbogbo oluṣakoso package Helm.
Fun ojutu Bitrix wa ni Kubernetes, Sergey Bondarev, oludari eto eto wa, kowe iwe itẹwe Helm pataki kan.

O kọ awọn oṣiṣẹ, igbesoke, awọn pods cron, tunto awọn ingresses, awọn iṣẹ, gbigbe awọn oniyipada lati awọn aṣiri Kubernetes si awọn adarọ-ese.

A tọju koodu naa ni Gitlab, ati pe a tun ṣiṣẹ Kọ Helm lati Gitlab.

Ni kukuru, o dabi eyi

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

Helm tun ngbanilaaye lati ṣe yiyi pada “ailopin” ti o ba jẹ pe lojiji ohun kan ti jẹ aṣiṣe lakoko imuṣiṣẹ. O dara nigbati o ko ba wa ni ijaaya “fi koodu ṣe nipasẹ ftp nitori prod ṣubu,” ṣugbọn Kubernetes ṣe laifọwọyi, ati laisi akoko isinmi.

Ranṣẹ

Bẹẹni, a jẹ onijakidijagan ti Gitlab & Gitlab CI, a lo :)
Nigbati o ba n ṣe ni Gitlab si ibi ipamọ iṣẹ akanṣe, Gitlab ṣe ifilọlẹ opo gigun ti epo ti o gbe ẹya tuntun ti agbegbe naa.

Awọn ipele:

  • kọ (kikọ aworan Docker tuntun)
  • idanwo (idanwo)
  • nu (yiyọ agbegbe idanwo kuro)
  • Titari (a firanṣẹ si iforukọsilẹ Docker)
  • rans (a ran awọn ohun elo to Kubernetes nipasẹ Helm).

Southbridge ni Chelyabinsk ati Bitrix ni Kubernetes

Yara, o ti ṣetan, jẹ ki a ṣe imuse rẹ!
O dara, tabi beere awọn ibeere ti o ba wa.

Nitorina kini a ṣe

Lati oju-ọna imọ-ẹrọ:

  • Bitrix dockerized;
  • "ge" Bitrix sinu awọn apoti, ọkọọkan eyiti o ṣe iṣẹ ti o kere ju;
  • ipo ti ko ni ipinlẹ ti awọn apoti;
  • yanju iṣoro naa pẹlu imudojuiwọn Bitrix ni Kubernetes;
  • gbogbo awọn iṣẹ Bitrix tesiwaju lati ṣiṣẹ (fere gbogbo);
  • A sise lori imuṣiṣẹ to Kubernetes ati rollback laarin awọn ẹya.

Lati oju-ọna iṣowo:

  • ifarada aṣiṣe;
  • Awọn irinṣẹ Kubernetes (irọrun iṣọpọ pẹlu Gitlab CI, imuṣiṣẹ lainidi, ati bẹbẹ lọ);
  • awọn ọrọ igbaniwọle aṣiri (han nikan si awọn ti o fun ni iwọle si awọn ọrọ igbaniwọle taara);
  • O rọrun lati ṣẹda awọn agbegbe afikun (fun idagbasoke, awọn idanwo, ati bẹbẹ lọ) laarin awọn amayederun kan.

orisun: www.habr.com

Fi ọrọìwòye kun