рд╣рд╛рдореА Yandex.Cloud рдорд╛ 10 рдШрдЯрдирд╛рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреМрдВред рднрд╛рдЧ 000

рд╕рдмреИрд▓рд╛рдИ рдирдорд╕реНрдХрд╛рд░, рд╕рд╛рдереАрд╣рд░реВ!

* рдпреЛ рд▓реЗрдЦ REBRAIN рд░ Yandex.Cloud рдЦреБрд▓рд╛ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ, рдпрджрд┐ рддрдкрд╛рдЗрдБ рднрд┐рдбрд┐рдпреЛ рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдпреЛ рд▓рд┐рдЩреНрдХрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ - https://youtu.be/cZLezUm0ekE

рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЦрд░реИ Yandex.Cloud рд▓рд╛рдЗрдн рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ рдЕрд╡рд╕рд░ рдкрд╛рдпреМрдВред рд╣рд╛рдореА рд▓рд╛рдореЛ рд░ рдХрдбрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереНрдпреМрдВ, рд╣рд╛рдореАрд▓реЗ рддреБрд░реБрдиреНрддреИ рдХреНрд▓рд╛рдЙрдб рдЖрдзрд╛рд░рдХреЛ рд╕рд╛рде рд╕рд╛рдзрд╛рд░рдг Wordpress рдмреНрд▓рдЧ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рддреНрдпрд╛рдЧреНрдпреМрдВ - рдпреЛ рдзреЗрд░реИ рдмреЛрд░рд┐рдВрдЧ рдерд┐рдпреЛред рдХреЗрд╣рд┐ рд╕реЛрдЪ рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдирдЬрд┐рдХрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЛрдбрдорд╛ рдШрдЯрдирд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрдкрд╛рджрди рд╕реЗрд╡рд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рддреИрдирд╛рде рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред

рдо рдкрдХреНрдХреИ рдкрдХреНрдХрд╛ рдЫреБ рдХрд┐ рдзреЗрд░реИ рдЬрд╕реЛ рдЕрдирд▓рд╛рдЗрди (рд░ рдорд╛рддреНрд░ рд╣реЛрдЗрди) рд╡реНрдпрд╡рд╕рд╛рдпрд╣рд░реВрд▓реЗ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рдЖрдлреНрдирд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рдкрд╣рд╛рдб рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫрдиреНред рдХрдореНрддрд┐рдорд╛, рдпреЛ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рд░реНрдгрдпрд╣рд░реВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдПрдХ рдЕрдирд▓рд╛рдЗрди рдЦреЗрд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬреБрди рд╕реНрддрд░рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдкреНрд░рд╛рдпрдГ рдЕрдбреНрдХрд┐рдиреНрдЫрдиреН рд░ рддрдкрд╛рдЗрдБрдХреЛ рдЦреЗрд▓реМрдирд╛ рдореЗрдЯрд╛рдЙрдБрдЫрдиреНред рд╡рд╛ рдХрд┐рди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рд╕рд╛рдЗрдЯрд▓рд╛рдИ рдХреЗрд╣рд┐ рдЦрд░рд┐рдж рдирдЧрд░реА рдЫреЛрдбреНрдЫрдиреН (рдирдорд╕реНрддреЗ, Yandex.Metrica)ред

рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореНрд░реЛ рдХрдерд╛: рд╣рд╛рдореАрд▓реЗ рдХрд╕рд░реА рдЧреЛрд▓рд╛рдВрдЧрдорд╛ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЗрдЦреНрдпреМрдВ, рдХрд╛рдлреНрдХрд╛ рдмрдирд╛рдо rabbitmq vs yqs рдкрд░реАрдХреНрд╖рдг рдЧрд░реНтАНрдпреМрдВ, рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбрд╛рдЯрд╛ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд▓реЗрдЦреНрдпреМрдВ рд░ yandex datalens рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбрд╛рдЯрд╛рдХреЛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдпреМрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛, рдпреЛ рд╕рдмреИ рдбрдХрд░, рдЯреЗрд░рд╛рдлрд░реНрдо, рдЧрд┐рдЯрд▓рд╛рдм рд╕реАрдЖрдИ рд░ рдЕрд╡рд╢реНрдп рдкрдирд┐, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рдЖрдирдиреНрджрдХреЛ рд╕рд╛рде рдореМрд╕рдореА рдерд┐рдпреЛред рдЬрд╛рдФрдВ!

рдо рддреБрд░реБрдиреНрддреИ рд░рд┐рдЬрд░реНрднреЗрд╕рди рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рд╣рд╛рдореА рдПрдХреИ рдмреИрдардХрдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрдиреМрдВ - рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рд╢реНрд░реГрдВрдЦрд▓рд╛рдорд╛ рдзреЗрд░реИ рд▓реЗрдЦрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫред рд╕рдВрд░рдЪрдирд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдереЛрд░реИ:

рднрд╛рдЧ рез (рддрдкрд╛рдИ рдкрдвреНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ)ред рд╣рд╛рдореА рд╕рдорд╛рдзрд╛рдирдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдорд╛ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреЗрдЫреМрдВ, рд░ рдЧреЛрд▓рд╛рдВрдЧрдорд╛ рдЖрд╡реЗрджрди рдкрдирд┐ рд▓реЗрдЦреНрдиреЗрдЫреМрдВред
рднрд╛рдЧ 2ред рд╣рд╛рдореА рдЙрддреНрдкрд╛рджрдирдорд╛ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬрд╛рд░реА рдЧрд░реНрдЫреМрдВ, рдпрд╕рд▓рд╛рдИ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдмрдирд╛рдЙрдБрдЫреМрдВ рд░ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдЫреМрдВред
рднрд╛рдЧ рейред рд╣рд╛рдореАрд▓реЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдирднрдИ рдмрдлрд░рдорд╛ рдХрд┐рди рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ, рд░ рдХрд╛рдлреНрдХрд╛, rabbitmq рд░ рдпрд╛рдиреНрдбреЗрдХреНрд╕ рдХреНрдпреБ рд╕реЗрд╡рд╛рд╣рд░реВ рдкрдирд┐ рддреБрд▓рдирд╛ рдЧрд░реМрдВред
рднрд╛рдЧ рек рд╣рд╛рдореА рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХреНрд▓рд╕реНрдЯрд░ рддреИрдирд╛рде рдЧрд░реНрдиреЗрдЫреМрдВ, рддреНрдпрд╣рд╛рдБ рдмрдлрд░рдмрд╛рдЯ рдбрд╛рдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕реЗрд╡рд╛ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ, рд░ рдбрд╛рдЯрд╛рд▓реЗрдиреНрд╕рдорд╛ рднрд┐рдЬреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗрдЫреМрдВред
рднрд╛рдЧ рел рд╕рдореНрдкреВрд░реНрдг рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд▓рд╛рдИ рдЙрдЪрд┐рдд рдЖрдХрд╛рд░рдорд╛ рд▓реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН - gitlab ci рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ ci/cd рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд░ рдХрдиреНрд╕реБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд┐рдЧрд░рд╛рдиреА рд░ рд╕реЗрд╡рд╛ рдЦреЛрдЬреА рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

TK

рдкрд╣рд┐рд▓реЗ, рд╕рдиреНрджрд░реНрднрдХрд╛ рд╕рд░реНрддрд╣рд░реВ рддрдпрд╛рд░ рдЧрд░реМрдВ - рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╣рд╛рдореА рдкрд░рд┐рдгрд╛рдордХреЛ рд░реВрдкрдорд╛ рдХреЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред

  1. рд╣рд╛рдореА рдШрдЯрдирд╛рд╣рд░реВ.kis.im (kis.im рдкрд░реАрдХреНрд╖рдг рдбреЛрдореЗрди рд╣реЛ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рд╕рдмреИ рд▓реЗрдЦрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ) рдЬрд╕реНрддрд╛ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБрд╣рд░реВ рд░рд╛рдЦреНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рдЬрд╕рд▓реЗ HTTPS рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдШрдЯрдирд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрдкрд░реНрдЫред
  2. рдШрдЯрдирд╛рд╣рд░реВ рд╕рд╛рдзрд╛рд░рдг json рд╣реБрдиреН: {"рдШрдЯрдирд╛": "рджреГрд╢реНрдп", "os": "рд▓рд┐рдирдХреНрд╕", "рдмреНрд░рд╛рдЙрдЬрд░": "рдХреНрд░реЛрдо"}ред рдЕрдиреНрддрд┐рдо рдЪрд░рдгрдорд╛ рд╣рд╛рдореА рдереЛрд░реИ рдердк рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВ, рддрд░ рдпрд╕рд▓реЗ рдареВрд▓реЛ рднреВрдорд┐рдХрд╛ рдЦреЗрд▓реНрдиреЗрдЫреИрдиред рдпрджрд┐ рддрдкрд╛рдИрдВ рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдИрдВ protobuf рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
  3. рд╕реЗрд╡рд╛рд▓реЗ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб резреж,режрежреж рдШрдЯрдирд╛рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫред
  4. рд╣рд╛рдореНрд░реЛ рд╕рдорд╛рдзрд╛рдирдорд╛ рдирдпрд╛рдБ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдердкреЗрд░ рддреЗрд░реНрд╕реЛ рд░реВрдкрдорд╛ рдорд╛рдкрди рдЧрд░реНрди рд╕рдореНрднрд╡ рд╣реБрдиреБрдкрд░реНрдЫред рд░ рдпреЛ рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫ рдпрджрд┐ рд╣рд╛рдореА рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд▓рдореНрдмрддрд╛ рдХрдо рдЧрд░реНрди рдЕрдЧрд╛рдбрд┐рдХреЛ рднрд╛рдЧрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рднреМрдЧреЛрд▓рд┐рдХ рд╕реНрдерд╛рдирд╣рд░реВрдорд╛ рд╕рд╛рд░реНрди рд╕рдХреНрдЫреМрдВред
  5. рдЧрд▓реНрддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ред рд╕рдорд╛рдзрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд┐рд░ рд╣реБрдиреБрдкрд░реНрдЫ рд░ рдХреБрдиреИ рдкрдирд┐ рднрд╛рдЧрдХреЛ рдкрддрди рдмрд╛рдБрдЪреНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫ (рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╕рдореНрдо, рдЕрд╡рд╢реНрдп)ред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐, рд╢рд╛рд╕реНрддреНрд░реАрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рд╣рд░реВ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рдЬрд╕рд▓реЗ рдХреБрд╢рд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЪрд┐рддреНрд░рд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕рдорд╛рдзрд╛рдирдХреЛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрд╛рдЙрдБрдЫред

рд╣рд╛рдореА Yandex.Cloud рдорд╛ 10 рдШрдЯрдирд╛рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреМрдВред рднрд╛рдЧ 000

рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореАрд╕рдБрдЧ рдХреЗ рдЫ:

1. рдмрд╛рдБрдпрд╛рдорд╛ рд╣рд╛рдореНрд░рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдирд╛рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫ, рдЪрд╛рд╣реЗ рддреНрдпреЛ рдЦреЗрд▓рд╛рдбреАрд╣рд░реВрд▓реЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрдирдорд╛ рдЦреЗрд▓реМрдирд╛рдорд╛ рд╕реНрддрд░ рдкреВрд░рд╛ рдЧрд░реНрдиреЗ рд╡рд╛ рдирд┐рдпрдорд┐рдд рдмреНрд░рд╛рдЙрдЬрд░ рдорд╛рд░реНрдлрдд рдЕрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░рдорд╛ рдЕрд░реНрдбрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд╣реЛред рдШрдЯрдирд╛, рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, рдПрдХ рд╕рд╛рдзрд╛рд░рдг json рд╣реЛ рдЬреБрди рд╣рд╛рдореНрд░реЛ рдЕрдиреНрдд рдмрд┐рдиреНрджреБ - events.kis.im рдорд╛ рдкрдард╛рдЗрдиреНрдЫред

2. рдкрд╣рд┐рд▓реЛ рджреБрдИ рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╛рдзрд╛рд░рдг рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд╣рд░реВ рд╣реБрдиреН, рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╣рд░реВ рд╣реБрдиреН:

  • рдирд┐рд░рдиреНрддрд░ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреБрд╣реЛрд╕реНред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Keepalived, рдЬрд╕рд▓реЗ рд╕рдорд╕реНрдпрд╛рдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдиреЛрдбрд╣рд░реВ рдмреАрдЪ рднрд░реНрдЪреБрдЕрд▓ рдЖрдИрдкреА рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреЗрдЫред
  • TLS рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣реЛ, рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрдорд╛ TLS рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред рдкрд╣рд┐рд▓реЛ, рддрд╛рдХрд┐ рд╣рд╛рдореНрд░реЛ рд╕рдорд╛рдзрд╛рдирд▓реЗ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рд╣рд░реВрдХреЛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрджрдЫ, рд░ рджреЛрд╕реНрд░реЛ, рд╣рд╛рдореНрд░реЛ рдмреНрдпрд╛рдХрдПрдиреНрдб рд╕рд░реНрднрд░рд╣рд░реВрдмрд╛рдЯ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЬрдбрд╛рди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рдмреЛрдЭрд▓рд╛рдИ рдХрдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ред
  • рдЙрдкрд▓рдмреНрдз рдмреНрдпрд╛рдХрдЗрдиреНрдб рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╣рд╛рдБ рдХреБрдЮреНрдЬреА рд╢рдмреНрдж рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫред рдпрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛, рд╣рд╛рдореА рдпреЛ рдмреБрдЭреНрджрдЫреМрдВ рдХрд┐ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд╣рд░реВрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕рд░реНрднрд░рд╣рд░реВ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд╕рдБрдЧ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рд░ рдЕрд╕рдлрд▓ рдиреЛрдбрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рд╕рдиреНрддреБрд▓рди рд░реЛрдХреНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрджрдЫред

3. рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рдкрдЫрд┐, рд╣рд╛рдореАрд╕рдБрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрднрд░рд╣рд░реВ рдПрдХрджрдо рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред рдпрд╕рд▓реЗ HTTP рдорд╛рд░реНрдлрдд рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди, рдкрдард╛рдЗрдПрдХреЛ json рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рд░ рдбрд╛рдЯрд╛рд▓рд╛рдИ рдмрдлрд░рдорд╛ рд░рд╛рдЦреНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫред

4. рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ рдХрд╛рдлреНрдХрд╛рд▓рд╛рдИ рдмрдлрд░рдХреЛ рд░реВрдкрдорд╛ рджреЗрдЦрд╛рдЙрдБрдЫ, рдпрджреНрдпрдкрд┐, рдкрдХреНрдХреИ рдкрдирд┐, рдЕрдиреНрдп рд╕рдорд╛рди рд╕реЗрд╡рд╛рд╣рд░реВ рдпрд╕ рд╕реНрддрд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд╣рд╛рдореА рддреЗрд╕реНрд░реЛ рд▓реЗрдЦрдорд╛ Kafka, rabbitmq рд░ yqs рддреБрд▓рдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВред

5. рд╣рд╛рдореНрд░реЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рд╣реЛ - рдПрдХ рд╕реНрддрдореНрдн рдбрд╛рдЯрд╛рдмреЗрд╕ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдареВрд▓реЛ рдорд╛рддреНрд░рд╛рдорд╛ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрд╕ рд╕реНрддрд░рдорд╛, рд╣рд╛рдореАрд▓реЗ рдмрдлрд░рдмрд╛рдЯ рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдбрд╛рдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рд▓реЗрдЦ 4 рдорд╛)ред

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

рд╡реИрд╕реЗ, рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╣рд╛рдореНрд░реЛ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╣рд░реВрдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рднрд╛рдЧ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ рд░ рд╡рд┐рднрд┐рдиреНрди рднреМрдЧреЛрд▓рд┐рдХ рд╕реНрдерд╛рдирд╣рд░реВрдорд╛ рдорд╛рдкрди рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╕рд░рд▓ рдЫреИрди:

рд╣рд╛рдореА Yandex.Cloud рдорд╛ 10 рдШрдЯрдирд╛рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреМрдВред рднрд╛рдЧ 000

рдкреНрд░рддреНрдпреЗрдХ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рдирдорд╛ рд╣рд╛рдореА рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд░ рдХрд╛рдлреНрдХрд╛рд╕рдБрдЧ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдЫреМрдВред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, 2 рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрднрд░рд╣рд░реВ, 3 рдХрд╛рдлреНрдХрд╛ рдиреЛрдбрд╣рд░реВ рд░ рдХреНрд▓рд╛рдЙрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдпрд░, рдкрд░реНрдпрд╛рдкреНрдд рдЫрдиреН, рдЬрд╕рд▓реЗ рдЧреНрд░рд╛рд╣рдХрдХреЛ рд╕реНрд░реЛрдд рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рднреМрдЧреЛрд▓рд┐рдХ рд╕реНрдерд╛рдирджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдиреЛрдбрд╣рд░реВ рд░ рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЙрдкрд▓рдмреНрдзрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗрдЫред рдпрд╕рд░реА, рдПрдХ рдЕрдореЗрд░рд┐рдХреА рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдкрдард╛рдПрдХреЛ рдбрд╛рдЯрд╛ рдЕрдореЗрд░рд┐рдХреА рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдЕрд╡рддрд░рдг рд╣реБрдиреЗрдЫред рд░ рдЕрдлреНрд░рд┐рдХрд╛рдмрд╛рдЯ рдбрд╛рдЯрд╛ рдЕрдлреНрд░рд┐рдХреАрдорд╛ рдЫред

рддреНрдпрд╕реЛрднрдП рд╕рдмреИ рдХреБрд░рд╛ рдПрдХрджрдо рд╕рд░рд▓ рдЫ - рд╣рд╛рдореА рдХрд╛рдлреНрдХрд╛ рд╕реЗрдЯрдмрд╛рдЯ рдорд┐рд░рд░ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ рд░ рд╕рдмреИ рд╕реНрдерд╛рдирд╣рд░реВрдмрд╛рдЯ рд╕рдмреИ рдбрд╛рдЯрд╛рд▓рд╛рдИ рд░реВрд╕рдорд╛ рд░рд╣реЗрдХреЛ рд╣рд╛рдореНрд░реЛ рдХреЗрдиреНрджреНрд░реАрдп рдбрд╛рдЯрд╛ рдХреЗрдиреНрджреНрд░рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдЫреМрдВред рдЖрдиреНрддрд░рд┐рдХ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдбрд╛рдЯрд╛ рдкрд╛рд░реНрд╕ рдЧрд░реНрдЫреМрдВ рд░ рддреНрдпрд╕рдкрдЫрд┐рдХреЛ рджреГрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рдорд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрдЫреМрдВред

рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореАрд▓реЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рд▓рд╛рдИ рдХреНрд░рдордмрджреНрдз рдЧрд░реЗрдХрд╛ рдЫреМрдВ - Yandex.Cloud рд▓рд╛рдИ рд╣рд▓реНрд▓рд╛рдЙрди рд╕реБрд░реБ рдЧрд░реМрдВ!

рдПрдЙрдЯрд╛ рдЖрд╡реЗрджрди рд▓реЗрдЦреНрджреИ

рдХреНрд▓рд╛рдЙрдб рдЕрдШрд┐, рддрдкрд╛рдЗрдБ рдЕрдЭреИ рдкрдирд┐ рдереЛрд░реИ рдзреИрд░реНрдп рд╣реБрдиреБрдкрд░реНрджрдЫ рд░ рдЖрдЧрдорди рдШрдЯрдирд╛рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдПрдХрджрдо рд╕рд░рд▓ рд╕реЗрд╡рд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА golang рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ рдХрд┐рдирднрдиреЗ рдпрд╕рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рднрд╛рд╖рд╛рдХреЛ рд░реВрдкрдорд╛ рдЖрдлреИрд▓рд╛рдИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реЗрдХреЛ рдЫред

рдПрдХ рдШрдгреНрдЯрд╛ рдмрд┐рддрд╛рдПрдкрдЫрд┐ (рд╣реБрдирд╕рдХреНрдЫ рдХреЗрд╣рд┐ рдШрдгреНрдЯрд╛), рд╣рд╛рдореАрд▓реЗ рдХреЗрд╣рд┐ рдпрд╕реНрддреЛ рдкрд╛рдЙрдБрдЫреМрдВ: https://github.com/RebrainMe/yandex-cloud-events/blob/master/app/main.go.

рдпрд╣рд╛рдБ рдХреЗ рдореБрдЦреНрдп рдмреБрдБрджрд╛рд╣рд░реВ рдо рдзреНрдпрд╛рди рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреБ:

1. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВ рджреБрдИ рдЭрдгреНрдбрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдПрдЙрдЯрд╛ рдкреЛрд░реНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореА рдЖрдЧрдорди http рдЕрдиреБрд░реЛрдзрд╣рд░реВ (-addr) рд╕реБрдиреНрдиреЗрдЫреМрдВред рджреЛрд╕реНрд░реЛ рдХрд╛рдлреНрдХрд╛ рд╕рд░реНрднрд░ рдареЗрдЧрд╛рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рд╣рд╛рдореНрд░рд╛ рдШрдЯрдирд╛рд╣рд░реВ (-рдХрд╛рдлреНрдХрд╛) рд░реЗрдХрд░реНрдб рдЧрд░реНрдиреЗрдЫреМрдВ:

addr     = flag.String("addr", ":8080", "TCP address to listen to")
kafka    = flag.String("kafka", "127.0.0.1:9092", "Kafka endpointsтАЭ)

2. рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд╕рд╛рд░рдорд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ ([] github.com/Shopify/sarama) рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрдиред рд╣рд╛рдореАрд▓реЗ рддреБрд░реБрдиреНрддреИ рдЕрдзрд┐рдХрддрдо рдкреНрд░рд╢реЛрдзрди рдЧрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдпреМрдВ:

config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForLocal
config.Producer.Compression = sarama.CompressionSnappy
config.Producer.Return.Successes = true

3. рд╣рд╛рдореНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдорд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдкрдирд┐ рдЫ, рдЬрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ, рдЬрд╕реНрддреИ:

  • рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрди рдХреЛ рд▓рд╛рдЧреА рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрдЦреНрдпрд╛;
  • рдЕрдиреБрд░реЛрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ (рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдкрдвреНрди рдЕрд╕рдореНрднрд╡, рдЯреБрдЯреЗрдХреЛ json, рдХрд╛рдлреНрдХрд╛рд▓рд╛рдИ рд▓реЗрдЦреНрди рдЕрд╕рдореНрднрд╡);
  • рдХрд╛рдлреНрдХрд╛рд▓рд╛рдИ рд╕рдиреНрджреЗрд╢ рд▓реЗрдЦреНрдиреЗ рд╕рдордп рд╕рд╣рд┐рдд рдЧреНрд░рд╛рд╣рдХрдмрд╛рдЯ рдПрдЙрдЯрд╛ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╢реЛрдзрди рд╕рдордпред

4. рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рддреАрди рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд╣рд░реВ:

  • /status - рд╣рд╛рдореА рдЬреАрд╡рд┐рдд рдЫреМрдВ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрди рдареАрдХ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рдпрджреНрдпрдкрд┐ рддрдкрд╛рдИрд▓реЗ рдХреЗрд╣рд┐ рдЪреЗрдХрд╣рд░реВ рдердкреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЙрдкрд▓рдмреНрдзрддрд╛ред
  • /metrics - рдпреЛ url рдЕрдиреБрд╕рд╛рд░, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓реЗ рдпреЛ рд╕рдЩреНрдХрд▓рди рдЧрд░реЗрдХреЛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫред
  • /post рдореБрдЦреНрдп рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рд╣реЛ рдЬрд╣рд╛рдБ json рднрд┐рддреНрд░ POST рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдард╛рдЗрдиреЗрдЫред рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд╡реИрдзрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ json рдЬрд╛рдБрдЪ рдЧрд░реНрдЫ рд░ рдпрджрд┐ рд╕рдмреИ рдареАрдХ рдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдЫред

рдо рд░рд┐рдЬрд░реНрднреЗрд╕рди рдЧрд░реНрдиреЗрдЫреБ рдХрд┐ рдХреЛрдб рд╕рд╣реА рдЫреИрди - рдпреЛ рдкреВрд░рд╛ рд╣реБрди рд╕рдХреНрдЫ (рд░ рд╣реБрдиреБрдкрд░реНрдЫ!)ред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рддрдкрд╛рдИрд▓реЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдиреЗрдЯ/http рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд░реЛрдХреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдЫрд┐рдЯреЛ рдЫрд┐рдЯреЛ HTTP рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡рд╛ рддрдкрд╛рдИрд▓реЗ json рд╡реИрдзрддрд╛ рдЬрд╛рдБрдЪрд▓рд╛рдИ рдкрдЫрд┐рд▓реНрд▓реЛ рдЪрд░рдгрдорд╛ рд╕рд╛рд░реЗрд░ рдкреНрд░рд╢реЛрдзрди рд╕рдордп рд░ cpu рд╕реНрд░реЛрддрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ - рдЬрдм рдбрд╛рдЯрд╛ рдмрдлрд░рдмрд╛рдЯ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╣реБрдиреНрдЫред

рдореБрджреНрджрд╛рдХреЛ рд╡рд┐рдХрд╛рд╕ рдкрдХреНрд╖рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореАрд▓реЗ рддреБрд░реБрдиреНрддреИ рд╣рд╛рдореНрд░реЛ рднрд╡рд┐рд╖реНрдпрдХреЛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕реЛрдЪреНрдпреМрдВ рд░ рдбрдХрд░ рдорд╛рд░реНрдлрдд рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрди рддреИрдирд╛рде рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНтАНрдпреМрдВред рдЖрд╡реЗрджрди рдирд┐рд░реНрдорд╛рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрддрд┐рдо рдбрдХрд░рдлрд╛рдЗрд▓ рд╣реЛ https://github.com/RebrainMe/yandex-cloud-events/blob/master/app/Dockerfileред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпреЛ рдПрдХрджрдо рд╕рд░рд▓ рдЫ, рдПрдХ рдорд╛рддреНрд░ рдмрд┐рдиреНрджреБ рдЬреБрди рдо рдзреНрдпрд╛рди рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреБ рдорд▓реНрдЯрд┐рд╕реНрдЯреЗрдЬ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╣реЛ, рдЬрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдЕрдиреНрддрд┐рдо рдЫрд╡рд┐ рдХрдо рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдХреНрд▓рд╛рдЙрдбрдорд╛ рдкрд╣рд┐рд▓реЛ рдЪрд░рдгрд╣рд░реВ

рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рджрд░реНрддрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН cloud.yandex.ruред рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рдлрд┐рд▓реНрдбрд╣рд░реВ рднрд░реЗрдкрдЫрд┐, рд╣рд╛рдореАрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдЦрд╛рддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреЗрдЫ рд░ рдирд┐рд╢реНрдЪрд┐рдд рд░рдХрдордХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрджрд╛рди рджрд┐рдЗрдиреЗрдЫ, рдЬреБрди рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВ рд╣рд╛рдореНрд░реЛ рд▓реЗрдЦрдмрд╛рдЯ рд╕рдмреИ рдЪрд░рдгрд╣рд░реВ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпреЛ рдЕрдиреБрджрд╛рди рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреБрдкрд░реНрдЫред

рджрд░реНрддрд╛ рдкрдЫрд┐, рдПрдХ рдЕрд▓рдЧ рдХреНрд▓рд╛рдЙрдб рд░ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рддрдкрд╛рдЗрдБрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреЗрдЫ, рдЬрд╕рдорд╛ рддрдкрд╛рдЗрдБ рдХреНрд▓рд╛рдЙрдб рд╕реНрд░реЛрддрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, Yandex.Cloud рдорд╛, рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕рдореНрдмрдиреНрдз рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

рд╣рд╛рдореА Yandex.Cloud рдорд╛ 10 рдШрдЯрдирд╛рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреМрдВред рднрд╛рдЧ 000

рддрдкрд╛рдИрдВ рдПрдХ рдЦрд╛рддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдХреНрд▓рд╛рдЙрдбрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░ рдХреНрд▓рд╛рдЙрдб рднрд┐рддреНрд░, рд╡рд┐рднрд┐рдиреНрди рдХрдореНрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдлрд░рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рд╣рд░реВ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВ рдХрд╛рдЧрдЬрд╛рдд рдорд╛ рдпрд╕ рдмрд╛рд░реЗ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ - https://cloud.yandex.ru/docs/resource-manager/concepts/resources-hierarchyред рдЦреИрд░, рдо рдкреНрд░рд╛рдп: рдпрд╕рд▓рд╛рдИ рддрд▓ рдкрд╛рдардорд╛ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреЗрдЫреБред рдЬрдм рдореИрд▓реЗ рд╕реНрдХреНрд░реНрдпрд╛рдЪрдмрд╛рдЯ рд╕рдореНрдкреВрд░реНрдг рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд╕реЗрдЯрдЕрдк рдЧрд░реЗрдВ, рдХрд╛рдЧрдЬрд╛рддрд▓реЗ рдорд▓рд╛рдИ рдПрдХ рдкрдЯрдХ рднрдиреНрджрд╛ рдмрдвреА рдорджреНрджрдд рдЧрд░реНрдпреЛ, рддреНрдпрд╕реИрд▓реЗ рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕рд▓рд╛рдИ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдиреНрдЫреБред

рдХреНрд▓рд╛рдЙрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди, рддрдкрд╛рдЗрдБ рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕ рд░ рдХрдиреНрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ - yc рджреБрд╡реИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕реНрдерд╛рдкрдирд╛ рдПрдХ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдЧрд░рд┐рдиреНрдЫ (рд▓рд┐рдирдХреНрд╕ рд░ рдореНрдпрд╛рдХ рдУрдПрд╕рдХрд╛ рд▓рд╛рдЧрд┐):

curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash

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

рдпрджрд┐ рддрдкрд╛рдЗрдБ Windows рдХреЛ рд▓рд╛рдЧреА рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди yc initрдпрд╕рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди:

vozerov@mba:~ $ yc init
Welcome! This command will take you through the configuration process.
Please go to https://oauth.yandex.ru/authorize?response_type=token&client_id= in order to obtain OAuth token.

Please enter OAuth token:
Please select cloud to use:
 [1] cloud-b1gv67ihgfu3bp (id = b1gv67ihgfu3bpt24o0q)
 [2] fevlake-cloud (id = b1g6bvup3toribomnh30)
Please enter your numeric choice: 2
Your current cloud has been set to 'fevlake-cloud' (id = b1g6bvup3toribomnh30).
Please choose folder to use:
 [1] default (id = b1g5r6h11knotfr8vjp7)
 [2] Create a new folder
Please enter your numeric choice: 1
Your current folder has been set to 'default' (id = b1g5r6h11knotfr8vjp7).
Do you want to configure a default Compute zone? [Y/n]
Which zone do you want to use as a profile default?
 [1] ru-central1-a
 [2] ru-central1-b
 [3] ru-central1-c
 [4] Don't set default zone
Please enter your numeric choice: 1
Your profile default Compute zone has been set to 'ru-central1-a'.
vozerov@mba:~ $

рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд░рд▓ рдЫ - рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди, рдХреНрд▓рд╛рдЙрдб рд░ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреЗ рдлреЛрд▓реНрдбрд░ рдЪрдпрди рдЧрд░реНрди рдУрдЙрде рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдПрдЙрдЯреИ рдХреНрд▓рд╛рдЙрдб рднрд┐рддреНрд░ рдзреЗрд░реИ рдЦрд╛рддрд╛рд╣рд░реВ рд╡рд╛ рдлреЛрд▓реНрдбрд░рд╣рд░реВ рдЫрдиреН рднрдиреЗ, рддрдкрд╛рдЗрдБ yc рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рдорд╛рд░реНрдлрдд рдЕрд▓рдЧ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ рдердк рдкреНрд░реЛрдлрд╛рдЗрд▓рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рддрд┐рдиреАрд╣рд░реВ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдорд╛рдерд┐рдХреЛ рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, Yandex.Cloud рдЯреЛрд▓реАрд▓реЗ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рд▓реЗрдЦреНрдпреЛ terraform рдХреЛ рд▓рд╛рдЧреА рдкреНрд▓рдЧрдЗрди рдХреНрд▓рд╛рдЙрдб рд╕реНрд░реЛрддрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирдХреЛ рд▓рд╛рдЧрд┐ред рдореЗрд░реЛ рднрд╛рдЧрдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рдПрдХ git рднрдгреНрдбрд╛рд░ рддрдпрд╛рд░ рдЧрд░реЗрдВ, рдЬрд╣рд╛рдБ рдореИрд▓реЗ рд▓реЗрдЦрдХреЛ рдЕрдВрд╢рдХреЛ рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреЗ рд╕рдмреИ рд╕реНрд░реЛрддрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реЗрдВ - https://github.com/rebrainme/yandex-cloud-events/ред рд╣рд╛рдореА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛рдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдЫреМрдВ, рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХреНрд▓реЛрди рдЧрд░реМрдВ:


vozerov@mba:~ $ git clone https://github.com/rebrainme/yandex-cloud-events/ events
Cloning into 'events'...
remote: Enumerating objects: 100, done.
remote: Counting objects: 100% (100/100), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 100 (delta 37), reused 89 (delta 26), pack-reused 0
Receiving objects: 100% (100/100), 25.65 KiB | 168.00 KiB/s, done.
Resolving deltas: 100% (37/37), done.
vozerov@mba:~ $ cd events/terraform/

рдЯреЗрд░рд╛рдлрд░реНрдордорд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рд╕рдмреИ рдореБрдЦреНрдп рдЪрд░рд╣рд░реВ main.tf рдлрд╛рдЗрд▓рдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЫрдиреНред рд╕реБрд░реБ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реАрдХреЛ рд╕рд╛рде terraform рдлреЛрд▓реНрдбрд░рдорд╛ рдПрдХ private.auto.tfvars рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

# Yandex Cloud Oauth token
yc_token = ""
# Yandex Cloud ID
yc_cloud_id = ""
# Yandex Cloud folder ID
yc_folder_id = ""
# Default Yandex Cloud Region
yc_region = "ru-central1-a"
# Cloudflare email
cf_email = ""
# Cloudflare token
cf_token = ""
# Cloudflare zone id
cf_zone_id = ""

рд╕рдмреИ рдЪрд░рд╣рд░реВ yc рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕реВрдЪреАрдмрд╛рдЯ рд▓рд┐рди рд╕рдХрд┐рдиреНрдЫ, рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓реЗ рдХрдиреНрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред рдо рддрдкрд╛рдИрд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ .gitignore рдорд╛ private.auto.tfvars рдердкреНрди рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдиреНрдЫреБ, рддрд╛рдХрд┐ рдЧрд▓реНрддрд┐рд▓реЗ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реЛрд╕реНред

Private.auto.tfvars рдорд╛ рд╣рд╛рдореАрд▓реЗ Cloudflare рдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкрдирд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдпреМрдВ - DNS рд░реЗрдХрд░реНрдбрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рдореБрдЦреНрдп рдбреЛрдореЗрди events.kis.im рд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░реНрдиред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдпрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрди рднрдиреЗ, main.tf рд░ dns.tf рдлрд╛рдЗрд▓рдорд╛ рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдпрд░ рдкреНрд░рджрд╛рдпрдХрдХреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХрддрд╛ рд╣рдЯрд╛рдЙрдиреБрд╣реЛрд╕реН, рдЬреБрди рдЖрд╡рд╢реНрдпрдХ dns рд░реЗрдХрд░реНрдбрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред

рд╣рд╛рдореНрд░реЛ рдХрд╛рдордорд╛ рд╣рд╛рдореА рд╕рдмреИ рддреАрди рд╡рд┐рдзрд┐рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗрдЫреМрдВ - рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕, рдХрдиреНрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛, рд░ рдЯреЗрд░рд╛рдлрд╛рд░реНрдоред

рднрд░реНрдЪреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВ

рдЗрдорд╛рдирджрд╛рд░ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЪрд░рдг рдЫреЛрдбреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдХрд┐рдирдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдирдпрд╛рдБ рдХреНрд▓рд╛рдЙрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЫреБрдЯреНрдЯреИ рдиреЗрдЯрд╡рд░реНрдХ рд░ 3 рд╕рдмрдиреЗрдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдиреЗрдЫрдиреН - рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ред рддрд░ рд╣рд╛рдореА рдЕрдЭреИ рдкрдирд┐ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреИ рдареЗрдЧрд╛рдирд╛рдХреЛ рд╕рд╛рде рдЫреБрдЯреНрдЯреИ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреМрдВред Yandex.Cloud рдорд╛ рд╕рдЮреНрдЬрд╛рд▓рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рддрд▓рдХреЛ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫ (рдЗрдорд╛рдирджрд╛рд░реАрдкреВрд░реНрд╡рдХ рд▓рд┐рдЗрдПрдХреЛ https://cloud.yandex.ru/docs/vpc/concepts/)

рд╣рд╛рдореА Yandex.Cloud рдорд╛ 10 рдШрдЯрдирд╛рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреМрдВред рднрд╛рдЧ 000

рддреНрдпрд╕реЛрднрдП, рддрдкрд╛рдЗрдБ рдПрдХ рд╕рд╛рдЭрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рдорд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдПрдХ рдЕрд░реНрдХрд╛рд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░рдХреЛ рд▓рд╛рдЧрд┐, рдПрдЙрдЯрд╛ рд╕рдмрдиреЗрдЯ рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдареЗрдЧрд╛рдирд╛рдХреЛ рд╕рд╛рде рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдЬрдбрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдпрд╕рдорд╛ рднрдПрдХрд╛ рд╕рдмреИ рдХреНрд▓рд╛рдЙрдб рд╕реНрд░реЛрддрд╣рд░реВрд▓реЗ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН, рднрд▓реЗ рд╣реА рддрд┐рдиреАрд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░рдорд╛ рдЫрдиреНред рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╛рдЙрдб рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВрдорд╛ рдЬрдбрд╛рди рднрдПрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВрд▓реЗ рдмрд╛рд╣реНрдп рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдорд╛рд░реНрдлрдд рдорд╛рддреНрд░ рдПрдХрдЕрд░реНрдХрд╛рд▓рд╛рдИ рджреЗрдЦреНрди рд╕рдХреНрдЫрдиреНред рд╡реИрд╕реЗ, рдпреЛ рдЬрд╛рджреВ рднрд┐рддреНрд░ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ, Habr├й рдорд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ.

рдиреЗрдЯрд╡рд░реНрдХ рдирд┐рд░реНрдорд╛рдгрд▓рд╛рдИ рднрдгреНрдбрд╛рд░рдмрд╛рдЯ network.tf рдлрд╛рдЗрд▓рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред рддреНрдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд╕рд╛рдЭрд╛ рдирд┐рдЬреА рд╕рдЮреНрдЬрд╛рд▓ рдЖрдиреНрддрд░рд┐рдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ рд░ рдпрд╕рдорд╛ рддреАрдирд╡рдЯрд╛ рд╕рдмрдиреЗрдЯрд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдЫреМрдВ - рдЖрдиреНрддрд░рд┐рдХ-a (172.16.1.0/24), рдЖрдиреНрддрд░рд┐рдХ-b (172.16.2.0/24), рдЖрдиреНрддрд░рд┐рдХ-c (172.16.3.0/24)ред )ред

рдЯреЗрд░рд╛рдлрд╛рд░реНрдо рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

vozerov@mba:~/events/terraform (master) $ terraform init
... skipped ..

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_vpc_subnet.internal-a -target yandex_vpc_subnet.internal-b -target yandex_vpc_subnet.internal-c

... skipped ...

Plan: 4 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

yandex_vpc_network.internal: Creating...
yandex_vpc_network.internal: Creation complete after 3s [id=enp2g2rhile7gbqlbrkr]
yandex_vpc_subnet.internal-a: Creating...
yandex_vpc_subnet.internal-b: Creating...
yandex_vpc_subnet.internal-c: Creating...
yandex_vpc_subnet.internal-a: Creation complete after 6s [id=e9b1dad6mgoj2v4funog]
yandex_vpc_subnet.internal-b: Creation complete after 7s [id=e2liv5i4amu52p64ac9p]
yandex_vpc_subnet.internal-c: Still creating... [10s elapsed]
yandex_vpc_subnet.internal-c: Creation complete after 10s [id=b0c2qhsj2vranoc9vhcq]

Apply complete! Resources: 4 added, 0 changed, 0 destroyed.

рдорд╣рд╛рди! рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХрд╛ рдЫреМрдВ рд░ рдЕрдм рд╣рд╛рдореНрд░реЛ рдЖрдиреНрддрд░рд┐рдХ рд╕реЗрд╡рд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рддрдпрд╛рд░ рдЫреМрдВред

рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдХреЗрд╡рд▓ рджреБрдИ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ - рд╣рд╛рдореАрд▓рд╛рдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд░ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛ рдЪрд╛рд╣рд┐рдиреНрдЫ, рджреЛрд╕реНрд░реЛ рдХрд╛рдлреНрдХрд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдЖрдЧрдорди рд╕рдиреНрджреЗрд╢рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред рд░ рд╣рд╛рдореА рдЕрд░реНрдХреЛ рдореЗрд╢рд┐рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗрдЫреМрдВред

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

vozerov@mba:~/events/terraform (master) $ cd ../ansible/
vozerov@mba:~/events/ansible (master) $ ansible-galaxy install -r requirements.yml
- cloudalchemy-prometheus (master) is already installed, skipping.
- cloudalchemy-grafana (master) is already installed, skipping.
- sansible.kafka (master) is already installed, skipping.
- sansible.zookeeper (master) is already installed, skipping.
- geerlingguy.docker (master) is already installed, skipping.
vozerov@mba:~/events/ansible (master) $

рдЙрддреНрддрд░рджрд╛рдпреА рдлреЛрд▓реНрдбрд░ рднрд┐рддреНрд░ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг .ansible.cfg рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдЫ рдЬреБрди рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреБред рдпреЛ рдХрд╛рдордорд╛ рдЖрдЙрди рд╕рдХреНрдЫред

рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБ рдЕрдШрд┐, рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ ssh-рдПрдЬреЗрдиреНрдЯ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рд░ рдПрдЙрдЯрд╛ ssh рдХреБрдЮреНрдЬреА рдердкрд┐рдПрдХреЛ рдЫ, рдЕрдиреНрдпрдерд╛ рдЯреЗрд░рд╛рдлрд░реНрдорд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрдиред рдо, рдЕрд╡рд╢реНрдп рдкрдирд┐, os x рдорд╛ рдмрдЧ рднреЗрдЯреНрдЯрд╛рдПрдБ: https://github.com/ansible/ansible/issues/32499#issuecomment-341578864ред рдпрд╕рд▓рд╛рдИ рдлреЗрд░рд┐ рд╣реБрдирдмрд╛рдЯ рд░реЛрдХреНрдирдХреЛ рд▓рд╛рдЧрд┐, Terraform рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ env рдорд╛ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдЪрд░ рдердкреНрдиреБрд╣реЛрд╕реН:

vozerov@mba:~/events/terraform (master) $ export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

рдЯреЗрд░рд╛рдлрд░реНрдордХреЛ рд╕рд╛рде рдлреЛрд▓реНрдбрд░рдорд╛ рд╣рд╛рдореА рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрддрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ:

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_compute_instance.build -target yandex_compute_instance.monitoring -target yandex_compute_instance.kafka
yandex_vpc_network.internal: Refreshing state... [id=enp2g2rhile7gbqlbrkr]
data.yandex_compute_image.ubuntu_image: Refreshing state...
yandex_vpc_subnet.internal-a: Refreshing state... [id=e9b1dad6mgoj2v4funog]

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

... skipped ...

Plan: 3 to add, 0 to change, 0 to destroy.

... skipped ...

рдпрджрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рднрдпреЛ (рд░ рдпреЛ рд╣реБрдиреБрдкрд░реНрдЫ), рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рддреАрди рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╣реБрдиреЗрдЫрдиреН:

  1. рдирд┐рд░реНрдорд╛рдг - рдкрд░реАрдХреНрд╖рдг рд░ рдПрдХ рдЖрд╡реЗрджрди рдирд┐рд░реНрдорд╛рдг рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдореЗрд╕рд┐рдиред рдбрдХрд░ Ansible рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрд┐рдд рднрдПрдХреЛ рдерд┐рдпреЛред
  2. рдирд┐рдЧрд░рд╛рдиреА - рдПрдХ рдирд┐рдЧрд░рд╛рдиреА рдореЗрд╕рд┐рди - рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд░ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдпрд╕рдорд╛ рд╕реНрдерд╛рдкрд┐рддред рд▓рдЧрдЗрди / рдкрд╛рд╕рд╡рд░реНрдб рдорд╛рдирдХ: рдкреНрд░рд╢рд╛рд╕рдХ / рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
  3. рдХрд╛рдлреНрдХрд╛ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдореЗрд╕рд┐рди рд╣реЛ рдЬрд╕рдорд╛ рдХрд╛рдлреНрдХрд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдкреЛрд░реНрдЯ 9092 рдорд╛ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫред

рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рдЫрдиреН рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реМрдВ:

vozerov@mba:~/events (master) $ yc compute instance list
+----------------------+------------+---------------+---------+---------------+-------------+
|          ID          |    NAME    |    ZONE ID    | STATUS  |  EXTERNAL IP  | INTERNAL IP |
+----------------------+------------+---------------+---------+---------------+-------------+
| fhm081u8bkbqf1pa5kgj | monitoring | ru-central1-a | RUNNING | 84.201.159.71 | 172.16.1.35 |
| fhmf37k03oobgu9jmd7p | kafka      | ru-central1-a | RUNNING | 84.201.173.41 | 172.16.1.31 |
| fhmt9pl1i8sf7ga6flgp | build      | ru-central1-a | RUNNING | 84.201.132.3  | 172.16.1.26 |
+----------------------+------------+---------------+---------+---------------+-------------+

рд╕реНрд░реЛрддрд╣рд░реВ рдард╛рдЙрдБрдорд╛ рдЫрдиреН, рд░ рдпрд╣рд╛рдБрдмрд╛рдЯ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрдХреЛ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдирд┐рдореНрди рдХреБрд░рд╛рд╣рд░реВрдорд╛ рдо ssh рдорд╛рд░реНрдлрдд рдЬрдбрд╛рди рдЧрд░реНрди рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреБред рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдЯреЗрд░рд╛рдлрд░реНрдордорд╛ рдЬрдбрд╛рди рднрдПрдХреЛ рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдпрд░ рдЦрд╛рддрд╛ рдЫ рднрдиреЗ, рддрд╛рдЬрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ DNS рдирд╛рдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдирд╣рд┐рдЪрдХрд┐рдЪрд╛рдЙрдиреБрд╣реЛрд╕реНред
рд╡реИрд╕реЗ, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рдЖрдиреНрддрд░рд┐рдХ рдЖрдИрдкреА рд░ рдЖрдиреНрддрд░рд┐рдХ DNS рдирд╛рдо рджрд┐рдЗрдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдЗрдБ рдирд╛рдорджреНрд╡рд╛рд░рд╛ рдиреЗрдЯрд╡рд░реНрдХ рднрд┐рддреНрд░ рд╕рд░реНрднрд░рд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

ubuntu@build:~$ ping kafka.ru-central1.internal
PING kafka.ru-central1.internal (172.16.1.31) 56(84) bytes of data.
64 bytes from kafka.ru-central1.internal (172.16.1.31): icmp_seq=1 ttl=63 time=1.23 ms
64 bytes from kafka.ru-central1.internal (172.16.1.31): icmp_seq=2 ttl=63 time=0.625 ms
^C
--- kafka.ru-central1.internal ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.625/0.931/1.238/0.308 ms

рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ kafk рдХреЛ рд╕рд╛рде рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрди рдЙрдкрдпреЛрдЧреА рд╣реБрдиреЗрдЫред

рдЖрд╡реЗрджрди рд╕рдВрдпреЛрдЬрди

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

рд╣рд╛рдореА рдмрд┐рд▓реНрдб рдореЗрд╕рд┐рдирдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдЫреМрдВ, ssh рдорд╛рд░реНрдлрдд рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЫрд╡рд┐рд▓рд╛рдИ рднреЗрд▓рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

vozerov@mba:~/events/terraform (master) $ cd ..
vozerov@mba:~/events (master) $ rsync -av app/ [email protected]:app/

... skipped ...

sent 3849 bytes  received 70 bytes  7838.00 bytes/sec
total size is 3644  speedup is 0.93

vozerov@mba:~/events (master) $ ssh 84.201.132.3 -l ubuntu
ubuntu@build:~$ cd app
ubuntu@build:~/app$ sudo docker build -t app .
Sending build context to Docker daemon  6.144kB
Step 1/9 : FROM golang:latest AS build
... skipped ...

Successfully built 9760afd8ef65
Successfully tagged app:latest

рдЖрдзрд╛ рд▓рдбрд╛рдИ рд╕рдХрд┐рдпреЛ - рдЕрдм рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕реБрд░реБ рдЧрд░реЗрд░ рд░ рдХрд╛рдлреНрдХрд╛рдорд╛ рдкрдард╛рдПрд░ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:

ubuntu@build:~/app$ sudo docker run --name app -d -p 8080:8080 app /app/app -kafka=kafka.ru-central1.internal:9092</code>

╨б ╨╗╨╛╨║╨░╨╗╤М╨╜╨╛╨╣ ╨╝╨░╤И╨╕╨╜╨║╨╕ ╨╝╨╛╨╢╨╜╨╛ ╨╛╤В╨┐╤А╨░╨▓╨╕╤В╤М ╤В╨╡╤Б╤В╨╛╨▓╤Л╨╣ event ╨╕ ╨┐╨╛╤Б╨╝╨╛╤В╤А╨╡╤В╤М ╨╜╨░ ╨╛╤В╨▓╨╡╤В:

<code>vozerov@mba:~/events (master) $ curl -D - -s -X POST -d '{"key1":"data1"}' http://84.201.132.3:8080/post
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 13 Apr 2020 13:53:54 GMT
Content-Length: 41

{"status":"ok","partition":0,"Offset":0}
vozerov@mba:~/events (master) $

рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рд░реЗрдХрд░реНрдбрд┐рдЩрдХреЛ рд╕рдлрд▓рддрд╛рдХреЛ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдпреЛ рд░ рд╕рдиреНрджреЗрд╢ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рд╡рд┐рднрд╛рдЬрди рд░ рдЕрдлрд╕реЗрдЯрдХреЛ рдЖрдИрдбреА рд╕рдВрдХреЗрдд рдЧрд░реНрджреИред рдХреЗ рдЧрд░реНрди рдмрд╛рдБрдХреА рдЫ Yandex.Cloud рдорд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╣рд╛рдБ рд╣рд╛рдореНрд░реЛ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН (рддреАрди рд▓рд╛рдЗрдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рдХрд╕рд░реА рдЧрд░реНрдиреЗ рднрдиреЗрд░ registry.tf рдлрд╛рдЗрд▓рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ)ред рднрдгреНрдбрд╛рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_container_registry.events

... skipped ...

Plan: 1 to add, 0 to change, 0 to destroy.

... skipped ...

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

рддреНрдпрд╣рд╛рдБ рдХрдиреНрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░реНрдиреЗ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН - aauth рдЯреЛрдХрди, iam рдЯреЛрдХрди, рд╡рд╛ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдХреБрдЮреНрдЬреА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред рдпреА рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рд╡рд┐рд╡рд░рдг рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред https://cloud.yandex.ru/docs/container-registry/operations/authenticationред рд╣рд╛рдореА рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдХреБрдЮреНрдЬреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдПрдЙрдЯрд╛ рдЦрд╛рддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ:

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_iam_service_account.docker -target yandex_resourcemanager_folder_iam_binding.puller -target yandex_resourcemanager_folder_iam_binding.pusher

... skipped ...

Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

рдЕрдм рдмрд╛рдБрдХреА рд╕рдмреИ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдЮреНрдЬреА рдмрдирд╛рдЙрдиреБ рд╣реЛ:

vozerov@mba:~/events/terraform (master) $ yc iam key create --service-account-name docker -o key.json
id: ajej8a06kdfbehbrh91p
service_account_id: ajep6d38k895srp9osij
created_at: "2020-04-13T14:00:30Z"
key_algorithm: RSA_2048

рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рднрдгреНрдбрд╛рд░рдгрдХреЛ рдЖрдИрдбреАрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреМрдВ, рдХреБрдЮреНрдЬреА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдЫреМрдВ рд░ рд▓рдЧ рдЗрди рдЧрд░реНрдЫреМрдВ:

vozerov@mba:~/events/terraform (master) $ scp key.json [email protected]:
key.json                                                                                                                    100% 2392   215.1KB/s   00:00

vozerov@mba:~/events/terraform (master) $ ssh 84.201.132.3 -l ubuntu

ubuntu@build:~$ cat key.json | sudo docker login --username json_key --password-stdin cr.yandex
WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
ubuntu@build:~$

рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдЧрд░реНрди, рд╣рд╛рдореАрд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЖрдИрдбреА рдЪрд╛рд╣рд┐рдиреНрдЫ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ yc рдЙрдкрдпреЛрдЧрд┐рддрд╛рдмрд╛рдЯ рд▓рд┐рдиреНрдЫреМрдВ:

vozerov@mba:~ $ yc container registry get events
id: crpdgj6c9umdhgaqjfmm
folder_id:
name: events
status: ACTIVE
created_at: "2020-04-13T13:56:41.914Z"

рддреНрдпрд╕ рдкрдЫрд┐, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЫрд╡рд┐рд▓рд╛рдИ рдирдпрд╛рдБ рдирд╛рдордХреЛ рд╕рд╛рде рдЯреНрдпрд╛рдЧ рдЧрд░реНрдЫреМрдВ рд░ рдЕрдкрд▓реЛрдб рдЧрд░реНрдЫреМрдВ:

ubuntu@build:~$ sudo docker tag app cr.yandex/crpdgj6c9umdhgaqjfmm/events:v1
ubuntu@build:~$ sudo docker push cr.yandex/crpdgj6c9umdhgaqjfmm/events:v1
The push refers to repository [cr.yandex/crpdgj6c9umdhgaqjfmm/events]
8c286e154c6e: Pushed
477c318b05cb: Pushed
beee9f30bc1f: Pushed
v1: digest: sha256:1dd5aaa9dbdde2f60d833be0bed1c352724be3ea3158bcac3cdee41d47c5e380 size: 946

рд╣рд╛рдореА рдЫрд╡рд┐ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЛрдб рднрдПрдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:

vozerov@mba:~/events/terraform (master) $ yc container repository list
+----------------------+-----------------------------+
|          ID          |            NAME             |
+----------------------+-----------------------------+
| crpe8mqtrgmuq07accvn | crpdgj6c9umdhgaqjfmm/events |
+----------------------+-----------------------------+

рдЦреИрд░, рдпрджрд┐ рддрдкрд╛рдЗрдБ рд▓рд┐рдирдХреНрд╕ рдореЗрд╕рд┐рдирдорд╛ yc рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ

yc container registry configure-docker

рдбрдХрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиред

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

рд╣рд╛рдореАрд▓реЗ рдзреЗрд░реИ рдХрдбрд╛ рдкрд░рд┐рд╢реНрд░рдо рдЧрд░реЗрдХрд╛ рдЫреМрдВ рд░ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк:

  1. рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рднрд╛рд╡реА рд╕реЗрд╡рд╛рдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рд╕рд╛рде рдЖрдПрдХрд╛ рдЫреМрдВред
  2. рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдЧреЛрд▓рд╛рдЩреНрдЧрдорд╛ рдПрдЙрдЯрд╛ рдЖрд╡реЗрджрди рд▓реЗрдЦреНрдпреМрдВред
  3. рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдЩреНрдХрд▓рди рдЧрд░реА рдирд┐рдЬреА рдХрдиреНрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдЦрдиреНрдпрд╛рдпреМрдВред

рдЕрд░реНрдХреЛ рднрд╛рдЧрдорд╛, рд╣рд╛рдореА рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рд╕рд╛рдорд╛рдирд╣рд░реВрдорд╛ рдЬрд╛рдиреНрдЫреМрдВ - рд╣рд╛рдореА рдЙрддреНрдкрд╛рджрдирдорд╛ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬрд╛рд░реА рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдЕрдиреНрддрдорд╛ рдпрд╕рдорд╛ рд▓реЛрдб рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫреМрдВред рд╕реНрд╡рд┐рдЪ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН!

рдпреЛ рд╕рд╛рдордЧреНрд░реА рдЦреБрд▓рд╛ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ REBRAIN рд░ Yandex.Cloud рдХреЛ рднрд┐рдбрд┐рдпреЛ рд░реЗрдХрд░реНрдбрд┐рдЩрдорд╛ рдЫ: рд╣рд╛рдореА Yandex Cloud рдорд╛ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб 10 рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫреМрдВ - https://youtu.be/cZLezUm0ekE

рдпрджрд┐ рддрдкрд╛рдЗрдБ рддреНрдпрд╕реНрддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рдЕрдирд▓рд╛рдЗрдирдорд╛ рдЙрдкрд╕реНрдерд┐рдд рд╣реБрди рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордпрдорд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рд╕реЛрдзреНрди рдЗрдЪреНрдЫреБрдХ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН REBRAIN рдЪреНрдпрд╛рдирд▓ рджреНрд╡рд╛рд░рд╛ DevOps.

рдпрд╕реНрддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдпреЛрдЬрдирд╛ рдЧрд░реНрдиреЗ рдЕрд╡рд╕рд░рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА Yandex.Cloud рд▓рд╛рдИ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреМрдВред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓рд┐рдЩреНрдХ - https://cloud.yandex.ru/prices

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреНрд▓рд╛рдЙрдбрдорд╛ рдЬрд╛рди рдЖрд╡рд╢реНрдпрдХ рдЫ рд╡рд╛ рддрдкрд╛рдЗрдБрдХреЛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрдиреН рднрдиреЗ, рдЕрдиреБрд░реЛрдз рдкреЗрд╢ рдЧрд░реНрди рд╕реНрд╡рддрдиреНрддреНрд░ рдорд╣рд╕реБрд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН.

PS рд╣рд╛рдореАрд╕рдБрдЧ рдкреНрд░рддрд┐ рдорд╣рд┐рдирд╛ 2 рдирд┐: рд╢реБрд▓реНрдХ рдЕрдбрд┐рдЯрд╣рд░реВ рдЫрдиреН, рд╕рд╛рдпрдж рддрдкрд╛рдЗрдБрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддреА рдордзреНрдпреЗ рдПрдХ рд╣реБрдиреЗрдЫред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди