Knative - k8s-based platform-as-a-service αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ

Knative - k8s-based platform-as-a-service αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ

Kubernetes αž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž€αŸ’αž›αžΆαž™αž‡αžΆαžœαŸαž‘αž·αž€αžΆαž›αŸαž…αž’αŸ’αž›αŸ„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž»αž„αžαžΊαž“αŸαžšαŸ” αžœαžΆαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎ APIs αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŠαŸ‚αž›αž–αž„αŸ’αžšαžΈαž€ APIs αžšαž”αžŸαŸ‹αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αž“αž’αžΆαž“αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ αž“αž·αž„αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš αž“αž·αž„αž›αŸ†αž αžΌαžšαž…αžšαžΆαž…αžšαžŽαŸαž“αŸ…αžαŸ‚αžŸαŸ’αžαž·αžαž›αžΎαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αžœαžΆαž€αŸ†αžŽαžαŸ‹ Kubernetes αž€αŸ’αžšαŸ…αž–αžΈαžœαŸαž‘αž·αž€αžΆαž’αž˜αŸ’αž˜αžαžΆαž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ (PaaS) αžŠαžΌαž…αž‡αžΆ Cloud Foundry αž“αž·αž„ Heroku αž‡αžΆαžŠαžΎαž˜αŸ”

αžœαŸαž‘αž·αž€αžΆαž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰ αž αžΎαž™αž˜αžΆαž“αž‚αŸ„αž›αž”αŸ†αžŽαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž‡αžΆαž”αŸ‹αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΈαž˜αž½αž™αŸ—αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž“αž·αž„αž˜αŸ‰αŸ‚αžαŸ’αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αžαž˜αŸ’αž›αžΆαž—αžΆαž–αž…αŸ†αž–αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’ PaaS αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ”

αž›αŸ†αž αžΌαžšαž€αžΆαžšαž„αžΆαžšαž–αžΈαž”αŸ’αžšαž—αž–αž‘αŸ…αž“αžΆαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™ PaaS αžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αž—αžΆαž–αž€αž»αž„αžαžΊαž“αŸαžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžœαžΆ αžšαŸ€αž”αž…αŸ†αž•αŸ’αž›αžΌαžœαžαŸ’αž˜αžΈ αž“αž·αž„αžŠαŸ‚αž“αžšαž„ DNS αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αžšαžΆαž…αžšαžŽαŸαž…αžΌαž›αŸ” αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αž“αŸ…αž›αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ git push.

Kubernetes (αžŠαŸ„αž™αž…αŸαžαž“αžΆ) αž•αŸ’αžαž›αŸ‹αžαŸ‚αž”αŸ’αž›αž»αž€αž’αž‚αžΆαžšαžŸαŸ’αž“αžΌαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆαž”αŸ‚αž”αž“αŸαŸ‡ αžŠαŸ„αž™αž‘αž»αž€αž±αŸ’αž™αžŸαž αž‚αž˜αž“αŸαž˜αžΆαž“αžŸαŸαžšαžΈαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž„αžΆαžšαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ” αž˜αŸ‰αŸαž… Kelsey Hightower αž”αžΆαž“αž“αž·αž™αžΆαž™:

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 αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαŸ” αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αžαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž…αž»αŸ‡αžŠαž›αŸ‹αžŸαžΌαž“αŸ’αž™ αžŠαŸ„αž™αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžαžΆαž˜αž”αŸ‚αž” serverless αŸ”

Knative αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αžŽαžΆαž˜αž½αž™ αž αžΎαž™αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž»αž„αžαžΊαž“αŸαžšαž–αžΈαž€αžΌαžŠαž”αŸ’αžšαž—αž– (αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αžŸαž˜αžΆαžŸαž—αžΆαž‚ αž€αžŸαžΆαž„),
  • αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž…αžšαžΆαž…αžšαžŽαŸαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αžŸαž˜αžΆαžŸαž—αžΆαž‚ αž€αžΆαžšαž”αž˜αŸ’αžšαžΎ),
  • αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžš (αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αžŸαž˜αžΆαžŸαž—αžΆαž‚αž•αž„αžŠαŸ‚αžšαŸ” αž€αžΆαžšαž”αž˜αŸ’αžšαžΎ),
  • αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž”αŸ’αžšαž—αž–αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αžŸαž˜αžΆαžŸαž—αžΆαž‚ αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ).

αžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αž‚αžΊαž€αžΆαžšαž”αž˜αŸ’αžšαžΎ αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž•αŸ’αžαž›αŸ‹ αž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž“αž·αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„ Knative αž’αŸ’αž“αž€αž“αŸ…αžαŸ‚αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αŸαž‰αž›αŸαž‰αž‘αŸ…αž€αžΆαž“αŸ‹ Kubernetes API αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž’αž˜αŸ’αž˜αžαžΆ αžœαž·αž’αžΈ αž αžΎαž™β€‹αž€αŸβ€‹αž”αž˜αŸ’αžšαžΎβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž”αŸ†αž”αžΆαžαŸ‹β€‹αž€αŸ†αž αž»αžŸβ€‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžŠαŸ„αž™β€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„ API primitives αžŠαžΌαž…αž‚αŸ’αž“αžΆβ€‹αžŠαŸ‚αž›β€‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜β€‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡β€‹αž”αŸ’αžšαžΎ (αž˜αŸ‰αžΌαžŒαž»αž› αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜β€‹αŸ”αž›αŸ”)αŸ”

αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž–αžΈαž€αžΆαžšαž”αž˜αŸ’αžšαžΎ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœαž…αžšαžΆαž…αžšαžŽαŸαž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„αž€αŸαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž•αž„αžŠαŸ‚αžš αžŠαŸ‚αž›αž’αžΆαž“αžΆαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€αž…αžšαžΆαž…αžšαžŽαŸαžšαžœαžΆαž„αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈ αž“αž·αž„αž€αŸ†αžŽαŸ‚αž…αžΆαžŸαŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αžαž›αŸ‹αž€αŸ†αžŽαŸ‚αž’αžΆαž”αŸ‹αžŠαŸαžαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

Knative αžαŸ’αž›αž½αž“αžœαžΆαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ ingress αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ” αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžš Gloo API Gateway ΠΈ Istio Service Mesh. αžœαžΆβ€‹αž“αžΉαž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αž€αžΆαžšβ€‹αž…αžΌαž›β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž”αž‰αŸ’αž‡αžΌαž“β€‹αž…αžšαžΆαž…αžšαžŽαŸβ€‹αž‘αŸ…β€‹αž€αžΆαž“αŸ‹β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αžŠαŸ‚αž›β€‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„β€‹αžŠαŸ„αž™β€‹αž“αž·αž˜αŸ’αž˜αž·αžαŸ”

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 αžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αž“αž’αžΆαž“ 'ingress' αž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„ Knative API αžαžΆαž„αž€αŸ’αž“αž»αž„αŸ” 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 αž€αŸ’αžšαŸ…αž”αŸ’αžšαž’αž”αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎ Gloo αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹ αž…αŸ’αžšαž€ API αž‡αž„αŸ‹αž–αŸαž‰αž›αŸαž‰αŸ” αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‚αžΌαžŸαž›αžΎαž•αŸ’αž‘αŸƒαž“αŸƒαž‡αž˜αŸ’αžšαžΎαžŸαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αžŠαŸαž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αžšαž”αžŸαŸ‹ Knative αž“αž·αž„αž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™ Gloo!

αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆ Knative αž“αŸ…αžαŸ‚αž‡αžΆαž‚αž˜αŸ’αžšαŸ„αž„αžœαŸαž™αž€αŸ’αž˜αŸαž„αž€αŸαžŠαŸ„αž™ αž€αŸαž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αžœαžΆαž…αŸαž‰αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαžšαŸ€αž„αžšαžΆαž›αŸ‹αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αžŸαž”αŸ’αžαžΆαž αŸαž˜αŸ’αžαž„ αž αžΎαž™αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αž»αžαž„αžΆαžšαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ TLS αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž•αŸ’αž‘αžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΆαŸ” αž˜αžΆαž“αž±αž€αžΆαžŸαžŠαŸαž›αŸ’αž’αžŠαŸ‚αž› αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž αž€αžΆαžšαžšαžœαžΆαž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž–αž–αž€αž‡αžΆαž…αŸ’αžšαžΎαž“ αž“αž·αž„αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž‡αžΌαž“ Cloud Run αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹ Google Knative αž’αžΆαž…αž€αŸ’αž›αžΆαž™αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž…αž˜αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž‚αŸ’αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž“αž·αž„ PaaS αž“αŸ…αž›αžΎ Kubernetes αŸ” αžαžΆαž˜αžŠαžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“!

αž–αžΈαž’αŸ’αž“αž€αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› SouthBridge
αž˜αžαž·αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αžΆαž“αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž…αŸ†αž–αŸ„αŸ‡αž™αžΎαž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžŸαŸ’αž“αžΎαž±αŸ’αž™αž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αžαŸ’αž›αžΈαž˜αž½αž™αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž’αžαŸ’αžαž”αž‘αž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αžαž’αŸ†αž–αžΈ Knative, Kubernetes, αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž‚αŸ’αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ–

αž˜αžΆαž“αžαŸ‚αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž“αŸαŸ‡αŸ” αž…αžΌαž›αžŸαžΌαž˜αŸ”

αžαžΎαžαŸ’αž‰αž»αŸ†αž‚αž½αžšαž”αž“αŸ’αžαžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘ αž“αž·αž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαž‚αžŽαž“αžΆαžŠαŸ‚αž›αž˜αž·αž“αž…αŸαŸ‡αžšαžΈαž„αžŸαŸ’αž„αž½αž αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ?

  • αž”αžΆαž‘ αžŸαžΌαž˜αŸ”

  • αž’αžαŸ‹αž’αžΈβ€‹αž‘αŸβ€‹αž’αžšαž‚αž»αžŽβ€‹αž αžΎαž™αŸ”

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 28 αž“αžΆαž€αŸ‹αž”αžΆαž“αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ ៦៣ αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹