ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kubernetes

ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kubernetes

ΠŸΡ€Π΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, Π½Π° 5 ΠΌΠ°Ρ€Ρ‚ 2018 Π³., Google пусна ΠΏΡŠΡ€Π²Π°Ρ‚Π° Π°Π»Ρ„Π° вСрсия Π½Π° своя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π·Π° CI/CD, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π‘ΠΊΠ΅Π»Π΅, чиято Ρ†Π΅Π» бСшС Π΄Π° създадС β€žΠΏΡ€ΠΎΡΡ‚Π° ΠΈ повторяСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kubernetesβ€œ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡Π°Ρ‚ Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, Π° Π½Π΅ Π²ΡŠΡ€Ρ…Ρƒ администриранСто. Какво ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ интСрСсно Π·Π° Skaffold? ΠšΠ°ΠΊΡ‚ΠΎ сС ΠΎΠΊΠ°Π·Π²Π°, Ρ‚ΠΎΠΉ ΠΈΠΌΠ° няколко Ρ‚Ρ€ΠΈΠΊΠ° Π² Ρ€ΡŠΠΊΠ°Π²Π° си, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³ΠΎ направят ΠΌΠΎΡ‰Π΅Π½ инструмСнт Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π΄ΠΎΡ€ΠΈ Π·Π° опСративния ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€. НСка сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ.

NB: ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π²Π΅Ρ‡Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π·Π° Skaffold Π² нашия ΠΎΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° инструмСнтитС Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, Ρ‡ΠΈΠΉΡ‚ΠΎ ΠΆΠΈΠ²ΠΎΡ‚ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с Kubernetes.

ВСория. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ

Π’Π°ΠΊΠ° Ρ‡Π΅, Π½Π°ΠΉ-ΠΎΠ±Ρ‰ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Skaffold Ρ€Π΅ΡˆΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ†ΠΈΠΊΡŠΠ»Π° CI/CD (Π½Π° Π΅Ρ‚Π°ΠΏΠΈΡ‚Π΅ Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, натисканС, внСдряванС), ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π±ΡŠΡ€Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, Ρ‚.Π΅. Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π±ΡŠΡ€Π·ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ послСдващи ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° - ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes. И ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ схСми (dev, stage, production...), Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Skaffold ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС ΠΎΠΏΠΈΡˆΠ°Ρ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ Π·Π° внСдряванС.

Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π½Π° Skaffold Π΅ написан Π½Π° Go, разпространява сС ΠΎΡ‚ ΠΏΠΎΠ΄ бСзплатния Π»ΠΈΡ†Π΅Π½Π· Apache 2.0 (GitHub).

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ основнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ характСристики. ΠŸΡŠΡ€Π²ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ слСдното:

  • Skaffold ΠΏΡ€Π΅Π΄Π»Π°Π³Π° инструмСнти Π·Π° създаванС Π½Π° CI/CD Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ.
  • Позволява Π²ΠΈ Π΄Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² изходния ΠΊΠΎΠ΄ във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ ΠΈ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ процСс Π½Π° сглобяванС Π½Π° ΠΊΠΎΠ΄ Π² изобраТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ изобраТСния Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° Docker ΠΈ внСдряванСто ΠΈΠΌ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° Kubernetes.
  • Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ с Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° дирСктория Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
  • Автоматично тСства с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€-структура-тСст.
  • ΠŸΡ€Π΅ΠΏΡ€Π°Ρ‰Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅.
  • Π§Π΅Ρ‚Π΅ рСгистрационнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
  • Помага ΠΏΡ€ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² прилоТСния, написани Π½Π° Java, Node.js, Python, Go.

Π‘Π΅Π³Π° Π·Π° характСристикитС:

  • Бамият Skaffold няма ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΎΡ‚ страната Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ няма Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° Kubernetes Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°.
  • Π Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ Π·Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Врябва Π»ΠΈ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ΄Π° Π² мСстния Minikube, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅, ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° Π³ΠΎ поставитС Π½Π° Π΅Ρ‚Π°ΠΏ ΠΈΠ»ΠΈ Π² производство? Π—Π° Ρ‚Π°Π·ΠΈ Ρ†Π΅Π» ΠΈΠΌΠ° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈ потрСбитСлски ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° описватС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π·Π° Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  • CLI. Π‘Π°ΠΌΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² YAML. Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ към ΠΎΠΏΠΈΡ‚ΠΈ Π·Π° създаванС СкспСримСнталСн GUI, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ‚ΠΎΠ²Π° Π½Π°ΠΉ-вСроятно просто ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ някой ΠΈΠΌΠ° Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π½Π΅Π³ΠΎ, Π½ΠΎ Π½Π΅ наистина.
  • ΠœΠΎΠ΄ΡƒΠ»Π½ΠΎΡΡ‚. Skaffold Π½Π΅ Π΅ самостоятСлСн ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, Π° сС стрСми Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ»ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π˜Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π° послСдното:

  • На Π΅Ρ‚Π°ΠΏΠ° Π½Π° сглобяванС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅:
    • ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° docker Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° kaniko ΠΈΠ»ΠΈ Π² Google Cloud Build;
    • Bazel Π»ΠΎΠΊΠ°Π»Π½ΠΎ;
    • Jib Maven ΠΈ Jib Gradle Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ»ΠΈ Π² Google Cloud Build;
    • пСрсонализиранитС скриптовС Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Ако трябва Π΄Π° стартиратС Π΄Ρ€ΡƒΠ³ΠΎ (ΠΏΠΎ-гъвкаво/ΠΏΠΎΠ·Π½Π°Ρ‚ΠΎ/...) Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° компилация, Ρ‚ΠΎ Π΅ описано Π² скрипта, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Skaffold Π΄Π° Π³ΠΎ стартира (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ докумСнтацията). Π’ΠΎΠ²Π° Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ всСки ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π²ΠΈΠΊΠ°Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° скрипт;
  • На Π΅Ρ‚Π°ΠΏΠ° Π½Π° тСстванС Π²Π΅Ρ‡Π΅ спомСнатитС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€-структура-тСст;
  • Π—Π° внСдряванС сС прСдоставя слСдното:
    • Kubectl;
    • Π¨Π»Π΅ΠΌ;
    • пСрсонализирайтС.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° Skaffold ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ€Π΅Ρ‡Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ Ρ€Π°ΠΌΠΊΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° CI/CD. Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ (ΠΎΡ‚ докумСнтацията Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°):

ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kubernetes

Как ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π°ΠΉ-ΠΎΠ±Ρ‰ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π‘ΠΊΠ°Ρ„ΠΎΠ»Π΄?

  1. ΠŸΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° слСди ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² дирСкторията Π½Π° изходния ΠΊΠΎΠ΄. Ако сС правят ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅, Ρ‚Π΅ сС синхронизират с ΠΌΠΎΠ΄ΡƒΠ»Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes. Ако Π΅ възмоТно, Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ сглобяванС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай сС сглобява Π½ΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.
  2. Π‘Π³Π»ΠΎΠ±Π΅Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сС провСрява с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€-структура-тСст, ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° сС ΠΈ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° Docker.
  3. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π° - Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π° сС Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes.
  4. Ако стартиранСто Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° skaffold dev, Ρ‚ΠΎΠ³Π°Π²Π° Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Skaffold Ρ‡Π°ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π·Π° Π΄Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈ всички дСйствия ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kubernetes
Π˜Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π° основнитС Π΅Ρ‚Π°ΠΏΠΈ Π½Π° опСрация Skaffold

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅. ΠžΠΏΠΈΡ‚Π²Π°ΠΌ Skaffold

Π—Π° Π΄Π° дСмонстрирам ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Skaffold, Ρ‰Π΅ Π²Π·Π΅ΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ GitHub Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Ρ‚Π°ΠΌ ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ спСцифики. Π©Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌ всички дСйствия Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π² Minikube. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π΅ лСсно ΠΈ ΠΎΡ‚Π½Π΅ΠΌΠ° няколко ΠΌΠΈΠ½ΡƒΡ‚ΠΈ ΠΈ Ρ‰Π΅ Π²ΠΈ трябва kubectl, Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ Skaffold:

curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
chmod +x skaffold
sudo mv skaffold /usr/local/bin
skaffold version
v0.37.1

НСка ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°ΠΌΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° Skaffold с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ:

git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices

Π˜Π·Π±Ρ€Π°Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π΄Π²Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅, всяка ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰Π° ΠΏΠΎ Π΅Π΄Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Go. Π•Π΄Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΡŠΡ‚ (leeroy-web), ΠΊΠΎΠΉΡ‚ΠΎ прСнасочва заявката към Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ – Π±Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ (leeroy-app). Π”Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°:

~/skaffold/examples/microservices # tree
.
β”œβ”€β”€ leeroy-app
β”‚   β”œβ”€β”€ app.go
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── kubernetes
β”‚       └── deployment.yaml
β”œβ”€β”€ leeroy-web
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ kubernetes
β”‚   β”‚   └── deployment.yaml
β”‚   └── web.go
β”œβ”€β”€ README.adoc
└── skaffold.yaml
 
4 directories, 8 files

leeroy-app ΠΈ leeroy-web ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Go ΠΊΠΎΠ΄ ΠΈ прости Dockerfiles Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π»ΠΎΠΊΠ°Π»Π½ΠΎ:

~/skaffold/examples/microservices # cat leeroy-app/Dockerfile
FROM golang:1.12.9-alpine3.10 as builder
COPY app.go .
RUN go build -o /app .
 
FROM alpine:3.10
CMD ["./app"]
COPY --from=builder /app .

Няма Π΄Π° Π΄Π°ΠΌ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ - Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ Π΄Π° Π·Π½Π°ΠΌ Ρ‚ΠΎΠ²Π° leeroy-web ΠΏΡ€ΠΈΠ΅ΠΌΠ° заявки ΠΈ Π³ΠΈ проксира към leeroy-app. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Deployment.yaml ΠΈΠΌΠ° услуга само Π·Π° app (Π·Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅). Под ΠΏΠΎΡ€Ρ‚ web Π½ΠΈΠ΅ Ρ‰Π΅ Π³ΠΎ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΈΠΌ Π½Π° сСбС си Π·Π° Π±ΡŠΡ€Π· Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ИзглСТда skaffold.yaml:

~/skaffold/examples/microservices # cat skaffold.yaml
apiVersion: skaffold/v1beta13
kind: Config
build:
  artifacts:
    - image: leeroy-web
      context: ./leeroy-web/
    - image: leeroy-app
      context: ./leeroy-app/
deploy:
  kubectl:
    manifests:
      - ./leeroy-web/kubernetes/*
      - ./leeroy-app/kubernetes/*
portForward:
  - resourceType: deployment
    resourceName: leeroy-web
    port: 8080
    localPort: 9000

Всички Π΅Ρ‚Π°ΠΏΠΈ, спомСнати ΠΏΠΎ-Π³ΠΎΡ€Π΅, са описани Ρ‚ΡƒΠΊ. Π’ допълнСниС към Ρ‚Π°Π·ΠΈ конфигурация ΠΈΠΌΠ° ΠΈ Ρ„Π°ΠΉΠ» с Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ настройки - ~/.skaffold/config. МоТС Π΄Π° сС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π° Ρ€ΡŠΡ‡Π½ΠΎ ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· CLI - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠ°:

skaffold config set --global local-cluster true

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‰Π΅ Π·Π°Π΄Π°Π΄Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° local-cluster Π² смисъл true, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Skaffold няма Π΄Π° сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° изобраТСния към отдалСчСния Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€. Ако Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния Π»ΠΎΠΊΠ°Π»Π½ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към skaffold.yaml:

  • На сцСната build уточнявамС, Ρ‡Π΅ трябва Π΄Π° ΡΡŠΠ±Π΅Ρ€Π΅Ρ‚Π΅ ΠΈ Π·Π°ΠΏΠ°Π·ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ сС стартира Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ слСдното:
    // Ρ‚.ΠΊ. Minikube создаСт кластСр Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС,
    // придСтся ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ‹
    # minikube ssh
    $ docker images
    REPOSITORY                                TAG                                                                IMAGE ID            CREATED             SIZE 
    leeroy-app                                7d55a50803590b2ff62e47e6f240723451f3ef6f8c89aeb83b34e661aa287d2e   7d55a5080359        4 hours ago         13MB 
    leeroy-app                                v0.37.1-171-g0270a0c-dirty                                         7d55a5080359        4 hours ago         13MB
    leeroy-web                                5063bfb29d984db1ff70661f17d6efcc5537f2bbe6aa6907004ad1ab38879681   5063bfb29d98        5 hours ago         13.1MB
    leeroy-web                                v0.37.1-171-g0270a0c-dirty                                         5063bfb29d98        5 hours ago         13.1MB

    ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Skaffold сам Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π» изобраТСнията. ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС няколко ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅.

  • По-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ Π² конфигурацията Π΅ посочСно context: ./leeroy-app/, Ρ‚.Π΅. уточнява сС ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.
  • На Π΅Ρ‚Π°ΠΏΠ° Π½Π° внСдряванС Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ kubectl ΠΈ маска Π·Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ манифСсти.
  • PortForward: ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ kubectl port-forward, Π΄Π°Π²Π°ΠΌΠ΅ инструкции Π½Π° Skaffold Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ° Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π’ Ρ‚ΠΎΠ·ΠΈ случай локалният ΠΏΠΎΡ€Ρ‚ 9000 сС ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π° към 8080 Π² Deployment с ΠΈΠΌΠ΅Ρ‚ΠΎ leeroy-web.

Π’Ρ€Π΅ΠΌΠ΅ Π΅ Π·Π° стартиранС skaffold dev: Π•ΠΊΠΈΠΏΡŠΡ‚ Ρ‰Π΅ създадС постоянСн β€žΠΏΡ€ΠΈΠΌΠΊΠ° Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°β€œ, Ρ‚.Π΅. Π½Π΅ само Ρ‰Π΅ ΡΡŠΠ±Π΅Ρ€Π΅ всичко ΠΈ Ρ‰Π΅ Π³ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Ρ‰Π΅ наблюдава ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈ Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅.

Π•Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ стартиранСто skaffold dev --port-forward ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ сглобяванС:

ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kubernetes

ΠŸΡŠΡ€Π²ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ ΠΊΠ΅ΡˆΡŠΡ‚ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС сглобява, внСдрява ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅Ρ‚Π΅ сС ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Ρ‚. Въй ΠΊΠ°Ρ‚ΠΎ Π΅ посочСно --port-forward, Skaffold ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΈ ΠΏΠΎΡ€Ρ‚Π° към web, ΠΊΠ°ΠΊΡ‚ΠΎ Π³ΠΎ ΠΏΠΎΠΏΠΈΡ‚Π°Ρ…Π°, Π½ΠΎ Ρ‚ΡƒΠΊ app Ρ‚ΠΎΠΉ Ρ…Π²ΡŠΡ€Π»ΠΈ ΠΏΠΎ своС усмотрСниС (ΠΈΠ·Π±Ρ€Π° Π½Π°ΠΉ-близкия свободСн). Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΎΡ‚ прилоТСнията.

Π”Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΄Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ?

~/skaffold/examples/microservices # kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
leeroy-app-6998dfcc95-2nxvf   1/1     Running   0          103s
leeroy-web-69f7d47c9d-5ff77   1/1     Running   0          103s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy app!!!

ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»Π° leeroy-app/app.go - ΠΌΠΈΠ½Π°Π²Π°Ρ‚ няколко сСкунди... ΠΈ:

~/skaffold/examples/microservices # kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
leeroy-app-ffd79d986-l6nwp    1/1     Running   0          11s
leeroy-web-69f7d47c9d-5ff77   1/1     Running   0          4m59s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy Habr!!!

Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ самият Skaffold ΠΏΠΎΠΊΠ°Π·Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°: само сС Ρ€Π°Π·Π³ΡŠΡ€Π½Π° leeroy-app, Π° Π½Π΅ навСднъТ.

ΠŸΠΎΠ²Π΅Ρ‡Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° си струва Π΄Π° сС спомСнС, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Skaffold ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ стартирани с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° init, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ няколко ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ: Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° я Ρ€Π°Π·Π³ΡŠΡ€Π½Π΅Ρ‚Π΅ Π½Π° Π΅Ρ‚Π°ΠΏ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° run (ΡΡŠΡ‰ΠΈΡΡ‚ процСс ΠΊΠ°Ρ‚ΠΎ dev, просто Π½Π΅ слСди ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° конфигурация.

На ΠΊΠ°Ρ‚Π°ΠΊΠΎΠ΄Π° ΠΈΠΌΠ° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠžΡ‰Π΅ ΠΏΠΎ-лСсно Π΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Но ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π³ΠΎΡ‚ΠΎΠ² ΠΏΡΡΡŠΡ‡Π½ΠΈΠΊ с Kubernetes, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Skaffold. Π‘Ρ‚Ρ€Π°Ρ…ΠΎΡ‚Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π°ΠΊΠΎ сС интСрСсуватС сами Π΄Π° ΠΈΠ·ΠΏΡ€ΠΎΠ±Π²Π°Ρ‚Π΅ самитС основи.

Π•Π΄ΠΈΠ½ възмоТСн случай Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Skaffold Π΅ ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. НС всСки сС чувства ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° стартира Minikube Π½Π° собствСния си Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° пуснС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π΄Π° ΠΎΡ‡Π°ΠΊΠ²Π° Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ... Π’ Ρ‚ΠΎΠ·ΠΈ случай Skaffold Ρ€Π΅ΡˆΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠ΅Ρ€Ρ„Π΅ΠΊΡ‚Π½ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Reddit, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π²Π΅Ρ‡Π΅ обсъдСни писали Π² нашия Π±Π»ΠΎΠ³.

И Π² Ρ‚Π°Π·ΠΈ публикация ΠΎΡ‚ Weaveworks ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° създаванС Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π° производство.

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

Skaffold Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ инструмСнт Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ внСдряванС Π½Π° прилоТСния към Kubernetes ΠΈ са фокусирани основно Π²ΡŠΡ€Ρ…Ρƒ Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. Π’ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈ доста лСсно ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° β€žΠΊΡŠΡβ€œ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π·Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ основнитС Π½ΡƒΠΆΠ΄ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π½ΠΎ Π°ΠΊΠΎ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ процСси. ΠšΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ яснитС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Skaffold Π² CI/CD процСси Π΅ Π΄Π°Π΄Π΅Π½ Ρ‚Π°ΠΊΡŠΠ² тСстов ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ 10 микроуслуги, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Kubernetes, gRPC, Istio ΠΈ OpenCensus Tracing.

Skaffold Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ° ΠΏΠΎΡ‡Ρ‚ΠΈ 8000+ Π·Π²Π΅Π·Π΄ΠΈ Π² GitHub, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΅ ΠΎΡ‚ Google ΠΈ Π΅ част ΠΎΡ‚ GoogleContainerTools β€” ΠΊΠ°Ρ‚ΠΎ цяло, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ° всички основания Π΄Π° сС смята, Ρ‡Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Ρ‰Π΅ сС Ρ€Π°Π·Π²ΠΈΠ²Π° щастливо Π·Π°Π²ΠΈΠ½Π°Π³ΠΈ.

PS

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

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

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