Southbridge Π² ЧСлябинскС ΠΈ Битрикс Π² Kubernetes

Π’ ЧСлябинскС проходят ΠΌΠΈΡ‚Π°ΠΏΡ‹ систСмных администраторов Sysadminka, ΠΈ Π½Π° послСднСм ΠΈΠ· Π½ΠΈΡ… я Π΄Π΅Π»Π°Π» Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎ нашСм Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° 1Π‘-Битрикс Π² Kubernetes.

Битрикс, Kubernetes, Π‘eph β€” отличная смСсь?

РасскаТу, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΠ· всСго этого собрали Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

ΠŸΠΎΠ΅Ρ…Π°Π»ΠΈ!

Southbridge Π² ЧСлябинскС ΠΈ Битрикс Π² Kubernetes

ΠœΠΈΡ‚Π°ΠΏ ΠΏΡ€ΠΎΡˆΠ΅Π» 18 апрСля ЧСлябинскС. ΠŸΡ€ΠΎ наши ΠΌΠΈΡ‚Π°ΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Timepad ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΡŽΡ‚ΡƒΠ±Π΅.

Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ Π½Π°ΠΌ с Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ β€” Π²Π΅Π»ΠΊΠ°ΠΌ, ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π° [email protected] ΠΈ Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ t.me/vadimisakanov.

Мой доклад

Southbridge Π² ЧСлябинскС ΠΈ Битрикс Π² Kubernetes

Π‘Π»Π°ΠΉΠ΄Ρ‹

РСшСниС «Битрикс Π² Kubernetes, вСрсия Southbridge 1.0Β»

Π― расскаТу ΠΎ нашСм Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ² Π² KubernetesΒ», ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ сдСлано Π½Π° ΠΌΠΈΡ‚Π°ΠΏΠ΅. Но ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ слова Битрикс, Docker, Kubernetes, Ceph Π²Π°ΠΌ извСстны хотя Π±Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ статСй Π² Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.

Π§Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎ Битрикс Π² Kubernetes?

Π’ΠΎ всСм ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Битрикс Π² Kubernetes.
Π― нашСл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹:

Π”ΠΎΠΊΠ»Π°Π΄ АлСксандра Π‘Π΅Ρ€Π±ΡƒΠ»Π°, 1Π‘-Битрикс, ΠΈ Антона Π’ΡƒΠ·Π»ΡƒΠΊΠΎΠ²Π° ΠΈΠ· Qsoft:

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° собствСнного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ serkyron Π½Π° Π₯Π°Π±Ρ€Π΅.
НашСл Π΅Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π˜ΠΈΠΈΠΈβ€¦ собствСнно, всС.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽ, качСство Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ссылкам Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ Π½Π΅ провСряли πŸ™‚
ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ нашСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ я общался с АлСксандром Π‘Π΅Ρ€Π±ΡƒΠ»ΠΎΠΌ, Ρ‚ΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ, поэтому Π² ΠΌΠΎΠΈΡ… слайдах Π΅ΡΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ «Битрикс Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ KubernetesΒ».

Но Π·Π°Ρ‚ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Docker ΠΎΠ±Ρ€Π°Π·ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Битрикс Π² Docker ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ: https://hub.docker.com/search?q=bitrix&type=image

Достаточно Π»ΠΈ этого для создания ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Битрикс Π² Kubernetes?
НСт. Π•ΡΡ‚ΡŒ большоС количСство ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Битрикс Π² Kubernetes?

ΠŸΠ΅Ρ€Π²Π°Ρ β€” Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈΠ· Dockerhub Π½Π΅ подходят для Kubernetes

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ (Π° Π² Kubernetes ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ), ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Kubernetes Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ выполнял ΠΎΠ΄Π½Ρƒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΈ Π΄Π΅Π»Π°Π» это Ρ…ΠΎΡ€ΠΎΡˆΠΎ). ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ? Если ΠΊΡ€Π°Ρ‚ΠΊΠΎ β€” Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚Π΅ΠΌ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅.
Если ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Π΅Π΅ β€”- посмотритС эту ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, поТалуйста: https://habr.com/ru/company/southbridge/blog/426637/

Docker ΠΎΠ±Ρ€Π°Π·Ρ‹ Π² Dockerhub Π² основном построСны ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «всС Π² ΠΎΠ΄Π½ΠΎΠΌΒ», поэтому Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ всС-Ρ‚Π°ΠΊΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ свой вСлосипСд ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ с нуля.

Вторая β€” ΠΊΠΎΠ΄ сайта правится ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ

Π‘ΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» Π½Π° сайтС β€” обновился ΠΊΠΎΠ΄ (добавилась дирСктория с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°).

ИзмСнили свойства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ β€” измСнился ΠΊΠΎΠ΄.

Kubernetes Β«ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ» с Ρ‚Π°ΠΊΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ измСняСмыми (Stateless).

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (ΠΏΠΎΠ΄) Π² кластСрС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Если ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ (ΠΏΠΎΠ΄Π΅), Ρ‚ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π°Ρ… ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ, сайт Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии сайта. Π’Π°ΠΊ ΠΆΠΈΡ‚ΡŒ нСльзя.

Π’Ρ€Π΅Ρ‚ΡŒΡ β€” Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ вопрос с Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ

Если Ρƒ нас ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ ΠΈ ΠΎΠ΄ΠΈΠ½ «классичСский» сСрвСр, всС совсСм просто: Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π‘Π”, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ происходит ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ.
Если Ρƒ нас сайт Π² Kubernetes, распилСн Π½Π° микросСрвисы, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ β€” ΠΎΠΉ. НуТно ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ с Π½ΠΎΠ²ΠΎΠΉ вСрсиСй ΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… вмСсто старых, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π‘Π”, ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ для посСтитСлСй. Π‘Π»Π°Π³ΠΎ, Π² этом Kubernetes Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, поддСрТивая Ρ†Π΅Π»ΡƒΡŽ Ρ‚ΡƒΡ‡Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² дСплоя.

ЧСтвСртая β€” Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ вопрос с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ статики

Если ваш сайт вСсит «всСго лишь» 10 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ ΠΈ Π²Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ Π΅Π³ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ вСсом Π² 10 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒΡΡ Π²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ.
НуТно Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ самыС «тяТСлыС» части сайта Π²Π½Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΈ встаСт вопрос, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ это Π΄Π΅Π»Π°Ρ‚ΡŒ

Π§Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² нашСм Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ

БовсСм вСсь ΠΊΠΎΠ΄ Битрикс Π½Π° ΠΌΠΈΠΊΡ€ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ/микросСрвисы Π½Π΅ Ρ€Π°Π·Ρ€Π΅Π·Π°Π½ (Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ рСгистрация ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΈ Ρ‚.ΠΏ.). Π’ΡΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

Π‘Π°Π·Ρƒ Π² Kubernetes Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌ (я всС ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с Π±Π°Π·ΠΎΠΉ Π² Kubernetes для ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΎ Π½Π΅ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½).

Администраторам сайта всС-Ρ‚Π°ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ сайт Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Kubernetes. Ѐункция Β«ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° систСмы» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, для рСдактирования ΠΊΠΎΠ΄Π° сайта ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ Π½ΡƒΠΆΠ½ΠΎ сначала Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄Β».

Π‘ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ, с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ микросСрвисности ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ, Ρ†Π΅Π»ΡŒ ясна β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ систСму для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Битрикс Π² Kubernetes, сохранив ΠΈ возмоТности Битрикс, ΠΈ прСимущСства Kubernetes. НачинаСм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

АрхитСктура

Много Β«Ρ€Π°Π±ΠΎΡ‡ΠΈΡ…Β» ΠΏΠΎΠ΄ΠΎΠ² с вСбсСрвСром (worker’Ρ‹).
Один ΠΏΠΎΠ΄ с ΠΊΡ€ΠΎΠ½-тасками (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½).
Один upgrade ΠΏΠΎΠ΄ для рСдактирования ΠΊΠΎΠ΄Π° сайта ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ (Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½).

Southbridge Π² ЧСлябинскС ΠΈ Битрикс Π² Kubernetes

РСшаСм вопросы:

  • Π“Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ сСссии?
  • Π“Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ кэш?
  • Π“Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ статику, Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΆΠ΅ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Ρ‹ статики Π² ΠΊΡƒΡ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²?
  • Как Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…?

Docker ΠΎΠ±Ρ€Π°Π·

НачинаСм со сборки Docker ΠΎΠ±Ρ€Π°Π·Π°.

Π˜Π΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Ρƒ нас ΠΎΠ΄ΠΈΠ½ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, Π½Π° Π΅Π³ΠΎ основС ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈ worker-ΠΏΠΎΠ΄Ρ‹, ΠΈ ΠΏΠΎΠ΄Ρ‹ с кронтасками, ΠΈ upgrade ΠΏΠΎΠ΄Ρ‹.

ΠœΡ‹ сдСлали ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π·.

Π’ Π½Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ nginx, apache/php-fpm (ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ сборкС), msmtp для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈ cron.

ΠŸΡ€ΠΈ сборкС ΠΎΠ±Ρ€Π°Π·Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /app копируСтся полная кодовая Π±Π°Π·Π° сайта (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ… частСй, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ вынСсСм Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ shared storage).

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΠΎΡΡ‚ΡŒ, сСрвисы

worker ΠΏΠΎΠ΄Ρ‹:

  • ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с nginx + ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ apache/php-fpm + msmtp
  • msmtp вынСсти Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ микросСрвис Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΎ, Битрикс Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΡƒΡ‰Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚Ρƒ
  • Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ полная кодовая Π±Π°Π·Π°.
  • Π—Π°ΠΏΡ€Π΅Ρ‚ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ….

cron ΠΏΠΎΠ΄:

  • ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с apache, php, cron
  • Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ полная кодовая Π±Π°Π·Π°
  • Π·Π°ΠΏΡ€Π΅Ρ‚ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…

upgrade ΠΏΠΎΠ΄:

  • ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с nginx + ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ apache/php-fpm + msmtp
  • Π·Π°ΠΏΡ€Π΅Ρ‚Π° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… Π½Π΅Ρ‚

Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСссий

Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ кэша Битрикс

Π•Ρ‰Π΅ Π²Π°ΠΆΠ½ΠΎ: ΠΏΠ°Ρ€ΠΎΠ»ΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎ всСму, ΠΎΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ Π² kubernetes secrets. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ бонус, ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π²ΠΈΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, ΠΊΠΎΠΌΡƒ ΠΌΡ‹ Π΄Π°Π΅ΠΌ доступ ΠΊ сСкрСтам, Π° Π½Π΅ всСм, Ρƒ ΠΊΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ доступ ΠΊ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ для статики

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: ceph, nfs (Π½ΠΎ nfs Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½), network storage ΠΎΡ‚ Β«ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ…Β» ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ², etc.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… Π² /upload/ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ сайта ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ со статикой.

Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…

Для простоты Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Kubernetes. Π‘Π°Π·Π° Π² Kubernetes β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ слоТная Π·Π°Π΄Π°Ρ‡Π°, ΠΎΠ½Π° сдСлаСт схСму Π½Π° порядок слоТнСС.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСссий

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ memcached πŸ™‚

Он Ρ…ΠΎΡ€ΠΎΡˆΠΎ справляСтся с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ сСссий, кластСризуСтся, Β«Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΒ» поддСрТиваСтся ΠΊΠ°ΠΊ session.save_path Π² php. Вакая систСма ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π΅Ρ‰Π΅ Π² классичСской ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ строили кластСры с большим числом Π²Π΅Π±-сСрвСров. Для дСплоя ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ helm.

$ helm install stable/memcached --name session

php.ini β€” здСсь Π² ΠΎΠ±Ρ€Π°Π·Π΅ Π·Π°Π΄Π°Π½Ρ‹ настройки для хранСния сСссий Π² memcached

ΠœΡ‹ использовали Environment Variables для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ хостах с memcached https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Π² окруТСниях dev, stage, test, prod (ΠΈΠΌΠ΅Π½Π° хостов memcached Π² Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, поэтому Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя хостов для сСссий).
Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ кэша Битрикс

Нам Π½ΡƒΠΆΠ½ΠΎ откаузостойчивоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ всС ΠΏΠΎΠ΄Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ memcached.
Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ рСкомСндуСтся самим Битрикс.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php β€” здСсь Π² Битрикс задаСтся, Π³Π΄Π΅ Ρƒ нас хранится кэш

Π’Π°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Environment Variables.

ΠšΡ€ΠΎΠ½Ρ‚Π°ΡΠΊΠΈ

Π•ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ кронтасков Π² Kubernetes.

  • ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ deployment с ΠΏΠΎΠ΄ΠΎΠΌ для выполнСния кронтасков
  • cronjob для выполнСния кронтасков (Ссли это web app β€” с wget https://$host$cronjobname, ΠΈΠ»ΠΈ kubectl exec Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· worker ΠΏΠΎΠ΄ΠΎΠ², ΠΈ Ρ‚.ΠΏ.)
  • etc.

МоТно ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ, Π½ΠΎ Π² этом случаС ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ «ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ deployment с ΠΏΠΎΠ΄Π°ΠΌΠΈ для кронтасков»

Как это сдСлано:

  • ΠΊΡ€ΠΎΠ½-таски добавляСм Ρ‡Π΅Ρ€Π΅Π· ConfigMap Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ» config/addcron
  • Π² ΠΎΠ΄Π½ΠΎΠΌ экзСмплярС запускаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ worker-ΠΏΠΎΠ΄Ρƒ + Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡ€ΠΎΠ½-тасков Π² Π½Π΅ΠΌ
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π° ΠΆΠ΅ кодовая Π±Π°Π·Π°, благодаря ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ сборка ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° проста

Π§Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

  • ΠΈΠΌΠ΅Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ кронтаски Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (docker)
  • кронтаски Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ «ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ» для Kubernetes, ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅ ΠΈ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅
  • ΠΊΡ€ΠΎΠ½-таски ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ всС Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ commit Π² production Π²Π΅Ρ‚ΠΊΡƒ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π΄ΠΌΠΈΠ½Ρ‹

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Southbridge K8SDeploy ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ

ΠœΡ‹ вСдь Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎ upgrade ΠΏΠΎΠ΄?
А ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ?
Π£Ρ€Π°, ΠΌΡ‹ написали для этого ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° php πŸ™‚ Π­Ρ‚ΠΎ нСбольшой классичСский ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Битрикс. Π•Π³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ доступС, Π½ΠΎ ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ.
ΠœΠΎΠ΄ΡƒΠ»ΡŒ устанавливаСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² Битрикс:

Southbridge Π² ЧСлябинскС ΠΈ Битрикс Π² Kubernetes

И выглядит Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Southbridge Π² ЧСлябинскС ΠΈ Битрикс Π² Kubernetes

Он позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ cookie, которая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ администратора сайта ΠΈ позволяСт Kubernetes ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° upgrade ΠΏΠΎΠ΄.

Когда измСнСния Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ git push, измСнСния ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π² git, Π΄Π°Π»Π΅Π΅ систСма собСрСт ΠΎΠ±Ρ€Π°Π· с Π½ΠΎΠ²ΠΎΠΉ вСрсиСй ΠΊΠΎΠ΄Π° ΠΈ «раскатаСт» Π΅Π΅ ΠΏΠΎ кластСру, Π·Π°ΠΌΠ΅Π½ΠΈΠ² старыС ΠΏΠΎΠ΄Ρ‹.

Π”Π°, нСсколько ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΌΡ‹ сохраняСм ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ Π½Π΅ Π·Π°Π±ΠΈΡ€Π°Π΅ΠΌ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Битрикс Π»ΡŽΠ±ΠΈΠΌΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ· Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², это опция, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠ΄Π° Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

Helm Ρ‡Π°Ρ€Ρ‚

Для сборки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Helm.
Для нашСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Битрикс Π² Kubernetes Π‘Π΅Ρ€Π³Π΅ΠΉ Π‘ΠΎΠ½Π΄Π°Ρ€Π΅Π², наш Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ систСмный администратор, написал ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Helm Ρ‡Π°Ρ€Ρ‚.

Он выполняСт сборку worker, ugrade, cron ΠΏΠΎΠ΄ΠΎΠ², настраиваСт ingress’Ρ‹, сСрвисы, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· Kubernetes secrets Π² ΠΏΠΎΠ΄Ρ‹.

Код ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ Π² Gitlab, ΠΈ сборку Helm Ρ‚Π°ΠΊΠΆΠ΅ запускаСм ΠΈΠ· Gitlab.

Если ΠΊΡ€Π°Ρ‚ΠΊΠΎ, это выглядит Ρ‚Π°ΠΊ

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

Helm Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Β«Π±Π΅ΡΡˆΠΎΠ²Π½Ρ‹ΠΉΒ» ΠΎΡ‚ΠΊΠ°Ρ‚, Ссли Π²Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΡ€ΠΈΡΡ‚Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹ Π² ΠΏΠ°Π½ΠΈΠΊΠ΅ «фикситС ΠΊΠΎΠ΄ ΠΏΠΎ Ρ„Ρ‚ΠΏ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ ΡƒΠΏΠ°Π»Β», Π° Kubernetes Π΄Π΅Π»Π°Π΅Ρ‚ это автоматичСски, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π±Π΅Π· Π΄Π°ΡƒΠ½Ρ‚Π°ΠΉΠΌΠ°.

Π”Π΅ΠΏΠ»ΠΎΠΉ

Π”Π°, ΠΌΡ‹ Ρ„Π°Π½Π°Ρ‚Ρ‹ Gitlab & Gitlab CI, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ πŸ™‚
ΠŸΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Π² Gitlab Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Gitlab запускаСт ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ вСрсии окруТСния.

Π­Ρ‚Π°ΠΏΡ‹:

  • build (собираСм Π½ΠΎΠ²Ρ‹ΠΉ Docker ΠΎΠ±Ρ€Π°Π·)
  • test (тСстируСм)
  • clean up (удаляСм тСстовоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅)
  • push (отправляСм Π΅Π³ΠΎ Π² Docker registry)
  • deploy (Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm).

Southbridge Π² ЧСлябинскС ΠΈ Битрикс Π² Kubernetes

Π£Ρ€Π°, Π³ΠΎΡ‚ΠΎΠ²ΠΎ, внСдряСм!
Ну ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅ΠΌ вопросы, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ.

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сдСлали

Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния:

  • Π΄ΠΎΠΊΠ΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Битрикс;
  • Β«Ρ€Π°Π·Ρ€Π΅Π·Π°Π»ΠΈΒ» Битрикс Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ;
  • добились stateless состояния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²;
  • Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Битрикс Π² Kubernetes;
  • всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Битрикс ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (ΠΏΠΎΡ‡Ρ‚ΠΈ всС);
  • ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π² Kubernetes ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бизнСса:

  • ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ;
  • инструмСнты Kubernetes (простая интСграция с Gitlab CI, Π±Π΅ΡΡˆΠΎΠ²Π½Ρ‹ΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ, etc);
  • ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π² сСкрСтах (Π²ΠΈΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, ΠΊΠΎΠΌΡƒ прямо прСдоставлСн доступ ΠΊ паролям);
  • ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ окруТСния (для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстов ΠΈ Π΄Ρ€) Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ инфраструктуры.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ