Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, запускаСмых Π² Kubernetes

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, запускаСмых Π² Kubernetes

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ эксплуатации Ρ€Π΅ΡˆΠ°Π΅Ρ‚ мноТСство насущных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бизнСса. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ оркСстраторы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ любой слоТности, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π΅Π»ΠΈΠ·Ρ‹ Π½ΠΎΠ²Ρ‹Ρ… вСрсий, Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌΠΈ, Π½ΠΎ вмСстС с Ρ‚Π΅ΠΌ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ Π΅Π³ΠΎ ΠΊΠΎΠ΄: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, качСство, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, β€” Π° Π½Π΅ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ΅Π΄Π΅Ρ‚ Π² Kubernetes ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ послС внСсСния Π΄Π°ΠΆΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΎΠΊ. ΠŸΠΎΡΠ΅ΠΌΡƒ вСсьма Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ инструмСнты для Kubernetes, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΄Π°ΠΆΠ΅ самых Β«Π°Ρ€Ρ…Π°ΠΈΡ‡Π½Ρ‹Ρ…Β» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ позволяя ΠΈΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ.

Π’ этом ΠΎΠ±Π·ΠΎΡ€Π΅ прСдставлСна краткая информация ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструмСнтах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Тизнь программисту, Ρ‡Π΅ΠΉ ΠΊΠΎΠ΄ крутится Π² pod’ax Kubernetes-кластСра.

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΈ

Kubectl-debug

  • Π‘ΡƒΡ‚ΡŒ: добавь свой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² Pod ΠΈ посмотри, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ происходит.
  • GitHub.
  • ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ статистика GH: 715 Π·Π²Ρ‘Π·Π΄, 54 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, 9 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ².
  • Π―Π·Ρ‹ΠΊ: Go.
  • ЛицСнзия: Apache License 2.0.

Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ для kubectl позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ pod’a Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»ΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ процСссов с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ. Π’ Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ pod’Π°: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ сСти, ΠΏΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ strace ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ процСсса ΠΈ Ρ‚.ΠΏ.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ процСсса, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² chroot /proc/PID/root β€” это Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ root shell Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² манифСстС выставлСн securityContext.runAs.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ прост ΠΈ эффСктивСн, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Ρ‘ΠΌ ΠΌΡ‹ писали Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Telepresence

  • Π‘ΡƒΡ‚ΡŒ: пСрСнСси ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° свой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°ΠΉ локально.
  • Π‘Π°ΠΉΡ‚; GitHub.
  • ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ статистика GH: 2131 Π·Π²Π΅Π·Π΄Π°, 2712 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², 33 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€Π°.
  • Π―Π·Ρ‹ΠΊ: Python.
  • ЛицСнзия: Apache License 2.0.

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

ΠŸΠ»ΡŽΡΡ‹ локального запуска β€” удобство ΠΏΡ€Π°Π²ΠΎΠΊ ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ способом. Из минусов β€” Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ скорости соСдинСния, Ρ‡Ρ‚ΠΎ особСнно Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ с достаточно высоким RPS ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ Telepresence Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с volume mounts Π² Windows, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»Π΅ΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠΈΠΌ ΠΊ этой ОБ.

ΠœΡ‹ ΡƒΠΆΠ΅ дСлились своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ использования Telepresence здСсь.

Ksync

  • Π‘ΡƒΡ‚ΡŒ: ΠΏΠΎΡ‡Ρ‚ΠΈ мгновСнная синхронизация ΠΊΠΎΠ΄Π° с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Π² кластСрС.
  • GitHub.
  • ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ статистика GH: 555 Π·Π²Ρ‘Π·Π΄, 362 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, 11 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ².
  • Π―Π·Ρ‹ΠΊ: Go.
  • ЛицСнзия: Apache License 2.0.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° позволяСт ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС локальной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² кластСрС. Π’Π°ΠΊΠΎΠΉ инструмСнт ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° скриптовых языках программирования, основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Ksync ΠΏΡ€ΠΈΠ·Π²Π°Π½ ΡΠ½ΡΡ‚ΡŒ эту Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ боль.

ΠŸΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ksync init Π² кластСрС создаСтся DaemonSet, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отслСТивания состояния Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. На своСм локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ запускаСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ksync watch, которая слСдит Π·Π° конфигурациями ΠΈ запускаСт syncthing, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ² с кластСром.

ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ksync, Ρ‡Ρ‚ΠΎ ΠΈ с Ρ‡Π΅ΠΌ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, такая ΠΊΠΎΠΌΠ°Π½Π΄Π°:

ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false /home/user/myproject/ /var/www/myproject/

… создаст watcher с ΠΈΠΌΠ΅Π½Π΅ΠΌ myproject, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ pod с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ app=backend ΠΈ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /home/user/myproject/ с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ /var/www/myproject/ Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ php.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ примСчания ΠΏΠΎ ksync ΠΈΠ· нашСго ΠΎΠΏΡ‹Ρ‚Π°:

  • На ΡƒΠ·Π»Π°Ρ… Kubernetes-кластСра Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ overlay2 Π² качСствС storage driver для Docker. Ни с ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.
  • ΠŸΡ€ΠΈ использовании Windows Π² качСствС ОБ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° нСкоррСктная Ρ€Π°Π±ΠΎΡ‚Π° watcher’Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π”Π°Π½Π½Ρ‹ΠΉ Π±Π°Π³ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ β€” с большим количСством Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ. ΠœΡ‹ создали ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ issue Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ syncthing, Π½ΠΎ прогрСсса ΠΏΠΎ Π½Π΅ΠΌΡƒ ΠΏΠΎΠΊΠ° (с Π½Π°Ρ‡Π°Π»Π° июля) Π½Π΅Ρ‚.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» .stignore для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΈΠ»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ app/cache ΠΈ .git).
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ksync Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Для Node.js это ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π° для PHP β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ излишнС. Π›ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ opcache ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ --reload=false.
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ всСгда ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² $HOME/.ksync/ksync.yaml.

Squash

  • Π‘ΡƒΡ‚ΡŒ: ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°ΠΉ процСссы прямо Π² кластСрС.
  • GitHub.
  • ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ статистика GH: 1154 Π·Π²Ρ‘Π·Π΄, 279 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², 23 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€Π°.
  • Π―Π·Ρ‹ΠΊ: Go.
  • ЛицСнзия: Apache License 2.0.

Π”Π°Π½Π½Ρ‹ΠΉ инструмСнт ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ процСссов нСпосрСдствСнно Π² pod’Π°Ρ…. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° проста ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (см. Π½ΠΈΠΆΠ΅) ΠΈ namespace + pod, Π² процСсс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒΡΡ. Π’ настоящСС врСмя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ:

  • delve β€” для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Go;
  • GDB β€” Ρ‡Π΅Ρ€Π΅Π· target remote + проброс ΠΏΠΎΡ€Ρ‚Π°;
  • проброс ΠΏΠΎΡ€Ρ‚Π° JDWP для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π‘ΠΎ стороны IDE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΅ΡΡ‚ΡŒ лишь Π² VScode (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ), ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΠΏΠ»Π°Π½Π°Ρ… Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ (2019) Π³ΠΎΠ΄ значатся Eclipse ΠΈ Intellij.

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ процСссов Squash запускаСт Π½Π° ΡƒΠ·Π»Π°Ρ… кластСра ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ спСрва ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с возмоТностями бСзопасного Ρ€Π΅ΠΆΠΈΠΌΠ° Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ.

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ тяТСлой Π°Ρ€Ρ‚ΠΈΠ»Π»Π΅Ρ€ΠΈΠΈ β€” Π±ΠΎΠ»Π΅Π΅ Β«ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΌΒ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹ΠΌ сразу Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ потрСбности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

NB: Π’ этом спискС, бСзусловно, Π΅ΡΡ‚ΡŒ мСсто ΠΈ нашСй Open Source-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ werf (Ρ€Π°Π½Π΅Π΅ извСстной ΠΊΠ°ΠΊ dapp). Однако ΠΌΡ‹ ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π°Π· писали ΠΈ рассказывали ΠΎ Π½Π΅ΠΉ, Π° посСму Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΎΠ±Π·ΠΎΡ€. Для ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π΅Ρ‘ возмоТностями ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ/ΠΏΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΠ»Π°Π΄ Β«werf β€” наш инструмСнт для CI/CD Π² KubernetesΒ».

DevSpace

  • Π‘ΡƒΡ‚ΡŒ: для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Kubernetes, Π½ΠΎ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π·Π°Π»Π΅Π·Π°Ρ‚ΡŒ Π² Π΅Π³ΠΎ Π΄Π΅Π±Ρ€ΠΈ.
  • GitHub.
  • ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ статистика GH: 630 Π·Π²Ρ‘Π·Π΄, 1912 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², 13 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ².
  • Π―Π·Ρ‹ΠΊ: Go.
  • ЛицСнзия: Apache License 2.0.

РСшСниС ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ managed-кластСры с Kubernetes для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° Π±Ρ‹Π»Π° создана для коммСрчСских кластСров, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ.

ΠŸΡ€ΠΈ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ devspace init Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π²Π°ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ°Ρ‚ (Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅):

  • Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Kubernetes-кластСр,
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Dockerfile (ΠΈΠ»ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ) для создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° Π΅Π³ΠΎ Π±Π°Π·Π΅,
  • Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для хранСния ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ Ρ‚.Π΄.

ПослС всСх этих ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ devspace dev. Она собСрёт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ Π΅Π³ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π²Ρ‹ΠΊΠ°Ρ‚ΠΈΡ‚ deployment Π² кластСр ΠΈ запустит проброс ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ.

ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠžΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ стоит, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ стартуСт с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ sleep, Π° для Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ трСбуСтся Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

НаконСц, ΠΊΠΎΠΌΠ°Π½Π΄Π° devspace deploy Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с Π½ΠΈΠΌ инфраструктуру Π² кластСр, послС Ρ‡Π΅Π³ΠΎ всС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π±ΠΎΠ΅Π²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Вся конфигурация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° хранится Π² Ρ„Π°ΠΉΠ»Π΅ devspace.yaml. Помимо настроСк окруТСния для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Π½Π΅ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ описаниС инфраструктуры, ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° стандартныС манифСсты Kubernetes, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сильно ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹Π΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, запускаСмых Π² Kubernetes
АрхитСктура ΠΈ основныС этапы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с DevSpace

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘Π£Π‘Π” MySQL) ΠΈΠ»ΠΈ Helm-Ρ‡Π°Ρ€Ρ‚. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ β€” ΠΎΠ½Π° нСслоТная.

Skaffold

  • Π‘Π°ΠΉΡ‚; GitHub.
  • ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ статистика GH: 7423 Π·Π²Π΅Π·Π΄Ρ‹, 4173 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, 136 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ².
  • Π―Π·Ρ‹ΠΊ: Go.
  • ЛицСнзия: Apache License 2.0.

Π­Ρ‚Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΎΡ‚ Google ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ всС потрСбности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‡Π΅ΠΉ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² кластСрС Kubernetes. ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌ Π½Π΅ Ρ‚Π°ΠΊ просто, ΠΊΠ°ΠΊ devspace’ΠΎΠΌ: Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ интСрактивности, опрСдСлСния языка ΠΈ автосоздания Dockerfile здСсь Π²Π°ΠΌ Π½Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ°Ρ‚.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ссли это Π½Π΅ ΠΏΡƒΠ³Π°Π΅Ρ‚ β€” Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Skaffold:

  • ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния исходного ΠΊΠΎΠ΄Π°.
  • Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ pod’Π°, Ссли ΠΎΠ½ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сборки.
  • Π‘ΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ, Ссли ЯП β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.
  • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΠΎΠ±Ρ€Π°Π·Ρ‹ автоматичСски ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ container-structure-test.
  • Π’Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π² Docker Registry.
  • Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² кластСрС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ kubectl, Helm ΠΈΠ»ΠΈ kustomize.
  • Π”Π΅Π»Π°Ρ‚ΡŒ проброс ΠΏΠΎΡ€Ρ‚ΠΎΠ².
  • ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ прилоТСния, написанныС Π½Π° Java, Node.js, Python.

Workflow Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вариациях Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ описываСтся Π² Ρ„Π°ΠΉΠ»Π΅ skaffold.yaml. Для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частично ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ стадии сборки ΠΈ дСплоя. НапримСр, для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, Π° для staging ΠΈ production β€” ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ (+ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ securityContext Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ кластСр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎ).

Π‘Π±ΠΎΡ€ΠΊΠ° Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ локально ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ: Π² Google Cloud Build ΠΈΠ»ΠΈ Π² кластСрС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kaniko. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Bazel ΠΈ Jib Maven/Gradle. Для тСгирования Skaffold ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство стратСгий: ΠΏΠΎ git commit hash, Π΄Π°Ρ‚Π΅/Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, sha256-суммС исходников ΠΈ Ρ‚.ΠΏ.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ тСстирования ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π£ΠΆΠ΅ упомянутый Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ container-structure-test ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

  • Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π² контСкстС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с отслСТиваниСм exit-статусов ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ тСкстового Β«Π²Ρ‹Ρ…Π»ΠΎΠΏΠ°Β» ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° наличия Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΈ соотвСтствия Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ.
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ содСрТимого Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ рСгулярным выраТСниям.
  • Π‘Π²Π΅Ρ€ΠΊΠ° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·Π° (ENV, ENTRYPOINT, VOLUMES ΠΈ Ρ‚.ΠΏ.).
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° совмСстимости Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ.

Бинхронизация Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ осущСствляСтся Π½Π΅ самым ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом: Skaffold просто создаСт Π°Ρ€Ρ…ΠΈΠ² с исходниками, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈ распаковываСт Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ (Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн tar). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли ваша основная Π·Π°Π΄Π°Ρ‡Π° β€” Π² синхронизации ΠΊΠΎΠ΄Π°, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² сторону спСциализированного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (ksync).

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, запускаСмых Π² Kubernetes
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы Ρ€Π°Π±ΠΎΡ‚Ρ‹ Skaffold

Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΆΠ΅ инструмСнт Π½Π΅ позволяСт Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Kubernetes-манифСстов ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ интСрактивности, поэтому ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТным для освоСния. Но Π² этом ΠΆΠ΅ ΠΈ Π΅Π³ΠΎ плюс β€” большая свобода дСйствий.

Garden

  • Π‘Π°ΠΉΡ‚; GitHub.
  • ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ статистика GH: 1063 Π·Π²Π΅Π·Π΄Ρ‹, 1927 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², 17 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ².
  • Π―Π·Ρ‹ΠΊ: TypeScript (планируСтся Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π½Π° Go, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ SDK для создания Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π½Π° TypeScript/JavaScript ΠΈ Go).
  • ЛицСнзия: Apache License 2.0.

Как ΠΈ Skaffold, Garden Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ процСссов доставки ΠΊΠΎΠ΄Π° прилоТСния Π² K8s-кластСр. Для этого спСрва Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² YAML-Ρ„Π°ΠΉΠ»Π΅, послС Ρ‡Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ garden dev. Она сдСлаСт всю магию:

  • Π‘ΠΎΠ±Π΅Ρ€Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ unit-тСсты, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ Π±Ρ‹Π»ΠΈ описаны.
  • Π’Ρ‹ΠΊΠ°Ρ‚ΠΈΡ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² кластСр.
  • Π’ случаС измСнСния исходного ΠΊΠΎΠ΄Π° β€” Π·Π°Π½ΠΎΠ²ΠΎ запустит вСсь ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½.

Основной ΡƒΠΏΠΎΡ€ ΠΏΡ€ΠΈ использовании этого инструмСнта дСлаСтся Π½Π° совмСстноС использованиС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ кластСра ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ этом случаС, Ссли ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ стадии сборки ΠΈ тСстирования ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ сдСланы, это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорит вСсь процСсс, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Garden смоТСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ΠœΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Maven-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Helm-Ρ‡Π°Ρ€Ρ‚, манифСст для kubectl apply ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ OpenFaaS-функция. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ любой ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Git-рСпозитория. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ (Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅Ρ‚) сСрвисы, Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ тСсты. БСрвисы ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ зависимости, благодаря Ρ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСплоя Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ сСрвиса, ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ запуск Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ тСстов.

Garden прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ красивый dashboard (ΠΏΠΎΠΊΠ° Π² ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ состоянии), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отобраТаСтся Π³Ρ€Π°Ρ„ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сборки, выполнСния Π·Π°Π΄Π°Ρ‡ ΠΈ тСстов, ΠΈΡ… связи ΠΈ зависимости. ΠŸΡ€ΡΠΌΠΎ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ Π»ΠΎΠ³ΠΈ всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎ HTTP (Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, для Π½Π΅Π³ΠΎ объявлСн рСсурс ingress).

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, запускаСмых Π² Kubernetes
ПанСль для Garden

Π•ΡΡ‚ΡŒ Ρƒ этого инструмСнта ΠΈ Ρ€Π΅ΠΆΠΈΠΌ hot-reload, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто синхронизируСт измСнСния скриптов с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Π² кластСрС, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ускоряя процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ прилоТСния. Π£ Garden Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ докумСнтация ΠΈ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… быстро ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒΡΡ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ΠšΡΡ‚Π°Ρ‚ΠΈ, совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΌΡ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‚ Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ².

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

РазумССтся, Π΄Π°Π½Π½Ρ‹ΠΌ списком инструмСнтарий для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes Π½Π΅ ограничиваСтся. БущСствуСт Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ вСсьма ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, достойных Ссли Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Ρ‚ΠΎ β€” ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” упоминания. РасскаТитС, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π²Ρ‹, с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π²Π°ΠΌ доводилось ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡ… Ρ€Π΅ΡˆΠ°Π»ΠΈ!

P.S.

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

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

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