ΠΠΎΠ»ΡΠΎΡΠ° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, 5 ΠΌΠ°ΡΡΠ° 2018, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Google Π²ΡΠΏΡΡΡΠΈΠ»Π° ΠΏΠ΅ΡΠ²ΡΡ Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Open Source-ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ CI/CD ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ
NB: ΠΡΡΠ°ΡΠΈ, ΠΌΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π²ΠΊΡΠ°ΡΡΠ΅ ΠΏΡΠΎ Skaffold Π² Π½Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΌ
Π’Π΅ΠΎΡΠΈΡ. ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌ, ΡΠΎ Skaffold ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° CI/CD (Π½Π° ΡΡΠ°Π΄ΠΈΡΡ build, push, deploy), ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ, Ρ.Π΅. Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° β Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes. Π ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π² ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΠ°Ρ (dev, stage, productionβ¦), Π΄Π»Ρ ΡΠ΅Π³ΠΎ Skaffold ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ Π΄Π»Ρ Π²ΡΠΊΠ°ΡΠ°.
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Skaffold Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Go,
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π ΠΏΠ΅ΡΠ²ΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
- 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?
- Π£ΡΠΈΠ»ΠΈΡΠ° ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Ρ Π²Π½ΠΎΡΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΎΠ½ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ Ρ podβΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes. ΠΡΠ»ΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·Π°. Π ΠΈΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π·.
- Π‘ΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ container-structure-test, ΡΠ΅Π³ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Docker Registry.
- ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π· Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡΡ β ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes.
- ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΠΊ Π±ΡΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
skaffold dev
, ΡΠΎ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π»ΠΎΠ³ΠΈ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Skaffold ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΡΠ°ΠΏΠΎΠ² ΡΠ°Π±ΠΎΡΡ Skaffold
ΠΡΠ°ΠΊΡΠΈΠΊΠ°. ΠΡΠΎΠ±ΡΠ΅ΠΌ Skaffold
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Skaffold Π²ΠΎΠ·ΡΠΌΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ 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
ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅:
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΡΡ. ΠΠ°Π»Π΅Π΅ β ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ, Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡΡ, ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΊΠ°Π·Π°Π½ --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 Π΅ΡΡΡ
ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Skaffold β Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅. ΠΠ΅ Π²ΡΠ΅ΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Minikube Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠΊΠ°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π΅Π³ΠΎ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡβ¦ Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Skaffold ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ Reddit, ΠΎ ΡΠ΅ΠΌ ΠΌΡ ΡΠΆΠ΅
Π Π²
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Skaffold β ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ², ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΠΈΡ
Π²ΡΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° Π½ΡΠΆΠ΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π‘ Π½ΠΈΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Β«ΠΊΠΎΡΠΎΡΠΊΠΈΠΉΒ» ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°Π³Π»ΡΠ΄Π½ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Skaffold Π² CI/CD-ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ
Skaffold ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΏΠΎΡΡΠΈ 8000+ Π·Π²Π΅Π·Π΄ Π½Π° GitHub, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Google ΠΈ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π²
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ Π² Kubernetes Β»; - Β«
werf β Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ CI/CD Π² Kubernetes (ΠΎΠ±Π·ΠΎΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°) Β»; - Β«
Garden v0.10.0: ΠΠ°ΡΠ΅ΠΌΡ Π½ΠΎΡΡΠ±ΡΠΊΡ Π½Π΅ Π½ΡΠΆΠ΅Π½ Kubernetes Β»; - Β«
Kubernetes tips & tricks: ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ Telepresence Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com