ΠΠ°ΡˆΠ°Ρ‚Π° рСализация Π½Π° Continuous Deployment Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Π’ True Engineering ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ процСс Π½Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° доставка Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ искамС Π΄Π° сподСлим Ρ‚ΠΎΠ·ΠΈ ΠΎΠΏΠΈΡ‚.

ΠŸΡŠΡ€Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…ΠΌΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ систСма Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ я Π²Π½Π΅Π΄Ρ€ΠΈΡ…ΠΌΠ΅ Π² собствСн ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Kubernetes. Π‘Π΅Π³Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с висока натоварСност сС прСмСсти Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π·Π° ΠΊΠΎΠ΅Ρ‚ΠΎ настройвахмС напълно Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ процСс Π½Π° Continuous Deployment. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π°, ускорихмС Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° пусканС Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π½Π° ΠΏΠ°Π·Π°Ρ€Π°.

Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° всички Π΅Ρ‚Π°ΠΏΠΈ Π½Π° процСса Π½Π° Continuous Deployment (CD) ΠΈΠ»ΠΈ доставката Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°:

  1. ΠΊΠ°ΠΊ стартира Ρ‚ΠΎΠ·ΠΈ процСс,
  2. синхронизация с Git-рСпозитория Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°,
  3. сглобяванС Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°,
  4. Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ внСдряванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² тСстова срСда,
  5. Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ внСдряванС Π½Π° Prod.

Π’ процСса Ρ‰Π΅ сподСлим Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ Π·Π° настройкитС.

ΠΠ°ΡˆΠ°Ρ‚Π° рСализация Π½Π° Continuous Deployment Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

1. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° CD

Continuous Deployment Π·Π°ΠΏΠΎΡ‡Π²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ ΠΊΠ°Ρ‡Π²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ€Π΅Π»ΠΈΠ·Π½Π°Ρ‚Π° ΠΊΠ»ΠΎΠ½ΠΊΠ° Π½Π° нашия Git-рСпозитория.

ΠΠ°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° микросСрвисна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ всички Π½Π΅Π³ΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π΅Π΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° сС сглобяват ΠΈ инсталират всички микросСрвиси, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ тях.

ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π»ΠΈ смС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Ρ‡Ρ€Π΅Π· Π΅Π΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎ няколко ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ:

  • Удобство Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° β€” ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС Ρ€Π°Π·Π²ΠΈΠ²Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²Π΅Π΄Π½Π°Π³Π° с цСлия ΠΊΠΎΠ΄.
  • Π•Π΄ΠΈΠ½Π΅Π½ CI/CD ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΠΊΠΎΠΉΡ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½Π½Π° систСма ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° всички тСстовС ΠΈ сС доставя Π² prod-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
  • Π˜ΡΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ ΠΎΠ±ΡŠΡ€ΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ с вСрсиитС β€” Π½Π΅ сС Π½Π°Π»Π°Π³Π° Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠ°Ρ€Ρ‚Π° Π½Π° вСрсиитС Π½Π° микросСрвизитС ΠΈ Π΄Π° описвамС Π·Π° всСки микросСрвиз своята конфигурация Π² Helm скриптовС.

2. Бинхронизация с Git-рСпозитория Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

НаправСнитС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС синхронизират с Git-рСпозитория Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’Π°ΠΌ Π΅ настроСна сборка Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, която сС стартира слСд актуализация Π½Π° ΠΊΠ»ΠΎΠ½ΠΊΠ°Ρ‚Π°, ΠΈ внСдряванС Π² ΠΏΡ€ΠΎΠ΄. И Π΄Π²Π°Ρ‚Π° процСса сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π² тяхната срСда ΠΎΡ‚ Git-рСпозитория.

НС ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½ΠΈ трябват собствСни срСди Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ тСстванС. ИзползвамС нашия Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π·Π° Ρ‚Π΅Π·ΠΈ Ρ†Π΅Π»ΠΈ - Ρ‚ΠΎΠΉ Π΅ синхронизиран с тСхния Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π’Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ Π½Π° нашия Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, GitLab Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ΠΠ°ΡˆΠ°Ρ‚Π° рСализация Π½Π° Continuous Deployment Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ сборка. Вя сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ няколко Π΅Ρ‚Π°ΠΏΠ°: сборка Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°, тСстванС ΠΈ доставка Π² продукция.

3. Π‘Π±ΠΎΡ€ΠΊΠ° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°

Π‘Π±ΠΎΡ€ΠΊΠ°Ρ‚Π° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π΅ Π΄Π²Π΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² систСмата GitLab Runner. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° сборка сС Π½Π°ΠΌΠΈΡ€Π° Π² ΡΡŠΡ‰ΠΈΡ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° написванС Π½Π° YAML скрипт Π·Π° сборка Π² GitLab.

GitLab Runner Π²Π·Π΅ΠΌΠ° ΠΊΠΎΠ΄Π° ΠΎΡ‚ нуТния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Java ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π² Docker registry. Π’ΡƒΠΊ ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Docker ΠΎΠ±Ρ€Π°Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π² рСпозитория Π½Π° страната Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π—Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Docker ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ плъгина Gradle.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ вСрсиитС Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π·ΠΈ с вСрсията Π½Π° Ρ€Π΅Π»ΠΈΠ·Π°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π² Docker. Π—Π° Π³Π»Π°Π΄ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π° смС Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ няколко настройки:

1. ΠœΠ΅ΠΆΠ΄Ρƒ тСстовата срСда ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π΅ сС ΠΏΡ€Π΅ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚. НаправихмС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· ΠΏΡ€Π΅ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅ с всички настройки, ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ срСди ΠΈ услуги ΠΊΠ°ΠΊΡ‚ΠΎ Π² тСстова срСда, Ρ‚Π°ΠΊΠ° ΠΈ Π² продукция.

2. Π—Π° актуализация Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‡Ρ€Π΅Π· Helm Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° вСрсия. Π‘Π±ΠΎΡ€ΠΊΠ°Ρ‚Π° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π°, Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΈ актуализацията Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ – Ρ‚ΠΎΠ²Π° са Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Π·Π° Ρ‚ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ навсякъдС Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π—Π° Ρ‚Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ историята Π½Π° Git, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ конфигурацията Π½Π° K8S ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ВСрсията Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°
git describe --tags --abbrev=7.

4. Автоматично Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² тСстовата срСда (UAT)

БлСдващият Π΅Ρ‚Π°ΠΏ Π² Ρ‚ΠΎΠ·ΠΈ скрипт Π·Π° сборка Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° K8S ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π’ΠΎΠ²Π° сС случва ΠΏΡ€ΠΈ условиС, Ρ‡Π΅ всичкитС прилоТСния са Π±ΠΈΠ»ΠΈ ΡΡŠΠ±Ρ€Π°Π½ΠΈ ΠΈ всички Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ са ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ Π² Docker Registry. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС стартира ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° тСстовата срСда.

ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° сС стартира с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Helm Актуализация. Ако Π½Π΅Ρ‰ΠΎ сС ΠΎΠ±ΡŠΡ€ΠΊΠ°, Helm Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈ самостоятСлно Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ всички свои ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ. Няма Π½ΡƒΠΆΠ΄Π° Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΌΡƒ.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ конфигурацията Π½Π° K8S кластСра Π·Π°Π΅Π΄Π½ΠΎ със сборката. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ слСдващата ΡΡ‚ΡŠΠΏΠΊΠ° Π΅ Π΄Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°: configMaps, deployments, services, secrets ΠΈ всякакви Π΄Ρ€ΡƒΠ³ΠΈ K8S ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ смС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Helm стартира RollOut актуализацията Π½Π° самото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² тСстова срСда. ΠŸΡ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° бъдС Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ Π² продукция. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° провСрят бизнСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ смС пуснали Π² тСстовата срСда.

5. Автоматично Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Prod

Π—Π° Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ актуализация Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½Π° срСда, остава само Π΄Π° натиснСтС Π΅Π΄ΠΈΠ½ Π±ΡƒΡ‚ΠΎΠ½ Π² GitLab β€” ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° сС доставят Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° срСда.

Π‘ΡŠΡ‰ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди β€” тСстова ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½Π° β€” Π±Π΅Π· нСобходимост ΠΎΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° компилация. ИзползвамС ΡΡŠΡ‰ΠΈΡ‚Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ, Π±Π΅Π· Π΄Π° промСнямС Π½ΠΈΡ‰ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ опрСдСлямС ΠΎΡ‚Π²ΡŠΠ½.

Π“ΡŠΠ²ΠΊΠ°Π²Π°Ρ‚Π° парамСтризация Π½Π° настройкитС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ зависи ΠΎΡ‚ срСдата, Π² която Ρ‰Π΅ сС изпълнява. Π˜Π·Π½Π΅ΡΠΎΡ…ΠΌΠ΅ всички настройки Π½Π° срСдитС навън: всичко сС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€Π° Ρ‡Ρ€Π΅Π· K8S конфигурация ΠΈ Helm ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. ΠšΠΎΠ³Π°Ρ‚ΠΎ Helm Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π° сборка Π² тСстова срСда, ΠΏΡ€ΠΈΠ»Π°Π³Π° тСстови ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, Π° Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° срСда β€” ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ.

Най-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡ‚ΠΎ бСшС Π΄Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° всички услуги ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, зависСщи ΠΎΡ‚ срСдата, ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π²Π΅Π΄Π΅ΠΌ Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата ΠΈ описаниС-конфигурация Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° срСдата Π·Π° Helm.

Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата. Π˜Ρ… значСния сС Π·Π°Π΄Π°Π²Π°Ρ‚ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· K8S configmap, ΠΊΠΎΠΉΡ‚ΠΎ сС ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·ΠΈΡ€Π° Ρ‡Ρ€Π΅Π· Go шаблони. НапримСр, Π·Π°Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата Π·Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ ΠΌΠΎΠΆΠ΅ Π΄Π° станС Ρ‚Π°ΠΊΠ°:

APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}

.Values.global.env – Π² Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° срСдата (prod, stage, UAT).
.Values.app.properties.app_external_domain – Π² Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ искания Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π² Ρ„Π°ΠΉΠ»Π° .Values.yaml

ΠŸΡ€ΠΈ обновяванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Helm ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° създаванС ΠΎΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅ Π½Π° Ρ„Π°ΠΉΠ»Π° configmap.yaml ΠΈ попълва стойността Π½Π° APP_EXTERNAL_DOMAIN с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° стойност Π² зависимост ΠΎΡ‚ срСдата, Π² която стартира ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’Π°Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° сС Π·Π°Π΄Π°Π²Π° Π²Π΅Ρ‡Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π”ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ Π΄ΠΎ нСя Π΅ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, слСдоватСлно, Π² всяка срСда Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° стойност Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°.

ΠžΡ‚Π½ΠΎΡΠ½ΠΎ Π½Π΅ΠΎΡ‚Π΄Π°Π²Π½Π°ΡˆΠ½ΠΎΡ‚ΠΎ Π² Spring Cloud сС появи ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° K8S, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с configMaps: Spring Cloud Kubernetes. Π”ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΈ ΠΊΠΎΡ€Π΅Π½Π½ΠΎ сС промСня, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² продукция. Но Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ слСдим ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² DEV ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π’Π΅Π΄Π½ΡŠΠΆ Ρ‰ΠΎΠΌ стабилизира β€” Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата към Π½Π΅Π³ΠΎ.

ΠžΠ±Ρ‰ΠΎ

И Ρ‚Π°ΠΊΠ°, Continuous Deployment Π΅ настроСн ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ. Всички обновлСния сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ с натисканС Π½Π° Π΅Π΄ΠΈΠ½ Π±ΡƒΡ‚ΠΎΠ½. Доставката Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° срСда Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π°. И, Π²Π°ΠΆΠ½ΠΎ Π΅, обновлСнията Π½Π΅ спират Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмата.

ΠΠ°ΡˆΠ°Ρ‚Π° рСализация Π½Π° Continuous Deployment Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ПлановС Π·Π° Π±ΡŠΠ΄Π΅Ρ‰Π΅Ρ‚ΠΎ: Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° миграция Π½Π° Π±Π°Π·Π°Ρ‚Π°

ΠŸΠΎΠΌΠΈΡΠ»ΠΈΡ…ΠΌΠ΅ Π·Π° Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄ Π½Π° Π±Π°Π·Π°Ρ‚Π° ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΈ. ВсС ΠΏΠ°ΠΊ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ работят Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ: старата Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π° Π½ΠΎΠ²Π°Ρ‚Π° сС загрява. И старата Ρ‰Π΅ спрСм само ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия β€” Ρ€Π°Π±ΠΎΡ‚ΠΈ. ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° трябва Π΄Π° позволява Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π²Π΅Ρ‚Π΅ вСрсии Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π—Π°Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ просто Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ. Но ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° създадСм Π½ΠΎΠ²Π° ΠΊΠΎΠ»ΠΎΠ½Π°, Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ Π² нСя Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ старата ΠΊΠΎΠ»ΠΎΠ½Π° ΠΈ Π΄Π° напишСм Ρ‚Ρ€ΠΈΠ³Π΅Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈ обновяванС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Ρ‰Π΅ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ ΠΈ обновяват тях Π² Π΄Ρ€ΡƒΠ³Π° ΠΊΠΎΠ»ΠΎΠ½Π°. И слСд ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡ‚ΠΎ внСдряванС Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, слСд изминалия ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° слСд стартиранС, Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ старата ΠΊΠΎΠ»ΠΎΠ½Π° ΠΈ нСнуТния Ρ‚Ρ€ΠΈΠ³Π΅Ρ€.

Ако Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° вСрсия, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° вСрсия Π½Π° Π±Π°Π·Π°Ρ‚Π°. Π‘ Π΅Π΄Π½Π° Π΄ΡƒΠΌΠ°, Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Ρ‰Π΅ позволят Ρ€Π°Π±ΠΎΡ‚Π° с няколко вСрсии Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

ΠŸΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ автоматизация Π½Π° миграцията Π½Π° Π±Π°Π·Π°Ρ‚Π° Ρ‡Ρ€Π΅Π· K8S Ρ€Π°Π±ΠΎΡ‚Π°, Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π² процСса Π½Π° CD. И Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‰Π΅ сподСлим ΠΎΠΏΠΈΡ‚Π° си Π½Π° Π₯Π°Π±Ρ€Π°.

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

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