Knative - рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде k8s рдЖрдзрд╛рд░рд┐рдд рд╕реЗрд╡рд╛ рдордВрдЪ

Knative - рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде k8s рдЖрдзрд╛рд░рд┐рдд рд╕реЗрд╡рд╛ рдордВрдЪ

Kubernetes рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрди рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрдкрдиреЗ API рдФрд░ рдХрд╕реНрдЯрдо рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ API рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрднреА рднреА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рддреИрдирд╛рдд, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░, рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░реЗ, рдЙрд╕реЗ рдХреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░реЗ рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдХреИрд╕реЗ рд░реВрдЯ рдХрд░реЗред рдпрд╣реАрдВ рдкрд░ Kubernetes рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдВрдбреНрд░реА рдФрд░ Heroku рдЬреИрд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдРрдЬрд╝ рдЕ рд╕рд░реНрд╡рд┐рд╕ (PaaS) рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИред

рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рд╣реИ рдЬреЛ рдЕрдХреНрд╕рд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рд░реВрдЯрд┐рдВрдЧ, рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдФрд░ рдореАрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд PaaS рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрд░реЛрдд-рд╕реЗ-рдбрд┐рд▓реАрд╡рд░реА рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ PaaS рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХрд╕реНрдЯрдо рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдХрд░, рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд░рдХреЗ, рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд░реВрдЯ рдФрд░ DNS рд╕рдмрдбреЛрдореЗрди рд╕реЗрдЯ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рднреА рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ git push.

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ (рдЬрд╛рдирдмреВрдЭрдХрд░) рдРрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рд░реНрдорд╛рдг рдЦрдВрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдореБрджрд╛рдп рдХреЛ рд╕реНрд╡рдпрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдХреЗрд▓реНрд╕реА рд╣рд╛рдИрдЯреЙрд╡рд░ рдиреЗ рдХрд╣рд╛:

Kubernetes рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИред рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣, рд▓реЗрдХрд┐рди рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

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

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

рдиреЗрдЯрд┐рд╡ рдХреНрдпрд╛ рд╣реИ?

Knative рдХреЛ "рдЖрдзреБрдирд┐рдХ рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрднрд╛рд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Kubernetes-рдЖрдзрд╛рд░рд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Knative, рдЦреБрдж рдХреЛ рдРрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рддреЗ рд╣реБрдП, рд╕рдорд╡рд░реНрддреА HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рддрд╛ рд╣реИред рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЕрдВрддрддрдГ рд╢реВрдиреНрдп рдкрд░ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░рд▓реЗрд╕-рд╢реИрд▓реА рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдСрди-рдбрд┐рдорд╛рдВрдб рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

Knative рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖рдорддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рд╕реНрд░реЛрдд рдХреЛрдб (рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛) рд╕реЗ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдмрдирд╛рдПрдБ),
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рддрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ (рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛) рд╕реЗрд╡рд┐рдд),
  • рдорд╛рдВрдЧ рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдбрд┐рд▓реАрд╡рд░реА рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓рд┐рдВрдЧ (рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рднреА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ) рд╕реЗрд╡рд┐рдд),
  • рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ (рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛) рдИрд╡реЗрдВрдЯреАрдЧ).

рдореБрдЦреНрдп рдШрдЯрдХ рд╕рд░реНрд╡рд┐рдВрдЧ рд╣реИ, рдЬреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╡рдзрд╛рди, рдСрдЯреЛ-рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Knative рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, Kubernetes API рддрдХ рдкреВрд░реНрдг рдкрд╣реБрдБрдЪ рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдзрд┐, рдФрд░ Knative рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реА API рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпреЗ рд╕реЗрд╡рд╛рдПрдВ рдХрд░рддреА рд╣реИрдВ (рдореЙрдбреНрдпреВрд▓, рд╕реЗрд╡рд╛рдПрдВ, рдЖрджрд┐)ред

рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╕реЗ рдмреНрд▓реВ-рдЧреНрд░реАрди рдЯреНрд░реИрдлрд┐рдХ рд░реВрдЯрд┐рдВрдЧ рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХрд╛ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЯреНрд░реИрдлрд┐рдХ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рдирдП рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

Knative рдЦреБрдж рдПрдХ рд╕рдВрдЧрдд рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдЧреНрд▓реВ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ ╨╕ рдЗрд╕реНрддрд┐рдпреЛ рд╕рд░реНрд╡рд┐рд╕ рдореЗрд╢рдпрд╣ Knative-рдкреНрд░рдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЗрдирдЧреНрд░реЗрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред

Istio рд╕рд░реНрд╡рд┐рд╕ рдореЗрд╢ Knative рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ Istio рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдорд╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ Knative рдХреЗрд╡рд▓ рдЧреЗрдЯрд╡реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Knative рдХреЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ Gloo рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ 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

рдЧреНрд▓реВ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдЖрдЗрдП рдПрдХ рдСрдЯреЛ-рд╕реНрдХреЗрд▓рд┐рдВрдЧ 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

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

kubectl apply -f ksvc.yaml -n default

рд╣рдо рдЕрдкрдиреЗ 'рд╣реЗрд▓реНрд▓реЛрд╡рд░реНрд▓реНрдб-рдЧреЛ' рдХреЛ рд╢рд┐рдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ Knative рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХреЗрд╕рд░реНрд╡рд┐рд╕:

kubectl get pod -n default
NAME                                              READY   STATUS    RESTARTS   AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8   2/2     Running   0          68s

kservice рдХреЛ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╣рдорд╛рд░реА 'helloworld-go' рдЫрд╡рд┐ рд╡рд╛рд▓рд╛ рдПрдХ рдкреЙрдб рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЯреНрд░реИрдлрд╝рд┐рдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреЙрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдкреЙрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рдПрдЧреАред

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

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

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЙрди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред Knative Proxy рдХреЗ рд▓рд┐рдП URL рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рд╣реИред glooctl:

glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80

рдмрд┐рдирд╛ рд╕реНрдерд╛рдкрд┐рдд glooctl рдЖрдк рдХреНрдпреВрдм рд╕реЗрд╡рд╛ рдореЗрдВ рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

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 рдХреА рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдХреЗрд╡рд▓ рд╕рддрд╣ рдХреЛ рд╣реА рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ Gloo рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ!

рдЬрдмрдХрд┐ Knative рдЕрднреА рднреА рдПрдХ рдпреБрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЯреАрдо рд╣рд░ рдЫрд╣ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░ рд░рд╣реА рд╣реИ, рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд TLS рдкреНрд░рд╛рд╡рдзрд╛рди, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдорд╛рди рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЬреИрд╕реА рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреА рдЕрдЪреНрдЫреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрдИ рдХреНрд▓рд╛рдЙрдб рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд╕рд╣рдпреЛрдЧ рд╕реЗ, рдФрд░ Google рдХреА рдирдИ рдХреНрд▓рд╛рдЙрдб рд░рди рдкреЗрд╢рдХрд╢ рдХреА рдиреАрдВрд╡ рдХреЗ рд░реВрдк рдореЗрдВ, Knative Kubernetes рдкрд░ рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдФрд░ PaaS рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рд╡рд┐рдХрд▓реНрдк рдмрди рд╕рдХрддрд╛ рд╣реИред рджреЗрдЦрддреЗ рд░рд╣рд┐рдП!

рд╕рд╛рдЙрдердмреНрд░рд┐рдЬ рдХреЗ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреА рдУрд░ рд╕реЗ
рд╣рдо рдЖрдкрдХреА рд░рд╛рдп рдХреЛ рдорд╣рддреНрд╡ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдкрд╕реЗ Knative, Kubernetes рдФрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд▓рдШреБ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:

рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реА рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВрдХреГрдкрдпрд╛ред

Knative рдФрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓реЗрдЦ рдФрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдПрдБ рд▓рд┐рдЦреЗрдВ?

  • рд╣рд╛рдБ рдХреГрдкрдпрд╛ред

  • рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

28 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдорддрджрд╛рди рдХрд┐рдпрд╛ред 4 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд░рд╣реЗред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ