Southbridge in Chelyabinsk et Bitrix in Kubernetes

Sysadminka administratoris systematis congressus in Chelyabinsk geruntur, et ad extremum relationem de solutione nostra dedi applicationis currit in 1C-Bitrix in Kubernetes.

Bitrix, Kubernetes, Ceph - magna mixtura?

Dicam tibi quomodo ex his omnibus solutionem operariam componimus.

Eamus!

Southbridge in Chelyabinsk et Bitrix in Kubernetes

Conventus factus est die 18 Aprilis in Chelyabinsk. Legere potes de nostris in meetups Timepad et vultus ad youtube.

Si vis ad nos venire cum auditione vel audienti - gratissime, scribe to [Inscriptio protected] et in Telegram t.me/vadimisakanov.

Mea fama

Southbridge in Chelyabinsk et Bitrix in Kubernetes

Slides

Solutio "Bitrix in Kubernetes, versio Southbridge 1.0"

De solutione nostra loquar in forma "pro dummies in Kubernetes", sicut in congressu factum est. Sed Pono te verba nosse Bitrix, Docker, Kubernetes, Ceph saltem in plano articulorum in Vicipaedia.

Quid praeparatum est de Bitrix in Kubernetibus?

Perexigua notitia in toto interreti de operatione applicationum Bitrix in Kubernetes est.
Tantum inveni has materias:

Report Alexander Serbul, 1C-Bitrix, et Antonius Tuzlukov ab Qsoft:

Audiendum tibi commendo.

Developing tua solutione ab usuario serkyron in Habré.
Inventus plus tale consilium.

Aaand .... actu, id omne.

Moneo te, qualitatem solutionum in nexus supra :) non repressimus.
In via, solutionem nostram parans, cum Alexandro Serbul locutus sum, tunc eius fama nondum apparuit, sic in labitur etiam "Bitrix non utitur Kubernetes".

Sed iam multae imagines paratae factae Docker ad currendum Bitrix in Docker sunt; https://hub.docker.com/search?q=bitrix&type=image

Hoc satisne est ad plenam solutionem creare pro Bitrix in Kubernetibus?
Nec. Sunt quaestiones magnae quae solvendae sunt.

Quae sunt problemata cum Bitrix in Kubernetes?

Primum imagines paratae factae a Dockerhub non sunt aptae ad Kubernetes .

Si velimus architecturam microservices aedificare (et in Kubernetes solemus), necesse est applicationem nostram Kubernetes in vasa separare et unumquodque vas munus habere (et bene facere). Cur unus tantum? In summa, simplicior, locupletior.
Ut subtilius sit, vide hunc articulum et vide, amabo: https://habr.com/ru/company/southbridge/blog/426637/

Imagines Docker in Dockerhub maxime in uno principio aedificatae sunt, ideo adhuc habuimus ut nostra cursoria et etiam imagines ex vulnere crearemus.

Secundum - situs codice editum est ex tabula admin

Novam sectionem in situ - codice renovatum est (inscriptio cum nomine novae sectionis addita est).

Si proprietates componentis ab admin panel mutaverunt, signum mutaverunt.

Kubernetes hoc "per defaltam" laborare non possunt, continentia stateless oportet.

Ratio: Quodlibet vas (pod) in botro processuum tantum portio negotiationis est. Si in uno tantum vase codicem mutaveris, tunc signum in diversis siliquis diversum erit, situs aliter laborabit, et variae situs versiones diversis utentibus ostendentur. Sic vivere non potes.

Tertium - debes quaestionem solvere cum instruere

Si monolitum unumque "classicum" habemus, omnia prorsus simplicia sunt: ​​novum signum basis explicamus, datorum migramus, negotiatio ad novam Codicis versionem transibit. Commutatione statim fit.
Si locum in Kubernetes habemus, in microservices incisum habemus, multa continentia cum codice - oh. Vasa cum nova codicis versione colligere debes, ea pro veteribus evolve, datorum recte migrare, et optime a visitatoribus hoc latere facias. Fortunate Kubernetes hoc adiuvat, totum fasciculum variarum inceptorum genera sustinens.

Quartum - debes solvere litis actarum statics

Si situs tuus est "tantum" 10 gigabytae et illud totum in vasis explicas, finies cum 10 vasis gigabytis quae semper explicandae sunt.
Opus est partes "maximas" loci extra continentia condere, et quaesitum est quomodo hoc recte facere possit.

Quid deest solutione nostra?

Totum codicem Bitrix in microfunctiones/microservices non dividitur (ita ut adnotatione separatum est, moduli copia online separatus est, etc.). Basi totum codicem in unoquoque vase condimus.

Nos quoque in Kubernetes datorum non reponemus (Idoneum solutiones adhuc implemented cum database in Kubernetes ad ambitus evolutionis, sed non ad productionem).

Adhuc per administratores situs notabilis erit qui in Kubernetes situs decurrit. Munus "ratio reprehendo" non recte operatur, ut situs codicis ex tabula admin emendo, primum debes preme "libellum" recensere volo.

Problemata notata sunt, necessitas microservices efficiendi definita est, finis patet - ut systema laborantium applicationum in Bitrix in Kubernetes currit, tam facultates Bitrix quam commoda Kubernetes conservans. Committitur exsecutio.

Architecture

Multae siliquae "operantes" cum servo telae (opifices).
Una cum cron operibus (tantum requiritur).
Upgrade pro uno codice ex admin tabella emendo (etiam una tantum requiritur).

Southbridge in Chelyabinsk et Bitrix in Kubernetes

Solvimus quaestiones:

  • Ubi condunt sessiones?
  • Ubi condere thesaurum?
  • Ubi statices condere, nonne gigabytas staticorum in fasciculo vasorum ponere?
  • Quomodo opus datorum erit?

Docker image

Incipimus fabricando imaginem Docker.

Optio idealis est quod unam imaginem habemus universalem, sub cuius fundamento siliquas, siliquas cum crontascis, et siliquas upgrade accipimus.

Nos talem imaginem fecimus.

Includit nginx, apache/php-fpm (deligi potest in aedificatione), msmtp ad epistulas mittendas, et cron.

Cum imagini congregans, basis totius codicis situs situs ad /app presul exscriptus est (exceptis illis partibus quas ad singulas tabulas communes movebimus).

Microservices, officia

faber siliquae:

  • Continens cum nginx + continens apache/php-fpm + msmtp
  • Non operabatur ut msmtp in microservio separato moveret, Bitrix incepit indignari quod epistulas directe mittere non potest.
  • Singula continens codebase integram habet.
  • Prohibitio de mutanda codice in vasis.

cron sub:

  • continens cum apache, php, cron
  • integram basi inclusa codice
  • movebo in codice in vasis mutantur

upgrade sub:

  • nginx continens + apache/php-fpm continens + msmtp
  • Nihil vetitum est de mutanda codice in vasis

sessionem repono

Bitrix cache storage

Alia res magni momenti: tesseras condimus ad omnia coniungenda, a datorum cum electronicis, in secretis kubernetes. Bonus accipimus: passwords illis tantum visi sunt quibus aditum ad secreta damus, et non omnibus qui aditum ad codicem project's basi habent.

Repono pro stats

Aliquid uti potes: ceph, nfs (sed nfs ad productionem non commendamus), retis repositionis a provisoribus nubeculae, etc.

Tabularium in vasis ad /upload/redicem situs et alia directoria cum contento static connexi debebit.

database

Simplicitas commendamus movendi datorum extra Kubernetes. Basis in Kubernetes opus complexum separatum est, ordinem magnitudinis magis implicatum faciet schema.

Sessionem repono

Utimur memcached :)

Sessionem repono bene tractat, fasciculatur, et "native" sustinetur ut session.save_path in php. Talis ratio saepe in architectura monolithicis classicis probata est, cum racemos magno numero ministrorum interretialium aedificavimus. Nam instruere galeam utimur.

$ helm install stable/memcached --name session

php.ini - hic imago continet occasus pro repono sessionibus memcached

Environment Variabiles usi sumus ut notitia de exercituum cum memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Hoc permittit ut eodem codice uti in ambitu dev, scaena, test, iaculo (memcached nomina militiae in illis diversa erunt, ut singulare nomen hospitii singulis in ambitu sessionibus praeterire debeamus).
Bitrix cache storage

Repositiones patientissimas nobis opus est quod siliquae omnes scribere et legere possunt.

Utimur etiam memcached.
Haec solutio ab ipsa Bitrix commendatur.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - hic in Bitrix specificatur ubi cella reponitur

Environment Variabiles utimur.

Krontaski

Diversi sunt aditus ad cursus Crontasks in Kubernetes.

  • separatum instruere cum vasculum currit Crotasks
  • cronjob exequendi crontasks (si hoc est telam app - cum wget https://$host$cronjobnameaut kubectl exec intra unum siliquae laborantis, etc.
  • etc.

De rectissimo uno potes disputare, sed in hoc casu optionem "separatam instruere cum leguminibus crontascis"

Quomodo factum est:

  • cron opus addere per ConfigMap vel per aboutconfig / file addcron
  • in uno instantia idem continens vasculum cum fabro + admittimus exsecutionem munerum coronae in eo
  • eodem codice basis adhibetur, gratia coniunctionis, continens conventus simplex

Quid boni proficimus;

  • Crotasks in ambitu identico cum environment (docker) operati sumus.
  • Crontasci non "rescripta" esse pro Kubernetes, in eadem forma et in eodem codice basi operantur ac prius.
  • functiones cronae addi possunt ab omnibus iunctis membris cum iura committendi ad ramum producendum, non solum admin

Southbridge K8SDeploy moduli et codicem edendis ex tabula admin

Locuti sumus de upgrade sub?
Quomodo dirigere negotiationem ibi?
Eia, moduli huius in PHP scripsimus :) Hic est parvae moduli classici pro Bitrix. Nondum publice in promptu est, sed aperire consilium possumus.
Modulus instituitur ut modulus regularis in Bitrix:

Southbridge in Chelyabinsk et Bitrix in Kubernetes

Et sic videtur:

Southbridge in Chelyabinsk et Bitrix in Kubernetes

Permittit tibi ut crustulum constituas quod administrator situs agnoscit et Kubernetes permittit ut negotiatio ad upgrade vasculum mittat.

Cum mutationes peractae sunt, necesse est ut deprimat dis git, signum mutationes in git mittentur, tunc ratio imaginem cum nova codicis versione aedificabit et "evolvet" per botrum, vetus siliqua reposuit. .

Ita est aliquid fusculi, sed simul architecturae parvae servitutis tenemus nec Bitrix utentibus occasionem opportunam adimunt ut codicem e tabula admin corrigat. In fine, haec optio est: quaestionem solvere potes alio modo codicem emendandi.

Galea chart

Ad applicationes in Kubernetes aedificandas, nos typice utimur procurator sarcinarum Helm.
Pro nostra solutione Bitrix in Kubernetes, Sergey Bondarev, administratore nostro praecipuo, specialem chart Helm scripsit.

Operarium, ugradum, siliquam, cron condit, ingressus, officia configurat, variabiles Kubernetes secreta ad siliquas transfert.

Codicem in Gitlab condimus, et etiam Helm e Gitlab construimus.

In summa, sicut hoc spectat

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

Galea quoque te "seamless" reverti permittit si subito aliquid in instruere erraverit. Suus 'nice est cum non trepidare "fingere signum via ftp quia iaculum cecidit", sed Kubernetes id statim facit, et sine tempore.

Deploy

Ita fans Gitlab & Gitlab CI sumus, ea utimur.
Cum in Gitlab repositorium project, Gitlab pipelinum movet quod novam versionem ambitus explicat.

gradus;

  • constructum (aedificare novum Docker imaginem)
  • test (temptationis)
  • emundare (remoto test environment)
  • dis (mittimus Docker subcriptio)
  • explicamus (explicamus applicationem ad Kubernetes per Helm).

Southbridge in Chelyabinsk et Bitrix in Kubernetes

Eia, est paratum, eamus efficiamus!
Vel interrogare si quae sunt.

Itaque quid nos facere

Ex technica parte:

  • dockerized Bitrix;
  • Bitrix in vasa secare, quarum unaquaeque minimum functionum exercet;
  • state stateless state continents;
  • solvitur problema adaequationis Bitrix in Kubernetes;
  • omnia Bitrix munera laborabant (fere omnes);
  • Laboravimus in instruere Kubernetes et inter versiones reverti.

Negotium ex parte:

  • culpa tolerantia;
  • Instrumenta Kubernetes (facilis integratio cum Gitlab CI, inconsutilem instruere, etc.);
  • Tesserae secretae (tantum visibiles illis qui accessum ad Tesserae directe conceduntur);
  • Ampliores ambitus (progressiones, probationes, etc.) creare convenit intra unum infrastructuram.

Source: www.habr.com

Add a comment