ΠžΠ±Π·ΠΎΡ€ Kubecost для экономии срСдств Π½Π° Kubernetes Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ…

ΠžΠ±Π·ΠΎΡ€ Kubecost для экономии срСдств Π½Π° Kubernetes Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ…

Π’ настоящСС врСмя всё большС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ пСрСводят свою инфраструктуру с ΠΆΠ΅Π»Π΅Π·Π½Ρ‹Ρ… сСрвСров ΠΈ собствСнных Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΎΠΊ Π² ΠΎΠ±Π»Π°ΠΊΠ°. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ: Π½Π΅Ρ‚ нСобходимости Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ ΠΆΠ΅Π»Π΅Π·Π΅, кластСр Π»Π΅Π³ΠΊΠΎ конфигурируСтся мноТСством Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов… Π° самоС Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (Π²Ρ€ΠΎΠ΄Π΅ Kubernetes) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ просто ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мощности Π² зависимости ΠΎΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ВсСгда Π²Π°ΠΆΠ΅Π½ ΠΈ финансовый аспСкт. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚, Ρ€Π΅Ρ‡ΡŒ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΏΡ€ΠΈΠ·Π²Π°Π½ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡŽ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ использовании ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ инфраструктуры с Kubernetes.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Kubecost β€” калифорнийский стартап ΠΎΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄Ρ†Π΅Π² ΠΈΠ· Google, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для подсчСта Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° инфраструктуру Π² ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисах (Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Kubernetes + ΠΎΠ±Ρ‰ΠΈΠ΅ рСсурсы), поиска ΡƒΠ·ΠΊΠΈΡ… мСст Π² настройках кластСра ΠΈ отправлСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π² Slack.

Π£ нас Π΅ΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ с Kubernetes ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΎΠ±Π»Π°ΠΊΠ°Ρ… AWS ΠΈ GCP, Ρ‚Π°ΠΊ ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π΄ΠΊΠΎΠΌ для Linux-сообщСства Azure β€” Π² ΠΎΠ±Ρ‰Π΅ΠΌ, Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Kubecost’ом. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ… ΠΌΡ‹ считаСм Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΏΠΎ внутрикластСрным сСрвисам ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ (ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅, ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ Π½Π° Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Kubecost), Π° Ρ‚Π°ΠΊΠΆΠ΅ слСдим Π·Π° расходами Π½Π° инфраструктуру ΠΈ стараСмся ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ нас заинтСрСсовала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ основного модуля Kubecost ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π½Π° условиях Open Source-Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ (Apache License 2.0). Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свободно, Π° доступных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Однако бизнСс Π΅ΡΡ‚ΡŒ бизнСс: ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°, Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΌ подпискам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… кластСров (1 кластСр с 10 ΡƒΠ·Π»Π°ΠΌΠΈ β€” Π·Π° врСмя написания ΡΡ‚Π°Ρ‚ΡŒΠΈ этот Π»ΠΈΠΌΠΈΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΡΡ Π΄ΠΎ 20 ΡƒΠ·Π»ΠΎΠ²) ΠΈΠ»ΠΈ trial-ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ с ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ возмоТностями Π½Π° 1 мСсяц.

Как всё устроСно

Π˜Ρ‚Π°ΠΊ, основная Ρ‡Π°ΡΡ‚ΡŒ Kubecost β€” это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ cost-model, написанноС Π½Π° Go. Helm-Ρ‡Π°Ρ€Ρ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ всю систСму Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, называСтся cost-analyzer ΠΈ ΠΏΠΎ своСй сути являСтся сборкой ΠΈΠ· cost-model с Prometheus, Grafana ΠΈ нСсколькими dashboard’ами.

Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Ρƒ cost-model Π΅ΡΡ‚ΡŒ свой Π²Π΅Π±-интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ статистику ΠΏΠΎ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, совСты ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ расходов. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΆΠ΅ Π² Grafana dashboard’ы ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΌ этапом развития Kubecost ΠΈ содСрТат Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΈ cost-model, дополняя ΠΈΡ… ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΉ статистикой ΠΏΠΎ расходу CPU/памяти/сСти/дискового пространства Π² кластСрС ΠΈ Π΅Π³ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ….

Как ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Kubecost?

  • Cost-model Ρ‡Π΅Ρ€Π΅Π· API ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ†Π΅Π½Ρ‹ Π½Π° обслуТиваниС.
  • Π”Π°Π»Π΅Π΅, Π² зависимости ΠΎΡ‚ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΡƒΠ·Π»Π° ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°, считаСтся ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡƒΠ·Π»Π°ΠΌ.
  • На основС стоимости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΠ·Π»ΠΎΠ² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ pod ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π° час использования процСссора, расходования Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π° памяти ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ часа хранСния Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… β€” Π² зависимости ΠΎΡ‚ ΡƒΠ·Π»Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΈΠ»ΠΈ класса Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.
  • Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· стоимости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… pod’ов считаСтся ΠΎΠΏΠ»Π°Ρ‚Π° ΠΏΠΎ пространствам ΠΈΠΌΡ‘Π½, сСрвисам, Deployment’ам, StatefulSet’ам.
  • Для подсчСта статистики ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, прСдоставляСмыС kube-state-metrics ΠΈ node-exporter.

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Kubecost ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ считаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рСсурсы, доступныС Π² Kubernetes. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, сСрвСры GitLab, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° S3 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСрвисы, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² кластСрС (ΠΏΡƒΡΡ‚ΡŒ ΠΈ находящиСся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±Π»Π°ΠΊΠ΅), для Π½Π΅Π³ΠΎ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹. Π₯отя для GCP ΠΈ AWS ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ своих сСрвис-Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всё вмСстС.

Установка

Для функционирования Kubecost Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ:

  • Kubernetes вСрсии 1.8 ΠΈ Π²Ρ‹ΡˆΠ΅;
  • kube-state-metrics;
  • Prometheus;
  • node-exporter.

Π’Π°ΠΊ слоТилось, Ρ‡Ρ‚ΠΎ Π² Π½Π°ΡˆΠΈΡ… кластСрах всС эти условия Π±Ρ‹Π»ΠΈ ΡΠΎΠ±Π»ΡŽΠ΄Π΅Π½Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅, поэтому оказалось достаточным лишь ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ endpoint для доступа Π² Prometheus. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Helm-Ρ‡Π°Ρ€Ρ‚ kubecost содСрТит Π² сСбС всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ Π½Π° Β«Π³ΠΎΠ»ΠΎΠΌΒ» кластСрС.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Kubecost ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами:

  1. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ способ установки, описанный Π² инструкции Π½Π° сайтС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Helm Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ cost-analyzer, послС Ρ‡Π΅Π³ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‡Π°Ρ€Ρ‚. ΠžΡΡ‚Π°Π½Π΅Ρ‚ΡΡ лишь ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ сСбС ΠΏΠΎΡ€Ρ‚ ΠΈ Π΄ΠΎΠΏΠΈΠ»ΠΈΡ‚ΡŒ настройки Π΄ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ состояния Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Ρ‡Π΅Ρ€Π΅Π· kubectl) ΠΈ/ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π΅Π±-интСрфСйса cost-model.

    Π”Π°Π½Π½Ρ‹ΠΉ способ ΠΌΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сторонниС Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ выглядит ΠΊΠ°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ «просто ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ для сСбя». Если ΠΆΠ΅ Ρƒ вас ΡƒΠΆΠ΅ установлСна Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² систСмы ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки, Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ.

  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ сути Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‡Π°Ρ€Ρ‚, Π½ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π»ΡŽΠ±Ρ‹ΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом.

    Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΏΠΎΠΌΠΈΠΌΠΎ собствСнно kubecost’а этот Ρ‡Π°Ρ€Ρ‚ содСрТит Ρ‡Π°Ρ€Ρ‚Ρ‹ Grafana ΠΈ Prometheus, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎ своСму ТСланию.

    Π˜ΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Π² Ρ‡Π°Ρ€Ρ‚Π΅ values.yaml для cost-analyzer позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ:

    • ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² cost-analyzer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ;
    • свой endpoint для Prometheus (Ссли ΠΎΠ½ Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ);
    • Π΄ΠΎΠΌΠ΅Π½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ настройки ingress’ов для cost-model ΠΈ Grafana;
    • Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для pod’ов;
    • Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ использования постоянных Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ ΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€.

    ΠŸΠΎΠ»Π½Ρ‹ΠΉ список доступных ΠΎΠΏΡ†ΠΈΠΉ конфигурирования с описаниСм Π΅ΡΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

    ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ kubecost Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ доступ, потрСбуСтся сразу Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ basic-auth для Π²Π΅Π±-ΠΏΠ°Π½Π΅Π»ΠΈ.

  3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядро систСмы β€” cost-model. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² кластСрС установлСнный Prometheus ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ адрСса Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ prometheusEndpoint для Helm’а. ПослС этого β€” ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ YAML-ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² кластСрС.

    ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, придётся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ingress с basic-auth. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, потрСбуСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ΅ΠΊΡ†ΠΈΡŽ для сбора ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ cost-model Π² extraScrapeConfigs Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ Prometheus:

    - job_name: kubecost
      honor_labels: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      dns_sd_configs:
      - names:
        - <адрСс вашСго сСрвиса kubecost>
        type: 'A'
        port: 9003

Π§Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ?

ΠŸΡ€ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ установкС Π² нашСм распоряТСнии оказываСтся Π²Π΅Π±-панСль kubecost ΠΈ Grafana с Π½Π°Π±ΠΎΡ€ΠΎΠΌ dashboard’ов.

Total cost, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ экранС, фактичСски ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°ΡΡ‡Π΅Ρ‚Π½ΡƒΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ рСсурсов Π·Π° мСсяц. Π­Ρ‚ΠΎ прогнозируСмая Ρ†Π΅Π½Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π°Ρ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ использования кластСра (Π² мСсяц) ΠΏΡ€ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ потрСблСния рСсурсов.

Данная ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° β€” большС для Π°Π½Π°Π»ΠΈΠ·Π° расходов ΠΈ ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠžΠ±Ρ‰ΠΈΠ΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π·Π° абстрактный июль Π² kubecost ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ: Π·Π° этим придСтся ΠΈΠ΄Ρ‚ΠΈ Π² Π±ΠΈΠ»Π»ΠΈΠ½Π³. Π—Π°Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ с Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ ΠΏΠΎ пространствам ΠΈΠΌΡ‘Π½, Π»Π΅ΠΉΠ±Π»Π°ΠΌ, pod’ам Π·Π° 1/2/7/30/90 Π΄Π½Π΅ΠΉ, Ρ‡Π΅Π³ΠΎ Π±ΠΈΠ»Π»ΠΈΠ½Π³ Π²Π°ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚.

ΠžΠ±Π·ΠΎΡ€ Kubecost для экономии срСдств Π½Π° Kubernetes Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ…

К слову ΠΎ Π»Π΅ΠΉΠ±Π»Π°Ρ…. Π‘Ρ‚ΠΎΠΈΡ‚ сразу Π·Π°ΠΉΡ‚ΠΈ Π² настройки ΠΈ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ названия Π»Π΅ΠΉΠ±Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚:

ΠžΠ±Π·ΠΎΡ€ Kubecost для экономии срСдств Π½Π° Kubernetes Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ…

Π›Π΅ΠΉΠ±Π»Ρ‹ Π½Π° Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ β€” ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Ρƒ вас ΡƒΠΆΠ΅ сущСствуСт своя систСма ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π’Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ адрСс API endpoint’а, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ cost-model, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ скидки Π² GCP ΠΈ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ собствСнныС Ρ†Π΅Π½Ρ‹ Π½Π° рСсурсы ΠΈ Π²Π°Π»ΡŽΡ‚Ρƒ для ΠΈΡ… измСрСния (Ρ„ΠΈΡ‡Π° ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π½Π΅ влияСт Π½Π° Total cost).

Kubecost ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² кластСрС (ΠΈ Π΄Π°ΠΆΠ΅ Π°Π»Π΅Ρ€Ρ‚ΠΈΡ‚ΡŒ Π² случаС опасности). К соТалСнию, опция Π½Π΅ настраиваСтся, Π° посСму β€” Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ окруТСния для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ постоянно Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:

ΠžΠ±Π·ΠΎΡ€ Kubecost для экономии срСдств Π½Π° Kubernetes Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ…

Π’Π°ΠΆΠ½Ρ‹ΠΉ инструмСнт β€” Cluster Savings. Он измСряСт Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ pod’ов (ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов, Π² Ρ‚ΠΎΠΌ числС ΠΈ сСтСвых), Π° Ρ‚Π°ΠΊΠΆΠ΅ считаСт, сколько Π΄Π΅Π½Π΅Π³ ΠΈ Π½Π° Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ совСты ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ β€” довольно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠΏΡ‹Ρ‚ подсказываСт, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π²Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ. Π’ частности, отслСТиваСтся сСтСвая Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ pod’ов (Kubecost ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ…), сравниваСтся Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ расход памяти ΠΈ CPU, Π° Ρ‚Π°ΠΊΠΆΠ΅ CPU, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΡƒΠ·Π»Π°ΠΌΠΈ кластСра (ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ нСсколько ΡƒΠ·Π»ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½), Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° диски ΠΈ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Π° дСсятков ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Как ΠΈ Π² любом вопросС, ΠΊΠ°ΡΠ°ΡŽΡ‰Π΅ΠΌΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ рСсурсов Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… Kubecost Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. НапримСр, Cluster Savings ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡƒΠ·Π»Ρ‹, утвСрТдая, Ρ‡Ρ‚ΠΎ это бСзопасно, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρƒ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… Π½Π° Π½ΠΈΡ… pod’в node-selector’ов ΠΈ taint’ов, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ…. Π”Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅, Π΄Π°ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π² своСй Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ (кстати, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ интСрСсуСтся Ρ‚Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ Π½Π΅ ΠΊΠΈΠ΄Π°Ρ‚ΡŒΡΡ с Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ расходов, Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ вопросу ΠΎΠ±Π΄ΡƒΠΌΠ°Π½Π½ΠΎ.

Π˜Ρ‚ΠΎΠ³ΠΈ

ПослС использования kubecost Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ мСсяца Π½Π° ΠΏΠ°Ρ€Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это интСрСсный (Π° Π΅Ρ‰Ρ‘ Π»Π΅Π³ΠΊΠΈΠΉ Π² освоСнии ΠΈ установкС) инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ расходов Π½Π° услуги ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для Kubernetes-кластСров. ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ вСсьма Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ: Π² Π½Π°ΡˆΠΈΡ… экспСримСнтах ΠΎΠ½ΠΈ совпадали с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹.

НС обошлось ΠΈ Π±Π΅Π· минусов: Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π±Π°Π³ΠΈ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности мСстами Π½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ спСцифичных для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² потрСбностСй. Однако, Ссли Π½ΡƒΠΆΠ½ΠΎ быстро ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΡƒΠ΄Π° уходят дСньги ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Β«ΠΏΠΎΡ€Π΅Π·Π°Ρ‚ΡŒΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ счСт Π·Π° ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ услуги Π½Π° 5-30% (Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² нашСм случаС), β€” это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

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