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!
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.
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:
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".
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).
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.
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.
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:
Et sic videtur:
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.
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).
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.