рдПрдЧреЛрдиреНрд╕, рдПрдХ рдмрд╣реБ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреЗрдо рд╕рд░реНрд╡рд░ рдмрдирд╛рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╕реНрдерд╛рдкрдирд╛

Agones (рдЕрдиреНрдп рдЧреНрд░реАрдХ ag┼Нn - "рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛" рд╕реЗ) рдЖрдк рдСрдЯреЛ-рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреЗрдо рд╕рд░реНрд╡рд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2018 рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2500 рд╕реНрдЯрд╛рд░ рдмрдирд╛ рдЪреБрдХрд╛ рдерд╛, Google I / O 2019 рдкрд░ рдерд╛, рдФрд░ рд╣рдорд╛рд░реЗ рдмрдбрд╝реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП рд╣реИрдмреЗ рдкрд░, рдЕрднреА рддрдХ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд┐рд╖рдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рднреНрд░рдордг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдХреИрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЬрд╛рдУ!


рдПрдЧреЛрдиреНрд╕ рд▓реЛрдЧреЛ

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╡рд░рдг


Agones рдПрдХ рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди ( Kubernetes API рдПрдХреНрд╕рдЯреЗрдВрд╢рди ) рд╣реИред


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдЧрдиреНрд╕ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдПрдХрд▓ рдЧреЗрдо рд╕рд░реНрд╡рд░ (рдЧреЗрдорд╕рд░реНрд╡рд░) рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛рдореНрд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ (рдлреНрд▓реЗрдЯреНрд╕) рдХреЗ рдкреВрд░реЗ "рдмреЗрдбрд╝реЗ" рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ред рдмрджрд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдЕрдкрдиреЗ рдЬреАрд╡рди рдЪрдХреНрд░ (GameServer рдЬреАрд╡рди рдЪрдХреНрд░) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рд░реНрдЯ рджреЗрддрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ, рдХрдиреЗрдХреНрд╢рди рдЬрд╛рдирдХрд╛рд░реА) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдлреНрд▓реАрдЯ рдСрдЯреЛрд╕рд╛рд▓рд┐рдВрдЧ) рд╣реИ, рдЬреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕, рдЧреНрд░рд╛рдлрд╛рдирд╛ рдпрд╛ рд╕реНрдЯреИрдХрдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдЖрдБрдХрдбрд╝реЗ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ OpenCensus рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред Stackdriver рдореЗрдВ рдбреИрд╢рдмреЛрд░реНрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг:


рдЫрд╡рд┐


рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рдмреБрдирд┐рдпрд╛рджреА рддрддреНрд╡


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


Agones Kubernetes API рдХреЛ рддреАрди рдореБрдЦреНрдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ: agones.dev (GameServer, GameServerSet, рдмреЗрдбрд╝реЗ), рдЖрд╡рдВрдЯрди .agones.dev (GameServerAllocation), autoscalingред рдЕрдиреНрдп рдХреБрдмреЗрд░рдиреЗрдЯ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рддрд░рд╣, рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрдорд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг:


  • GameServer - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЧреЗрдо рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯрдкрд╛рд░реНрдЯ рдФрд░ рдХрдВрдЯреЗрдирд░рдкреЙрд░реНрдЯ рдЬреИрд╕реЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдкреЙрдб рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред Agones SDK рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде GameServer рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдЧрд╛
  • GameServerSet - рдХрдИ GameServer рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛, рдбрд┐рдкреЙрдЬрд┐рдЯ рдФрд░ рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЗ рд╕рдорд╛рди рд╣реИ
  • рдмреЗрдбрд╝реЗ - рдХрдИ рддреИрдпрд╛рд░ GameServer рдмрдирд╛рддрд╛ рд╣реИ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GameServerAllocation рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
  • GameServerAllocation - рдЧреЗрдорд╕реЗрд╡рд░ рдХреЛ рдмреЗрдбрд╝реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЧреЗрдорд╕реЗрд╡рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  • рдлреНрд▓реАрдЯрдСрдЯреЛрд╕реЗрд▓рд░ - рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлреИрд▓рддрд╛ рд╣реИ рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлреНрд▓реАрдЯ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ

рдЖрд░реЗрдЦ ( рдпрд╣рд╛рдБ рд╕реЗ ) GameServer рд╕рдВрд╕рд╛рдзрди рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:



рдмреИрдВрдЧрдиреА рддреАрд░ рдПрдЧреЛрдиреНрд╕ рдПрд╕рдбреАрдХреЗ, рд▓рд╛рд▓ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреАрдЖрдИ, рдиреАрд▓рд╛ - рдЧреЗрдо рд╕рд░реНрд╡рд░ рдирд┐рдпрдВрддреНрд░рдХ, рдкреАрд▓рд╛ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред


рд╕реНрдерд╛рдкрдирд╛


рдЗрд╕ рдФрд░ рдмрд╛рдж рдХреЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЯреАрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рдеред рд╣рдо Kubernetes рд╕рдВрд╕реНрдХрд░рдг 1.12 (рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдорд┐рдиреАрдХреНрдпреВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХреБрдмреЗрдХрдЯрд▓ рдФрд░ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ ( рд╣рд╛рдЗрдкрд░-рд╡реА рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред


рдХреНрд▓рд╕реНрдЯрд░ рдФрд░ рдПрдЧреЛрдиреНрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рд╣реЛрдВрдЧреЗ:


minikube profile agones #    agones minikube start --kubernetes-version v1.12.10 --vm-driver hyperv #virtualbox minikube status #     kubectl create namespace agones-system #    agones kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.0.0/install/yaml/install.yaml 

рдЖрдЦрд┐рд░реА рдХрдорд╛рдВрдб рдХреБрдмрд╛рд░реНрдиреЗрдЯ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд╛ (CRD) рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдПрдЧреЛрдиреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред


GameServer рдХрд╛ рд╢реБрднрд╛рд░рдВрдн


рдЕрдм рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд░реЗрдбреА-рдореЗрдб рдЯреЗрд╕реНрдЯ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдпреВрдбреАрдкреА рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЧрд╛:


 # GameServer  kubectl create -f https://raw.githubusercontent.com/googleforgames/agones/release-1.0.0/examples/simple-udp/gameserver.yaml kubectl get gameservers #  GameServer minikube ip #     kubectl describe gameserver #    GameServer kubectl get gs #  ,   GameServer 

рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рд░реНрд╡рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЖрдк рдиреЗрдЯрдХрд╛рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдорддреМрд░ рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ ред рдиреЗрдЯрдХреИрдЯ рдХреЛ -рдпреВ рдкреИрд░рд╛рдореАрдЯрд░ (рдпреВрдбреАрдкреА рдЕрдиреБрд░реЛрдз) рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдорд┐рдиреАрдХреНрдпреВрдм рдкрддреЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ ( minikube ip рдХрдорд╛рдВрдб рд╕реЗ рдкрддрд╛ рдХреЙрдкреА рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ) рдФрд░ рд╕рдХреНрд░рд┐рдп рдЧреЗрдо рд╕реЗрд╡рд░ рдкреЛрд░реНрдЯ:


 echo "hello" | nc -u $(minikube ip) 7331 

рдпрджрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ "ACK: hello" рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдирд┐рдореНрди рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ:


 echo "EXIT" | nc -u $(minikube ip) 7331 

рд╕рд░реНрд╡рд░ рд╕реНрдЯреЗрдЯрд╕ рдХреА рдЬрд╛рдБрдЪ kubectl describe gameserver рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП kubectl describe gameserver рджреНрд╡рд╛рд░рд╛ рдХреА kubectl describe gameserver , рдЗрд╕реЗ рд╢рдЯрдбрд╛рдЙрди рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред


GameServer рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛


рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рднрдВрдбрд╛рд░ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ:


 git clone git@github.com:googleforgames/agones.git 

рдлрд╝рд╛рдЗрд▓ agones / рдЙрджрд╛рд╣рд░рдг / simple-udp / main.go рдореЗрдВ, рд▓рд╛рдЗрди 159 рдХреЛ рдмрджрд▓реЗрдВ


 respond(conn, sender, "ACKNOWLEDGED: "+txt+"\n") 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ, рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛ рдЪрд▓рд╛рдПрдБ рдФрд░ рдЗрд╕реЗ рдорд┐рдиреАрдмреНрдпреВрдм рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ minikube docker-env | Invoke-Expression рдЪрд▓рд╛рдирд╛ minikube docker-env | Invoke-Expression eval $(minikube docker-env) minikube docker-env | Invoke-Expression , eval $(minikube docker-env) ред рдпрд╣ рдЖрдкрдХреЛ рд╕реАрдзреЗ рдорд┐рдирд┐рдХреНрдпреВрдм рдореЗрдВ рдбреЙрдХ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдмрдирд╛рдПрдВ:


 docker build -t agones-go:modified -f .\examples\simple-udp\Dockerfile . 

рдЗрд╕ рдХрдорд╛рдВрдб рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЗрдореЗрдЬ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЗрд╡рд▓ sdks рдлрд╝реЛрд▓реНрдбрд░, main.go рдФрд░ Dockerfile рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЕрдЧрд▓рд╛, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ \ simple-udp \ gameserver.yaml, рд▓рд╛рдЗрди 28 рдХреЛ image: agones-go:modified рдмрджрд▓реЗрдВ image: agones-go:modified рдФрд░ рдПрдХ рдирдпрд╛ рдЧреЗрдорд╕реЗрд╡рд░ рдмрдирд╛рдПрдБ:


 kubectl create -f .\examples\simple-udp\gameserver.yaml 

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдмрдВрдж рдХрд░реЗрдВ:


 echo "hello" | nc -u 172.17.113.72 7331 echo "EXIT" | nc -u 172.17.113.72 7331 

рдпрджрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ "ACKNOWLEDGED: рд╣реИрд▓реЛ" рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдлрд▓ рд░рд╣реЗ рдереЗред


рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдмрд┐рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдЧреЛрдиреНрд╕ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдЬрдм рдЧреЗрдо рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рдПрд╕рдбреАрдХреЗ рдЯреАрд╕реАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рдЬреАрдЖрд░рдкреАрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдЧреЛрдиреНрд╕ рдПрдХ рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдиреАрдЪреЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрд╕рдбреАрдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ -local рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ 'рд╕реНрдерд╛рдиреАрдп рдореЛрдб' рдореЛрдб рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореЛрдб рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдХрд╣реАрдВ рднреА рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХреЗрдВ рдХрд┐ рдПрд╕рдбреАрдХреЗ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЧреЗрдо рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред


рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирд╡реАрдирддрдо рдПрдЧреНрдиреЗрд╕реНрд╕реЗрдХ-рд╕рд░реНрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрд╕рдбреАрдХреЗ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреЗрдорд╕реЗрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рд┐рдХреНрдд рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреЗрдорд╕реНрд╡рд░ () рдФрд░ рд╡реЙрдЪрдЧреИрдорд╕реЗрд╡рд░ () рдПрд╕рдбреАрдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдЖрдк рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ yaml рдпрд╛ json рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ -local рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде -file рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рдЗрд╕рдХреЗ рд▓рдШреБ рд╕рдВрд╕реНрдХрд░рдг -f рдХреА -local рд╣реИред


 .\sdk-server --local -f .\examples\simple-udp\gameserver.yaml sdk-server : {"ctlConf":{"Address":"localhost","IsLocal":true,"LocalFile":".\\examples\\simple-udp\\gameserver.yaml","Timeout":0,"Test":""},"grpcPor t":59357,"httpPort":59358,"message":"Starting sdk sidecar","severity":"info","source":"main","time":"2019-09-29T12:45:59.8379817+02:00","version":"1.0.0"} {"filePath":"C:\\agones-release-1.0.0\\examples\\simple-udp\\gameserver.yaml","message":"Reading GameServer configuration","severity":"info","time":"2019-09-29T12:45:59.8479789+02:00"} {"message":"Starting SDKServer grpc service...","severity":"info","source":"main","time":"2019-09-29T12:45:59.8529791+02:00"} {"message":"Starting SDKServer grpc-gateway...","severity":"info","source":"main","time":"2019-09-29T12:46:00.1555756+02:00"} 

рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...

Source: https://habr.com/ru/post/hi469381/


All Articles