Ko nga huihuinga a te kaiwhakahaere punaha Sysadminka kei Chelyabinsk, a, i te whakamutunga ka tukuna e ahau he ripoata mo ta matou otinga mo te whakahaere tono i runga i te 1C-Bitrix i Kubernetes.
Bitrix, Kubernetes, Ceph - he ranunga pai?
Ka korerotia e ahau ki a koe me pehea e whakakotahi ai i tetahi otinga mahi mai i enei mea katoa.
Haere tatou!
I tu te huihuinga i te Paenga-whawha 18 i Chelyabinsk. Ka taea e koe te panui mo o maatau huihuinga i Papamahi ka titiro YouTube.
Mena kei te pirangi koe ki te haere mai ki a matou me te tuku purongo, hei whakarongo ranei - nau mai, tuhia mai [email tiakina] me runga Telegram t.me/vadimisakanov.
Rongoā "Bitrix i Kubernetes, putanga Southbridge 1.0"
Ka korero ahau mo ta maatau otinga i roto i te whakatakotoranga "mo nga kaarei i Kubernetes", pera i mahia i te huihuinga. Engari ki taku whakaaro kei te mohio koe ki nga kupu Bitrix, Docker, Kubernetes, Ceph i te iti rawa i te taumata o nga tuhinga i runga i Wikipedia.
He aha te mea kua rite mo Bitrix i Kubernetes?
He iti noa nga korero i runga i te Ipurangi katoa mo te whakahaere o nga tono Bitrix i Kubernetes.
I kitea e au enei rauemi anake:
Ripoata na Alexander Serbul, 1C-Bitrix, me Anton Tuzlukov mai i Qsoft:
Ka whakatupato ahau ki a koe, kaore i tirohia e matou te kounga o nga otinga i roto i nga hononga o runga :)
Ma te ara, i te wa e whakarite ana i ta maatau otinga, i korero ahau ki a Alexander Serbul, kare ano i puta mai tana purongo, no reira kei roto i aku kiriata he mea "Kaore a Bitrix e whakamahi Kubernetes."
He nui tenei hei hanga otinga mo Bitrix i Kubernetes?
Kao. He nui nga raruraru me whakatika.
He aha nga raru o Bitrix i Kubernetes?
Tuatahi, ko nga whakaahua kua rite mai i Dockerhub kaore e pai mo nga Kubernetes
Mena kei te pirangi matou ki te hanga hoahoanga moroiti (me nga Kubernetes ka mahia e matou), me wehe ta matou tono Kubernetes ki roto i nga ipu, kia mahia e ia ipu tetahi mahi iti (me te mahi pai). He aha kotahi anake? I roto i te poto, ko te ngawari ake te pono.
Kia marama ake, tirohia tenei tuhinga me te ataata, koa: https://habr.com/ru/company/southbridge/blog/426637/
Ko nga whakaahua Docker kei Dockerhub te nuinga i hangaia i runga i te maapono katoa-i-kotahi, no reira me mahi tonu taatau ake pahikara me te hanga whakaahua mai i te wahanga.
Tuarua - kua whakatikahia te waehere pae mai i te papa whakahaere
I hangaia e matou he waahanga hou i runga i te waahi - kua whakahouhia te waehere (he whaiaronga me te ingoa o te waahanga hou i whakauruhia).
Mena i hurihia e koe nga ahuatanga o tetahi waahanga mai i te roopu whakahaere, ka huri te waehere.
Ko nga Kubernetes "ma te taunoa" kaore e taea te mahi me tenei; me noho koretake nga ipu.
Te take: Ko ia ipu (pod) kei roto i te kohinga ka tukatuka i tetahi waahanga noa o te hokohoko. Mena ka huri koe i te waehere i roto i te ipu kotahi anake (pod), ka rereke te waehere i roto i nga putea rereke, ka rere ke te mahi o te pae, ka whakaatuhia nga momo putanga rereke ki nga kaiwhakamahi rereke. Kaore e taea e koe te noho penei.
Tuatoru - me whakaoti e koe te take me te whakatakotoranga
Mena kei a matou he monolith me tetahi "matarohia", he maamaa noa nga mea katoa: ka tohatohahia e matou he turanga waehere hou, ka heke te papaaarangi, whakawhiti waka ki te putanga hou o te waehere. Ka puta tonu te whakawhiti.
Mena he waahi kei a matou i Kubernetes, tapahia ki nga ratonga miihini, he maha nga ipu me te waehere - aue. Me kohia e koe nga ipu me tetahi putanga hou o te waehere, hurihia ki waho hei utu mo nga mea tawhito, tika te heke i te paataka raraunga, me te mahi i tenei kaore e kitea e nga manuhiri. Waimarie, ka awhina a Kubernetes i a maatau ki tenei, e tautoko ana i te tini o nga momo whakatakotoranga.
Tuawha - me whakaoti e koe te take o te penapena i nga tatauranga
Mena ko to pae "anake" 10 gigabytes ka tukuna katoatia e koe ki roto i nga ipu, ka mutu koe me nga ipu 10 gigabyte ka roa ki te tuku.
Me penapena e koe nga waahanga "taimaha" o te waahi ki waho o nga ipu, ka puta ake te patai me pehea te mahi tika.
He aha te ngaro o ta tatou otinga?
Ko te waehere Bitrix katoa kaore i te wehewehea ki nga microfunctions/microservices (kia wehe ke te rehitatanga, he wehe te waahanga toa ipurangi, me etahi atu). Ka penapenahia e matou te turanga waehere katoa ki ia ipu.
Kare hoki matou e penapena i te papaaarangi ki Kubernetes (I whakatinana tonu ahau i nga rongoatanga me te papaunga raraunga i Kubernetes mo nga taiao whanaketanga, engari kaua mo te hanga).
Ka kitea tonu e nga kaiwhakahaere o te pae kei te haere te pae ki runga i te Kubernetes. Ko te mahi "tirotiro punaha" kaore e mahi tika; ki te whakatika i te waehere pae mai i te papa whakahaere, me paato tuatahi koe i te paatene "Kei te pirangi ahau ki te whakatika i te waehere".
Kua tautuhia nga raruraru, kua whakatauhia te hiahia ki te whakatinana microservices, kua marama te whainga - ki te tiki i tetahi punaha mahi mo te whakahaere tono i runga i te Bitrix i Kubernetes, me te pupuri i nga kaha e rua o Bitrix me nga painga o Kubernetes. Kia timata tatou ki te whakatinana.
hoahoanga
He maha nga putea "mahi" me te tūmau tukutuku (kaimahi).
Kotahi i raro me nga mahi cron (kotahi anake te hiahia).
Kotahi te whakamohoatanga mo te whakatika i te waehere pae mai i te roopu whakahaere (kotahi ano te mea e hiahiatia ana).
Ka whakatauhia e matou nga patai:
Kei hea te rokiroki i nga huihuinga?
Kei hea te penapena keteroki?
Kei hea te penapena i nga tatauranga, kaua e waiho nga gigabytes o nga taatai ki roto i te paihere o nga ipu?
Ka pehea te mahi o te papaa raraunga?
Whakaahua Docker
Ka timata ma te hanga i tetahi ahua Docker.
Ko te kowhiringa pai ko te mea kotahi to tatou ahua o te ao, i runga i tana kaupapa ka whiwhi tatou i nga pene kaimahi, nga pene me nga Crontasks, me te whakahou i nga pene.
Kei roto ko te nginx, apache/php-fpm (ka taea te kowhiri i te wa hanga), msmtp mo te tuku mēra, me te cron.
I te wa e whakahiato ana i te ahua, ka kapehia te turanga waehere katoa o te papanga ki te raarangi /app (haunga nga waahanga ka nekehia e matou ki tetahi rokiroki tiritahi).
Microservices, ratonga
nga putea kaimahi:
Ipu whai nginx + ipu apache/php-fpm + msmtp
Kaore i pai ki te neke i te msmtp ki tetahi ratonga miihini motuhake, kei te tiimata a Bitrix ki te riri kaore e taea e ia te tuku mēra tika.
Kei ia ipu he turanga waehere katoa.
Te aukati i te whakarereke i te waehere i roto i nga ipu.
cron i raro:
ipu ki apache, php, cron
kua whakauruhia te turanga waehere
te whakakore i te whakarereke i te waehere i roto i nga ipu
whakapai ake i raro i:
ipu nginx + ipu apache/php-fpm + msmtp
Karekau he aukati ki te whakarereke i te waehere i roto i nga ipu
rokiroki wātū
Te rokiroki keteroki Bitrix
Ko tetahi atu mea nui: ka penapenahia e matou nga kupuhipa mo te hono ki nga mea katoa, mai i te paataka korero ki te mēra, i roto i nga mea ngaro kubernetes. Ka whiwhi tatou i te bonus: ko nga kupuhipa ka kitea anake ma te hunga ka hoatu e matou te uru ki nga mea ngaro, kaua ki nga tangata katoa e uru ana ki te turanga waehere kaupapa.
Rokiroki mo nga taatai
Ka taea e koe te whakamahi i tetahi mea: ceph, nfs (engari kaore matou e tūtohu nfs mo te whakaputa), te rokiroki whatunga mai i nga kaiwhakarato kapua, etc.
Me hono te rokiroki i roto i nga ipu ki te whaiaronga /upload/ o te pae me etahi atu whaiaronga whai ihirangi pateko.
Pātengi Raraunga
Mo te ngawari, ka tūtohu kia nukuhia te pātengi raraunga ki waho o Kubernetes. Ko te turanga i roto i te Kubernetes he mahi uaua motuhake; ma reira ka nui ake te uaua o te kaupapa.
Wātū rokiroki
Ka whakamahi matou i te memcached :)
He pai te whakahaere i te rokiroki o te waahi, ka rapoi, ka tautokohia "maori" hei session.save_path i roto i te php. He maha nga wa i whakamatauria taua punaha i roto i te hoahoanga monolithic puāwaitanga, i te wa i hangaia ai e matou he tautau me te maha o nga tuunga paetukutuku. Mo te whakatakotoranga ka whakamahia e matou te urungi.
$ helm install stable/memcached --name session
php.ini - kei konei te ahua kei roto nga tautuhinga mo te penapena i nga waahi ki te memcached
I whakamahia e matou nga Taurangi Taiao ki te tuku raraunga mo nga kaihautu me te memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Ma tenei ka taea e koe te whakamahi i te waehere kotahi i roto i te dev, te atamira, te whakamatautau, nga taiao prod (ka rereke nga ingoa o te kaihautu memcached i roto, na reira me tuku he ingoa rangatira motuhake mo nga waahi ki ia taiao).
Te rokiroki keteroki Bitrix
E hiahia ana matou ki te rokiroki he-kore ka taea e nga pene katoa te tuhi me te panui mai.
Ka whakamahi hoki matou i te memcached.
Ko tenei otinga e taunakihia ana e Bitrix ake.
$ helm install stable/memcached --name cache
bitrix/.settings_extra.php - i konei i Bitrix kua tohua ki te waahi e rongoa ai te keteroki
Ka whakamahi hoki matou i nga Taurangi Taiao.
Krontaski
He rereke nga huarahi ki te whakahaere i nga Crontasks i Kubernetes.
te whakatakotoranga motuhake me te peera mo te whakahaere Crontasks
cronjob mo te mahi crontasks (mehemea he taupānga tukutuku tenei - me te wget https://$host$cronjobname, kubectl exec ranei i roto i tetahi o nga putunga kaimahi, etc.)
etc
Ka taea e koe te tautohetohe mo te mea tino tika, engari i tenei keehi i kowhiria e matou te whiringa "whakatuwherahia me nga pona mo Crontasks"
Me pehea te mahi:
taapirihia nga mahi cron ma te ConfigMap ma te konae whirihora/addcron ranei
i tetahi wa ka whakarewahia e matou he ipu e rite ana ki te putea kaimahi + ka whakaaetia kia mahia nga mahi karauna kei roto.
ka whakamahia te turanga waehere kotahi, na te whakakotahitanga, he maamaa te huihuinga ipu
He aha te pai ka whiwhi tatou:
kei te mahi matou i nga Crontasks ki tetahi taiao e rite ana ki te taiao o nga kaihanga (docker)
Ko nga Crontasks kaore e hiahiatia kia "tuhi ano" mo nga Kubernetes, he rite tonu te mahi me te turanga waehere rite o mua
Ka taea te taapiri i nga mahi cron e nga mema katoa o te roopu me te whai mana ki te peka whakaputa, kaua ko nga kaiwhakahaere anake
Southbridge K8SDeploy kōwae me te whakatika waehere mai i te papa whakahaere
I korero matou mo te whakahou i raro?
Me pehea te whakahaere waka ki reira?
Hurray, i tuhia e matou he kōwae mo tenei i roto i te PHP :) He kōwae matarohia iti tenei mo Bitrix. Kaore ano kia watea ki te iwi whanui, engari e whakaaro ana matou ki te whakatuwhera.
Kua whakauruhia te kōwae rite te kōwae auau i Bitrix:
A penei te ahua:
Ka taea e koe te whakarite pihikete e tohu ana i te kaiwhakahaere o te pae me te tuku i a Kubernetes ki te tuku waka ki te putunga whakamohoatanga.
Ka oti nga huringa, me panui koe i te git pana, ka tukuna nga huringa waehere ki te git, katahi ka hangaia e te punaha he ahua me te putanga hou o te waehere ka "hurihia" puta noa i te tautau, ka whakakapi i nga putea tawhito. .
Ae, he iti noa iho, engari i te wa ano kei te pupuri tonu matou i te hoahoanga microservice me te kore e tangohia mai i nga kaiwhakamahi Bitrix te waahi tino pai ki te whakatika i te waehere mai i te roopu whakahaere. I te mutunga, he whiringa tenei; ka taea e koe te whakaoti i te raru o te whakatika i te waehere i tetahi huarahi rereke.
Tūtohi helm
Hei hanga tono ki runga i nga Kubernetes, ka whakamahia e matou te kaiwhakahaere kete Helm.
Mo ta maatau otinga Bitrix i Kubernetes, i tuhia e Sergey Bondarev, to maatau kaiwhakahaere punaha, he tūtohi Helm motuhake.
Ka hangaia e ia nga kaimahi, te whakapai, te cron pods, te whirihora i nga whakaurunga, nga ratonga, me te whakawhiti i nga taurangi mai i nga mea ngaro Kubernetes ki nga putea.
Ka penapenahia e matou te waehere ki Gitlab, ka whakahaerehia ano e matou te hanga Helm mai i Gitlab.
Ka taea hoki e te Helm te mahi i te hokinga "kore" mena ka paheke tetahi mea i te wa e tukuna ana. He pai ki te kore koe e mataku "whakatikahia te waehere ma te ftp na te mea kua hinga te prod," engari ka mahia aunoatia e Kubernetes, me te kore e heke.
Hoatuhia
Ae, he kaiwhaiwhai matou mo Gitlab & Gitlab CI, ka whakamahia e matou :)
I te wa e whakauru ana ki a Gitlab ki te whare putunga kaupapa, ka whakarewahia e Gitlab he paipa e tuku ana i te putanga hou o te taiao.
Ngā Taunga:
hanga (hanga he ahua Docker hou)
whakamātautau (whakamatautau)
horoi (tango i te taiao whakamatautau)
pana (ka tukuna e matou ki te rehita Docker)
tohatoha (ka tukuna e matou te tono ki a Kubernetes ma te Helm).
Huri, kua rite, me whakatinana!
Ana, patai patai mena kei kona.
Na he aha ta matou mahi
Mai i te tirohanga hangarau:
ko te Bitrix kua taunga;
"tapahia" a Bitrix ki roto i nga ipu, he iti noa nga mahi o ia mahi;
kua tutuki te ahua kore o nga ipu;
i whakatauhia te raru ki te whakahou i a Bitrix i Kubernetes;
i mahi tonu nga mahi Bitrix katoa (tata katoa);
I mahi matou ki te tuku ki nga Kubernetes me te hoki whakamuri i waenga i nga putanga.
Mai i te tirohanga pakihi:
te manawanui ki te he;
Ko nga taputapu Kubernetes (he ngawari te whakauru ki a Gitlab CI, te whakatakotoranga ngawari, me etahi atu);
nga kupuhipa huna (ka kitea anake e te hunga e uru tika ana ki nga kupuhipa);
He pai ki te hanga i etahi atu taiao (mo te whanaketanga, nga whakamatautau, me etahi atu) i roto i te hanganga kotahi.