Sysadminka á áá áºá á®áá¶ááá·áºááœá²áá°ááœá±á·áá¯á¶ááœá²áá»á¬ážááẠChelyabinsk ááœááºááŒá¯áá¯ááºáá±ááŒá®ážá áá±á¬ááºáá¯á¶ážáá áºáá¯ááœáẠKubernetes ááŸá 1C-Bitrix áá±á«áºááŸá á¡ááá®áá±ážááŸááºážáá»á¬ážá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááœáẠáá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºá¡á á®áááºáá¶á á¬ááᯠáá»áœááºá¯ááºáá±ážáá²á·áááºá
Bitrixá Kubernetesá Ceph - ááŒá®ážá áœá¬áá±á¬á¡áá±á¬á¡ááŸá±á¬?
áá«ááœá±á¡á¬ážáá¯á¶ážááá± áááºááá¯ááŒá±ááŸááºážáá»ááºáá»áá¯ážááᯠá á¯á ááºážáá¬ážáá²ááá¯áᬠááŒá±á¬ááŒáááºá
ááœá¬ážá áá¯á·!
á¡ááá¯áá«ááœá±á·áá¯á¶ááœá²ááᯠá§ááŒá®á 18 áááºáá±á·ááœáẠChelyabinsk ááá»ááºážááá²á·áááºá áá»áœááºá¯ááºááá¯á·á ááœá±á·áá¯á¶ááœá²áá»á¬ážá¡ááŒá±á¬ááºáž áááºááŸá¯ááá¯ááºáá«áááºá
á¡á á®áááºáá¶á á¬áá áºáᯠááá¯á·ááá¯áẠáá¬ážáá±á¬ááºáá°á¡áá±ááŒáá·áº áá»áœááºá¯ááºááá¯á·áᶠáá¬ááá¯áá«á ááŒáá¯ááá¯áá«áááºá [á¡á®ážáá±ážááºááá¯áá¬ááœááºáá¬ážáááº] Telegram ááœáẠt.me/vadimisakanov á
áá«á·á¡á á®áááºáá¶á á¬
ááŒá±ááŸááºážáá»áẠ" Kubernetes ááŸá Bitrixá Southbridge 1.0 áá¬ážááŸááºáž"
ááœá±á·áá¯á¶ááŸá¯ááœáẠááŒá¯áá¯ááºáá²á·ááá·áºá¡ááá¯ááºáž âá¡áá¯ááºá¡ááœáẠKubernetesâ áá±á¬áºáááºááœáẠáá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºá¡ááŒá±á¬ááºáž ááŒá±á¬ááŒáá«áááºá áá«áá±ááá·áº Wikipedia ááŸá áá±á¬ááºážáá«ážá¡ááá·áºááŸá¬ á¡áááºážáá¯á¶áž Bitrix, Docker, Kubernetes, Ceph á áá¬ážáá¯á¶ážááœá±ááᯠáááºážáááááºááá¯á· áá«áááºáá«áááºá
Kubernetes ááŸá Bitrix ááŸáá·áº áááºáááºá á¡áááºááá·áºááŒá¯áá¯ááºáá¬ážááá·áºá¡áá¬ááŸá¬ á¡áááºáááºážá
Kubernetes ááŸá Bitrix ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬áž áá¯ááºáá±á¬ááºááŒááºážááŸáá·áºáááºáááºá á¡ááºáá¬áááºáá
áºáá¯áá¯á¶ážááœáẠá¡áá»ááºá¡áááºá¡áááºážáááºáá¬ááŸááááºá
á€áá
á¹á
ááºážáá»á¬ážááá¯áᬠáá«ááœá±á·áááº-
Qsoft á០Alexander Serbulá 1C-Bitrix ááŸáá·áº Anton Tuzlukov ááá¯á·á á¡á á®áááºáá¶áá»ááº-
á¡á²áá«ááᯠáá¬ážáá±á¬ááºááá¯á· á¡ááŒá¶ááŒá¯áá»ááºáá«áááºá
á¡áá¯á¶ážááŒá¯áá°áá¶á០ááá·áºááá¯ááºááá¯ááºááŒá±ááŸááºážáá»ááºááᯠáááºáá®ážáá«á
ááá¯ááœá±á·áááºá
á¡ááºáž...ááááºáá±á¬á· áá®áá±á¬ááºáá«áá²á
ááááá±ážáá«áááºá á¡áá±á«áºáááá·áºááºááœá±ááŸá¬ ááŒá±ááŸááºážáá»ááºááœá±áá²á· á¡áááºá¡ááœá±ážááᯠáá
á
áºáá±ážááá±ážáá«áá°áž :)
á
áá¬ážáá
ááºá áá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºááá¯ááŒááºáááºáá±á¬á¡áá« Alexander Serbul ááŸáá·áºáá»áœááºáá±á¬áºá
áá¬ážááŒá±á¬áá²á·ááŒá®ážá ááá¯á·áá±á¬ááºáá°áá¡á
á®áááºáá¶á
á¬áááºááá±á«áºáá±ážáá±á¬ááŒá±á¬áá·áºáá»áœááºá¯ááºááááá¯ááºáá»á¬ážááœáẠ"Bitrix ááẠKubernetes ááá¯ááá¯á¶ážáá«" áá°áá±á¬á¡ááŒá±á¬ááºážá¡áá¬áá
áºáá¯ááŸááááºá
ááá¯á·áá±á¬áº Docker ááœáẠBitrix ááá¯á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠá¡áááºááá·áºáá¯ááºáá¬ážááá·áº Docker áá¯á¶áá»á¬ážá
áœá¬ ááŸáááŸáá·áºááŒá®ážááŒá
áºáááºá
Kubernetes ááœáẠBitrix á¡ááœáẠááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ á¡ááŒá±áá
áºáá¯ááᯠáááºáá®ážááẠáá¯á¶áá±á¬ááºáá«ááá¬ážá
áááŸá ááŒá±ááŸááºážáááá·áº ááŒá¿áá¬ááœá± á¡áá»á¬ážááŒá®ážááŸááááºá
Kubernetes ááŸá Bitrix ááŸáá·áº ááŒá¿áá¬áá»á¬ážáá¬áž á¡áááºáááºážá
ááááá¯á¶ážá Dockerhub á០á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ áá¯á¶áá»á¬ážááẠKubernetes á¡ááœáẠáááá·áºáá»á±á¬áºáá«á
áá»áœááºá¯ááºááá¯á·ááẠmicroservices áááá¯áá¬áá
áºáá¯áááºáá±á¬ááºááá¯áá«á (áá¯á¶ááŸááºá¡á¬ážááŒáá·áº Kubernetes ááœááºááŒá¯áá¯ááºáááº)á áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á Kubernetes á¡ááá®áá±ážááŸááºážááᯠááœááºááááºáá¬á¡ááŒá
Ạááœá²ááŒá¬ážáá¬ážááẠááá¯á¡ááºááŒá®áž ááœááºááááºáá¬áá
áºáá¯á
á®ááœáẠáá±ážáááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯áá¯ááºáá±á¬ááºááẠááá¯á¡ááºááẠ(áááºážááᯠáá±á¬ááºážá
áœá¬áá¯ááºáá±á¬ááºáá«)á áá¬ááá¯á· áá
áºáá¯áááºážáá²á á¡ááá¯áá»á¯ááºááŒá±á¬ááá»áŸáẠááá¯ááá¯ážááŸááºážáá± ááá¯á
áááºáá»ááá±ááŒá
áºáááºá
ááá¯ááá¯áááá»á
á±áááºá á€áá±á¬ááºážáá«ážááŸáá·áº áá®áá®ááá¯ááá¯ááŒáá·áºáá«á áá»á±ážáá°ážááŒá¯á-
Dockerhub ááŸá Docker áá¯ááºáá¯á¶áá»á¬ážááᯠá¡áá¯á¶ážá á¯á¶-in-one áááá¬áá¡á á¡áááá¡á¬ážááŒáá·áº áááºáá±á¬ááºáá¬ážáá±á¬ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºá ááºáá®ážááᯠáááºáá®ážáááŒá®áž áá¯á¶áá»á¬ážááᯠá¡á ááŸá¡áá¯á¶ážááá¯áẠáááºáá®ážááá±ážáááºá
áá¯ááá - ááá¯ááºáá¯ááºááᯠá á®áá¶ááá·áºááœá²áá° á¡ááá·áºá០áááºážááŒááºáá¬ážáááºá
áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáá±á«áºááœáẠááá¹áá¡áá áºáá áºáá¯ááᯠáááºáá®ážáá²á·ááẠ- áá¯ááºááᯠá¡ááºááááºáá¯ááºáá²á·ááẠ(ááá¹áá¡áá áºá á¡áááºááŸáá·áº áááºážááœáŸááºáá áºáá¯ááᯠáá±á«ááºážááá·áºáá¬ážáááº)á
á á®áá¶ááá·áºááœá²áá°á¡ááá·áºá០á¡á áááºá¡ááá¯ááºážáá áºáá¯á áá¯ááºááá¹áááá»á¬ážááᯠáááºááŒá±á¬ááºážáá²áá«áá áá¯ááºááŒá±á¬ááºážááœá¬ážáááºá
Kubernetes "áá°áá¡á¬ážááŒáá·áº" áááºážááŸáá·áºá¡áá¯ááºáá¯ááºááááá«á ááœááºááááºáá¬áá»á¬ážááẠááá¯ááºáá¶áá²á·ááŒá áºááá«áááºá
á¡ááŒá±á¬ááºážáááºáž- á¡á á¯á¡áá±ážááŸá ááœááºááááºáᬠ(Pod) áá áºáá¯á á®ááẠá¡ááœá¬ážá¡áá¬á áá áºá áááºáá áºááá¯ááºážááá¯áᬠáá¯ááºáá±á¬ááºáááºá á¡áááºá áááºááẠááœááºááááºáá¬áá áºáᯠ(pod) ááœáẠáá¯ááºááᯠááŒá±á¬ááºážáá²áá«áá áá¯ááºááẠááá°áá®áá±á¬ pods áá»á¬ážááœáẠááœá²ááŒá¬ážáááºááŒá áºááŒá®ážá ááá¯ááºááẠááœá²ááŒá¬ážá áœá¬ á¡áá¯ááºáá¯ááºáááºááŒá áºááŒá®ážá ááá¯ááºá ááá°áá®áá±á¬áá¬ážááŸááºážáá»á¬ážááᯠááá°áá®áá±á¬á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááᯠááŒááááºááŒá áºáááºá áááºážáá®ááá¯áá±ááá¯á·áááá°ážá
áááá - áááºááŒáá·áºáá»ááºááŸá¯ááŒáá·áº ááŒá¿áá¬ááᯠááŒá±ááŸááºážááẠááá¯á¡ááºáááºá
áá»áœááºá¯ááºááá¯á·ááœáẠmonolith ááŸáá·áº "classic" server áá
áºáá¯ááŸááá«áá á¡áá¬á¡á¬ážáá¯á¶ážááẠá¡áá±á¬áºáá±ážááá¯ážááŸááºážáá«áááº- áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºá¡ááŒá±áá¶á¡áá
áºáá
áºáá¯á¡á¬áž ááŒáá·áºáá»ááºááŒá®áž áá±áá¬áá±á·á
áºááᯠááŒá±á¬ááºážááœáŸá±á·áᬠáá¯ááºáá¬ážááŸááºážá¡áá
áºááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážááœá¬ážáá«áááºá áá°ážááŒá±á¬ááºážááŒááºáž áá»ááºáá»ááºážááŒá
áºáá±á«áºáááºá
áá»áœááºá¯ááºááá¯á·ááœáẠKubernetes ááœáẠáááºááá¯ááºáá
áºáá¯ááŸáááŒá®ážá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒá
ẠááŒááºáá¬ážáá«áá áá¯ááºáá«áá±á¬ ááœááºááááºáá¬áá»á¬ážá
áœá¬ ááŸááá«áááºá áááºááẠáá¯ááºáá¬ážááŸááºážá¡áá
áºááŒáá·áº ááœááºááááºáá¬áá»á¬ážááᯠá
á¯áá±á¬ááºážáááºá á¡áá±á¬ááºážáá»á¬ážá¡á
á¬áž áááºážááá¯á·ááᯠáá¯ááºáá
áºáááºá áá±áá¬áá±á·á
áºááᯠááŸááºáááºá
áœá¬ ááœáŸá±á·ááŒá±á¬ááºážáááºááŸáá·áº áá¬áá±á¬ááºáááºáááºáá°áá»á¬áž ááááááŒá¯áááá² áááºážááᯠá¡áá±á¬ááºážáá¯á¶ážáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáááºá áá¶áá±á¬ááºážáá±á¬ááºáá
áœá¬á Kubernetes ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž á¡áá»áá¯ážáá»áá¯ážáá±á¬ ááŒáá·áºáá»ááºááŸá¯á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá
áœá¬ááᯠáá°áá®áá¶á·ááá¯ážáá±ážáá«áááºá
á áá¯áá¹á - statics ááááºážáááºážááŒááºážááá¯ááºáá¬ááŒá¿áá¬ááá¯áááºááŒá±ááŸááºážáááºááá¯á¡ááºáááºá
á¡áááºá ááá·áºááá¯ááºááẠ10 áá
áºáá«ááá¯ááºáá¬ááŸáááŒá®áž áááºážááᯠááœááºááááºáá¬áá»á¬ážááœáẠáá¯á¶ážáá¯á¶ážáá»áá¬ážáá«áá áááºá¡áá¯á¶ážááŒá¯ááẠáá¬ááá¡áá»áááºáá°áááá·áº 10 gigabyte ááœááºááááºáá¬áá»á¬ážááŒáá·áº á¡áá¯á¶ážáááºáááºááŒá
áºáááºá
áááºááẠááá¯ááºá "á¡áá±ážáá¯á¶áž" á¡á
áááºá¡ááá¯ááºážáá»á¬ážááᯠááœááºááááºáá¬á¡ááŒááºáááºááœáẠááááºážáááºážáá¬ážááẠááá¯á¡ááºááŒá®áž áááºážááᯠááŸááºáááºá¡á±á¬áẠáááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠáá±ážááœááºážáá¯ááºáá¬áá«áááºá
áá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºááŸáá¬áá»á¬ážááœá²ááŸá¬ážáá±ááááºážá
Bitrix áá¯ááºáá áºáá¯áá¯á¶ážááᯠmicrofunctions/microservices áá»á¬ážá¡ááŒá Ạááœá²ááŒá¬ážááá¬ážáá« (ááá¯á·ááŸáᬠááŸááºáá¯á¶áááºááŒááºážááŸá¬ áá®ážááŒá¬ážááŒá áºáááºá á¡áœááºááá¯ááºážá ááá¯áž module ááẠáá®ážááŒá¬ážááŒá áºáááºá á áááºááŒáá·áº)á áá»áœááºá¯ááºááá¯á·ááẠááœááºááááºáá¬áá áºáá¯á á®ááœáẠáá¯ááºá¡ááŒá±áá¶áá áºáá¯áá¯á¶ážááᯠááááºážáááºážáá¬ážáááºá
áá±áá¬áá±á·á áºááᯠKubernetes ááœáẠááááºážáááºážááá¬ážáá« (áá«ááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áááºáááºážáá»ááºá¡ááœáẠKubernetes ááœáẠáá±áá¬áá±á·á áºáá áºáá¯ááŒáá·áº ááŒá±ááŸááºážáá»ááºáá»á¬ážá¡á¬áž á¡áá±á¬ááºá¡áááºáá±á¬áºáá²ááŒá áºáá±á¬áºáááºáž áá¯ááºáá¯ááºáááºá¡ááœááºááá¯ááºáá²)á
áááºážááẠKubernetes ááœáẠáááºááá¯ááºá¡áá¯á¶ážááŒá¯ááá·áº ááá¯ááºá á®áá¶ááá·áºááœá²áá°áá»á¬ážá¡ááœáẠáááááŒá¯áááá±áá±ážáááºá âá áá áºá á áºáá±ážááŒááºážâ áá¯ááºáá±á¬ááºáá»ááºááẠááŸááºáááºá áœá¬á¡áá¯ááºááá¯ááºáá«á á á®áá¶ááá·áºááœá²áá°á¡ááá·áºá០ááá¯ááºáá¯ááºááᯠáááºážááŒááºáááºá áááºááẠâáá¯ááºááá¯áááºážááŒááºááá¯áááºâ ááá¯ááºááᯠáŠážá áœá¬ááŸáááºááá«áááºá
ááŒá¿áá¬áá»á¬ážááᯠáá±á¬áºáá¯ááºáá²á·ááŒá®ážá ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááá¯á¡ááºááŸá¯ááᯠáá¯á¶ážááŒááºááŒá®ážááŒá áºáááºá áááºááŸááºážáá»ááºááŸá¬ ááŸááºážáá±ááẠ- Kubernetes ááŸá Bitrix ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬ážáááºáááºáááºá¡ááœáẠá¡áá¯ááºáá¯ááºááá·áºá áá áºáá áºáá¯áááŸááááºá Bitrix áá áœááºážáááºáá»á¬ážááŸáá·áº Kubernetes á á¡á¬ážáá¬áá»ááºáá»á¬ážááᯠááááºážááááºážáá¬ážáááºá á áááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŒáá«á áá¯á·á
áááá¯áá¬á¡áááºááá¬
áááºáá¬áᬠ(á¡áá¯ááºááá¬ážáá»á¬áž) ááŸáá·áºá¡áá° "á¡áá¯ááºáá¯ááºááŒááºáž" pods á¡áá»á¬ážá¡ááŒá¬ážááŸááááºá
cron áá¯ááºáá±á¬ááºá
áá¬áá»á¬ážá¡á±á¬ááºááœáẠáá
áºáᯠ(áá
áºáá¯áᬠááá¯á¡ááºáááº)á
á
á®áá¶ááá·áºááœá²áá°á¡ááá·áºá០ááá¯ááºáá¯ááºááᯠáááºážááŒááºáááºá¡ááœáẠá¡ááá·áºááŒáŸáá·áºáááºááŸá¯áá
áºáᯠ(áá
áºáá¯áᬠááá¯á¡ááºáááº)á
áá»áœááºá¯ááºááá¯á·ááẠáá±ážááœááºážáá»á¬ážááᯠááŒá±ááŸááºážáááº-
- á¡á ááºážá¡áá±ážáá»á¬ážááᯠáááºááá·áºáá±áá¬ááœáẠááááºážáááºážááááºáááºážá
- áááºááŸáºááᯠáááºááŸá¬ ááááºážáááºážáááá²á
- ááœááºááááºáá¬áá»á¬ážá áœá¬ááœáẠstatics gigabytes áá¬ážááŸááááºááá¯ááºáá² statics áá»á¬ážááá¯áááºááá·áºáá±áá¬ááœááºááááºážáááºážááááºáááºážá
- áá±áá¬áá±á·á áºáááºááá¯á¡áá¯ááºáá¯ááºááá²á
Docker áá¯á¶
áá»áœááºá¯ááºááá¯á·ááẠDocker áá¯á¶áá áºáá¯áááºáá±á¬ááºááŒááºážááŒáá·áº á áááºáááºá
á á¶ááŒááœá±ážáá»ááºááŸá¯ááŸá¬ áá»áœááºá¯ááºááá¯á·ááœáẠuniversal áá¯á¶áá áºáá¯á¶ááŸááááºá áááºážáá¡ááŒá±áá¶ááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá¡áá¯ááºááá¬áž podsá Crontasks ááŒáá·áº pods áá»á¬ážááŸáá·áº á¡ááá·áºááŒáŸáá·áºáá¬ážáá±á¬ pods áá»á¬ážááᯠáááŸááááºááŒá áºáááºá
áááºážááœáẠnginxá apache/php-fpm (áááºáá±á¬ááºá ááºá¡ááœááºáž ááœá±ážáá»ááºááá¯ááºáááº)á áá±ážááºáá±ážááá¯á·áááºá¡ááœáẠmsmtp ááŸáá·áº cron ááá¯á· áá«áááºáá«áááºá
áá¯á¶á¡á¬áž á á¯á ááºážááá·áºá¡áá«á ááá¯ááºá áá¯ááºá¡ááŒá±áá¶áá áºáá¯áá¯á¶ážááᯠ/app directory ááá¯á· áá°ážáá°ááẠ(ááá¯á¡á áááºá¡ááá¯ááºážáá»á¬ážááŸááœá²á áá»ááºá¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá®ážááŒá¬ážáá»áŸáá±áá¬ážááá·áº ááá¯ááŸá±á¬ááºáááºážááá¯á· ááœáŸá±á·áááº)á
á¡áá±ážá á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážá áááºáá±á¬ááºááŸá¯áá»á¬áž
á¡áá¯ááºááá¬áž áá²á·áá»á¬áž-
- nginx + container apache/php-fpm + msmtp áá«ááá·áº ááœááºááááºáá¬
- msmtp ááᯠáá®ážááŒá¬áž microservice áá áºáá¯ááá¯á· ááœáŸá±á·ááẠá¡áá¯ááºáááŒá áºáá²á·áá«á Bitrix ááẠá á¬ááá¯ááºááá¯ááºáááá¯á·ááá¯ááºááá·áºá¡ááœáẠá áááºááá¯ážá ááŒá¯áá¬áááºá
- ááœááºááááºáá¬áá áºáá¯á á®ááœáẠcodebase á¡ááŒáá·áºá¡á á¯á¶ááŸááááºá
- ááœááºááááºáá¬áá»á¬ážááœáẠáá¯ááºááŒá±á¬ááºážááŒááºážááᯠáá¬ážááŒá áºáá¬ážáááºá
cron- á¡á±á¬ááºááœááº
- apache, php, cron ááá¯á·áá«ááŸááá±á¬ ááœááºááááºáá¬
- áá¯ááºá¡ááŒá±áᶠá¡ááŒáá·áºá¡á á¯á¶áá«áááºáá«áááºá
- ááœááºááááºáá¬áá»á¬ážááœáẠáá¯ááºááŒá±á¬ááºážááŒááºážááᯠáá¬ážááŒá áºáááºá
á¡ááá·áºááŒáŸáá·áºááŒááºáž-
- nginx container + apache/php-fpm container + msmtp
- ááœááºááááºáá¬áá»á¬ážááœáẠáá¯ááºááŒá±á¬ááºážááŒááºážááᯠáá¬ážááŒá áºáá¬ážááŒááºážáááŸááá«á
session ááá¯ááŸá±á¬ááºááŸá¯
Bitrix áááºááŸáºááá¯ááŸá±á¬ááºááŸá¯
áá±á¬ááºáááºá¡áá±ážááŒá®ážáá±á¬á¡áá¬- á¡áá¬áááºááááºážááŸáá·áº áá±áá¬áá±á·á áºá០á á¬ááá¯ááºá¡ááá kubernetes áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááœáẠá¡áá¬á¡á¬ážáá¯á¶ážáá»áááºáááºáááºá¡ááœáẠá áá¬ážááŸááºáá»á¬ážááᯠááááºážáááºážáá¬ážáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá¯áá¯áá áºáᯠáááŸááááº- áá»áœááºá¯ááºááá¯á·ááẠááá±á¬áá»ááºá áá¯ááºá¡ááŒá±áá¶ááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºááŸááá°ááá¯ááºážá¡ááœáẠááá¯ááºáá² áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáá¬ážááá·áº á áá¬ážááŸááºáá»á¬ážááá¯áᬠááŒááºááá¯ááºáááºá
statics á¡ááœáẠááá¯ááŸá±á¬ááºááŸá¯
áááºááá·áºá¡áá¬ááá¯áááᯠáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáááº- cephá nfs (ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáá¯ááºáááºá¡ááœáẠnfs ááᯠá¡ááŒá¶ááŒá¯ááá¬ážáá«)á cloud áá¶á·ááá¯ážáá±ážáá°áá»á¬ážáá¶á០ááœááºáááºááá¯ááŸá±á¬ááºááŸá¯ á áááºááá¯á·ááŒá áºáááºá
ááá¯ááŸá±á¬ááºááŸá¯á¡á¬áž ááá¯ááºá /upload/ directory ááŸáá·áº static content áá«ááŸááá±á¬ á¡ááŒá¬áž directory áá»á¬ážááá¯á· containers ááœáẠáá»áááºáááºáá¬ážááẠááá¯á¡ááºáááºááŒá áºáá«áááºá
áá±áá¬áá±á·á
ááá¯ážááŸááºážáááºá¡ááœááºá Kubernetes ááŒááºááá±áá¬áá±á·á áºááᯠááœáŸá±á·ááẠá¡ááŒá¶ááŒá¯á¡ááºáá«áááºá Kubernetes ááŸá á¡ááŒá±áá¶ááẠáá®ážááŒá¬ážááŸá¯ááºááœá±ážáá±á¬ á¡áá¯ááºááŒá áºáááºá áááºážááẠá¡á á®á¡á ááºááᯠááŒááºážá¡á¬ážá¡á á®á¡á á¥áºááᯠááá¯ááá¯ááŸá¯ááºááœá±ážá á±áááºá
á ááºááŸáẠááá¯ááŸá±á¬ááºááŸá¯
memcached ááá¯áá¯á¶ážáá«ááẠ:)
áááºážááẠsession.save_path ááᯠphp ááœáẠsession.save_path á¡ááŒá Ạ"natively" áá¶á·ááá¯ážáá¬ážáááºá áááºáá¬áá¬áá»á¬ážá áœá¬ááŒáá·áº á¡á á¯á¡áá±ážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·áááºáá±á¬ááºáá±á¬á¡áá«ááœáẠá¡ááá¯áá«á áá áºááᯠááŸá±ážááá¯ážáá»á±á¬ááºáá¯á¶ážáááá¯áá¬áááºáá¬áá»á¬ážááœáẠá¡ááŒáááºáá»á¬ážá áœá¬ á ááºážáááºááŒá®ážááŒá áºáááºá ááŒáá·áºáá»ááºáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáŠážáá¯ááºááᯠá¡áá¯á¶ážááŒá¯áááºá
$ helm install stable/memcached --name session
php.ini - á€áá±áá¬ááœáẠáá¯á¶ááœáẠmemcached ááœáẠsessions áá»á¬ážááááºážáááºážáááºá¡ááœáẠáááºáááºáá»á¬ážáá«ááŸááááºá
memcached ááŒáá·áº host áá»á¬ážá¡ááŒá±á¬ááºážáá±áá¬áá±ážááá¯á·ááẠEnvironment Variables áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áá²á·áááºá
áááºážááẠááá·áºá¡á¬áž devá á¡ááá·áºá á
ááºážáááºááŸá¯á ááá±á¬ááºáááºáááºážáá»ááºáá»á¬ážááœáẠáá°áá®áá±á¬áá¯ááºááá¯áá¯á¶ážááá¯ááºááẠ(áááºážááá¯á·ááŸá memcached host á¡áááºáá»á¬ážááẠááœá²ááŒá¬ážáááºááŒá
áºááŒá®ážá ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠáááºáááºážáá»ááºáá
áºáá¯á
á®ááá¯á· á
ááºááŸááºá¡áááºáá
áºáá¯á
á®ááᯠáá±ážááá¯á·ááẠááá¯á¡ááºáá«áááº)á
Bitrix áááºááŸáºááá¯ááŸá±á¬ááºááŸá¯
pods áá»á¬ážá¡á¬ážáá¯á¶ážáᶠá á¬áá±ážááá¯áẠáááºááá¯ááºáá±á¬ á¡ááŸá¬áž-áá¶ááá¯ááºáááºááŸááá±á¬ ááá¯ááŸá±á¬ááºááŸá¯ ááá¯á¡ááºáá«áááºá
áá»áœááºá¯ááºááá¯á·áááºáááºáž memcached ááá¯áá¯á¶ážáááºá
á€ááŒá±ááŸááºážáá»ááºááᯠBitrix ááá¯ááºááá¯ááºá á¡ááŒá¶ááŒá¯áá¬ážáááºá
$ helm install stable/memcached --name cache
bitrix/.settings_extra.php - á€áá±áá¬ááœáẠBitrix ááœáẠáááºážááᯠcache ááááºážáááºážááá·áºáá±áá¬ááœáẠáááºááŸááºáá¬ážáááº
áá»áœááºá¯ááºááá¯á·ááẠEnvironment Variables ááá¯áááºáž á¡áá¯á¶ážááŒá¯áá«áááºá
Krontaski
Kubernetes ááœáẠCrontasks ááá¯á¡áá¯á¶ážááŒá¯ááẠááá°áá®áá±á¬áááºážáááºážáá»á¬ážááŸááááºá
- Crontasks áá¯ááºáá±á¬ááºáááºá¡ááœáẠpod áá áºáá¯ááŸáá·áº áá®ážááŒá¬ážááŒáá·áºáá»ááºááŒááºážá
- crontask áá»á¬ážááá¯áá¯ááºáá±á¬ááºáááºá¡ááœáẠcronjob (áááºážááẠwget ááŒáá·áº áááºá¡ááºááºáá
áºáá¯ááŒá
áºáá«á
https://$host$cronjobname ááá¯á·ááá¯áẠá¡áá¯ááºááá¬áž pods áá áºáá¯á¡ááœááºážááŸá kubectl exec á áááºááá¯á·) - á áááºááá¯á·ááá¯
á¡ááŸááºáááºáá¯á¶ážáá áºáá¯á¡ááŒá±á¬ááºáž áááºááŒááºážáá¯á¶ááá¯ááºáááºá ááá¯á·áá±á¬áº á€ááá á¹á ááœáẠáá»áœááºá¯ááºááá¯á·ááẠ"Crontasks á¡ááœáẠpods áá»á¬ážááŒáá·áº áá®ážááŒá¬ážááŒáá·áºáá»ááºááŒááºáž" option ááᯠááœá±ážáá»ááºáá²á·áááºá
ááŒá®ážáááºááŸáá·áº
- ConfigMap ááŸáááá·áº ááá¯á·ááá¯áẠconfig/addcron ááá¯ááºááŸáááá·áº cron áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááá·áºáá«á
- á¥ááá¬áá áºáá¯á¡áá±ááŸáá·áº áá»áœááºá¯ááºááá¯á·ááẠworker pod ááŸáá·áºáá°áá®áá±á¬ááœááºááááºáá¬ááá¯ááœáá·áºááŒá®áž + áááºážááœááºáááá°á¡áá¯ááºáá»á¬ážááá¯áá¯ááºáá±á¬ááºááœáá·áºááŒá¯áááº
- áá°áá®áá±á¬áá¯ááºá¡ááŒá±áá¶ááá¯á¡áá¯á¶ážááŒá¯áááºá áá±á«ááºážá ááºážááŒááºážááŒá±á¬áá·áºááœááºááááºáá¬áááºáááºááŒááºážáááºááá¯ážááŸááºážáááºá
áá»áœááºá¯ááºááá¯á·áááŸáááá·áºáá±á¬ááºážáá»áá¯ážáá»á¬áž
- áá»áœááºá¯ááºááá¯á·ááœáẠáá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážááááºáááºážáá»áẠ(docker) ááŸáá·áºáá°áá®áá±á¬áááºáááºážáá»ááºááœáẠCrontasks ááá¯áá¯ááºáá±á¬ááºáá±áááº
- Crontasks ááẠKubernetes á¡ááœáẠ"ááŒááºáááºáá±ážáá¬ážááŒááºáž" áááá¯á¡ááºáá«á áááºážááá¯á·ááẠáá°áá®áá±á¬áá¯á¶á á¶ááŸáá·áº ááááºáá²á·ááá¯á· áá°áá®áá±á¬áá¯ááºá¡ááŒá±áá¶ááŒáá·áº áá¯ááºáá±á¬ááºáá«áááºá
- á á®áá¶ááá·áºááœá²áá°áá»á¬ážáá¬áá áá¯ááºáá¯ááºáá±ážáá¬áááœá²ááá¯á· áááááŒá¯ááá¯ááºááœáá·áºááŸááá±á¬ á¡ááœá²á·áááºáá»á¬ážá¡á¬ážáá¯á¶ážá០cron á¡áá¯ááºáá»á¬ážááᯠáá±á«ááºážááá·áºááá¯ááºáááºá
Southbridge K8SDeploy module ááŸáá·áº admin panel á០code áááºážááŒááºááŒááºážá
á¡á±á¬ááºááŸá¬ á¡ááá·áºááŒáŸáá·áºááá¯á· ááŒá±á¬áá±áá¬áá¬ážá
á¡á²áá®áá±áá¬ááᯠáááºááá¯áááºážááŒá±á¬ááºážááŒááá²á
Hurrayá áá®á¡ááœáẠPHP ááŸá¬ module áá
áºáá¯áá±ážáá²á·áá«ááẠ:) áá«á Bitrix á¡ááœáẠááá¹áááẠmodule áá±ážáá
áºáá¯áá«á áááºážááᯠáá°ááááŸááºááŒá¬áž ááááŸáááá¯ááºáá±ážáá±á¬áºáááºáž áááºážááá¯ááœáá·áºááẠáá»áœááºá¯ááºááá¯á· á
á®á
ááºáá¬ážáááºá
áá±á¬áºáá»á°ážááᯠBitrix ááœáẠáá¯á¶ááŸáẠmodule áá
áºáá¯áá²á·ááá¯á· ááá·áºááœááºážáá¬ážáááºá
ááŸáá·áºá€áá¯á¶ááááº-
áááºážááẠááá·áºá¡á¬áž áááºááá¯ááºá á®áá¶ááá·áºááœá²áá°ááᯠááœá²ááŒá¬ážááááŒááºááá¯ááºáá±á¬ ááœááºáá®ážáá áºáᯠáááºááŸááºááœáá·áºááŒá¯ááŒá®áž Kubernetes á¡á¬áž á¡ááá·áºááŒáŸáá·áºáááºááŸá¯ áá±á«á·ááºááá¯á· á¡ááœá¬ážá¡áá¬áá±ážááá¯á·ááẠááœáá·áºááŒá¯áááºá
á¡ááŒá±á¬ááºážá¡áá²áá»á¬áž ááŒá®ážááŒá±á¬ááºáá±á¬á¡áá« git push ááá¯ááŸáááºááẠááá¯á¡ááºáááºá áá¯ááºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠgit ááá¯á· áá±ážááá¯á·áááºááŒá áºááŒá®ážá ááá¯á·áá±á¬áẠá áá áºááẠáá¯ááºáá¬ážááŸááºážá¡áá áºááŒáá·áº áá¯á¶áá áºáá¯á¶ááᯠáááºáá±á¬ááºááŒá®áž á¡á á¯á¡áá±ážáá áºáá»áŸá±á¬ááºááœáẠáááºážááᯠ"áá¯ááº" áá¬á pods á¡áá±á¬ááºážáá»á¬ážááᯠá¡á á¬ážááá¯ážááŒááºážá .
áá¯ááºáááºá á¡á²áá«á áááºážáááºážáá±á¬á· áááºáá«áááºá áá«áá±ááá·áº áá áºáá»áááºáááºážááŸá¬áá² áá»áœááºáá±á¬áºááá¯á·áᬠááá¯ááºáááá¯áá¬ážáá áºáááá¯áá¬ááᯠááááºážááááºážáá¬ážááŒá®áž á¡ááºááºáááºá¡ááá·áºá០áá¯ááºááᯠááŒá¯ááŒááºááẠáááºážááá¯á·á á áááºááŒáá¯ááºá¡ááœáá·áºá¡áá±ážááᯠBitrix á¡áá¯á¶ážááŒá¯áá°áá»á¬ážáá¶á០áááºááœááºááá¶áá«á á¡áá¯á¶ážááœááºá áááºážááẠááœá±ážáá»ááºááŸá¯áá áºáá¯ááŒá áºáááºá áááºááẠáá¯ááºááᯠáááºážááŒááºááŒááºážá ááŒá¿áá¬ááᯠááá°áá®áá±á¬áááºážáááºážááŒáá·áº ááŒá±ááŸááºážááá¯ááºáááºá
áá²á·á ááºááá¬áž
Kubernetes ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬áž áááºáá±á¬ááºáááºá áá»áœááºá¯ááºááá¯á· áá¯á¶ááŸááºá¡á¬ážááŒáá·áº Helm áááºáá±á·áá»áºáááºáá±áá»á¬ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
Kubernetes ááŸá áá»áœááºá¯ááºááá¯á·á Bitrix ááŒá±ááŸááºážáá»ááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·á áŠážáá±á¬ááºá
áá
áºá
á®áá¶ááá·áºááœá²áá° Sergey Bondarev ááẠá¡áá°áž Helm ááá¬ážááᯠáá±ážáá¬ážáá²á·áááºá
áááºážááẠá¡áá¯ááºááá¬ážá Ugradeá cron pods áá»á¬ážááᯠáááºáá±á¬ááºáá±ážáááºá ingressesá áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº Kubernetes áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážá០pods ááá¯á· ááŒá±á¬ááºážáá±ážááá·áº variable áá»á¬ážááᯠáááºáá®ážáá±ážáááºá
áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºááᯠGitlab ááœáẠááááºážáááºážáá¬ážááŒá®áž Gitlab á០Helm áááºáá±á¬ááºááŸá¯ááá¯áááºáž áá¯ááºáá±á¬ááºáá«áááºá
ááá¯ááá¯ááŒá±á¬ááááºá áá«ááá®ááá¯áá¯á¶ááááºá
$ helm upgrade --install project .helm --set image=registrygitlab.local/k8s/bitrix -f .helm/values.yaml --wait --timeout 300 --debug --tiller-namespace=production
ááŒáá·áºáá»ááºá ááºá¡ááœááºáž áá¯ááºáááẠáá áºá á¯á¶áá áºáᯠááŸá¬ážááœááºážááœá¬ážáá«á Helm ááẠááá·áºá¡á¬áž "áá»á±á¬ááœá±á·á áœá¬" ááŸáá·áºááŒááºááŒááºážááá¯áááºáž áá¯ááºáá±á¬ááºááá¯ááºá á±áá«áááºá "áá¯ááºáá¯ááºáá»ááœá¬ážáá±á¬ááŒá±á¬áá·áº ftp ááŸáá áºááá·áº áá¯ááºááᯠááŒááºáá«" áᯠááááºááá·áºááŒá±á¬ááºááœá¶á·ááŒááºážáááŸááá±á¬áºáááºáž Kubernetes ááẠáááºážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒá®áž á ááºáááºááŒááºážáááŸááá«á áá±á¬ááºážáá«áááºá
áá»áá¬ážáá±ážáá«á
áá¯ááºáá²á·á áá»áœááºá¯ááºááá¯á·ááẠGitlab ááŸáá·áº Gitlab CI áááááááºáá»á¬ážááŒá
áºáááºá áááºážááá¯áá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááẠ:)
Gitlab ááœáẠááá±á¬áá»ááºááá¯ááŸá±á¬ááºáá¬ááá¯á· áááááŒá¯áá±á¬á¡áá«á Gitlab ááẠáááºáááºážáá»ááºá áá¬ážááŸááºážá¡áá
áºááᯠá¡áá¯á¶ážáá»ááá·áº ááá¯ááºááá¯ááºážáá
áºáá¯ááᯠá
áááºááá¯ááºáááºá
á¡áááºá·áááºá·:
- build (Docker áá¯á¶á¡áá áºáá áºáá¯áááºáá±á¬ááºááŒááºáž)
- á ááºážáááºááŒááºáž (á ááºážáááºááŒááºáž)
- ááŸááºážáááºážááŒááºáž (á ááºážáááºáááºáááºážáá»ááºááᯠáááºááŸá¬ážááŒááºáž)
- push (áá»áœááºá¯ááºááá¯á·ááẠDocker ááŸááºáá¯á¶áááºááŒááºážááá¯á·ááá¯á·áááº)
- deploy (áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááᯠHelm ááŸáá áºááá·áº Kubernetes ááá¯á· ááŒáá·áºáá»ááºáá¬ážáááº)á
áá¬ážá á¡áááºááá·áºááŒá
áºááŒá®á á¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáá¡á±á¬ááºá
áá±á¬ááºážááŒá®á áá«ááŸááá¯áẠáá±ážááœááºážááœá± áá±ážáá¬áá»áá¯áž ááŸááá¬ážá
áá«ááᯠáá«ááá¯á· áá¬áá¯ááºáá²á·áá²á
áááºážááá¬ááŸá¯áá±á¬áá·áºááŸ
- Dockerized Bitrix;
- "ááŒááº" Bitrix ááᯠááœááºááááºáá¬áá»á¬ážáá²ááá¯á· ááŒááºáá«á áá áºáá¯á á®ááẠá¡áááºážáá¯á¶áž áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá
- ááá¯ááºáá¶áá²á· ááœááºááááºáá¬áá»á¬ážá á¡ááŒá±á¡áá±ááᯠá¡á±á¬ááºááŒááºáá²á·áááºá
- Kubernetes ááœáẠBitrix ááᯠá¡ááá·áºááŒáŸáá·áºáááºááŒááºážááŒáá·áº ááŒá¿áá¬ááᯠááŒá±ááŸááºážáá²á·áááºá
- Bitrix áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááºáááºá¡áá¯ááºáá¯ááºáá±áá«ááẠ(á¡á¬ážáá¯á¶ážáá®ážáá«áž);
- Kubernetes ááá¯á· ááŒáá·áºáá»ááºááŒááºážááŸáá·áº áá¬ážááŸááºážáá»á¬ážááŒá¬ážááœáẠrollback ááŒá¯áá¯ááºááŒááºážáá»á¬áž áá¯ááºáá±á¬ááºáá²á·áááºá
áá¯ááºáááºážááŸá¯áá±á¬áá·áºááŸ
- á¡ááŸá¬ážáá¶ááá¯ááºáááº;
- Kubernetes áááááá¬áá»á¬áž (Gitlab CI ááŸáá·áº ááœááºáá°á áœá¬ áá±á«ááºážá ááºážááŒááºážá áá»á±á¬ááœá±á·á áœá¬ á¡áá¯á¶ážáá»ááŒááºáž á áááº)á
- áá»áŸáá¯á·ááŸááºá áá¬ážááŸááºáá»á¬áž (á áá¬ážááŸááºáá»á¬ážááᯠááá¯ááºááá¯ááºáááºáá±á¬ááºááœáá·áº áááŸááá°áá»á¬ážáᬠááŒááºááá¯ááºáááº);
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá áºáá¯áááºážá¡ááœááºáž á¡ááá¯áá±á¬ááºážáááºáááºážáá»ááºáá»á¬áž (ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á á ááºážáááºááŸá¯áá»á¬ážá á áááº) ááᯠáááºáá®ážááẠá¡áááºááŒá±áááºá
source: www.habr.com