Knative - рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рд╕рдкреЛрд░реНрдЯрд╕рд╣ k8s-рдЖрдзрд╛рд░рд┐рдд рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо-рдПрдЬ-рдП-рд╕реЗрд╡рд╛

Knative - рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рд╕рдкреЛрд░реНрдЯрд╕рд╣ k8s-рдЖрдзрд╛рд░рд┐рдд рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо-рдПрдЬ-рдП-рд╕реЗрд╡рд╛

рдХрдВрдЯреЗрдирд░ рддреИрдирд╛рддреАрд╕рд╛рдареА Kubernetes рд╣реЗ рдирд┐рдГрд╕рдВрд╢рдпрдкрдгреЗ рдкреНрд░рдмрд│ рд╡реНрдпрд╛рд╕рдкреАрда рдмрдирд▓реЗ рдЖрд╣реЗ. рд╣реЗ рддреНрдпрд╛рдЪреЗ API рдЖрдгрд┐ рд╕рд╛рдиреБрдХреВрд▓ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд╛рдкрд░реВрди рдЬрд╡рд│рдЬрд╡рд│ рдХрд╛рд╣реАрд╣реА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЬреЗ рд╕рд╛рдиреБрдХреВрд▓ рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╕рд╣ рддреНрдпрд╛рдЪреЗ API рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛рдд.

рддрдерд╛рдкрд┐, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдЕрджреНрдпрд╛рдк рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдиреЗрдордХреЗ рдХрд╕реЗ рдЙрдкрдпреЛрдЬрд┐рдд, рдХреЙрдиреНрдлрд┐рдЧрд░, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рд╕реНрдХреЗрд▓ рдХрд░рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдирд┐рд░реНрдгрдп рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдХреЗрд▓рд┐рдВрдЧ, рд╕рдВрд░рдХреНрд╖рдг рдЖрдгрд┐ рд░рд╣рджрд╛рд░реА рдкреНрд░рд╡рд╛рд╣рд╛рдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рд╡реЗрдХрдмреБрджреНрдзреАрдиреБрд╕рд╛рд░ рд░рд╛рд╣рддрд╛рдд. рд╣реЗ Cloud Foundry рдЖрдгрд┐ Heroku рд╕рд╛рд░рдЦреНрдпрд╛ рд╕реЗрд╡рд╛ (PaaS) рдореНрд╣рдгреВрди рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордкреЗрдХреНрд╖рд╛ Kubernetes рд╡реЗрдЧрд│реЗ рдХрд░рддреЗ.

рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордордзреНрдпреЗ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрд╕рд╛рдареА рдЖрд╣реЗрдд рдЬреЗ рдмрд╣реБрддреЗрдХ рд╡реЗрд│рд╛ рд╡реИрдпрдХреНрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдд рдЧреБрдВрддрд▓реЗрд▓реЗ рдЕрд╕рддрд╛рдд. рд░реВрдЯрд┐рдВрдЧ, рдЙрдкрдпреЛрдЬрди рдЖрдгрд┐ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд PaaS рдкреНрд░рдгрд╛рд▓реАрджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рдкрд╛рд░рджрд░реНрд╢рдХрдкрдгреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

рд╕реНрддреНрд░реЛрдд-рдЯреВ-рд╢рд┐рдк рд╡рд░реНрдХрдлреНрд▓реЛ PaaS рджреНрд╡рд╛рд░реЗ рд╕рд╛рдиреБрдХреВрд▓ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░реВрди, рддреА рддреИрдирд╛рдд рдХрд░реВрди, рдирд╡реАрди рдорд╛рд░реНрдЧ рд╕реЗрдЯ рдХрд░реВрди рдЖрдгрд┐ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рд░рд╣рджрд╛рд░реАрд╕рд╛рдареА DNS рд╕рдмрдбреЛрдореЗрдирджреНрд╡рд╛рд░реЗ рд╣рд╛рддрд╛рд│рд▓реЗ рдЬрд╛рддреЗ. рд╣реЗ рд╕рд░реНрд╡ рдЖрджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рд╕реБрд░реВ рдХреЗрд▓реЗ рдЖрд╣реЗ git push.

Kubernetes (рдЬрд╛рдгреВрдирдмреБрдЬреВрди) рдЕрд╢рд╛ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдлрдХреНрдд рдореБрдЦреНрдп рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рдкреБрд░рд╡рддреЛ, рдЬреНрдпрд╛рдореБрд│реЗ рд╕рдореБрджрд╛рдпрд╛рд▓рд╛ рд╕реНрд╡рддрдГрдЪреЗ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рдореЛрдХрд│реАрдХ рдорд┐рд│рддреЗ. рдХрд╕реЗ рдХреЗрд▓реНрд╕реА рд╣рд╛рдпрдЯреЙрд╡рд░ рдореНрд╣рдгрд╛рд▓реЗ:

Kubernetes рд╣реЗ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╡реНрдпрд╛рд╕рдкреАрда рдЖрд╣реЗ. рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реНрдерд┐рддреА, рдкрд░рдВрддреБ рдкреВрд░реНрдг рдирд╛рд╣реА.

рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣реА Kubernetes рдмрд┐рд▓реНрдбрдЪрд╛ рдПрдХ рд╕рдореВрд╣ рдкрд╛рд╣рддреЛ, рддрд╕реЗрдЪ OpenShift рдЖрдгрд┐ Rancher рд╕рд╛рд░рдЦреНрдпрд╛ Kubernetes рд╕рд╛рдареА PaaS рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрдВрдкрдиреНрдпрд╛ рдкрд╛рд╣рддреЛ. рд╡рд╛рдврддреНрдпрд╛ Kube-PaaS рдорд╛рд░реНрдХреЗрдЯрдордзреНрдпреЗ, Google рдЖрдгрд┐ Pivotal рджреНрд╡рд╛рд░реЗ рдЬреБрд▓реИ 2018 рдордзреНрдпреЗ рд╕реНрдерд╛рдкрди рдХреЗрд▓реЗрд▓реА Knative, рд░рд┐рдВрдЧрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдд рдЖрд╣реЗ.

Knative рд╣реЗ IBM, RedHat рдЖрдгрд┐ Solo.im рд╕рд╛рд░рдЦреНрдпрд╛ рдЗрддрд░ рдХрдВрдкрдиреНрдпрд╛рдВрдЪреНрдпрд╛ рдереЛрдбреНрдпрд╛ рдорджрддреАрд╕рд╣ Google рдЖрдгрд┐ Pivotal рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рд╕рд╣рдХрд╛рд░реНрдп рд╣реЛрддреЗ. рд╣реЗ рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рдХреЙрдореНрдкреНрдпреБрдЯрд┐рдВрдЧ-рдЖрдзрд╛рд░рд┐рдд рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдорд░реНрдердирд╛рд╕рд╣ Kubernetes рд▓рд╛ рд╕рдорд╛рди PaaS рдЧреЛрд╖реНрдЯреА рдСрдлрд░ рдХрд░рддреЗ. Kubernetes рдмрд┐рд▓реНрдбрдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, Knative рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕реБрд╕рдВрдЧрдд Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдЕреЕрдб-рдСрди рдореНрд╣рдгреВрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрджреНрд╡рд╛рд░реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

Knative рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

Knative рдЪреЗ рд╡рд░реНрдгрди "рдЖрдзреБрдирд┐рдХ рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рдХрдВрдкреНрдпреБрдЯрд┐рдВрдЧ рд╡рд╛рдкрд░реВрди рд╡рд░реНрдХрд▓реЛрдб рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕-рдЖрдзрд╛рд░рд┐рдд рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо" рдЕрд╕реЗ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдиреЗрдЯрд┐рд╡реНрд╣, рд╕реНрд╡рддрдГрд▓рд╛ рдЕрд╕реЗ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдореНрд╣рдгреВрди рдмрд┐рд▓рд┐рдВрдЧ рдХрд░рддрд╛рдирд╛, рд╕рдорд╡рд░реНрддреА HTTP рд╡рд┐рдирдВрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рдХрдВрдЯреЗрдирд░ рдСрдЯреЛрд╕реНрдХреЗрд▓ рдХрд░рддреЗ. рди рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕реЗрд╡рд╛ рд╢реЗрд╡рдЯреА рд╢реВрдиреНрдпрд╛рд╡рд░ рдпреЗрддрд╛рдд, рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕-рд╕реНрдЯрд╛рдИрд▓ рдСрди-рдбрд┐рдорд╛рдВрдб рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд.

Knative рдордзреНрдпреЗ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕рдЪрд╛ рд╕рдВрдЪ рдЕрд╕рддреЛ рдЬреЛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рдЦрд╛рд▓реАрд▓ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЛ:

  • рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдордзреВрди рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░рдгреЗ (рдШрдЯрдХрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ рддрдпрд╛рд░ рдХрд░рд╛),
  • рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╡рд░ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдЯреНрд░реЕрдлрд┐рдХрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ (рдШрдЯрдХрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ рд╕реЗрд╡рд╛),
  • рдорд╛рдЧрдгреАрдиреБрд╕рд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдЪреЗ рд╡рд┐рддрд░рдг рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ (рдШрдЯрдХрд╛рджреНрд╡рд╛рд░реЗ рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЬрд╛рддреЗ рд╕реЗрд╡рд╛),
  • рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА (рдШрдЯрдХрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ) рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдВрдЪреЗ рд╕реНрддреНрд░реЛрдд рдУрд│рдЦрдгреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо).

рдПрдХ рдкреНрд░рдореБрдЦ рдШрдЯрдХ рдореНрд╣рдгрдЬреЗ рд╕рд░реНрд╡реНрд╣рд┐рдВрдЧ, рдЬреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╛рдареА рддрд░рддреВрдж, рд╕реНрд╡рдпрдВ-рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЖрдгрд┐ рд░рд╣рджрд╛рд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ. Knative рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЕрдЬреВрдирд╣реА Kubernetes API рдордзреНрдпреЗ рдкреВрд░реНрдг рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдорд┐рд│рддреЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рд░реНрдЧ, рдЖрдгрд┐ Knative рд╕реЗрд╡рд╛ рдбреАрдмрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдпрд╛ рд╕реЗрд╡рд╛ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рдорд╛рди API рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ (рдореЙрдбреНрдпреВрд▓, рд╕реЗрд╡рд╛ рдЗ.).

рд╕рд░реНрд╡реНрд╣рд┐рдВрдЧрдЪреНрдпрд╛ рдорджрддреАрдиреЗ, рдирд┐рд│реНрдпрд╛-рд╣рд┐рд░рд╡реНрдпрд╛ рдЯреНрд░реЕрдлрд┐рдХ рд░рд╛рдЙрдЯрд┐рдВрдЧ рджреЗрдЦреАрд▓ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЖрд╣реЗ, рдЬреЗрд╡реНрд╣рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреА рдЕрджреНрдпрдпрд╛рд╡рдд рдЖрд╡реГрддреНрддреА рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЛ рддреЗрд╡реНрд╣рд╛ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдирд╡реАрди рдЖрдгрд┐ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреАрд▓ рд░рд╣рджрд╛рд░реАрдЪреЗ рдкреГрдердХреНрдХрд░рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ.

Knative рд╕реНрд╡рддрдГ рд╕реБрд╕рдВрдЧрдд рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ. рд╣рд╛ рд▓реЗрдЦ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ рдЧреНрд▓реВ API рдЧреЗрдЯрд╡реЗ ╨╕ Istio рд╕реЗрд╡рд╛ рдЬрд╛рд│реА. рддреЗ рдиреЗрдЯрд┐рд╡реНрд╣-рдореЕрдиреЗрдЬреНрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдХрдбреЗ рд░рд╣рджрд╛рд░реА рдорд╛рд░реНрдЧреА рд▓рд╛рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдкреНрд░рд╡реЗрд╢ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реЗрд▓.

Istio рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢ рд╣реЗ 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
# ...

рдЖрдореНрд╣реА рддрдкрд╛рд╕рддреЛ рдХреА рд╕рд░реНрд╡ рдкреЙрдбреНрд╕ "рдЪрд╛рд▓рдд" рд╕реНрдерд┐рддреАрдд рдЖрд╣реЗрдд:

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 рд╕реЗрд╡рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд. рдЖрдореНрд╣реА рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░реВ:

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

рдореА рд╣реЗ рдПрдХрд╛ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдХреЙрдкреА рдХреЗрд▓реЗ, рдирдВрддрд░ рддреЗ рдорд╛рдЭреНрдпрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ:

kubectl apply -f ksvc.yaml -n default

рдЖрдордЪреЗ 'рд╣реЕрд▓реЛрд╡рд░реНрд▓реНрдб-рдЧреЛ' рдбрд┐рд▓рд┐рд╡реНрд╣рд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣реА рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ Knative рджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рд╕рдВрд╕рд╛рдзрдиреЗ рдкрд╛рд╣реВ рд╢рдХрддреЛ. 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 рдЕрдВрддрд░реНрдЧрдд Knative API рдордзреАрд▓ рд╡рд┐рд╢реЗрд╖ 'рдЗрдирдЧреНрд░реЗрд╕' рд╕рдВрд╕рд╛рдзрди рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рдЪреЗ рдкреНрд░рд╡реЗрд╢ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рддреЗ. рдирд┐рд│реНрдпрд╛-рд╣рд┐рд░рд╡реНрдпрд╛ рдЙрдкрдпреЛрдЬрди рдореЙрдбреЗрд▓, рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд TLS рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдХрд╛рд▓рдмрд╛рд╣реНрдпрддрд╛ рдЖрдгрд┐ рдЗрддрд░ рдкреНрд░рдЧрдд рд░реВрдЯрд┐рдВрдЧ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╕рд╣ PaaS рд╕рд╛рд░рдЦреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Gloo рд╣реЗ API рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рддреЗ.

рдХрд╛рд╣реА рдХрд╛рд│рд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдкрд╛рд╣рддреЛ рдХреА рдЖрдордЪреНрдпрд╛ рд╢реЗрдВрдЧрд╛ рдЧрд╛рдпрдм рдЭрд╛рд▓реНрдпрд╛ рдЖрд╣реЗрдд (рдХрд╛рд░рдг рдпреЗрдгрд╛рд░реА рд╡рд╛рд╣рддреВрдХ рдирд╡реНрд╣рддреА):

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

рд╢реЗрд╡рдЯреА рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ. рддреБрдореНрд╣реА рд╡рд╛рдкрд░реВрди Knative Proxy рд╕рд╛рдареА URL рд╕рд╣рдЬ рдЖрдгрд┐ рд╕рд╣рдЬ рдорд┐рд│рд╡реВ рд╢рдХрддрд╛ 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 Gloo рдЪреЗ рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдкреВрд░реНрдг-рд╕реНрдЯреЕрдХ API рдЧреЗрдЯрд╡реЗ рд╡рд╛рдкрд░реВрди рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ Kubernetes рд╡рд░ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрд╕рд╛рдареА рдЬрд╡рд│рдЬрд╡рд│-PaaS рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдпрд╛ рдкреЛрд╕реНрдЯрдиреЗ рдХреЗрд╡рд│ Knative рдЪреНрдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╕рд╛рдиреБрдХреВрд▓рди рдкрд░реНрдпрд╛рдп рдЖрдгрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪрд╛ рдкреГрд╖реНрдарднрд╛рдЧ рд╕реНрдХреНрд░реЕрдЪ рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдЧреНрд▓реВ рдмрд░реЛрдмрд░рдЪ!

Knative рдЕрдЬреВрдирд╣реА рдПрдХ рддрд░реБрдг рдкреНрд░рдХрд▓реНрдк рдЕрд╕реВрдирд╣реА, рддреНрдпрд╛рдЪреА рдЯреАрдо рджрд░ рд╕рд╣рд╛ рдЖрдард╡рдбреНрдпрд╛рдВрдиреА рдирд╡реАрди рдЖрд╡реГрддреНрддреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд TLS рдЙрдкрдпреЛрдЬрди, рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓рдЪреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рдЧрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реБрд░реВ рдЭрд╛рд▓реА рдЖрд╣реЗ. рдЕрдиреЗрдХ рдХреНрд▓рд╛рдЙрдб рдХрдВрдкрдиреНрдпрд╛рдВрдордзреАрд▓ рд╕рд╣рдХрд╛рд░реНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдгреВрди рдЖрдгрд┐ Google рдЪреНрдпрд╛ рдирд╡реАрди рдХреНрд▓рд╛рдЙрдб рд░рди рдСрдлрд░рдЪрд╛ рдЖрдзрд╛рд░ рдореНрд╣рдгреВрди, Knative рд╣рд╛ рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рдХреЙрдореНрдкреНрдпреБрдЯрд┐рдВрдЧ рдЖрдгрд┐ Kubernetes рд╡рд░ PaaS рд╕рд╛рдареА рдкреНрд░рд╛рдердорд┐рдХ рдкрд░реНрдпрд╛рдп рдмрдирдгреНрдпрд╛рдЪреА рдЪрд╛рдВрдЧрд▓реА рд╕рдВрдзреА рдЖрд╣реЗ. рдмрд╛рддрдореНрдпрд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛!

SouthBridge рдЪреНрдпрд╛ рд╕рдВрдкрд╛рджрдХрд╛рдВрдХрдбреВрди
рд╡рд╛рдЪрдХрд╛рдВрдЪреА рдорддреЗ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдорд╣рддреНрддреНрд╡рд╛рдЪреА рдЖрд╣реЗрдд, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ Knative, Kubernetes, рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рд╕рдВрдЧрдгрдирд╛рд╡рд┐рд╖рдпреА рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рд▓реЗрдЦрд╛рдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдПрдХрд╛ рд▓рд╣рд╛рди рд╕рд░реНрд╡реЗрдХреНрд╖рдгрд╛рдд рднрд╛рдЧ рдШреЗрдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрддреЛ:

рдХреЗрд╡рд│ рдиреЛрдВрджрдгреАрдХреГрдд рд╡рд╛рдкрд░рдХрд░реНрддреЗрдЪ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрд╛рдд рднрд╛рдЧ рдШреЗрдК рд╢рдХрддрд╛рдд. рд╕рд╛рдЗрди рдЗрди рдХрд░рд╛, рдЖрдкрд▓реЗ рд╕реНрд╡рд╛рдЧрдд рдЖрд╣реЗ.

рдореА рдиреЗрдЯрд┐рд╡реНрд╣ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рдХрдВрдкреНрдпреБрдЯрд┐рдВрдЧрдмрджреНрджрд▓ рд▓реЗрдЦ рдЖрдгрд┐ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд▓рд┐рд╣рд┐рдгреЗ рд╕реБрд░реВ рдареЗрд╡рд╛рд╡реЗ рдХрд╛?

  • рд╣реЛрдп рдХрд░рд╛.

  • рдирдХреЛ рдзрдиреНрдпрд╡рд╛рдж.

28 рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдиреА рдорддрджрд╛рди рдХреЗрд▓реЗ. 4 рд╡рд╛рдкрд░рдХрд░реНрддреЗ рджреВрд░ рд░рд╛рд╣рд┐рд▓реЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

DDoS рд╕рдВрд░рдХреНрд╖рдг, VPS VDS рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдЗрдЯрд╕рд╛рдареА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реЗрджреА рдХрд░рд╛ ЁЯФе рдбреАрдбреЙрд╕ рд╕рдВрд░рдХреНрд╖рдгрд╛рд╕рд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ, рд╡реНрд╣реАрдкреАрдПрд╕ (VPS) рд╡реНрд╣реАрдбреАрдПрд╕ (VDS) рд╕рд░реНрд╡реНрд╣рд░реНрд╕ рдЦрд░реЗрджреА рдХрд░рд╛ | ProHoster