Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

8 Π°ΠΏΡ€ΠΈΠ» Π½Π° конфСрСнцията Saint HighLoad++ 2019, ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π»Π° β€žDevOps ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈβ€œ, бСшС изнСсСн Π΄ΠΎΠΊΠ»Π°Π΄ β€žΠ Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetesβ€œ, Π² ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ участваха Ρ‚Ρ€ΠΈΠΌΠ° слуТитСли Π½Π° компанията Flant. Π’ Π½Π΅Π³ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° мноТСство ситуации, Π² ΠΊΠΎΠΈΡ‚ΠΎ искахмС Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΠΌ ΠΈ допълним Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Kubernetes, Π½ΠΎ Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΈ просто Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ИмамС Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Open Source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΈ Ρ‚Π°Π·ΠΈ Ρ€Π΅Ρ‡ ΡΡŠΡ‰ΠΎ Π΅ посвСтСна Π½Π° тях.

По традиция ΠΈΠΌΠ°ΠΌΠ΅ удоволствиСто Π΄Π° Π²ΠΈ прСдставим Π²ΠΈΠ΄Π΅ΠΎ Π½Π° Ρ€Π΅ΠΏΠΎΡ€Ρ‚Π°ΠΆΠ° (50 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΡ‚ статията) ΠΈ основното Ρ€Π΅Π·ΡŽΠΌΠ΅ Π² тСкстова Ρ„ΠΎΡ€ΠΌΠ°. ΠžΡ‚ΠΈΠ²Π°ΠΌ!

Π―Π΄Ρ€ΠΎ ΠΈ допълнСния Π² K8s

Kubernetes промСня индустрията ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ към администриранСто, ΠΊΠΎΠΈΡ‚ΠΎ са установСни ΠΎΡ‚Π΄Π°Π²Π½Π°:

  • Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Π³ΠΎ абстракции, Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ настройка Π½Π° конфигурация ΠΈΠ»ΠΈ изпълнСниС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° (Chef, Ansible...), Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, услуги ΠΈ Ρ‚.Π½.
  • МоТСм Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΠΌ прилоТСния, Π±Π΅Π· Π΄Π° мислим Π·Π° Π½ΡŽΠ°Π½ΡΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ сайт, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС стартира: bare metal, ΠΎΠ±Π»Π°ΠΊ Π½Π° някой ΠΎΡ‚ доставчицитС ΠΈ Π΄Ρ€.
  • Π‘ K8s Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ стС Π±ΠΈΠ»ΠΈ ΠΏΠΎ-Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π²ΡŠΡ€Ρ…Ρƒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° инфраструктура: Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅, самолСчСниС, толСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π΄Ρ€.

Но, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ всичко Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π³Π»Π°Π΄ΠΊΠΎ: Kubernetes ΡΡŠΡ‰ΠΎ донСсС своитС Π½ΠΎΠ²ΠΈ прСдизвикатСлства.

Kubernetes Π½Π΅ Π΅ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° всички ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° всички ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. Π―Π΄Ρ€ΠΎΡ‚ΠΎ Kubernetes отговаря само Π·Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°Ρ‚ Π² всСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π―Π΄Ρ€ΠΎΡ‚ΠΎ Π½Π° Kubernetes Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° основСн Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ Π·Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ Ρ‚.Π½. Π“ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π·Π° тях ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΈ 2 Π³ΠΎΠ΄ΠΈΠ½ΠΈ.

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, K8s ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π·Π° затварянС Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ - спСцифичСн β€” потрСбитСлски Π½ΡƒΠΆΠ΄ΠΈ. Π”ΠΎΠ±Π°Π²ΠΊΠΈΡ‚Π΅ към Kubernetes са отговорност Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ администратори, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° инсталират ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π°Ρ‚ своя ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ β€žΠ² ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ°β€œ [Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ спСцифични ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ]. Π©ΠΎ Π·Π° допълнСния са Ρ‚ΠΎΠ²Π°? НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ някои ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ инсталирахмС Kubernetes, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π½Π΅Π½Π°Π΄Π°ΠΌΠ΅, Ρ‡Π΅ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, която Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° взаимодСйствиСто Π½Π° pods ΠΊΠ°ΠΊΡ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° възСл, Ρ‚Π°ΠΊΠ° ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ възли, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ сама ΠΏΠΎ сСбС си. Π―Π΄Ρ€ΠΎΡ‚ΠΎ Π½Π° Kubernetes Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ; вмСсто Ρ‚ΠΎΠ²Π° Ρ‚ΠΎ опрСдСля ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° интСрфСйс (CNI) Π·Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни. Врябва Π΄Π° инсталирамС Π΅Π΄Π½Π° ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, която Ρ‰Π΅ отговаря Π·Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π‘Π»ΠΈΠ·ΡŠΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ са Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ (Π»ΠΎΠΊΠ°Π»Π΅Π½ диск, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΎ устройство, Ceph...). ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Ρ‚Π΅ бяха Π² ядрото, Π½ΠΎ с появата CSI ситуацията сС промСня Π² Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Π²Π΅Ρ‡Π΅ описаното: ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡŠΡ‚ Π΅ Π² Kubernetes, Π° внСдряванСто ΠΌΡƒ Π΅ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни.

Π”Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚:

  • Π’Π»ΠΈΠ·Π°Π½Π΅-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ (Π²ΠΈΠΆΡ‚Π΅ ΠΏΡ€Π΅Π³Π»Π΅Π΄Π° ΠΈΠΌ Π² ΡΠΊΠΎΡ€ΠΎΡˆΠ½Π°Ρ‚Π° Π½ΠΈ статия).
  • CERT-ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€:

    Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

  • ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π΅ цял клас Π΄ΠΎΠ±Π°Π²ΠΊΠΈ (ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° спомСнатия cert-manager), Ρ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²(ΠΈ) ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€(ΠΈ). Π›ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° тяхната Ρ€Π°Π±ΠΎΡ‚Π° Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° само ΠΎΡ‚ Π½Π°ΡˆΠ΅Ρ‚ΠΎ Π²ΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½ΠΈ позволява Π΄Π° ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ΠΌ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ инфраструктурни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π‘Π£Π‘Π”) Π² ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ, с ΠΊΠΎΠΈΡ‚ΠΎ сС Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-лСсно (ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ с Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ настройки). Написани са ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ Π±Ρ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ - Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ тях всС ΠΎΡ‰Π΅ Π½Π΅ са Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° производство, Ρ‚ΠΎΠ²Π° Π΅ само Π²ΡŠΠΏΡ€ΠΎΡ Π½Π° Π²Ρ€Π΅ΠΌΠ΅:

    Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

  • ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ° - ΠΎΡ‰Π΅ Π΅Π΄Π½Π° ΠΈΠ»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Kubernetes Ρ€Π°Π·Π΄Π΅Π»ΠΈ интСрфСйса (API Π½Π° Metrics) ΠΎΡ‚ имплСмСнтацията (Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни ΠΊΠ°Ρ‚ΠΎ Prometheus adapter, Datadog cluster agent...).
  • Π—Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ статистика, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π½Π΅ само ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅ΠΉ ΠΈ Π“Ρ€Π°Ρ„Π°Π½Π°, Π½ΠΎ ΡΡŠΡ‰ΠΎ ΠΈ kube-state-metrics, node-exporter ΠΈ Π΄Ρ€.

И Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ пълСн списък с допълнСния... НапримСр във Ρ„ΠΈΡ€ΠΌΠ° Flant, която инсталирамС Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° 29 Π΄ΠΎΠ±Π°Π²ΠΊΠΈ (всички ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΎΠ±Ρ‰ΠΎ 249 Kubernetes ΠΎΠ±Π΅ΠΊΡ‚Π°). ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΆΠΈΠ²ΠΎΡ‚Π° Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π±Π΅Π· Π΄ΠΎΠ±Π°Π²ΠΊΠΈ.

Автоматизация

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ са ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, с ΠΊΠΎΠΈΡ‚ΠΎ сС сблъсквамС всСки Π΄Π΅Π½. Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΎΡ‚ рСалния ΠΆΠΈΠ²ΠΎΡ‚, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ писанСто Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

  1. Има частСн (Ρ‚.Π΅. изискващ Π²Π»ΠΈΠ·Π°Π½Π΅) Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ с изобраТСния Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ Π½Π° всяка капсула Π΅ присвоСна спСциална Ρ‚Π°ΠΉΠ½Π°, която позволява удостовСряванС Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π°. ΠΠ°ΡˆΠ°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ Ρ‚Π°ΠΉΠ½Π° сС Π½Π°ΠΌΠΈΡ€Π° Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° изтСглят изобраТСния. МоТС Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ прилоТСния (всяко ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ Ρ‚Π°ΠΉΠ½Π°) ΠΈ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ самитС Ρ‚Π°ΠΉΠ½ΠΈ Π΄Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ опцията Π·Π° Ρ€ΡŠΡ‡Π½ΠΎ ΠΈΠ·Π»Π°Π³Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈ сС Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°. Π’ΡƒΠΊ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ ΠΈΠ΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚: създавамС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·Ρ‡Π°ΠΊΠ° Π΄Π° сС появи пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ въз основа Π½Π° Ρ‚ΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈ Ρ‚Π°ΠΉΠ½Π° към пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°.
  2. НСка ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ ΠΎΡ‚ pods Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Π½. Но понякога ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ: Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ просто, Π±Π΅Π· Π΄Π° изисква спСцифични умСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Ρ€Π΅Π· Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. Как ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Ρ‚ΡƒΠΊ? Бъздава сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‡Π°ΠΊΠ° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ Π΄Π° сС появи Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° ΠΈ добавя подходящата ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.
  3. Подобна ситуация: Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π·Π°ΠΌΡŠΡ€ΡΡΠ²Π°Π½Π΅, Π°ΠΊΠΎ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ (с някакъв Π²ΠΈΠ΄ прСфикс). ДСйствията с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° са ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΈ...

Π’ΡŠΠ² всСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ трябва Π΄Π° сС Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° станС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ.

ΠžΠ±ΠΎΠ±Ρ‰Π°Π²Π°ΠΉΠΊΠΈ всички описани истории, стигнахмС Π΄ΠΎ ΠΈΠ·Π²ΠΎΠ΄Π°, Ρ‡Π΅ Π·Π° ΡƒΠ΄ΠΎΠ±Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Kubernetes, ΠΎΡ‚ която сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅: А) инсталирайтС Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, Π±) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ (Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΈ администраторски Π·Π°Π΄Π°Ρ‡ΠΈ).

Как да напиша изявлСниС за Kubernetes?

ΠšΠ°Ρ‚ΠΎ цяло схСмата Π΅ проста:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

... Π½ΠΎ Ρ‚ΠΎΠ³Π°Π²Π° сС ΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅:

  • Kubernetes API Π΅ доста Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° овладяванС;
  • ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΡΡŠΡ‰ΠΎ Π½Π΅ Π΅ Π·Π° всСки (Π΅Π·ΠΈΠΊΠ° Go бСшС ΠΈΠ·Π±Ρ€Π°Π½ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ Π΅Π·ΠΈΠΊ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ° спСциална Ρ€Π°ΠΌΠΊΠ° Π·Π° Π½Π΅Π³ΠΎ - ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SDK);
  • Подобна Π΅ ситуацията ΠΈ със самата Ρ€Π°ΠΌΠΊΠ°.

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка: Π΄Π° напиша ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€) трябва Ρ…Π°Ρ€Ρ‡Π°Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ рСсурси Π΄Π° ΠΈΠ·ΡƒΡ‡Π°Π²Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». Π’ΠΎΠ²Π° Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ Π·Π° β€žΠ³ΠΎΠ»Π΅ΠΌΠΈβ€œ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ - Π΄Π° Ρ€Π΅Ρ‡Π΅ΠΌ, Π·Π° Π‘Π£Π‘Π” MySQL. Но Π°ΠΊΠΎ си спомним ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅, описани ΠΏΠΎ-Π³ΠΎΡ€Π΅ (Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈ, Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ капсули Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚...), ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ‰ΠΎ искамС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, Ρ‡Π΅ ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°Π½ΠΈΡ‚Π΅ усилия Ρ‰Π΅ Π½Π°Π΄Π²ΠΈΡˆΠ°Ρ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ сСга:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

ΠšΠ°Ρ‚ΠΎ цяло възниква Π΄ΠΈΠ»Π΅ΠΌΠ°: ΠΏΠΎΡ…Π°Ρ€Ρ‡Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ рСсурси ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Ρ‚Π΅ правилния инструмСнт Π·Π° писанС Π½Π° ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈ ΠΈΠ»ΠΈ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ ΠΏΠΎ старомодния Π½Π°Ρ‡ΠΈΠ½ (Π½ΠΎ Π±ΡŠΡ€Π·ΠΎ). Π—Π° Π΄Π° Π³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ - Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ компромис ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π·ΠΈ крайности - ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ наш собствСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (Π²ΠΈΠΆΡ‚Π΅ ΡΡŠΡ‰ΠΎ нСговия ΡΠΊΠΎΡ€ΠΎΡˆΠ½ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π½Π° Ρ…ΡŠΠ±Π°).

Shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Как Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠΉ? ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ ΠΈΠΌΠ° ΠΏΠΎΠ΄, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ Go Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ» с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°. Π”ΠΎ Π½Π΅Π³ΠΎ ΠΈΠΌΠ° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈ (ΠΏΠΎΠ²Π΅Ρ‡Π΅ подробности Π·Π° тях - Π²ΠΈΠΆΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ). Бамият шСл-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сС Π°Π±ΠΎΠ½ΠΈΡ€Π° Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π² Kubernetes API, ΠΏΡ€ΠΈ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ стартира ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈ.

Как ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° Π·Π½Π°Π΅ ΠΊΠΎΠΈ ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠΎΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ? Π’Π°Π·ΠΈ информация сС ΠΏΡ€Π΅Π΄Π°Π²Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° Ρ‡Π΅Ρ€ΡƒΠΏΠΊΠ°Ρ‚Π° ΠΎΡ‚ самитС ΠΊΡƒΠΊΠΈ ΠΈ Ρ‚Π΅ Π³ΠΎ правят ΠΌΠ½ΠΎΠ³ΠΎ просто.

Π₯ΡƒΠΊ Π΅ Bash скрипт ΠΈΠ»ΠΈ всСки Π΄Ρ€ΡƒΠ³ изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π΅Π΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ --config ΠΈ отговаря с JSON. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ‚ опрСдСля ΠΊΠΎΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ прСдставляват интСрСс Π·Π° Π½Π΅Π³ΠΎ ΠΈ Π½Π° ΠΊΠΎΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ (Π·Π° Ρ‚Π΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ) трябва Π΄Π° сС ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π©Π΅ ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°ΠΌ имплСмСнтацията Π²ΡŠΡ€Ρ…Ρƒ shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ - Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ частСн Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ с изобраТСния Π½Π° прилоТСния. Π‘ΡŠΡΡ‚ΠΎΠΈ сС ΠΎΡ‚ Π΄Π²Π° Π΅Ρ‚Π°ΠΏΠ°.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅: 1. ΠΠ°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΡƒΠΊΠ°

На ΠΏΡŠΡ€Π²ΠΎ място, Π² ΠΊΡƒΠΊΠ°Ρ‚Π°, която Ρ‰Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ --config, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ сС интСрСсувамС ΠΎΡ‚ пространствата ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΏΠΎ-спСциално ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° тяхното създаванС:

[[ $1 == "--config" ]] ; then
  cat << EOF
{
  "onKubernetesEvent": [
    {
      "kind": "namespace",
      "event": ["add"]
    }
  ]
}
EOF
…

Как Π±ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Π»Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π°? Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° доста просто:

…
else
  createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
  kubectl create -n ${createdNamespace} -f - << EOF
Kind: Secret
...
EOF
fi

ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠΎΠ΅ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π΅ създадСно, Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Π΅ Π΄Π° Π³ΠΎ ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° kubectl Ρ‚Π°ΠΉΠ½Π° Π·Π° Ρ‚ΠΎΠ²Π° пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅: 2. БглобяванС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ остава, Π΅ Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΡ‚Π΅ ΡΡŠΠ·Π΄Π°Π΄Π΅Π½Π°Ρ‚Π° ΠΊΡƒΠΊΠ° Π½Π° shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° - ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°? Бамият shell-operator ΠΈΠ΄Π²Π° ΠΊΠ°Ρ‚ΠΎ Docker ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π°ΡˆΠ°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΡƒΠΊΠ°Ρ‚Π° към спСциална дирСктория Π² Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

FROM flant/shell-operator:v1.0.0-beta.1
ADD my-handler.sh /hooks

ΠžΡΡ‚Π°Π²Π° само Π΄Π° Π³ΠΎ сглобим ΠΈ Π±ΡƒΡ‚Π½Π΅ΠΌ:

$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1

ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ‚ Ρ‰Ρ€ΠΈΡ… Π΅ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Π½Π΅ΠΊΠ° напишСм внСдряванС:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-operator
spec:
  template:
    spec:
      containers:
      - name: my-operator
        image: registry.example.com/my-operator:v1 # 1
      serviceAccountName: my-operator              # 2

Има Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:

  1. индикация Π½Π° Π½ΠΎΠ²ΠΎΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅;
  2. Π’ΠΎΠ²Π° Π΅ систСмСн ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ (ΠΊΠ°Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ) сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ ΠΏΡ€Π°Π²Π°, Π·Π° Π΄Π° сС Π°Π±ΠΎΠ½ΠΈΡ€Π° Π·Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Kubernetes ΠΈ Π΄Π° разпрСдСля Ρ‚Π°ΠΉΠ½ΠΈ Π½Π° пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½ΠΈΠ΅ създавамС ServiceAccount (ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°) Π·Π° ΠΊΡƒΠΊΠ°Ρ‚Π°.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ - Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° си Ρ€ΠΎΠ΄Π½ΠΈΠ½ΠΈ Π·Π° Kubernetes ΠΏΠΎ Π½Π°Ρ‡ΠΈΠ½, ΠΊΠΎΠΉΡ‚ΠΎ създава ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° Ρ€Π°Π·Π»Π°Π³Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈ.

Π”Ρ€ΡƒΠ³ΠΈ характСристики Π½Π° shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π—Π° Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ избрания ΠΎΡ‚ вас Ρ‚ΠΈΠΏ, с ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΡƒΠΊΠ°Ρ‚Π° Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚, ΠΈΠ·Π±ΠΈΡ€Π°ΠΉΠΊΠΈ спорСд ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ (ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ matchExpressions):

"onKubernetesEvent": [
  {
    "selector": {
      "matchLabels": {
        "foo": "bar",
       },
       "matchExpressions": [
         {
           "key": "allow",
           "operation": "In",
           "values": ["wan", "warehouse"],
         },
       ],
     }
     …
  }
]

ΠŸΡ€ΠΈ условиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° дСдупликация, ΠΊΠΎΠΉΡ‚ΠΎ - с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° jq Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ - Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ JSON ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² ΠΌΠ°Π»ΠΊΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ остават само ΠΎΠ½Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ искамС Π΄Π° наблюдавамС Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

ΠšΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·Π²ΠΈΠΊΠ° ΠΊΡƒΠΊΠ°, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° я ΠΏΡ€Π΅Π΄Π°Π²Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° всякакви Π½ΡƒΠΆΠ΄ΠΈ.

Π‘ΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ задСйстват ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈ, Π½Π΅ са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π½Π° Kubernetes: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° осигурява ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΡƒΠΊΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° crontab Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Π½ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ спСциално ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ onStartup. Всички Ρ‚Π΅Π·ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΈ присвоСни Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° ΠΊΡƒΠΊΠ°.

И ΠΎΡ‰Π΅ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

  1. Π Π°Π±ΠΎΡ‚ΠΈ асинхронно. Въй ΠΊΠ°Ρ‚ΠΎ Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π½Π° Kubernetes (ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚), Π΄Ρ€ΡƒΠ³ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ (ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡŠΡ‰ΠΈΡ ΠΎΠ±Π΅ΠΊΡ‚) ΠΌΠΎΠΆΠ΅ Π΄Π° са възникнали Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ ΠΊΡƒΠΊΠΈΡ‚Π΅ трябва Π΄Π° ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Ρ‚ Ρ‚ΠΎΠ²Π°. Ако ΠΊΡƒΠΊΠ°Ρ‚Π° Π΅ Π±ΠΈΠ»Π° изпълнСна с Π³Ρ€Π΅ΡˆΠΊΠ°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ бъдС припомням си Π΄ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ (Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΎ).
  2. Изнася ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° Π·Π° Prometheus, с ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ броя Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π·Π° всяка ΠΊΡƒΠΊΠ° ΠΈ тСкущия Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°.

Π—Π° Π΄Π° ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ Ρ‚Π°Π·ΠΈ част ΠΎΡ‚ Π΄ΠΎΠΊΠ»Π°Π΄Π°:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ

Π—Π° ΡƒΠ΄ΠΎΠ±Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Kubernetes бСшС спомСната ΠΈ нСобходимостта ΠΎΡ‚ инсталиранС Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ. Π©Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° Π·Π° Ρ‚ΠΎΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° ΠΏΡŠΡ‚Ρ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° компания към Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ сСга.

Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Kubernetes с няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, СдинствСното допълнСниС към ΠΊΠΎΠΈΡ‚ΠΎ бСшС Ingress. Π’Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС инсталира ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ във всСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΈ Π½ΠΈΠ΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ няколко YAML ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди: Π³ΠΎΠ» ΠΌΠ΅Ρ‚Π°Π», AWS...

Въй ΠΊΠ°Ρ‚ΠΎ имашС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, имашС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ОсвСн Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ…ΠΌΠ΅ самитС Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚Π΅ станаха доста Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½ΠΈ:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π—Π° Π΄Π° ΠΏΠΎΠ΄Ρ€Π΅Π΄ΠΈΠΌ всичко, Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ със скрипт (install-ingress.sh), ΠΊΠΎΠΉΡ‚ΠΎ Π²Π·Π΅ ΠΊΠ°Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚ΠΈΠΏΠ° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, към ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ Π²Π½Π΅Π΄Ρ€ΠΈΠΌ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° конфигурация Π½Π° YAML ΠΈ я Π²Π½Π΅Π΄Ρ€ΠΈ Π² Kubernetes.

Накратко, ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΈΡΡ‚ Π½ΠΈ ΠΏΡŠΡ‚ ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ с Π½Π΅Π³ΠΎ Ρ€Π°Π·ΡΡŠΠΆΠ΄Π΅Π½ΠΈΡ бяха слСднитС:

  • Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с YAML ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ шаблонСн Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» (Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π΅Ρ‚Π°ΠΏΠΈ Ρ‚ΠΎΠ²Π° Π΅ просто sed);
  • с ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° броя Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ сС появи нСобходимостта ΠΎΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ (Π½Π°ΠΉ-Ρ€Π°Π½Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ бСшС Π΄Π° поставитС скрипта Π² Git, Π΄Π° Π³ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ с cron ΠΈ Π΄Π° Π³ΠΎ стартиратС);
  • ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ скрипт бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π·Π° Prometheus (install-prometheus.sh), Π½ΠΎ сС ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° с Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ изисква ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ тяхното ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ (Π² добрия смисъл - Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€), Π° някои Π΄Π°Π½Π½ΠΈ (ΠΏΠ°Ρ€ΠΎΠ»ΠΈ) ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ:

    Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

  • Ρ€ΠΈΡΠΊΡŠΡ‚ ΠΎΡ‚ внСдряванС Π½Π° Π½Π΅Ρ‰ΠΎ Π½Π΅Ρ€Π΅Π΄Π½ΠΎ към нарастващ Π±Ρ€ΠΎΠΉ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ Π½Π°Ρ€Π°ΡΡ‚Π²Π°ΡˆΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΎΡΡŠΠ·Π½Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ инсталаторитС (Ρ‚.Π΅. Π΄Π²Π° скрипта: Π·Π° Ingress ΠΈ Prometheus) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° бСшС Стапност (няколко ΠΊΠ»ΠΎΠ½Π° Π² Git, няколко crons Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅: стабилни ΠΈΠ»ΠΈ тСстови ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ);
  • с kubectl apply стана Ρ‚Ρ€ΡƒΠ΄Π΅Π½ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅ само Π΄Π° създава ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π½ΠΎ Π½Π΅ ΠΈ Π΄Π° Π²Π·Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° тСхния статус/Π΄Π° Π³ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°;
  • Липсваха Π½ΠΈ някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ бяхмС Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅:
    • пълСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°,
    • Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ опрСдСлянС Π½Π° някои ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ (Π²Ρ…ΠΎΠ΄ Π·Π° инсталационни скриптовС) въз основа Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° (ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅),
    • Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅.

ЦСлият Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½ ΠΎΠΏΠΈΡ‚ Π²Π½Π΅Π΄Ρ€ΠΈΡ…ΠΌΠ΅ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° другия Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ - addon-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

Addon-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π‘Π°Π·ΠΈΡ€Π°Π½ Π΅ Π½Π° Π²Π΅Ρ‡Π΅ спомСнатия shell-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Цялата систСма ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

Π‘Π»Π΅Π΄Π½ΠΎΡ‚ΠΎ сС добавя към ΠΊΡƒΠΊΠΈΡ‚Π΅ Π½Π° shell-operator:

  • ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° цСнности,
  • Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π½Π° ΠΊΠΎΡ€ΠΌΠΈΠ»ΠΎΡ‚ΠΎ,
  • ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ слСди ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° стойности ΠΈ - Π² случай Π½Π° някакви ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ - ΠΌΠΎΠ»ΠΈ Helm Π΄Π° ΠΏΡ€Π΅Π²ΡŠΡ€Ρ‚ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π°.

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π’Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°ΠΌΠ΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π² Kubernetes, Π΄Π° стартирамС ΠΊΡƒΠΊΠ° ΠΈ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ ΠΊΡƒΠΊΠ° Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° Ρ‰Π΅ бъдС ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ. Π’ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° раздСлямС Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈ ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° Π² Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ ΠΌΠΎΠ΄ΡƒΠ»:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

МоТС Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ към тях добавямС Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈ, Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° стойности ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ наблюдава Ρ‚ΠΎΠ²Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅Ρ‰ΠΎ сС случи Π² Kubernetes, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°ΠΌΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΊΡƒΠΊΠ° ΠΈ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ Π½Π΅Ρ‰ΠΎ Π² глобалния ΠΌΠ°Π³Π°Π·ΠΈΠ½. Π’Π°Π·ΠΈ промяна Ρ‰Π΅ бъдС забСлязана ΠΈ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ внСдряванС Π½Π° всички ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

Π’Π°Π·ΠΈ схСма отговаря Π½Π° всички изисквания Π·Π° инсталиранС Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, посочСни ΠΏΠΎ-Π³ΠΎΡ€Π΅:

  • Helm отговаря Π·Π° ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅ ΠΈ дСкларативността.
  • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ бСшС Ρ€Π΅ΡˆΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΊΡƒΠΊΠ°, която ΠΎΡ‚ΠΈΠ²Π° Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° ΠΏΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΈ, Π°ΠΊΠΎ Π²ΠΈΠ΄ΠΈ Π½ΠΎΠ²ΠΎ систСмно ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΌ, Π³ΠΎ пуска (Ρ‚.Π΅. β€žΡΠ°ΠΌΠΎ сСбС ΡΠΈβ€œ).
  • Π‘ΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° настройкитС Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ConfigMap, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΏΡŠΡ€Π²ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π·Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ‚Π° (ΠΏΡ€ΠΈ стартиранС Ρ‚Π΅ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ‚Π°).
  • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»Π°, ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΈ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎΡ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ бяха Ρ€Π΅ΡˆΠ΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΡƒΠΊΠΈ.
  • Π•Ρ‚Π°ΠΏΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ сС постига Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π°Π³ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Docker ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΎΡ‚ кутията.
  • Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ сС слСди с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ.

Цялата Ρ‚Π°Π·ΠΈ систСма Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ» Π² Go, ΠΊΠΎΠΉΡ‚ΠΎ сС Π½Π°Ρ€ΠΈΡ‡Π° addon-operator. Π’ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎ-проста:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈ допълванС Π½Π° Kubernetes (ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Ρ‚Π°Π·ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ Π² сиво ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ). Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° напишСм ΠΌΠΎΠ΄ΡƒΠ» Π·Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° Π΄ΠΎΠ±Π°Π²ΠΊΠ° с ΠΌΠ°Π»ΠΊΠΎ усилия ΠΈ Π΄Π° смС сигурни, Ρ‡Π΅ Ρ‚ΠΎΠΉ Ρ‰Π΅ бъдС инсталиран във всСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Ρ‰Π΅ сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈ Ρ‰Π΅ отговаря Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° Π½ΡƒΠΆΠ΄Π° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

"Flant" ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° addon-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° 70+ Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Актуално ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ - Π°Π»Ρ„Π° вСрсия. Π‘Π΅Π³Π° подготвямС докумСнтация Π·Π° пусканС Π½Π° Π±Π΅Ρ‚Π° вСрсията, Π½ΠΎ засСга Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ, въз основа Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ свой собствСн Π°Π΄ΠΎΠ½.

КъдС ΠΌΠΎΠ³Π° Π΄Π° Π²Π·Π΅ΠΌΠ° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Π·Π° addon-operator? Π˜Π·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΅ слСдващият Π΅Ρ‚Π°ΠΏ Π·Π° нас, ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€Π΅Π· лятото.

Π’ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠΎΠ²Π΅ ΠΈ слайдовС

Π’ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚ прСдставлСниСто (~50 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ):

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°:

PS

Π”Ρ€ΡƒΠ³ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π² нашия Π±Π»ΠΎΠ³:

МоТС Π΄Π° сС интСрСсуватС ΠΈ ΠΎΡ‚ слСднитС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€