ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ДоставянС с Docker (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ)

Π‘Π²ΠΎΠΉ Π±Π»ΠΎΠ³ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, създадСни ΠΏΠΎ ΠΌΠΎΡ‚ΠΈΠ²ΠΈ ΠΎΡ‚ послСднитС изяви Π½Π° нашия тСхничСски Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ distol (Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Бтоляров). Всички Ρ‚Π΅ сС ΡΡŠΡΡ‚ΠΎΡΡ…Π° ΠΏΡ€Π΅Π· 2016 Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ профСсионални мСроприятия ΠΈ бяха посвСтСни Π½Π° Ρ‚Π΅ΠΌΠ°Ρ‚Π° DevOps ΠΈ Docker. Π•Π΄Π½ΠΎ Π²ΠΈΠ΄Π΅ΠΎ, ΠΎΡ‚ срСщата Docker Moscow Π² офиса Π½Π° Badoo, Π²Π΅Ρ‡Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ…ΠΌΠ΅ Π½Π° сайта. НовитС Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ΄Ρ€ΡƒΠΆΠ΅Π½ΠΈ ΠΎΡ‚ статии, ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‰ΠΈ ΡΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄ΠΈΡ‚Π΅. И така…

31 ΠΌΠ°ΠΉ Π½Π° конфСрСнцията RootConf 2016, ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°Ρ‰Π° сС ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ фСстивала β€žΠ ΡƒΡΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈβ€œ (РИВ++ 2016), сСкцията β€žΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉβ€œ бСшС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° с Π΄ΠΎΠΊΠ»Π°Π΄ β€žΠΠ°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° Continuous Delivery с Dockerβ€œ. Π’ Π½Π΅Π³ΠΎ бяха ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ ΠΈ систСматизирани Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° процСса Π½Π° Continuous Delivery (CD) с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Docker ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Open Source ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ. Π‘ Ρ‚Π΅Π·ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ Π² продукция, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ позволява Π΄Π° сС ΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ Π½Π° практичСски ΠΎΠΏΠΈΡ‚.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ДоставянС с Docker (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ)

Ако ΠΈΠΌΠ°Ρ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚Π΅ час Π½Π° Π²ΠΈΠ΄Π΅ΠΎΡ‚ΠΎ с Π΄ΠΎΠΊΠ»Π°Π΄Π°, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌΠ΅ Π΄Π° Π³ΠΎ Π³Π»Π΅Π΄Π°Ρ‚Π΅ изцяло. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай – ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ Π΅ прСдставСн основният Ρ€Π΅Π·ΡŽΠΌΠ΅ Π² тСкстов Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

Continuous Delivery с Docker

Под Continuous Delivery Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅ Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° ΠΎΡ‚ мСроприятия, Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° която ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎ достига продукция, Π° слСд Ρ‚ΠΎΠ²Π° ΠΏΠΎΠΏΠ°Π΄Π° Π² Π°Ρ€Ρ…ΠΈΠ². ИзглСТда Ρ‚Π°ΠΊΠ°: Git β†’ Build (сглобяванС) β†’ Test (тСстиранС) β†’ Release (Ρ€Π΅Π»ΠΈΠ·) β†’ Operate (послСдваща ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°).

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ДоставянС с Docker (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ)
По-голямата част ΠΎΡ‚ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π΅ посвСтСна Π½Π° Π΅Ρ‚Π°ΠΏΠ° build (сглобяванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ), Π° Ρ‚Π΅ΠΌΠΈΡ‚Π΅ release ΠΈ operate са засСгнати Π² ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ Π²ΠΈΠ΄. Π©Π΅ станС Π΄ΡƒΠΌΠ° Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ позволяват тяхното Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅, Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ шаблони ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ.

Π—Π°Ρ‰ΠΎ Ρ‚ΡƒΠΊ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Docker? НС просто Ρ‚Π°ΠΊΠ° Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Continuous Delivery Π² контСкста Π½Π° Ρ‚ΠΎΠ·ΠΈ Open Source инструмСнт. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ цСлият Π΄ΠΎΠΊΠ»Π°Π΄ Π΅ посвСтСн Π½Π° Π½Π΅Π³ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ сС Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π°Ρ‚ ΠΎΡ‰Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° основния шаблон Π·Π° внСдряванС Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ОсновСн шаблон Π·Π° внСдряванС

И Ρ‚Π°ΠΊΠ°, ΠΏΡ€ΠΈ внСдряванС Π½Π° Π½ΠΎΠ²ΠΈ вСрсии Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ сС сблъсквамС с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° простоя, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° продукционния ΡΡŠΡ€Π²ΡŠΡ€. Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ ΠΎΡ‚ старата вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ към Π½ΠΎΠ²Π°Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Ρ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ: ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ трябва Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π΅ само Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ пусната, Π½ΠΎ ΠΈ Π΅ "подгрята" (Ρ‚.Π΅. напълно Π³ΠΎΡ‚ΠΎΠ²Π° Π·Π° обслуТванС Π½Π° запитвания).

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ДоставянС с Docker (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ)
Π’Π°ΠΊΠ°, извСстно Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Π΄Π²Π΅Ρ‚Π΅ вСрсии Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (стара ΠΈ Π½ΠΎΠ²Π°) Ρ‰Π΅ работят Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠšΠΎΠ΅Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π½Π° ΠΎΠ±Ρ‰ΠΈ рСсурси: ΠΌΡ€Π΅ΠΆΠ°, Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, IPC ΠΈ Ρ‚.Π½. Π‘ Docker Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ лСсно сС Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°, ΠΊΠ°Ρ‚ΠΎ сС стартират Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π° изолация Π½Π° рСсурситС Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄ΠΈΠ½ хост (ΡΡŠΡ€Π²ΡŠΡ€/Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина). Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° някои Ρ…ΠΈΡ‚Ρ€ΠΈΠ½ΠΈ ΠΈ Π±Π΅Π· изолация, Π½ΠΎ Π°ΠΊΠΎ ΠΈΠΌΠ° Π³ΠΎΡ‚ΠΎΠ² ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ инструмСнт, Ρ‚ΠΎ ΠΈΠΌΠ° ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°Ρ€Π΅Π·ΠΎΠ½ β€” Π΄Π° Π½Π΅ сС ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π²Π°.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ прСдимства ΠΏΡ€ΠΈ дСплоя. Всяко ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ зависи ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° вСрсия (ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ вСрсии) ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ/Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ Ρ‚.Π½., ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ вСрсии. И Ρ‚ΠΎΠ²Π° Π²Π°ΠΆΠΈ Π½Π΅ само Π·Π° нСпосрСдствСната ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° срСда, Π½ΠΎ ΠΈ Π·Π° цялата ΠΎΠ±ΠΊΡ€ΡŠΠΆΠ°Π²Π°Ρ‰Π° срСда, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ систСмСн софтуСр ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ вСрсии (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎ използвания Linux-дистрибутив). Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π½Π΅ само ΠΊΠΎΠ΄Π° Π½Π° прилоТСнията, Π½ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ инсталиран систСмСн ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ софтуСр Π² Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ вСрсии, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π±Ρ€Π°Π²ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с зависимоститС.

ΠžΠ±ΠΎΠ±Ρ‰ΠΈΠΌ основния шаблон Π½Π° ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ вСрсии, Π²Π·Π΅ΠΌΠ°ΠΉΠΊΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ посочСнитС Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ:

  1. ΠŸΡŠΡ€Π²ΠΎ, старата вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² ΠΏΡŠΡ€Π²ΠΈΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
  2. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π½ΠΎΠ²Π°Ρ‚Π° вСрсия сС ΠΈΠ·Π΄Π°Π²Π° ΠΈ "загрява" във втория ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π—Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΅, Ρ‡Π΅ самата Π½ΠΎΠ²Π° вСрсия ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½Π΅ само ΠΎΠ±Π½ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π½ΠΎ ΠΈ всякакви Π½Π΅Π³ΠΎΠ²ΠΈ зависимости, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ систСмни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠ²Π° вСрсия Π½Π° OpenSSL ΠΈΠ»ΠΈ цСлия дистрибутив).
  3. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π΅ напълно Π³ΠΎΡ‚ΠΎΠ²Π° Π΄Π° обслуТва заявкитС, Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ сС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Ρ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° втория.
  4. Π‘Π΅Π³Π° старата вСрсия ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС спряна.

Вакъв ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΎΡ‰Π΅ Π΅Π΄Π½ΠΎ удобство β€” Π±ΡŠΡ€Π·ΠΎ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° старата вСрсия (всС ΠΏΠ°ΠΊ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° прСмСститС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° нуТния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€).

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ДоставянС с Docker (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ)
Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° ΠΏΡŠΡ€Π²Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠ° Π·Π²ΡƒΡ‡ΠΈ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π΄ΠΎΡ€ΠΈ ΠšΠ°ΠΏΠΈΡ‚Π°Π½ΡŠΡ‚ няма ΠΊΠ°ΠΊ Π΄Π° Π²ΡŠΠ·Ρ€Π°Π·ΠΈ: "[ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Continuous Delivery с Docker] Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Docker [ΠΈ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°]". ΠŸΠΎΠΌΠ½Π΅Ρ‚Π΅, Ρ‡Π΅ Π½Π΅ Π΅ "ΡΡ€Π΅Π±ΡŠΡ€Π½Π° ΠΊΡƒΡ€ΡˆΡƒΠΌΠΈΡ†Π°", която Ρ€Π΅ΡˆΠ°Π²Π° всякакви ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Π° инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΎΡ‚Π»ΠΈΡ‡Π½Π° основа.

Π’ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚

Под β€žΠ²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚β€œ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, с ΠΊΠΎΠΈΡ‚ΠΎ сС сблъсквамС ΠΏΡ€ΠΈ Сксплоатацията Π½Π° прилоТСния. Π‘Ρ‚Π°Π²Π° Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° Ρ‚Π°ΠΊΠΈΠ²Π° случаи:

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈ ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»Π° Π·Π° качСство Π½Π° staging, трябва Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π° сС Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ‚ Π² production.
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚Π° сС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ³Π»Π΅Π΄Π°Π»Π½ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Ρ‚Π΅ сС обновяват, Π° Π·Π°Π΅Π΄Π½ΠΎ с тях ΠΈ вСрсиитС Π½Π° инсталиранитС прилоТСния).
  • β€žΠŸΡ€ΠΈ ΠΌΠ΅Π½ Π»ΠΎΠΊΠ°Π»Π½ΠΎ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ!β€œ (… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π΅ са допуснати Π΄ΠΎ production.)
  • НСобходимо Π΅ Π΄Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ Π½Π΅Ρ‰ΠΎ Π² стара (Π°Ρ€Ρ…ΠΈΠ²Π½Π°) вСрсия.
  • …

ΠžΠ±Ρ‰Π°Ρ‚Π° ΠΈΠΌ ΡΡŠΡ‰Π½ΠΎΡΡ‚ сС свСТда Π΄ΠΎ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пълно ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ срСди (ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅ Π½Π° Ρ‡ΠΎΠ²Π΅ΡˆΠΊΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€). Как Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚? Π”Π° сС правят Docker-ΠΎΠ±Ρ€Π°Π·ΠΈ Π½Π° Π±Π°Π·Π° ΠΊΠΎΠ΄Π° ΠΎΡ‚ Git ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΊΠ°ΠΊΠ²ΠΈΡ‚ΠΎ ΠΈ Π΄Π° Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ: Π½Π° тСстови ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠΈ, Π² production, Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ машини Π½Π° програмисти… ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° дСйствията, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ слСд ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ€Π°Π·Π°: ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-просто β€” Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠ° вСроятност Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.

Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π΅ ΠΊΠΎΠ΄

Ако изискванията към инфраструктурата (Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ ПО, Π½Π΅Π³ΠΎΠ²ΠΈ вСрсии ΠΈ Ρ‚.Π½.) Π½Π΅ сС Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΈ Π½Π΅ β€žΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Ρ‚β€œ, всяко ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ с нСприятни послСдици. НапримСр, Π½Π° staging Π²Π΅Ρ‡Π΅ стС ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π»ΠΈ Π½Π° PHP 7.0 ΠΈ стС прСнаписали ΠΊΠΎΠ΄Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ β€” Ρ‚ΠΎΠ³Π°Π²Π° появата ΠΌΡƒ Π½Π° production с някаква стара вСрсия Π½Π° PHP (5.5) Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‰Π΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π° някого. ΠœΠ°ΠΊΠ°Ρ€ Π΄Π° Π½Π΅ трябва Π΄Π° забравятС Π·Π° голямото ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° вСрсията Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, β€žΠ΄ΡΠ²ΠΎΠ»ΡŠΡ‚ сС ΠΊΡ€ΠΈΠ΅ Π² Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅β€œ: ΠΈΠ·Π½Π΅Π½Π°Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΡ€ΠΈΠ΅ Π² ΠΌΠ°Π»ΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° всяка зависимост.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π΅ извСстСн ΠΊΠ°Ρ‚ΠΎ IaC (Infrastructure as Code, β€žΠΈΠ½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ΄β€œ) ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° изискванията към инфраструктурата Π·Π°Π΅Π΄Π½ΠΎ с ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π‘ Π½Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ DevOps спСциалиститС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° работят с Π΅Π΄ΠΈΠ½ Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π½ΠΎ Π½Π°Π΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈ части. ΠžΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π² Git сС създава Docker ΠΎΠ±Ρ€Π°Π·, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ с ΠΎΠ³Π»Π΅Π΄ Π½Π° цялата спСцифика Π½Π° инфраструктурата. По-просто ΠΊΠ°Π·Π°Π½ΠΎ, скриптовСтС (ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°) Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈ трябва Π΄Π° сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² Π΅Π΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с изходния ΠΊΠΎΠ΄ ΠΈ Π·Π°Π΅Π΄Π½ΠΎ Π΄Π° сС сливат.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ДоставянС с Docker (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ)

Π’ случай Π½Π° многостСпСнна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, nginx, ΠΊΠΎΠΉΡ‚ΠΎ стои ΠΏΡ€Π΅Π΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π²Π΅Ρ‡Π΅ стартирано Π² Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ β€” Docker ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ трябва Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π² Git Π·Π° всСки слой. Π’ΠΎΠ³Π°Π²Π° Π² ΠΏΡŠΡ€Π²ΠΈΡ ΠΎΠ±Ρ€Π°Π· Ρ‰Π΅ бъдС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ "блиТайши" зависимости, Π° във втория β€” ΠΏΠΎ-горният nginx.

Docker ΠΎΠ±Ρ€Π°Π·ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Git

Всички Docker ΠΎΠ±Ρ€Π°Π·ΠΈ, ΡΡŠΠ±Ρ€Π°Π½ΠΈ ΠΎΡ‚ Git, раздСлямС Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΈ Ρ€Π΅Π»ΠΈΠΉΠ·Π½ΠΈ. Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ сС Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ€Π°Ρ‚ ΠΏΠΎ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΠΎΠ½Π° Π² Git, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ прСзаписвани с всСки слСдващ ΠΊΠΎΠΌΠΈΡ‚ ΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ само Π·Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΡ€Π΅Π³Π»Π΅Π΄ (Π½Π΅ Π·Π° продукция). Π’ Ρ‚ΠΎΠ²Π° Π΅ основната ΠΈΠΌ Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Ρ€Π΅Π»ΠΈΠΉΠ·Π½ΠΈΡ‚Π΅: Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΊΠΎΠΌΠΈΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚.

Има смисъл Π΄Π° сС ΡΡŠΠ±ΠΈΡ€Π°Ρ‚ във Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ: ΠΊΠ»ΠΎΠ½Π° master (ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°, Π·Π° Π΄Π° сС Π²ΠΈΠΆΠ΄Π° постоянно Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° вСрсия Π½Π° master), ΠΊΠ»ΠΎΠ½ΠΈΡ‚Π΅ с Ρ€Π΅Π»ΠΈΠΉΠ·ΠΈ, ΠΊΠ»ΠΎΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ нововъвСдСния.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ДоставянС с Docker (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ)
Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ прСдваритСлният ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π·ΠΈ достигнС нСобходимостта ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄ Π² продукция, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ поставят ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚. На Π±Π°Π·Π°Ρ‚Π° Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС ΡΡŠΠ±ΠΈΡ€Π° Ρ€Π΅Π»ΠΈΠΉΠ·Π΅Π½ ΠΎΠ±Ρ€Π°Π· (Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΌΡƒ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ ΠΎΡ‚ Git) ΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π° staging. Π’ случай Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»Π° ΠΏΠΎ качСство, Ρ‚ΠΎΠΉ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² продукция.

dapp

Всичко описано (ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅, ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈ, послСдваща ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°) ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ самостоятСлно с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Bash скриптовС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ "ΠΏΠΎΠ΄Ρ€ΡŠΡ‡Π½ΠΈ" срСдства. Но Π°ΠΊΠΎ сС ΠΏΡ€Π°Π²ΠΈ Ρ‚Π°ΠΊΠ°, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ рСализацията Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ голяма слоТност ΠΈ лоша управляСмост. Π Π°Π·Π±ΠΈΡ€Π°ΠΉΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π½ΠΈΠ΅ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ своя спСциализирана Workflow ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° CI/CD β€” dapp.

НСин исходСн ΠΊΠΎΠ΄ Π΅ написан Π½Π° Ruby, Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π½Π° GitHub. Π—Π° съТалСниС, докумСнтацията Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ Π½Π°ΠΉ-слабата страна Π½Π° инструмСнта, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΠΎ нСя. И ΠΎΡ‰Π΅ нСвСднъТ Ρ‰Π΅ напишСм ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° dapp, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ искрСно Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ‡Π°ΠΊΠ°ΠΌΠ΅ Π΄Π° сподСлим Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ ΠΌΡƒ със заинтСрСсованото общСство, Π° засСга ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΉΡ‚Π΅ своитС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ pull requests ΠΈ/ΠΈΠ»ΠΈ слСдСтС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° GitHub.

ОбновСно Π½Π° 13 август 2019 Π³.: Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ dapp Π΅ ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ Π½Π° werf, нСговият ΠΊΠΎΠ΄ Π΅ изцяло прСписан Π½Π° Go, Π° докумСнтацията Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π°.

Kubernetes

Π”Ρ€ΡƒΠ³ Π³ΠΎΡ‚ΠΎΠ² инструмСнт с ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°Π½ΠΈΠ΅ Π² профСсионалната срСда, Π΅ Kubernetes, ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Docker. Π’Π΅ΠΌΠ°Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π² Сксплоатацията Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π½Π° Docker, Π½Π°Π΄Ρ…Π²ΡŠΡ€Π»Ρ ΠΊΡ€ΡŠΠ³Π° Π½Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π·Π°Ρ‚ΠΎΠ²Π° прСдставянСто Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π΄ΠΎ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° някои интСрСсни Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ.

Π—Π° пусканСто Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π°:

  • readiness probe β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° готовността Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (Π·Π° прСнасочванС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към нСя);
  • rolling update β€” послСдоватСлно ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Π·Π° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ (ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π·Π° пусканС, прСнасочванС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°);
  • synchronous update β€” ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Π·Π° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° с Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: ΠΏΡŠΡ€Π²ΠΎ Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, слСд Ρ‚ΠΎΠ²Π° Π½Π° останалитС;
  • canary releases β€” стартиранС Π½Π° Π½ΠΎΠ² ΠΎΠ±Ρ€Π°Π· Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ (малък) Π±Ρ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π·Π° наблюдСниС Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ.

Въй ΠΊΠ°Ρ‚ΠΎ Continuous Delivery Π½Π΅ Π΅ само освобоТдаванС Π½Π° Π½ΠΎΠ²Π° вСрсия, Π² Kubernetes ΠΈΠΌΠ° Ρ€Π΅Π΄ΠΈΡ†Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° послСдваща ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° инфраструктурата: Π²Π³Ρ€Π°Π΄Π΅Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠ²Π° систСма ΠΈ Π»ΠΎΠ³ΠΈΡ€Π°Π½Π΅ Π·Π° всички ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΈ Π΄Ρ€. Всичко Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ просто ΠΎΡ‡Π°ΠΊΠ²Π° ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ‚Π½ΠΎ внСдряванС Π² Π²Π°ΡˆΠΈΡ‚Π΅ процСси.

Π˜Ρ‚ΠΎΠ³ΠΎΠ²ΠΈ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ

  1. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Docker.
  2. Π‘ΡŠΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Docker ΠΎΠ±Ρ€Π°Π·ΠΈ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° всички Π½ΡƒΠΆΠ΄ΠΈ.
  3. Π‘Π»Π΅Π΄Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° "Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π΅ ΠΊΠΎΠ΄".
  4. Π‘Π²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ Git с Docker.
  5. Π Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ€Π΅Π΄Π° Π½Π° пусканС.
  6. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° (Kubernetes ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π°).

Π’ΠΈΠ΄Π΅ΠΎ ΠΈ слайдовС

Π’ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (ΠΎΠΊΠΎΠ»ΠΎ час) ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Π² YouTube (самото ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΎΡ‚ 5-Ρ‚Π° ΠΌΠΈΠ½ΡƒΡ‚Π° β€” ΠΏΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚).

ΠŸΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°:

P.S.

Π”Ρ€ΡƒΠ³ΠΈ излоТСния ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π° Π² нашия Π±Π»ΠΎΠ³:

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster