
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 68skservice рдХреЛ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╣рдорд╛рд░реА 'helloworld-go' рдЫрд╡рд┐ рд╡рд╛рд▓рд╛ рдПрдХ рдкреЙрдб рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЯреНрд░реИрдлрд╝рд┐рдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреЙрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдкреЙрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рдПрдЧреАред
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go TrueKnative рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ 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
