ΠžΠ±Π·ΠΎΡ€ Skaffold для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ Kubernetes

ΠžΠ±Π·ΠΎΡ€ Skaffold для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ Kubernetes

ΠŸΠΎΠ»Ρ‚ΠΎΡ€Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, 5 ΠΌΠ°Ρ€Ρ‚Π° 2018, компания Google выпустила ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π°Π»ΡŒΡ„Π°-Π²Π΅Ρ€ΡΠΈΡŽ своСго Open Source-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для 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’a с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ:

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 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 сущСствуСт 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 ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° для production.

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

Skaffold β€” ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт для построСния ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ², ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‰ΠΈΡ… Π²Ρ‹ΠΊΠ°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Π½ΡƒΠΆΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π‘ Π½ΠΈΠΌ довольно просто ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Β«ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉΒ» ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ основныС потрСбности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅ процСссы. Π’ качСствС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· наглядных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² примСнСния Skaffold Π² CI/CD-процСссах приводится Ρ‚Π°ΠΊΠΎΠΉ тСстовой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· 10 микросСрвисов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… возмоТности Kubernetes, gRPC, Istio ΠΈ OpenCensus Tracing.

Skaffold ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΠΎΡ‡Ρ‚ΠΈ 8000+ Π·Π²Π΅Π·Π΄ Π½Π° GitHub, разрабатываСтся Google ΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав GoogleContainerTools β€” Π² ΠΎΠ±Ρ‰Π΅ΠΌ, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅ΡΡ‚ΡŒ всС основания ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ»Π³ΠΎ ΠΈ счастливо.

P.S.

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

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