Knative - Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° k8s ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ услуга с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π±Π΅Π· ΡΡŠΡ€Π²ΡŠΡ€

Knative - Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° k8s ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ услуга с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π±Π΅Π· ΡΡŠΡ€Π²ΡŠΡ€

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 ΠΈ прСдоставят слСднитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ:

  • ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ прилоТСния ΠΎΡ‚ изходния ΠΊΠΎΠ΄ (осигурСн ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅),
  • прСдоставянС Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към прилоТСнията (осигурСн ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π‘Π΅Ρ€Π²ΠΈΡ€Π°Π½Π΅),
  • доставка ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° прилоТСния ΠΏΡ€ΠΈ поискванС (осигурСно ΡΡŠΡ‰ΠΎ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π‘Π΅Ρ€Π²ΠΈΡ€Π°Π½Π΅),
  • ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, Π²ΠΎΠ΄Π΅Ρ‰ΠΈ Π΄ΠΎ стартиранС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (осигурСно ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π‘ΡŠΠ±ΠΈΡ‚ΠΈΠ΅).

ΠšΠ»ΡŽΡ‡ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΅ обслуТванСто, ΠΊΠΎΠ΅Ρ‚ΠΎ осигурява осигуряванС, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π° управлявани прилоТСния. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ инсталиратС Knative, всС ΠΎΡ‰Π΅ ΠΈΠΌΠ°Ρ‚Π΅ пълСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Kubernetes API, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° управляват прилоТСния ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° слуТи Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² Knative услуги, ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ със ΡΡŠΡ‰ΠΈΡ‚Π΅ API ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Π΅Π·ΠΈ услуги ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, услуги ΠΈ Ρ‚.Π½.).

Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Serving синьо-Π·Π΅Π»Π΅Π½ΠΎΡ‚ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΡΡŠΡ‰ΠΎ Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ, ΠΊΠ°Ρ‚ΠΎ сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° раздСлянС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ²Π°Ρ‚Π° ΠΈ старата вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ потрСбитСлят достави Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Бамият Knative зависи ΠΎΡ‚ инсталиранСто Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ Π²Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. Към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° писанС Ρ‚Π°Π·ΠΈ статия сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Gloo API Gateway ΠΈ Istio Service Mesh. Π’ΠΎΠΉ Ρ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° наличния Π²Ρ…ΠΎΠ΄ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към прилоТСния, управлявани ΠΎΡ‚ Knative.

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 са Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ β€žΠ Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈβ€œ:

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

ΠŸΠΎΠ΄ΡŠΡ‚ с Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€žhelloworld-goβ€œ сС стартира, ΠΊΠΎΠ³Π°Ρ‚ΠΎ kservice Π΅ Ρ€Π°Π·Π³ΡŠΡ€Π½Π°Ρ‚Π°. Ако няма Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, броят Π½Π° капсулитС Ρ‰Π΅ бъдС Π½Π°ΠΌΠ°Π»Π΅Π½ Π΄ΠΎ Π½ΡƒΠ»Π°. И ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΡ‚ΠΎ, Π°ΠΊΠΎ броят Π½Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ заявки надвишава ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€Π°Π³, броят Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Ρ‰Π΅ сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ.

kubectl get ingresses.networking.internal.knative.dev -n default
NAME            READY   REASON
helloworld-go   True

Knative ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° Π²Ρ…ΠΎΠ΄Π° си с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° спСциалСн рСсурс β€žingressβ€œ във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ API Π½Π° Knative. Gloo ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚ΠΎΠ·ΠΈ API ΠΊΠ°Ρ‚ΠΎ своя конфигурация, Π·Π° Π΄Π° прСдостави Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° PaaS, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ синьо-Π·Π΅Π»Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° внСдряванС, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π½Π°Π»Π°Π³Π°Π½Π΅ Π½Π° TLS, ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅.

Π‘Π»Π΅Π΄ извСстно Π²Ρ€Π΅ΠΌΠ΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ са ΠΈΠ·Ρ‡Π΅Π·Π½Π°Π»ΠΈ (Π·Π°Ρ‰ΠΎΡ‚ΠΎ нямашС входящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ):

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:

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, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° контролния ΠΏΠ°Π½Π΅Π». Има голям шанс, Ρ‡Π΅ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΡ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ мноТСство ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ ΠΊΠ°Ρ‚ΠΎ основа Π½Π° Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Google Cloud Run, Knative ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ Π² основната опция Π·Π° изчислСния Π±Π΅Π· ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ PaaS Π½Π° Kubernetes. Π‘Π»Π΅Π΄Π΅Ρ‚Π΅ Π½ΠΎΠ²ΠΈΠ½ΠΈΡ‚Π΅!

ΠžΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° SouthBridge
ΠœΠ½Π΅Π½ΠΈΡΡ‚Π° Π½Π° Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ са Π²Π°ΠΆΠ½ΠΈ Π·Π° нас, Π·Π°Ρ‚ΠΎΠ²Π° Π²ΠΈ ΠΌΠΎΠ»ΠΈΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ участиС Π² ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с Π±ΡŠΠ΄Π΅Ρ‰ΠΈ статии Π·Π° Knative, Kubernetes, Π±Π΅Π·ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ:

Π’ Π°Π½ΠΊΠ΅Ρ‚Π°Ρ‚Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° участват само рСгистрирани ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. Π’ΠΏΠΈΡˆΠΈ сС, Моля Ρ‚Π΅.

Врябва Π»ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ° Π΄Π° пиша статии ΠΈ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²Π° Π·Π° Knative ΠΈ ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ Π±Π΅Π· ΡΡŠΡ€Π²ΡŠΡ€?

  • Π”Π° моля.

  • НС благодаря.

28 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ гласуваха. 4 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ сС Π²ΡŠΠ·Π΄ΡŠΡ€ΠΆΠ°Ρ…Π°.

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

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