Knative β€” ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°ΠΊ услуга Π½Π° основС k8s с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ serverless

Knative — ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°ΠΊ услуга Π½Π° основС k8s с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ serverless

Π”ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для развСртывания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², нСсомнСнно, стал 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 ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Gloo API Gateway ΠΈ Istio Service Mesh. Он настроит доступный ingress для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΊ управляСмым посрСдством 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 Π² статусС «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