ΠžΠ±Π·ΠΎΡ€ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ΄ Kubernetes

ΠžΠ±Π·ΠΎΡ€ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ΄ Kubernetes

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

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

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

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

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

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

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

Π‘Π΅Π³Π° - Π·Π° особСноститС:

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

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

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

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

ΠžΠ±Π·ΠΎΡ€ Π½Π° Skaffold Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ΄ Kubernetes

Как Π² ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Skaffold?

  1. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° слСди Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² дирСкторията с изходния ΠΊΠΎΠ΄. Ако Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ сС правят ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‚Π΅ сС синхронизират с pod'Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes. Ако Π΅ възмоТно β€” Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π·Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай β€” сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° Π½ΠΎΠ² ΠΎΠ±Ρ€Π°Π·.
  2. Π‘ΡŠΠ±Ρ€Π°Π½ΠΈΡΡ‚ ΠΎΠ±Ρ€Π°Π· сС провСрява с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° container-structure-test, Ρ‚Π°Π³ΠΈΡ€Π° сС ΠΈ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π² Docker Registry.
  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

Π˜Π·Π±Ρ€Π°Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π΄Π²Π° pod-Π°, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΏΠΎ Π΅Π΄Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 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 Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, 8 Ρ„Π°ΠΉΠ»Π°

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 ΠΈΠΌΠ° Service само Π·Π° app (Π·Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ). ΠŸΠΎΡ€Ρ‚ΡŠΡ‚ Π½Π° pod-Π° 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 няма Π΄Π° сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° "push"-Π²Π° изобраТСния Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€. Ако Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π·Π° Π΄Π° складиратС изобраТСнията ΡΡŠΡ‰ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ.

Π’ΡŠΡ€Π½Π΅ΠΌ сС към 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: ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Ρ‰Π΅ създадС ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ‰Π° "ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°", Ρ‚.Π΅. Π½Π΅ само Ρ‰Π΅ ΡΡŠΠ±Π΅Ρ€Π΅ всичко ΠΈ Ρ‰Π΅ Π΄Π΅ΠΏΠ»ΠΎΠΉΠ½Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° pod-ΠΎΠ²Π΅Ρ‚Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Ρ‰Π΅ слСди Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° pod-ΠΎΠ²Π΅Ρ‚Π΅.

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

На katacoda ΠΈΠΌΠ° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΡ‰Π΅ ΠΏΠΎ-прост. ВмСсто Ρ‚ΠΎΠ²Π° Ρ‚Π°ΠΌ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π²Π΅Ρ‡Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° пСсочница с Kubernetes, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Skaffold. ΠžΡ‚Π»ΠΈΡ‡Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π°ΠΊΠΎ искатС сами Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ основитС.

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

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

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

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

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

P.S.

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster