ΠΠΎΠΌΠΈΠ½ΠΈΡΡΡΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ, ΡΡΠ°Π» Kubernetes. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠΈ API ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΡΠ°ΡΡΠΈΡΡΡΡΠΈΠ΅ Π΅Π³ΠΎ API ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ².
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ, ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ° ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΡΠ°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΡΠΈΡΡ, ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΡΠΈΠΌ Kubernetes ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ «ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΊΠ°ΠΊ ΡΡΠ»ΡΠ³Π°» (PaaS), ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ Cloud Foundry ΠΈ Heroku.
ΠΠ»Π°ΡΡΠΎΡΠΌΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ PaaS.
Π Π°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ βΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ β ΠΏΠΎΡΡΠ°Π²ΠΊΠ°β ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ PaaS ΠΏΡΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π΅Π³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΡΡΠ° ΠΈ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Π° DNS Π΄Π»Ρ Π²Ρ
ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ΅ ΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git push
.
Π Kubernetes (ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΊ
Kubernetes β ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. ΠΡΡΡΠ°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π΄Π»Ρ ΡΡΠ°ΡΡΠ°, Π½ΠΎ Π½Π΅ ΡΠΈΠ½ΠΈΡΠ°.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠ°ΡΠΊΡ ΡΠ±ΠΎΡΠΎΠΊ Kubernetes, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΡΠΈΠ½Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠ°ΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ PaaS Π΄Π»Ρ Kubernetes, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ OpenShift ΠΈ Rancher. ΠΠ° ΡΠΎΠ½Π΅ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΠ° Kube-PaaS Π½Π° ΡΠΈΠ½Π³ Π²ΡΡ ΠΎΠ΄ΠΈΡ Knative, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² ΠΈΡΠ»Π΅ 2018 Π³ΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ Google ΠΈ Pivotal.
Knative ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Google ΠΈ Pivotal, ΠΏΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ IBM, RedHat ΠΈ Solo.im. ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ PaaS Π²Π΅ΡΠΈ Π΄Π»Ρ Kubernetes Ρ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ±ΠΎΡΠΎΠΊ Kubernetes, Knative ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Knative?
Knative ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ «ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Kubernetes Π΄Π»Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠ°Π±ΠΎΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ». Knative, ΠΎΠ±ΡΡΠ²Π»ΡΡ ΡΠ΅Π±Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ, Π°ΠΊΡΠΈΠ²Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ HTTP. ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ Π΄ΠΎ Π½ΡΠ»Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠΈΠ»Π΅ Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
Knative ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ², ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- ΡΠ±ΠΎΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ Build),
- ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΌΡ ΡΡΠ°ΡΠΈΠΊΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ (ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ Serving),
- ΠΏΠΎΡΡΠ°Π²ΠΊΠ° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ (ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ Serving),
- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ Eventing).
ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Serving, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Knative Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ API Kubernetes, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Knative, ΡΠ°Π±ΠΎΡΠ°Ρ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π°ΠΌΠΈ API, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ (ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ Ρ.ΠΏ.).
C ΠΏΠΎΠΌΠΎΡΡΡ Serving ΡΠ°ΠΊΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ blue-green ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΈ ΡΡΠ°ΡΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π‘Π°ΠΌ Knative Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ ingress ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ
Istio Service Mesh ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Knative, ΠΆΠ΅Π»Π°ΡΡΠΈΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Istio, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Knative Π·Π°Π²ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΡΠ»ΡΠ·Π°.
ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ Gloo Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»ΡΠ·Π° Π΄Π»Ρ Knative, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΡ ΠΎΠ΄Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Ρ Istio (Π΅ΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Knative), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ Π΄Π°ΡΡΠ΅Π³ΠΎ ΠΌΠ΅Π½ΡΡΠΈΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Knative Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π½Π° ΡΡΠ΅Π½Π΄Π΅. Π― Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²Π΅ΠΆΠ΅ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ Π² GKE:
kubectl get namespace
NAME STATUS AGE
default Active 21h
kube-public Active 21h
kube-system Active 21h
ΠΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Knative ΠΈ Gloo. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
# ΡΡΠ°Π²ΠΈΠΌ Knative-Serving
kubectl apply -f
https://github.com/knative/serving/releases/download/v0.8.0/serving-core.yaml
namespace/knative-serving created
# ...
# ΡΡΠ°Π²ΠΈΠΌ Gloo
kubectl apply -f
https://github.com/solo-io/gloo/releases/download/v0.18.22/gloo-knative.yaml
namespace/gloo-system created
# ...
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ Π²ΡΠ΅ Pods Π² ΡΡΠ°ΡΡΡΠ΅ «Running»:
kubectl get pod -n knative-serving
NAME READY STATUS RESTARTS AGE
activator-5dd55958cc-fkp7r 1/1 Running 0 7m32s
autoscaler-fd66459b7-7d5s2 1/1 Running 0 7m31s
autoscaler-hpa-85b5667df4-mdjch 1/1 Running 0 7m32s
controller-85c8bb7ffd-nj9cs 1/1 Running 0 7m29s
webhook-5bd79b5c8b-7czrm 1/1 Running 0 7m29s
kubectl get pod -n gloo-system
NAME READY STATUS RESTARTS AGE
discovery-69548c8475-fvh7q 1/1 Running 0 44s
gloo-5b6954d7c7-7rfk9 1/1 Running 0 45s
ingress-6c46cdf6f6-jwj7m 1/1 Running 0 44s
knative-external-proxy-7dd7665869-x9xkg 1/1 Running 0 44s
knative-internal-proxy-7775476875-9xvdg 1/1 Running 0 44s
Gloo Π³ΠΎΡΠΎΠ² ΠΊ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ Knative (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ kservice) ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π΅ΠΌΡ ΡΡΠ°ΡΠΈΠΊ.
Π‘Π΅ΡΠ²ΠΈΡΡ Knative ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΉ ΠΏΡΡΡ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes β ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ Deployment+Service+Ingress. ΠΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ:
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go
env:
- name: TARGET
Value: Knative user
Π― ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» ΡΡΠΎ Π² ΡΠ°ΠΉΠ», Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» Π΅Π³ΠΎ ΠΊ ΠΌΠΎΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Kubernetes ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
kubectl apply -f ksvc.yaml -n default
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ΅ΡΡΡΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Knative Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ ‘helloworld-go’ kservice:
kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8 2/2 Running 0 68s
Pod Ρ Π½Π°ΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ‘helloworld-go’ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ kservice. ΠΡΠ»ΠΈ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ β ΡΠΈΡΠ»ΠΎ pod’ΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ Π΄ΠΎ Π½ΡΠ»Ρ. Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠ΅Π²ΡΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΠΈΡΠ»ΠΎ pod’ΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈ.
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go True
Knative Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉ ingress Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ‘ingress’ ΡΠ΅ΡΡΡΡΠ° Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ API Knative. Gloo Π±Π΅ΡΠ΅Ρ ΡΡΠΎΡ API Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΏΡΠΈΡΡΡΠΈΡ PaaS, Π²ΠΊΠ»ΡΡΠ°Ρ blue-green ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ TLS, ΡΠ°ΠΉΠΌΠ°ΡΡΡ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ΠΏΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π½Π°ΡΠΈ pod`Ρ ΠΈΡΡΠ΅Π·Π»ΠΈ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ Π±ΡΠ»ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°):
kubectl get pod -n default
No resources found.
kubectl get deployment -n default
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
helloworld-go-fjp75-deployment 0 0 0 0 9m46s
ΠΠ°ΠΊΠΎΠ½Π΅Ρ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π΄ΠΎ Π½ΠΈΡ
Π΄ΠΎΡΡΡΡΠ°ΡΡΡΡ. ΠΠΎΠ»ΡΡΠΈΡΡ URL Π΄Π»Ρ Knative Proxy Π»Π΅Π³ΠΊΠΎ ΠΈ Π½Π΅ΠΏΡΠΈΠ½ΡΠΆΠ΄Π΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ glooctl
:
glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80
ΠΠ΅Π· ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ glooctl
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΌΠΎΡΡΠ΅ΡΡ Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ Π² kube service:
kubectl get svc -n gloo-system knative-external-proxy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
knative-external-proxy LoadBalancer 10.16.11.157 35.190.151.188 80:32168/TCP,443:30729/TCP 77m
ΠΡΠΎΠ³ΠΎΠ½ΠΈΠΌ ΡΡΡΠΊΠ° Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ cURL:
curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!
Knative ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΡΡΠΈ-PaaS Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΠΎΠ²Π΅ΡΡ «ΠΈΠ·ΠΊΠΎΡΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ» Kubernetes, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ»ΡΠ· API Gloo. ΠΡΠ° Π·Π°ΠΌΠ΅ΡΠΊΠ° Π»ΠΈΡΡ ΡΠ»Π΅Π³ΠΊΠ° ΠΊΠΎΡΠ½ΡΠ»Π°ΡΡ ΠΎΠ±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Knative, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΈ Ρ Gloo!
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Knative Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΡΡΠΊΠ°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΡΠ΅ΡΡΡ Π½Π΅Π΄Π΅Π»Ρ, Π½Π°ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ TLS, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΡΡ Π²ΡΡΠΎΠΊΠ°Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Cloud Run ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google, Knative ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ PaaS Π² Kubernetes. Π‘Π»Π΅Π΄ΠΈΡΠ΅ Π·Π° Π½ΠΎΠ²ΠΎΡΡΡΠΌΠΈ!
ΠΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΈ SouthBridge
ΠΠ°ΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΡΠΎΡΠΈΠΌ Π²Π°Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΎΠΏΡΠΎΡΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ Π±ΡΠ΄ΡΡΠΈΠΌΠΈ ΡΡΠ°ΡΡΡΠΌΠΈ ΠΎ Knative, Kubernetes, Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ
:
Π’ΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΡΠΎΡΠ΅.
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΠΏΠΈΡΠ°ΡΡ Π΄Π°Π»ΡΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΎ Knative ΠΈ Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ?
-
ΠΠ°, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°.
-
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, Π½Π΅ Π½Π°Π΄ΠΎ.
ΠΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 28 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ·Π΄Π΅ΡΠΆΠ°Π»ΠΈΡΡ 4 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com