рд╣реЗрд▓реНрдордХреЛ рд╕рд╛рде рдзреЗрд░реИ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдХрд╕рд░реА рдбреЗрд▓реАрдореЛрд╢рдирд▓реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ: рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ

рд╣рд╛рдореАрд▓реЗ рдбреЗрд▓реАрдореЛрд╢рдирдорд╛ 3 рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗ рдЙрддреНрдкрд╛рджрдирдорд╛ Kubernetes рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдерд╛рд▓реНрдпреМрдВред рддрд░ рдзреЗрд░реИ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреБ рд░рдорд╛рдЗрд▓реЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рд╡рд┐рдЧрдд рдХреЗрд╣реА рд╡рд░реНрд╖рд╣рд░реВрдорд╛ рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд╣рд░реВ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВред

рдХрд╣рд╛рдБрдмрд╛рдЯ рд╕реБрд░реБ рднрдпреЛ

рдпрд╣рд╛рдБ рд╣рд╛рдореА рдХрднрд░ рдЧрд░реНрдиреЗрдЫреМрдВ рдХрд┐ рд╣рд╛рдореА рдХрд╕рд░реА рд╣рд╛рдореНрд░рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╡рд┐рд╢реНрд╡рднрд░рдХрд╛ рдзреЗрд░реИ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рддреИрдирд╛рдд рдЧрд░реНрдЫреМрдВред

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

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

рдмрд┐рдиреНрджреБрдорд╛ рдкреБрдЧреМрдВред

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

рдЪрд╛рд░реНрдЯ рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣

рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╢рд╛рдЦрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ, рд░ рд╣рд╛рдореАрд▓реЗ рдЪрд╛рд░реНрдЯрд╣рд░реВрдорд╛ рдЙрд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред

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

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

рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЪрд╛рд░реНрдЯ рднрдгреНрдбрд╛рд░рд╣рд░реВ

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

рдпрд╕рдмрд╛рд╣реЗрдХ, рд╣рд╛рдореНрд░реЛ рд╕рд╛рдиреЛ рдкрд╛рдЗрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓реЗ Kubernetes рдУрдкрдирдПрдкреАрдЖрдИ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Kubernetes рд╡рд╕реНрддреБрд╣рд░реВрд▓рд╛рдИ рдорд╛рдиреНрдп рдЧрд░реНрджрдЫред рдХреБрдмреЗрд╡рд▓, Chartmusem рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБ рдЕрдШрд┐ред

рдЪрд╛рд░реНрдЯ рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг

  1. рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЕрдиреБрд╕рд╛рд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрджреИ gazr.io рдЧреБрдгрд╕реНрддрд░ рдирд┐рдпрдиреНрддреНрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ (рд▓рд┐рдиреНрдЯ, рдПрдХрд╛рдЗ-рдкрд░реАрдХреНрд╖рдг)ред
  2. рд╣рд╛рдореНрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреЗ рдкрд╛рдЗрдерди рдЙрдкрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рдбрдХрд░ рдЫрд╡рд┐ рдкреБрд╢ рдЧрд░реНрджреИред
  3. рд╢рд╛рдЦрд╛ рдирд╛рдо рджреНрд╡рд╛рд░рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯрдЕрдкред
  4. Kubeval рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Kubernetes yaml рдлрд╛рдЗрд▓рд╣рд░реВ рдорд╛рдиреНрдп рдЧрд░реНрджреИред
  5. рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЪрд╛рд░реНрдЯрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд░ рдпрд╕рдХреЛ рдЕрднрд┐рднрд╛рд╡рдХ рдЪрд╛рд░реНрдЯрд╣рд░реВ (рдЪрд╛рд░реНрдЯрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рднрдЗрд░рд╣реЗрдХреЛ рдЪрд╛рд░реНрдЯрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ) рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реНред
  6. рдЪрд╛рд░реНрдЯрдореНрдпреБрдЬрд┐рдпрдордорд╛ рдЪрд╛рд░реНрдЯ рдкреЗрд╕ рдЧрд░реНрджреИ рдЬреБрди рдпрд╕рдХреЛ рд╡рд╛рддрд╛рд╡рд░рдгрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ

рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рднрд┐рдиреНрдирддрд╛рд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдХреНрд▓рд╕реНрдЯрд░ рдорд╣рд╛рд╕рдВрдШ

рдПрдХ рд╕рдордп рдерд┐рдпреЛ рдЬрдм рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдереЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рдорд╣рд╛рд╕рдВрдШ, рдЬрд╣рд╛рдБ Kubernetes рд╡рд╕реНрддреБрд╣рд░реВ рдПрдХрд▓ API рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБрдмрд╛рдЯ рдШреЛрд╖рдгрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рддрд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЦрдбрд╛ рднрдпреЛред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдВрдШрдХреЛ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрдорд╛ рдХреЗрд╣реА Kubernetes рд╡рд╕реНрддреБрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдПрди, рдпрд╕рд▓реЗ рд╕рдЩреНрдШреАрдп рд╡рд╕реНрддреБрд╣рд░реВ рд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрдп рд╡рд╕реНрддреБрд╣рд░реВ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдЧрд╛рд╣реНрд░реЛ рдмрдирд╛рдЙрдБрдЫред

рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рд╣рд╛рдореАрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдерд╛рд▓реНрдпреМрдВ, рдЬрд╕рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдзреЗрд░реИ рд╕рд░рд▓ рдмрдирд╛рдпреЛ (рд╣рд╛рдореАрд▓реЗ рд╕рдВрдШрдХреЛ рдкрд╣рд┐рд▓реЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ; рджреЛрд╕реНрд░реЛрдорд╛ рдХреЗрд╣реА рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫ)ред

рднреВ-рд╡рд┐рддрд░рд┐рдд рдкреНрд▓реЗрдЯрдлрд░реНрдо

рд╣рд╛рдореНрд░реЛ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╣рд╛рд▓ 6 рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ - 3 рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рд░ 3 рдХреНрд▓рд╛рдЙрдбрдорд╛ред


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

рдЧреНрд▓реЛрдмрд▓ рд╣реЗрд▓реНрдо рдорд╛рдирд╣рд░реВ

4 рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рд╣реЗрд▓реНрдо рдорд╛рдирд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореНрд░рд╛ рд╕рдмреИ рдЪрд╛рд░реНрдЯрд╣рд░реВрдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдиреНрдпреВрдирддрдо рдорд╛рдирд╣рд░реВ рдЫрдиреНред

global:
  cloud: True
  env: staging
  region: us-central1
  clusterName: staging-us-central1

рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдореВрд▓реНрдпрд╣рд░реВ

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

  • "Cloud": рд╣рд╛рдореАрд╕рдБрдЧ рд╣рд╛рдЗрдмреНрд░рд┐рдб Kubernetes рдкреНрд▓реЗрдЯрдлрд░реНрдо рдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рд╣рд╛рдореНрд░реЛ API рд▓рд╛рдИ GCP рдХреНрд╖реЗрддреНрд░рд╣рд░реБ рд░ рд╣рд╛рдореНрд░реЛ рдбреЗрдЯрд╛ рдХреЗрдиреНрджреНрд░рд╣рд░реБрдорд╛ рддреИрдирд╛рдд рдЧрд░рд┐рдПрдХреЛ рдЫред
  • "env": рдЧреИрд░-рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдХреЗрд╣реА рдорд╛рдирд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрди рд╕рдХреНрдЫрдиреНред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕реНрд░реЛрдд рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВ рд░ рд╕реНрд╡рдд: рд╕реНрдХреЗрд▓рд┐рдЩ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВред
  • "рдХреНрд╖реЗрддреНрд░": рдпреЛ рдЬрд╛рдирдХрд╛рд░реАрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫ рд░ рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирдЬрд┐рдХреИрдХреЛ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБрд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
  • "clusterName": рдпрджрд┐ рд░ рдЬрдм рд╣рд╛рдореА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред

рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реЛ:

{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}

рд╣реЗрд▓рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдг

Kubernetes YAML рд▓рд╛рдИ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реБрдирдмрд╛рдЯ рдЬреЛрдЧрд┐рдирдХрд╛ рд▓рд╛рдЧрд┐ рдпреЛ рддрд░реНрдХрд▓рд╛рдИ рд╕рд╣рд╛рдпрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред

рдЖрд╡реЗрджрди рдШреЛрд╖рдгрд╛

рд╣рд╛рдореНрд░реЛ рддреИрдирд╛рддреА рдЙрдкрдХрд░рдгрд╣рд░реВ рдзреЗрд░реИ YAML рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫрдиреНред рд╣рд╛рдореАрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕реЗрд╡рд╛ рд░ рдпрд╕рдХреЛ рд╕реНрдХреЗрд▓рд┐рдЩ рдЯреЛрдкреЛрд▓реЛрдЬреА (рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛) рдХрд╕рд░реА рдШреЛрд╖рдгрд╛ рдЧрд░реНрдЫреМрдВ рднрдиреНрдиреЗ рдЙрджрд╛рд╣рд░рдг рддрд▓ рджрд┐рдЗрдПрдХреЛ рдЫред

releases:
  - foo.world

foo.world:                # Release name
  services:               # List of dailymotion's apps/projects
    foobar:
      chart_name: foo-foobar
      repo: [email protected]:dailymotion/foobar
      contexts:
        prod-europe-west1:
          deployments:
            - name: foo-bar-baz
              replicas: 18
            - name: another-deployment
              replicas: 3

рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛

рдпреЛ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рд╕рдмреИ рдЪрд░рдгрд╣рд░реВрдХреЛ рд░реВрдкрд░реЗрдЦрд╛ рд╣реЛред рдЕрдиреНрддрд┐рдо рдЪрд░рдгрд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдПрдХреИ рд╕рд╛рде рдзреЗрд░реИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред


рдЬреЗрдирдХрд┐рдиреНрд╕ рддреИрдирд╛рддреА рдЪрд░рдгрд╣рд░реВ

рдХреЗ рд░рд╣рд╕реНрдп рдХреЛ рдмрд╛рд░реЗ рдорд╛?

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

рд╣рд╛рдореНрд░реЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдЙрдкрдХрд░рдгрд▓реЗ рднрд▓реНрдЯрдмрд╛рдЯ рдЧреЛрдкреНрдп рдорд╛рдирд╣рд░реВ рдирд┐рдХрд╛рд▓реНрдЫ рд░, рдЬрдм рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕рдордп рдЖрдЙрдБрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╣реЗрд▓реНрдордорд╛ рдШреБрд╕рд╛рдЙрдиреБрд╣реЛрд╕реНред

рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ Vault рдорд╛ рдЧреЛрдкреНрдп рд░ рд╣рд╛рдореНрд░рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЧреЛрдкреНрдпрд╣рд░реВ рдмреАрдЪрдХреЛ рдореНрдпрд╛рдкрд┐рдЩ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдпреМрдВ:

secrets:                                                                                                                                                                                                        
     - secret_id: "stack1-app1-password"                                                                                                                                                                                  
       contexts:                                                                                                                                                                                                   
         - name: "default"                                                                                                                                                                                         
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"                                                                                                                                                                                    
         - name: "cluster1"                                                                                                                                                                           
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"

  • рд╣рд╛рдореАрд▓реЗ Vault рдорд╛ рдЧреЛрдкреНрдп рдХреБрд░рд╛рд╣рд░реВ рд░реЗрдХрд░реНрдб рдЧрд░реНрджрд╛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдорд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрдХрд╛ рдЫреМрдВред
  • рдпрджрд┐ рдЧреЛрдкреНрдп рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдиреНрджрд░реНрдн рд╡рд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред (рдпрд╣рд╛рдБ рд╕рдиреНрджрд░реНрдн рдХреНрд▓рд╕реНрдЯрд░ рез рдХреЛ рдЧреЛрдкреНрдп рд╕реНрдЯреНрдпрд╛рдХ-рдПрдкрез-рдкрд╛рд╕рд╡рд░реНрдбрдХреЛ рдЖрдлреНрдиреИ рдорд╛рди рдЫ)ред
  • рдЕрдиреНрдпрдерд╛ рдорд╛рди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рджреНрд╡рд╛рд░рд╛.
  • рдпрд╕ рд╕реВрдЪреАрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдЧреЛрдкреНрдп рдХреБрдЮреНрдЬреА-рдорд╛рди рдЬреЛрдбреА рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рддреНрдпрд╕реИрд▓реЗ, рд╣рд╛рдореНрд░реЛ рдЪрд╛рд░реНрдЯ рдорд╛ рдЧреЛрдкреНрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдзреЗрд░реИ рд╕рд░рд▓ рдЫред

apiVersion: v1
data:
{{- range $key,$value := .Values.secrets }}
  {{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
kind: Secret
metadata:
  name: "{{ .Chart.Name }}"
  labels:
    chartVersion: "{{ .Chart.Version }}"
    tillerVersion: "{{ .Capabilities.TillerVersion.SemVer }}"
type: Opaque

рд╕рдорд╕реНрдпрд╛ рд░ рд╕реАрдорд╛рд╣рд░реВ

рдзреЗрд░реИ рднрдгреНрдбрд╛рд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИ

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

рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЪрд╛рд░реНрдЯрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдиреБ рдПрдХ рдЭрдиреНрдЭрдЯ рд╣реЛ

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рднрдиреЗрдЭреИрдВ, рдЬреЗрдиреЗрд░рд┐рдХ рдЪрд╛рд░реНрдЯрд╣рд░реВ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд░ рдзреЗрд░реИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рдЫрдиреНред рддрд░ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ --reuse-valuesрд╣рд░реЗрдХ рдкрдЯрдХ рд╣рд╛рдореАрд▓реЗ рдпреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЪрд╛рд░реНрдЯрдХреЛ рдЕрдВрд╢ рднрдПрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрджрд╛ рд╕рдмреИ рдорд╛рдирд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдирдмрд╛рдЯ рдмрдЪреНрдиред

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

рдзреЗрд░реИ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджреИ

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

рдЬреЗрдирдХрд┐рдиреНрд╕ рдЕрдиреБрдорддрд┐рд╣рд░реВ рднрд▓реНрдЯрдорд╛ рдзреЗрд░реИ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЫрдиреН

рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдЫ AppRole, рдЬрд╕рд▓реЗ рднрд▓реНрдЯрдмрд╛рдЯ рд╕рдмреИ рд░рд╣рд╕реНрдпрд╣рд░реВ рдкрдвреНрдЫред

рд░реЛрд▓рдмреНрдпрд╛рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЫреИрди

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

рд╣рд╛рдореА GitOps рддрд┐рд░ рд▓рд╛рдЧрд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ

рд╣рд╛рдореНрд░реЛ рд▓рдХреНрд╖реНрдп

рд╣рд╛рдореА рдЪрд╛рд░реНрдЯрд▓рд╛рдИ рдпреЛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рднрдгреНрдбрд╛рд░рдорд╛ рдлрд░реНрдХрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреМрдВред

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

рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЫрдиреН:

  • рдзреЗрд░реИ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ред рд╕реНрдерд╛рдиреАрдп рдЪрд╛рд░реНрдЯрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрди рд╕рдЬрд┐рд▓реЛ рдЫред
  • рд╕реЗрд╡рд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рд┐рднрд╛рд╖рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдХреЛрдб рдЬрд╕реНрддреИ рдард╛рдЙрдБ рд╕реЗрд╡рд╛ред
  • рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЪрд╛рд░реНрдЯрд╣рд░реВ рд╣рдЯрд╛рдЙрдиреЗ рдкреНрд░рдмрдиреНрдзред рд╕реЗрд╡рд╛рдХреЛ рдЖрдлреНрдиреИ рд╣реЗрд▓реНрдо рд░рд┐рд▓реАрдЬ рд╣реБрдиреЗрдЫред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреАрд╡рдирдЪрдХреНрд░ (рд░реЛрд▓рдмреНрдпрд╛рдХ, рд╕реНрддрд░рд╡реГрджреНрдзрд┐) рд▓рд╛рдИ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдиреЛ рд╕реНрддрд░рдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ, рддрд╛рдХрд┐ рдЕрдиреНрдп рд╕реЗрд╡рд╛рд╣рд░реВрд▓рд╛рдИ рдЕрд╕рд░ рдирд╣реЛрд╕реНред
  • Git рдХреЛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЪрд╛рд░реНрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирдХрд╛ рд▓рд╛рдЧрд┐: рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреВрд░реНрд╡рд╡рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЕрдбрд┐рдЯ рд▓рдЧ, рдЗрддреНрдпрд╛рджрд┐ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪрд╛рд░реНрдЯрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд▓рд╛рдИ рдкреВрд░реНрд╡рд╡рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ git рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕реНрд╡рддрдГ рд╕реБрд░реБ рд╣реБрдиреНрдЫред
  • рддрдкрд╛рдИрд▓реЗ рдЖрдлреНрдиреЛ рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЬрд╕реНрддреИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╕реНрдХрд╛рдлреЛрд▓реНрдб, рдЬрд╕рдХреЛ рд╕рд╛рде рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЙрддреНрдкрд╛рджрдирдХреЛ рдирдЬрд┐рдХрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред

рджреБрдИ-рдЪрд░рдг рдорд╛рдЗрдЧреНрд░реЗрд╕рди

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

  • рд╣рд╛рдореА рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рд░рд╛рдЦреНрдЫреМрдВ, рддрд░ рдбреЗрд▓реАрдореЛрд╢рди рд░рд┐рд▓рд┐рдЬ рднрдирд┐рдиреЗ рдПрдХрд▓ рд╡рд╕реНрддреБрдорд╛ред

apiVersion: "v1"
kind: "DailymotionRelease"
metadata:
  name: "app1.ns1"
  environment: "dev"
  branch: "mybranch"
spec:
  slack_channel: "#admin"
  chart_name: "app1"
  scaling:
    - context: "dev-us-central1-0"
      replicas:
        - name: "hermes"
          count: 2
    - context: "dev-europe-west1-0"
      replicas:
        - name: "app1-deploy"
          count: 2
  secrets:
    - secret_id: "app1"
      contexts:
        - name: "default"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"
        - name: "dev-europe-west1-0"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"

  • рдкреНрд░рддрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рез рд░рд┐рд▓реАрдЬ (рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЪрд╛рд░реНрдЯрд╣рд░реВ рдмрд┐рдирд╛)ред
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ git рднрдгреНрдбрд╛рд░рдорд╛ рдЪрд╛рд░реНрдЯрд╣рд░реВред

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

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

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

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