GitOps: рдкреБрд▓ рд░ рдкреБрд╢ рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рддреБрд▓рдирд╛

рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: Kubernetes рд╕рдореБрджрд╛рдпрдорд╛, GitOps рднрдирд┐рдиреЗ рдЪрд▓рдирд▓реЗ рд╕реНрдкрд╖реНрдЯ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкрд╛рдЗрд░рд╣реЗрдХреЛ рдЫ, рд╣рд╛рдореАрд▓реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛ рджреЗрдЦреНрдпреМрдВ, рднреНрд░рдордг рдЧрд░реНрджреИ KubeCon Europe 2019ред рдпреЛ рд╢рдмреНрдж рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рднрд░реНрдЦрд░рдХреЛ рдерд┐рдпреЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░реЗ Weaveworks рдХреЛ рдкреНрд░рдореБрдЦ рджреНрд╡рд╛рд░рд╛ - рдПрд▓реЗрдХреНрд╕рд┐рд╕ рд░рд┐рдЪрд░реНрдбрд╕рди - рд░ рдпрд╕рдХреЛ рдорддрд▓рдм рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдкрд░рд┐рдЪрд┐рдд рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧ (рдореБрдЦреНрдп рд░реВрдкрдорд╛ Git, рддреНрдпрд╕реИрд▓реЗ рдирд╛рдо) рдкрд░рд┐рдЪрд╛рд▓рди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рд╣рд╛рдореА Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрджреИрдЫреМрдВ рдпрд╕рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ Git рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реЗрд░ рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реЗрд░ред Matthias Jg рдпрд╕ рд▓реЗрдЦрдорд╛ рдпрд╕ рд░реЛрд▓рдЖрдЙрдЯрдХреЛ рд▓рд╛рдЧрд┐ рджреБрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрджрдЫред

GitOps: рдкреБрд▓ рд░ рдкреБрд╢ рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рддреБрд▓рдирд╛

рдЧрдд рд╡рд░реНрд╖ (рд╡рд╛рд╕реНрддрд╡рдорд╛, рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдкрдорд╛ рдпреЛ рдЕрдЧрд╕реНрдд 2017 рдорд╛ рднрдпреЛ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред) Kubernetes рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рддреИрдирд╛рддреА рдЧрд░реНрди рдирдпрд╛рдБ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЫред рдпрд╕рд▓рд╛рдИ GitOps рднрдирд┐рдиреНрдЫ, рд░ рдпреЛ рдЖрдзрд╛рд░рднреВрдд рд╡рд┐рдЪрд╛рд░рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ рдХрд┐ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ Git рднрдгреНрдбрд╛рд░рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдиреНрдЫред

рдпрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рдореБрдЦреНрдп рдлрд╛рдЗрджрд╛рд╣рд░реВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЫрдиреН::

  1. рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдВрд╕реНрдХрд░рдг рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЗрддрд┐рд╣рд╛рд╕ред рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЕрд╡рд╕реНрдерд╛ Git рднрдгреНрдбрд╛рд░рдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рддреИрдирд╛рддреАрд╣рд░реВ рдХреЗрд╡рд▓ рдХрдорд┐рдЯрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреНрдЫрдиреНред рдердк рд░реВрдкрдорд╛, рд╕рдмреИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рддрд┐рдмрджреНрдз рдЗрддрд┐рд╣рд╛рд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
  2. рдкрд░рд┐рдЪрд┐рдд Git рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░реЛрд▓рдмреНрдпрд╛рдХрд╣рд░реВред рд╕рд░рд▓ git reset рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд░рд┐рдирд┐рдпреЛрдЬрдирдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ; рд╡рд┐рдЧрддрдХрд╛ рд░рд╛рдЬреНрдпрд╣рд░реВ рд╕рдзреИрдВ рдЙрдкрд▓рдмреНрдз рдЫрдиреНред
  3. рддрдпрд╛рд░ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдгред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдПрдХ Git рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдзреЗрд░реИ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдзреЗрд░реИ рдХрдореНрдкрдиреАрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрди рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдиреНрдЫрдиреНред рддрджрдиреБрд╕рд╛рд░, рдпреЛ рд╕реБрд░рдХреНрд╖рд╛ рддреИрдирд╛рддреА рд╕рдВрдЧ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рдкрдирд┐ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред
  4. рдкрд░рд┐рдирд┐рдпреЛрдЬрдирдХрд╛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐рд╣рд░реВред рдзреЗрд░реИ рдЬрд╕реЛ Git рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд▓реЗ рдиреЗрдЯрд┐рдн рд░реВрдкрдорд╛ рд╢рд╛рдЦрд╛-рджреНрд╡рд╛рд░рд╛-рд╢рд╛рдЦрд╛ рдиреАрддрд┐рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреЗрд╡рд▓ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓реЗ рдорд╛рд╕реНрдЯрд░ рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реА рдЕрд░реНрдХреЛ рдЯреЛрд▓реА рд╕рджрд╕реНрдпрджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдгрдХреЛ рд░реВрдкрдорд╛, рдПрдЙрдЯреИ рдиреАрддрд┐рд╣рд░реВ рддреИрдирд╛рддреА рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреНред

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

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдзрд┐рд╣рд░реВ

рд╣рд╛рд▓реИрдХрд╛ рд╡рд░реНрд╖рд╣рд░реВрдорд╛, рддреИрдирд╛рддреАрдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд┐рд╣рд░реВ рд░ рдЙрдкрдХрд░рдгрд╣рд░реВ Kubernetes рдорд╛ рд╕реНрдерд╛рдкрд┐рдд рднрдПрдХрд╛ рдЫрдиреН:

  1. рдиреЗрдЯрд┐рдн Kubernetes/Kustomize рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рддред Kubernetes рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреЗ рдпреЛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рд╣реЛред рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдЖрдзрд╛рд░рднреВрдд YAML рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред рдЙрд╣реА рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рд▓реЗрдЦреНрдирдмрд╛рдЯ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдЙрди, Kustomize рд╡рд┐рдХрд╛рд╕ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рдпрд╕рд▓реЗ Kubernetes рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрд▓рд╛рдИ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдорд╛ рдкрд░рд┐рдгрдд рдЧрд░реНрджрдЫ)ред рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: Kustomize рдХреЛ рд╕рд╛рде kubectl рдорд╛ рдПрдХреАрдХреГрдд рдЧрд░рд┐рдПрдХреЛ рдЫ Kubernetes 1.14 рдХреЛ рд░рд┐рд▓реАрдЬ.
  2. рд╣реЗрд▓рдо рдЪрд╛рд░реНрдЯрд╣рд░реВред рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ, рдЗрдирд┐рдЯ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ, рд╕рд╛рдЗрдбрдХрд╛рд░рд╣рд░реВ, рдЗрддреНрдпрд╛рджрд┐рдХреЛ рд╕реЗрдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЬреБрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдгрдорд╛ рднрдиреНрджрд╛ рдмрдвреА рд▓рдЪрд┐рд▓реЛ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрд╕рдБрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рд╡рд┐рдзрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЧрд░рд┐рдПрдХреЛ YAML рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫред рд╣реЗрд▓реНрдорд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рднрд░реНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЯрд┐рд▓рд░рдорд╛ рдкрдард╛рдЙрдБрдЫ, рдХреНрд▓рд╕реНрдЯрд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рдЬрд╕рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдЫ рд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд░ рд░реЛрд▓рдмреНрдпрд╛рдХрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рд╣реЗрд▓реНрдорд▓реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрдорд╛ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рдирд╣рд░реВ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрджрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд░рдореНрдкрд░рд╛рдЧрдд рджреГрд╖реНрдЯрд┐рдХреЛрдгрдорд╛ рдЧрд░рд┐рдПрдЭреИрдВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред (рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рд░ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдорд╛ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдердк рдкрдвреНрдиреБрд╣реЛрд╕реН рд╣реЗрд▓рдо рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ - рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред)ред рддреНрдпрд╣рд╛рдБ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╡рд┐рд╕реНрддреГрдд рджрд╛рдпрд░рд╛ рд╕рдореЗрдЯреНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рддрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВ рдЫрдиреНред
  3. рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрдкрдХрд░рдгрд╣рд░реВред рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреНред рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИрдорд╛ рдХреЗ рд╕рдорд╛рди рдЫ рдХрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХреЗрд╣реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╛рдЗрд▓рд╣рд░реВ Kubernetes-рдкрдвреНрди рдпреЛрдЧреНрдп YAML рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдмрджрд▓реНрдЫрдиреН рд░ рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреНред

рд╣рд╛рдореНрд░реЛ рдХрд╛рдордорд╛, рд╣рд╛рдореА рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░рдиреНрддрд░ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВ (рдХрд┐рдирдХрд┐ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдзреЗрд░реИ рдЪреАрдЬрд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рддрдпрд╛рд░ рдЫрдиреН, рдЬрд╕рд▓реЗ рдЬреАрд╡рдирд▓рд╛рдИ рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрджрдЫ) рд░ рд╣рд╛рдореНрд░рд╛ рдЖрдлреНрдиреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ "рд╢реБрджреНрдз" Kubernetes YAML рдлрд╛рдЗрд▓рд╣рд░реВред

рддрд╛рдиреНрдиреБрд╣реЛрд╕реН рд░ рдзрдХреЗрд▓реНрдиреБрд╣реЛрд╕реН

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

рдПрдирдмреА! GitOps рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╕рдмреИ рдлрд╛рдЗрджрд╛рд╣рд░реВ рджреБрдмреИ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рд░рд╣рдиреНрдЫред

рдкреБрд▓ рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг

GitOps: рдкреБрд▓ рд░ рдкреБрд╢ рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рддреБрд▓рдирд╛

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

рдкреНрд░реЛ:

  1. рдХреБрдиреИ рдкрдирд┐ рдмрд╛рд╣реНрдп рдЧреНрд░рд╛рд╣рдХрд╕рдБрдЧ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗ рдЕрдзрд┐рдХрд╛рд░ рдЫреИрди; рд╕рдмреИ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рднрд┐рддреНрд░рдмрд╛рдЯ рд░реЛрд▓ рдЖрдЙрдЯ рд╣реБрдиреНрдЫрдиреНред
  2. рдХреЗрд╣реА рдЙрдкрдХрд░рдгрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╣реЗрд▓рдо рдЪрд╛рд░реНрдЯ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рд░ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд▓рд┐рдЩреНрдХ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  3. рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрджрд┐ рдирдпрд╛рдБ рдЫрд╡рд┐ рдЙрдкрд▓рдмреНрдз рдЫ рднрдиреЗ, Git рднрдгреНрдбрд╛рд░ рд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдиреНрдЫред
  4. рдкреБрд▓ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди Git рднрдгреНрдбрд╛рд░рд╣рд░реВ рд░ рдЕрдиреБрдорддрд┐рд╣рд░реВрд╕рдБрдЧ рд╡рд┐рднрд┐рдиреНрди рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВрдорд╛ рд╡рд┐рддрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, рдмрд╣реБрдореБрдЦреА рдореЛрдбреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЯреЛрд▓реА A рд▓реЗ рдиреЗрдорд╕реНрдкреЗрд╕ A рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ, рдЯреЛрд▓реА B рд▓реЗ рдиреЗрдорд╕реНрдкреЗрд╕ B рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдЯреЛрд▓реАрд▓реЗ рдЧреНрд▓реЛрдмрд▓ рд╕реНрдкреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫред
  5. рдирд┐рдпрдордХреЛ рд░реВрдкрдорд╛, рдЙрдкрдХрд░рдгрд╣рд░реВ рдзреЗрд░реИ рд╣рд▓реНрдХрд╛ рдЫрдиреНред
  6. рдЕрдкрд░реЗрдЯрд░ рдЬрд╕реНрддрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рд╕рдВрдпреБрдХреНрдд рдмрд┐рдЯрдирд╛рдореА рд╕реАрд▓ рдЧрд░рд┐рдПрдХреЛ рд░рд╣рд╕реНрдп, рдЧреЛрдкреНрдпрд╣рд░реВ рдПрдХ Git рднрдгреНрдбрд╛рд░рдорд╛ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
  7. рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╣реБрдиреЗ рднрдПрдХреЛрд▓реЗ CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВрдорд╛ рдХреБрдиреИ рдЬрдбрд╛рди рдЫреИрдиред

╨Ь╨╕╨╜╤Г╤Б╤Л:

  1. рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВрдмрд╛рдЯ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдЧреЛрдкреНрдпрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рдирд┐рдпрдорд┐рдд рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ рднрдиреНрджрд╛ рдмрдвреА рдЧрд╛рд╣реНрд░реЛ рдЫ, рдХрд┐рдирдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдкрд╣рд┐рд▓реЗ рд╕реАрд▓ рдЧрд░рд┐рдПрдХреЛ рдЧреЛрдкреНрдп рд░реВрдкрдорд╛, рддреНрдпрд╕рдкрдЫрд┐ рдЖрдиреНрддрд░рд┐рдХ рдЕрдкрд░реЗрдЯрд░рджреНрд╡рд╛рд░рд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЧрд░рд┐рдПрдХреЛ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ рддрд┐рдиреАрд╣рд░реВ рдкреБрд▓ рдЙрдкрдХрд░рдгрдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреНрдЫрдиреНред рддреНрдпрд╕реЛрднрдП рддрдкрд╛рдИрд▓реЗ рд╣реЗрд▓реНрдордорд╛ рд░рд┐рд▓рд┐рдЬ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдкрд╣рд┐рд▓реЗ рдиреИ рддреИрдирд╛рдд рдЧреЛрдкреНрдпрд╣рд░реВрдорд╛ рдорд╛рдирд╣рд░реВрд╕рдБрдЧред рд╕рдмреИ рднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░реАрдХрд╛ рднрдиреЗрдХреЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рд╣реЗрд▓реНрдо рдорд╛рдирд╣рд░реВрд╕рдБрдЧ рдЧреЛрдкреНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБ рд╣реЛ, рдпрд╕рд▓рд╛рдИ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ Git рдорд╛ рдХрдорд┐рдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  2. рдЬрдм рддрдкрд╛рдЗрдБ рдПрдХ рдкреБрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд┐рдиреБрд╣реБрдиреНрдЫ, рддрдкрд╛рдЗрдБ рдЙрдкрдХрд░рдгрд╣рд░реВ рддрд╛рдиреНрдиреБ рд╣реБрдиреНрдЫред рдпрд╕рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛рд▓рд╛рдИ рд╕реАрдорд┐рдд рдЧрд░реНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, Kustomize рдпрд╕ рддрдереНрдп рджреНрд╡рд╛рд░рд╛ рдЬрдЯрд┐рд▓ рдЫ рдХрд┐ рдпреЛ рдЕрдиреНрддрд┐рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ Git рдорд╛ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реБрдиреБ рдЕрдШрд┐ рдЪрд▓реНрдиреБ рдкрд░реНрдЫред рдо рддрдкрд╛рдИ рд╕реНрдЯреНрдпрд╛рдиреНрдбрдЕрд▓реЛрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рднрдиреА рд╣реЛрдЗрди, рддрд░ рддрд┐рдиреАрд╣рд░реВ рддрдкрд╛рдИрдВрдХреЛ рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдПрдХреАрдХреГрдд рдЧрд░реНрди рдЕрдЭ рдЧрд╛рд╣реНрд░реЛ рдЫрдиреНред

рдкреБрд╢ рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг

GitOps: рдкреБрд▓ рд░ рдкреБрд╢ рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рддреБрд▓рдирд╛

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

╨Я╨╗╤О╤Б╤Л:

  1. рд╕реБрд░рдХреНрд╖рд╛ Git рднрдгреНрдбрд╛рд░ рд░ рдирд┐рд░реНрдорд╛рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫред
  2. рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ рд░ рд╣реЗрд▓реНрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред
  3. рдЧреЛрдкреНрдпрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ рдХрд┐рдирднрдиреЗ рдЧреЛрдкреНрдпрд╣рд░реВ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ Git рдорд╛ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ)ред
  4. рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рд╣реБрдирд╛рд▓реЗ рдХреБрдиреИ рдЦрд╛рд╕ рдЙрдкрдХрд░рдгрд╕рдБрдЧ рдХреБрдиреИ рдЬрдбрд╛рди рдЫреИрдиред
  5. рдХрдиреНрдЯреЗрдирд░ рд╕рдВрд╕реНрдХрд░рдг рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

╨Ь╨╕╨╜╤Г╤Б╤Л:

  1. рдХреНрд▓рд╕реНрдЯрд░ рдкрд╣реБрдБрдЪ рдбрд╛рдЯрд╛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рднрд┐рддреНрд░ рдЫред
  2. рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рдЕрдЭреИ рдкрдирд┐ рдкреБрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд╕рд╛рде рд╕рдЬрд┐рд▓реЛ рдЫред
  3. CD рдкреНрд░рдгрд╛рд▓реАрдорд╛ рднрд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рдореВрд▓ рд░реВрдкрдорд╛ Gitlab рдзрд╛рд╡рдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд▓реЗрдЦрд┐рдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЯреЛрд▓реАрд▓реЗ Azure DevOps рд╡рд╛ Jenkins рдорд╛ рдЬрд╛рдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдЫ... рд░ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдирд┐рд░реНрдорд╛рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред

рдкрд░рд┐рдгрд╛рдо: рдзрдХреНрдХрд╛ рд╡рд╛ рддрд╛рдиреНрдиреБрд╣реЛрд╕реН?

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

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

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

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

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

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PS рдиреЛрдЯ

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

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

рд╣рд╛рдореАрд▓реЗ рджреБрдмреИ рдореЛрдбреЗрд▓рд╣рд░реВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдпреМрдВ рд░ рд▓реЗрдЦрдХреЛ рд▓реЗрдЦрдХрдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯреИ рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛ рдкреБрдЧреНрдпреМрдВ:

  1. рдкреБрд▓ рдореЛрдбреЗрд▓ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдкреНрд░рдгрд╛рд▓реА рдШрдЯрдХрд╣рд░реВрдХреЛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдЙрдкрдпреБрдХреНрдд рдЫ (рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред addon-operator рдХреЛ рдмрд╛рд░реЗрдорд╛ рд▓реЗрдЦ).
  2. GitLab CI рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдкреБрд╢ рдореЛрдбреЗрд▓ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдЙрдкрдпреБрдХреНрдд рдЫред рдПрдХреИ рд╕рдордпрдорд╛, рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рднрд┐рддреНрд░ рддреИрдирд╛рддреАрд╣рд░реВрдХреЛ рд░реЛрд▓рдЖрдЙрдЯ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░рд┐рдиреНрдЫ рд╡рд╛рдлред рдЦреИрд░, рд╣рд╛рдореНрд░реЛ рдпрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛, рд╣рд╛рдореАрд▓реЗ KubeCon Europe'19 рдорд╛ рд╣рд╛рдореНрд░реЛ рд╕реНрдЯреНрдпрд╛рдиреНрдбрдорд╛ DevOps рдИрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВрдХреЛ рджрдмрд╛рдм рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓реЗ рдирд┐рд░рдиреНрддрд░ "GitOps" рд╕реБрдиреНрдпреМрдВред

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PPS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

рдХреЗ рддрдкрд╛рдЗрдБ GitOps рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ?

  • рд╣реЛ, рджреГрд╖реНрдЯрд┐рдХреЛрдг рддрд╛рдиреНрдиреБрд╣реЛрд╕реН

  • рд╣реЛ, рдзрдХреНрдХрд╛

  • рд╣реЛ, рдкреБрд▓ + рдкреБрд╢

  • рд╣реЛ, рдЕрд░реВ рдХреЗрд╣реА

  • рдХреБрдиреИ

30 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред 10 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

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

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