Production-ready images for k8s

Π­Ρ‚Π° история ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ срСдС, Π² особСнности ΠΏΠΎΠ΄ Kubernetes. Π‘Ρ‚Π°Ρ‚ΡŒΡ посвящСна сбору ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΈ Π»ΠΎΠ³ΠΎΠ² с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΈΠ»Π΄Ρƒ ΠΎΠ±Ρ€Π°Π·ΠΎΠ².

Production-ready images for k8s

ΠœΡ‹ ΠΈΠ· Ρ„ΠΈΠ½Ρ‚Π΅Ρ…-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Exness, которая занимаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ сСрвисов для ΠΎΠ½Π»Π°ΠΉΠ½-Ρ‚Ρ€Π΅ΠΉΠ΄ΠΈΠ½Π³Π° ΠΈ Ρ„ΠΈΠ½Ρ‚Π΅Ρ…-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² для B2B ΠΈ Π’2Π‘. Π’ нашСм R&D ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, Π² ΠΎΡ‚Π΄Π΅Π»Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 100 + сотрудников.

ΠœΡ‹ прСдставляСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для сбора ΠΈ запуска ΠΊΠΎΠ΄Π° нашими Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Π’ частности, ΠΌΡ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅ΠΌ Π·Π° сбор, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ прСдоставлСниС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Π»ΠΎΠ³ΠΎΠ², ΠΈ событий ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ настоящСС врСмя ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ трСмя тысячами Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ срСдС, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ нашС big data-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° 50 Π’Π± ΠΈ прСдоставляСм Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ строятся Π²ΠΎΠΊΡ€ΡƒΠ³ нашСй инфраструктуры: Kubernetes, Rancher ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ cloud-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹.Β 

Наша мотивация

Π§Ρ‚ΠΎ Π³ΠΎΡ€ΠΈΡ‚? Никто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ.Β  Π“Π΄Π΅ ΠΎΡ‡Π°Π³? ΠŸΠΎΠ½ΡΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Когда Π·Π°Π³ΠΎΡ€Π΅Π»ΠΎΡΡŒ? Π’Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½Π΅ сразу.Β 

Production-ready images for k8s

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ стоят, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠΏΠ°Π»ΠΈ? Какой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ стал Ρ‚ΠΎΠΌΡƒ Π²ΠΈΠ½ΠΎΠΉ? Π’Π΅Π΄ΡŒ снаруТи ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свой Neo.

Production-ready images for k8s

Наши Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ β€” Π³Ρ€Π°ΠΌΠΎΡ‚Π½Ρ‹Π΅ рСбята. Они Π΄Π΅Π»Π°ΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приносят ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ. Но Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ„Π°ΠΊΠ°ΠΏΡ‹, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ с прилоТСниями ΠΈΠ΄ΡƒΡ‚ Π²Ρ€Π°Π·Π±Ρ€ΠΎΠ΄. Один ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ потрСбляСт слишком ΠΌΠ½ΠΎΠ³ΠΎ CPU, Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” ΡΠ΅Ρ‚ΡŒ, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ β€” ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ нСпонятно, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ с сокСтами. Всё это ΠΏΠ°Π΄Π°Π΅Ρ‚, ΠΈ ΠΊΠΎΡ€Π°Π±Π»ΡŒ Ρ‚ΠΎΠ½Π΅Ρ‚.Β 

АгСнты

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π°Π³Π΅Π½Ρ‚ΠΎΠ² прямо Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

Production-ready images for k8s

Π­Ρ‚ΠΈ Π°Π³Π΅Π½Ρ‚Ρ‹ β€” ΡΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠΌ состоянии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ сломали Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. АгСнты стандартизированы, ΠΈ это позволяСт ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².Β 

Π’ нашСм случаС Π°Π³Π΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ Π² стандартном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ с Ρ‚Ρ€ΠΎΡ‚Π»ΠΈΠ½Π³ΠΎΠΌ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π°ΠΌ стандартизированныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бизнСс-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Под Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для эксплуатации ΠΈ обслуТивания, ΡƒΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΒ  Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах оркСстрирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Π΅ images (Debian, Alpine, Centos ΠΈ Ρ‚. Π΄.).

НаконСц, Π°Π³Π΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ простой CI/CD, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя Docker-Ρ„Π°ΠΉΠ»Ρ‹. Π˜Π½Π°Ρ‡Π΅ ΠΊΠΎΡ€Π°Π±Π»ΡŒ развалится, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎ Β«ΠΊΡ€ΠΈΠ²Ρ‹ΠΌΒ» Ρ€Π΅Π»ΡŒΡΠ°ΠΌ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ сборки ΠΈ устройство Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ image

Π§Ρ‚ΠΎΠ±Ρ‹ всё Π±Ρ‹Π»ΠΎ стандартизировано ΠΈ управляСмо, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ стандартного процСсса сборки. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ β€” такая Π²ΠΎΡ‚ рСкурсия.

Production-ready images for k8s

Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ прСдставлСны ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌΠΈ. Π—Π°ΠΎΠ΄Π½ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² Π½ΠΈΡ… дистрибутивы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ «Тизнь ΠΌΠ°Π»ΠΈΠ½ΠΎΠΉ Π½Π΅ казалась». Π—Π°Ρ‡Π΅ΠΌ это Π±Ρ‹Π»ΠΎ сдСлано, ΠΌΡ‹ расскаТСм Π½ΠΈΠΆΠ΅.
Β 
Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получился инструмСнт для сборки β€” ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ вСрсии дистрибутивов ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ вСрсии скриптов.

Как ΠΌΡ‹ Π΅Π³ΠΎ примСняСм? Π£ нас Π΅ΡΡ‚ΡŒ Docker Hub, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»Π΅ΠΆΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠœΡ‹ Π·Π΅Ρ€ΠΊΠ°Π»ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΡŒ своСй систСмы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΆΡ‘Π»Ρ‚Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. ΠœΡ‹ создаём шаблон, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ дистрибутивы ΠΈ скрипты. ПослС этого ΠΌΡ‹ собираСм Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ эксплуатации ΠΎΠ±Ρ€Π°Π·: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠ»Π°Π΄ΡƒΡ‚ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ свои особыС зависимости.Β 

Π§Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?Β 

  • Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΠ»Π½Ρ‹ΠΉ вСрсионный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΒ  инструмСнтов сборки – ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ сборки, вСрсии скриптов ΠΈ дистрибутивов.Β 
  • Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΡ‹ добились стандартизации: ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ создаём ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊ эксплуатации image.Β 
  • Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π°ΠΌ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. БСгодня ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Gitlab, Π° Π·Π°Π²Ρ‚Ρ€Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π½Π° TeamCity ΠΈΠ»ΠΈ Jenkins ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ смоТСм Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ наши ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.Β 
  • Π’-Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹Ρ…, минимизация зависимостСй. ΠœΡ‹ нСслучайно ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ дистрибутивы, вСдь это позволяСт Π½Π΅ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.Β 
  • Π’-пятых, ΠΏΠΎΠ²Ρ‹ΡΠΈΠ»Π°ΡΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сборки – Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° скачиваниС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·.Β 

Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΌΡ‹ добились ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ процСсса сборки. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ срСдства для сборки Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с ΠΏΠΎΠ»Π½Ρ‹ΠΌ вСрсионированиСм.Β 

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ наша ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° сборки

Production-ready images for k8s

Π‘Π±ΠΎΡ€ΠΊΠ° запускаСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, процСсс выполняСтся Π² ΠΎΠ±Ρ€Π°Π·Π΅ (Π²Ρ‹Π΄Π΅Π»Π΅Π½ красным). Π£ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΅ΡΡ‚ΡŒ Docker-Ρ„Π°ΠΉΠ» (Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΆΡ‘Π»Ρ‚Ρ‹ΠΌ), ΠΌΡ‹ Π΅Π³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠΌ, подмСняя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ значСниями. И ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ добавляСм  header’ы ΠΈ footer’ы β€” это наши Π°Π³Π΅Π½Ρ‚Ρ‹.Β 

Header добавляСт дистрибутивы ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ². А footer устанавливаСт Π²Π½ΡƒΡ‚Ρ€ΡŒ наши сСрвисы, настраиваСт запуск Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, логирования ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π°Π³Π΅Π½Ρ‚ΠΎΠ², подмСняСт entrypoint ΠΈ Ρ‚.Π΄.Β 

Production-ready images for k8s

ΠœΡ‹ Π΄ΠΎΠ»Π³ΠΎ Π΄ΡƒΠΌΠ°Π»ΠΈ, ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»ΠΈ супСрвизор. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½. Π’Ρ‹Π±Ρ€Π°Π»ΠΈ S6. Π‘ΡƒΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ обСспСчиваСт ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ: позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ Π² случаС падСния основного процСсса ΠΈ обСспСчиваСт Ρ€ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Π±Π΅Π· Π΅Π³ΠΎ пСрСсоздания. Π›ΠΎΠ³ΠΈ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ β€” это процСссы, исполняСмыС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π˜Ρ… Ρ‚ΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ супСрвизора. НаконСц, S6 Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° сСбя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ housekeeping, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сигналов ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ систСмы оркСстрации, послС сборки ΠΈ запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ срСдС ΠΎΠ½ находится, ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ситуации. НапримСр:
Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ€Π°Π· ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах оркСстрации, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ спСцифики этой систСмы оркСстрации.

Β Production-ready images for k8s

Для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ процСссныС Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π² Docker ΠΈ Kubernetes:

Production-ready images for k8s

ПолСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° исполняСтся ΠΏΠΎΠ΄ супСрвизором S6. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° collector ΠΈ events β€” это наши Π°Π³Π΅Π½Ρ‚Ρ‹, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° Π»ΠΎΠ³ΠΈ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ. Π’ Kubernetes ΠΈΡ… Π½Π΅Ρ‚, Π° Π² Docker Π΅ΡΡ‚ΡŒ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ?Β 

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Β«ΠΏΠΎΠ΄Π°Β» (здСсь ΠΈ Π΄Π°Π»Π΅Π΅ – Kubernetes pod), Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎΒ  ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ events исполняСтся Π² ΠΏΠΎΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ collector, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сбора ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΈ Π»ΠΎΠ³ΠΎΠ². ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ возмоТности Kubernetes: запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ΄Π΅, Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ процСссном ΠΈ/ΠΈΠ»ΠΈ сСтСвом пространствах. ЀактичСски Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ своих Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. И Ссли этот ΠΆΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ запустится Π² Docker, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ всС Ρ‚Π΅ ΠΆΠ΅ самыС возмоТности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ смоТСт Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Π³Π΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ.Β 

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΈ Π»ΠΎΠ³ΠΈ

Доставка ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΈ Π»ΠΎΠ³ΠΎΠ² β€” слоТная Π·Π°Π΄Π°Ρ‡Π°. Π‘ Π΅Ρ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ связано нСсколько аспСктов.
Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° создаётся для исполнСния ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π° Π½Π΅ массовой доставки Π»ΠΎΠ³ΠΎΠ². Π’ΠΎ Π΅ΡΡ‚ΡŒ этот процСсс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ трСбованиями ΠΊ рСсурсам ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². ΠœΡ‹ стрСмимся ΠΏΠΎΠΌΠΎΡ‡ΡŒ нашим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ: Β«Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Docker Hub, запуститС, ΠΈ ΠΌΡ‹ смоТСм Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΒ».Β 

Π’Ρ‚ΠΎΡ€ΠΎΠΉ аспСкт β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ объСма Π»ΠΎΠ³ΠΎΠ². Если Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация всплСска объСма Π»ΠΎΠ³ΠΎΠ² (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ stack-trace), возрастаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° CPU, ΠΊΠ°Π½Π°Π»Ρ‹ связи, систСму ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ²,Β  ΠΈ это влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ хоста Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π° хостС, Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ «падСнию» хоста.Β 

Π’Ρ€Π΅Ρ‚ΠΈΠΉ аспСкт β€” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊ сбора ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. ΠžΡ‚ чтСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ опроса Prometheus-endpoint Π΄ΠΎ использования спСцифичСских ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

И послСдний аспСкт β€” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов.

ΠœΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ open-source Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Go ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Telegraf. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ большС 140 Π²ΠΈΠ΄ΠΎΠ² Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² (input plugins) ΠΈ 30 Π²ΠΈΠ΄ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… (output plugins). ΠœΡ‹ Π΅Π³ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΈ сСйчас ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρƒ нас Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Kubernetes.Β 

Production-ready images for k8s

Допустим, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, ΠΈ Kubernetes ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ запрос Π½Π° созданиС ΠΏΠΎΠ΄Π°. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π° автоматичСски создаСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Collector (ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ mutation webhook). Collector β€” это наш Π°Π³Π΅Π½Ρ‚. На стартС, этот ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ настраиваСт сСбя Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ c Prometheus ΠΈ систСмой сбора Π»ΠΎΠ³ΠΎΠ².

  • Для этого ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π°, ΠΈ Π² зависимости ΠΎΡ‚ Π΅Ρ‘ содСрТимого, создаёт, скаТСм, ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ end-point Prometheus;Β 
  • На основании спСцификации ΠΏΠΎΠ΄Π° ΠΈ спСцифичных настроСк ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Ρ€Π΅ΡˆΠ°Π΅Ρ‚, ΠΊΠ°ΠΊ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ.

Π›ΠΎΠ³ΠΈ ΠΌΡ‹ собираСм Ρ‡Π΅Ρ€Π΅Π· Docker API: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ достаточно ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΡ… Π² stdout ΠΈΠ»ΠΈ stderr, Π° дальшС Collector разбСрСтся. Π›ΠΎΠ³ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ chunk’ами с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ хоста.Β 

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΏΠΎ экзСмплярам Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (процСссам) Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…. Всё помСчаСтся Ρ‚Π΅Π³Π°ΠΌΠΈ: namespace, ΠΏΠΎΠ΄ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ конвСртируСтся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Prometheus – ΠΈ становится доступно для сбора (ΠΊΡ€ΠΎΠΌΠ΅ Π»ΠΎΠ³ΠΎΠ²). Π’Π°ΠΊΠΆΠ΅, Π»ΠΎΠ³ΠΈ, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΈ события ΠΌΡ‹ отправляСм Π² Kafka ΠΈ Π΄Π°Π»Π΅Π΅:

  • Π›ΠΎΠ³ΠΈ доступны Π² Graylog (для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°);
  • Π›ΠΎΠ³ΠΈ, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, события ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Clickhouse для долгосрочного хранСния.

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² AWS, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ замСняСм Graylog с Kafka Π½Π° Cloudwatch. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ Ρ‚ΡƒΠ΄Π° Π»ΠΎΠ³ΠΈ, ΠΈ всё получаСтся ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ: сразу понятно, ΠΊ ΠΊΠΎΠΌΡƒ кластСру ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ ΠΎΠ½ΠΈ относятся. Π’ΠΎ ΠΆΠ΅ самоС Π²Π΅Ρ€Π½ΠΎ ΠΈ для Google Stackdriver. Π’ΠΎ Π΅ΡΡ‚ΡŒ наша схСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ on-premise с Kafka, Ρ‚Π°ΠΊ ΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ΅.Β 

Если ΠΆΠ΅ Ρƒ нас Π½Π΅Ρ‚ Kubernetes с ΠΏΠΎΠ΄Π°ΠΌΠΈ, схСма получаСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ.

Production-ready images for k8s

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ процСссы, ΠΎΠ½ΠΈ ΠΎΡ€ΠΊΠ΅ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ S6. ВсС Ρ‚Π΅ ΠΆΠ΅ самыС процСссы Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π’ ΠΈΡ‚ΠΎΠ³Π΅

ΠœΡ‹ создали Ρ†Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для сборки ΠΈ запуска ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ, с опциями сбора ΠΈ доставкой Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ:

  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ стандартизированный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ сборкС ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Π½Π° Π΅Π³ΠΎ основС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ CI-ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹;
  • АгСнты для сбора Π΄Π°Π½Π½Ρ‹Ρ… β€” это наши Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Telegraf. ΠœΡ‹ ΠΈΡ… Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠ±ΠΊΠ°Ρ‚Π°Π»ΠΈ Π² production;
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ mutation webhook для внСдрСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ Π² ΠΏΠΎΠ΄Π°Ρ…;Β 
  • Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π² экосистСму Kubernetes/Rancher;
  • МоТСм ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах оркСстрации ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π½Π°ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;
  • Π‘ΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ.Β 

Π‘ΠΎΠ°Π²Ρ‚ΠΎΡ€: Илья ΠŸΡ€ΡƒΠ΄Π½ΠΈΠΊΠΎΠ²

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

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