werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЙрддреНрд╕рд╡рдХреЛ рдПрдХ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛ рдЖрдпреЛрдЬрд┐рдд DevOpsConf 27 рд╕рдореНрдореЗрд▓рдирдХреЛ рдореБрдЦреНрдп рд╣рд▓рдорд╛ рдореЗ 2019 RIT++ реирежрезреп, "рдирд┐рд░рдиреНрддрд░ рдбреЗрд▓рд┐рднрд░реА" рдЦрдгреНрдбрдХреЛ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛, рдПрдЙрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯ рджрд┐рдЗрдПрдХреЛ рдерд┐рдпреЛ "werf - Kubernetes рдорд╛ CI/CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг"ред рддреА рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдЫ Kubernetes рдорд╛ рддреИрдирд╛рдд рдЧрд░реНрджрд╛ рд╕рдмреИрд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛ рд░ рдЪреБрдиреМрддреАрд╣рд░реВ, рд╕рд╛рдереИ рдиреНрдпреБрдирд╕рд╣рд░реВ рдмрд╛рд░реЗ рдЬреБрди рддреБрд░реБрдиреНрддреИ рдзреНрдпрд╛рди рдирджрд┐рдиреЗ рд╣реБрди рд╕рдХреНрдЫред рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджреИ, рд╣рд╛рдореА рдпреЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЙрдкрдХрд░рдгрдорд╛ рдХрд╕рд░реА рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫреМрдВ рд╡рд╛рдл.

рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг рдкрдЫрд┐, рд╣рд╛рдореНрд░реЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рдкрд╣рд┐рд▓реЗ dapp рднрдиреЗрд░ рдЪрд┐рдирд┐рдиреНрдереНрдпреЛ) рдХреЛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдорд╛рдЗрд▓рд╕реНрдЯреЛрдирдорд╛ рдкреБрдЧреЗрдХреЛ рдЫ GitHub рдорд╛ 1000 рддрд╛рд░рд╛рд╣рд░реВ тАФ рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдмрдвреНрджреЛ рд╕рдореБрджрд╛рдпрд▓реЗ рдзреЗрд░реИ DevOps рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВрдХреЛ рдЬреАрд╡рдирд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдиреЗрдЫред

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рддреНрдпрд╕реИрд▓реЗ, рдкрд░рд┐рдЪрдп рдЧрд░реМрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рднрд┐рдбрд┐рдпреЛ (~ 47 рдорд┐рдиреЗрдЯ, рд▓реЗрдЦ рднрдиреНрджрд╛ рдзреЗрд░реИ рдЬрд╛рдирдХрд╛рд░реАрдореВрд▓рдХ) рд░ рдпрд╕рдмрд╛рдЯ рдкрд╛рдардХреЛ рд░реВрдкрдорд╛ рдореБрдЦреНрдп рд╕рд╛рд░ред рдЬрд╛рдЙ!

Kubernetes рд▓рд╛рдИ рдХреЛрдб рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрджреИ

рдХреБрд░рд╛рдХрд╛рдиреА рдЕрдм werf рдХреЛ рдмрд╛рд░реЗ рдорд╛ рд╣реБрдиреЗрдЫреИрди, рддрд░ Kubernetes рдорд╛ CI/CD рдХреЛ рдмрд╛рд░реЗ рдорд╛, рд╣рд╛рдореНрд░реЛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рдорд╛ рдкреНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫред (рдореИрд▓реЗ рдпрд╕ рдмрд╛рд░реЗ рдорд╛ рдХреБрд░рд╛ рдЧрд░реЗрдХреЛ рдЫреБ 2016 рд░рд┐рдкреЛрд░реНрдЯ), рд░ K8s рдпрд╕рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рдЪрд▓рд╛рдЙрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ (рдпрд╕ рдмрд╛рд░реЗрдорд╛ рдердк рдорд╛ 2017 рд╡рд░реНрд╖).

Kubernetes рдорд╛ рдбреЗрд▓рд┐рднрд░реА рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ?

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

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯрд╣рд░реВ рдЫрдиреН:

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

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

рд╕реНрдЯреЗрдЬ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рддрдкрд╛рдЗрдБ реирежрезреп рдорд╛ рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрдм рд╕рдмреИрд▓рд╛рдИ рдбрдХрд░рдлрд╛рдЗрд▓рд╣рд░реВ рдХрд╕рд░реА рд▓реЗрдЦреНрдиреЗ рд░ рдЪрд▓рд╛рдЙрдиреЗ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдЫред docker build?.. рдпрд╣рд╛рдБ рдо рдзреНрдпрд╛рди рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдЫрдиреН:

  1. рдЫрд╡рд┐ рд╡рдЬрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ, рддреНрдпрд╕реИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдмрд╣реБ-рдЪрд░рдгрдЫрд╡рд┐рдорд╛ рдорд╛рддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫреЛрдбреНрди рдЬреБрди рдЕрдкрд░реЗрд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рд╕реНрддрд╡рдореИ рдЖрд╡рд╢реНрдпрдХ рдЫред
  2. рддрд╣рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЪреЗрдирд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реЗрд░ рдиреНрдпреВрдиреАрдХрд░рдг рдЧрд░реНрдиреБрдкрд░реНрдЫ RUN- рдЕрд░реНрде рдЕрдиреБрд╕рд╛рд░ рдЖрджреЗрд╢ред
  3. рддрд░, рдпрд╕рд▓реЗ рд╕рдорд╕реНрдпрд╛ рдердкреНрдЫ рдбрд┐рдмрдЧрд┐рдЩ, рдХрд┐рдирднрдиреЗ рдЬрдм рдПрд╕реЗрдореНрдмрд▓реА рдХреНрд░реНрдпрд╛рд╕ рд╣реБрдиреНрдЫ, рддрдкрд╛рдИрд▓реЗ рд╕рдорд╕реНрдпрд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЪреЗрдирдмрд╛рдЯ рд╕рд╣реА рдЖрджреЗрд╢ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБ рдкрд░реНрдЫред
  4. рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЧрддрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрд┐рдирднрдиреЗ рд╣рд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЫрд┐рдЯреЛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрди рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрд╛ рднрд╛рд╖рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдиред
  5. рдЕрдХреНрд╕рд░ рдПрдХ Git рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рддрдкрд╛рдИрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреНрдЫ рдзреЗрд░реИ рдЫрд╡рд┐рд╣рд░реВ, рдЬрд╕рд▓рд╛рдИ Dockerfiles рдХреЛ рд╕реЗрдЯ (рд╡рд╛ рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓рдорд╛ рдирд╛рдо рдЧрд░рд┐рдПрдХрд╛ рдЪрд░рдгрд╣рд░реВ) рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЕрд╕реЗрдВрдмрд▓реАрдХреЛ рд╕рд╛рде Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

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

  1. рдЕрдХреНрд╕рд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдгрдорд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╣рд┐ рдЪрд╛рд╣рд┐рдиреНрдЫ рдорд╛рдЙрдиреНрдЯ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ apt рдЬрд╕реНрддрд╛ рдЖрджреЗрд╢рдХреЛ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН)ред
  2. рд╣рд╛рдореА рдЪрд╛рд╣рдиреНрдЫреМрдВ рдЕрдЬреНрдЮрд╛рдд рдЦреЛрд▓рдорд╛ рд▓реЗрдЦреНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ред
  3. рд╣рд╛рдореА рдЪрд╛рд╣рдиреНрдЫреМрдВ рдбрдХрд░ рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг (рд╣рд╛рдореАрд▓рд╛рдИ рдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдХреБрд░рд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрдм рд╣рд╛рдореАрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореА рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫреМрдВ?)
  4. рд╕рдорд╛рдирд╛рдиреНрддрд░ рд╕рднрд╛, рдЬреБрди рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рдорд╛ рдмреБрдЭреНрди рд╕рдХрд┐рдиреНрдЫ: рдбрдХрд░рдлрд╛рдЗрд▓рдмрд╛рдЯ рдлрд░рдХ рдЖрджреЗрд╢рд╣рд░реВ (рдпрджрд┐ рдмрд╣реБ-рдЪрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ), рдПрдЙрдЯреИ рднрдгреНрдбрд╛рд░рдХрд╛ рдзреЗрд░реИ рдХрдорд┐рдЯрд╣рд░реВ, рдзреЗрд░реИ рдбрдХрд░рдлрд╛рдЗрд▓рд╣рд░реВред
  5. рд╡рд┐рддрд░рдг рд╕рднрд╛: рд╣рд╛рдореА рдкреЛрдбрд╣рд░реВрдорд╛ рдЪреАрдЬрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ рдЬреБрди "рдЕрд╕реНрдерд╛рдпреА" рд╣реЛ рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХреНрдпрд╛рд╕ рдЧрд╛рдпрдм рд╣реБрдиреНрдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рдХрддреИ рдЫреБрдЯреНрдЯреИ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
  6. рдЕрдиреНрддрдорд╛, рдореИрд▓реЗ рдЗрдЪреНрдЫрд╛рд╣рд░реВрдХреЛ рд╢рд┐рдЦрд░рдХреЛ рдирд╛рдо рджрд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд: рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдЬрд╛рдиреБ, рдХреЗрд╣реА рдХрдорд╛рдгреНрдб рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдХрд╕рд░реА рд░ рдХреЗ рд╕рд╣реА рддрд░рд┐рдХрд╛рд▓реЗ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмреБрдЭрд╛рдЗрдХреЛ рд╕рд╛рде рдПрдХ рддрдпрд╛рд░ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдпреЛ рдЖрджрд░реНрд╢ рд╣реБрдиреЗрдЫред рдпрджреНрдпрдкрд┐, рдо рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЫреИрди рдХрд┐ рд╕рдмреИ рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд░ рдпрд╣рд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдЫрдиреН:

  • moby/buildkit - рдбрдХрд░ рдЗрдВрдХ (рдкрд╣рд┐рд▓реЗ рдиреИ рдбрдХрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рдПрдХреАрдХреГрдд) рдХреЛ рдПрдХ рдмрд┐рд▓реНрдбрд░, рдЬрд╕рд▓реЗ рдпреА рд╕рдмреИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ;
  • рдХрдирд┐рдХреЛ - рдЧреБрдЧрд▓рдмрд╛рдЯ рдПрдХ рдмрд┐рд▓реНрдбрд░ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдбрдХрд░ рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ;
  • Buildpacks.io - CNCF рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬрд╛рджреБрдИ рдмрдирд╛рдЙрди рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпрд╛рд╕ рд░, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рддрд╣рд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА рд░рд┐рдмреЗрд╕ рд╕рдВрдЧ рдПрдХ рд░реЛрдЪрдХ рд╕рдорд╛рдзрд╛рди;
  • рд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВрдХреЛ рдЧреБрдЪреНрдЫрд╛, рдЬрд╕реНрддреИ рдмрд┐рд▓реНрдбрд╣, genuinetools/img...

...рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН GitHub рдорд╛ рдХрддрд┐ рддрд╛рд░рд╛рд╣рд░реВ рдЫрдиреНред рдЕрд░реНрдерд╛рддреН рдПрдХрд╛рддрд┐рд░, docker build рдЕрд╡рд╕реНрдерд┐рдд рдЫ рд░ рдХреЗрд╣рд┐ рдЧрд░реНрди рд╕рдХреНрдЫ, рддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдорд╛ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдорд╛рдзрд╛рди рднрдПрдХреЛ рдЫреИрди - рдпрд╕рдХреЛ рдкреНрд░рдорд╛рдг рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд▓реЗрдХреНрдЯрд░рд╣рд░реВрдХреЛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд╡рд┐рдХрд╛рд╕ рд╣реЛ, рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдХреЗрд╣реА рдЕрдВрд╢ рд╣рд▓ рдЧрд░реНрджрдЫред

werf рдорд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛

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

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдкреНрд░рдХрд╛рд╢рдирдХреЛ рдЪрд░рдг (рдкреНрд░рдХрд╛рд╢рди)

рд╣рд╛рдореАрд▓реЗ рдбрд╛рдпрд▓ рдЧрд░реНрдпреМрдВ docker push... - рдХреЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рд╣реБрди рд╕рдХреНрдЫ? рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рд╢реНрди рдЙрдареНрдЫ: "рдореИрд▓реЗ рдЫрд╡рд┐рдорд╛ рдХреБрди рдЯреНрдпрд╛рдЧ рд░рд╛рдЦреНрдиреБ рдкрд░реНрдЫ?" рдпреЛ рд╣рд╛рдореАрд╕рдБрдЧ рднрдПрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ Gitflow (рд╡рд╛ рдЕрдиреНрдп Git рд░рдгрдиреАрддрд┐) рд░ Kubernetes, рд░ рдЙрджреНрдпреЛрдЧрд▓реЗ Kubernetes рдорд╛ рдХреЗ рд╣реБрдиреНрдЫ Git рдорд╛ рдХреЗ рд╣реБрдиреНрдЫ рддреНрдпрд╕рд▓рд╛рдИ рдкрдЫреНрдпрд╛рдЙрдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдХреЛрд╢рд┐рд╕ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред рдЖрдЦрд┐рд░, Git рд╣рд╛рдореНрд░реЛ рд╕рддреНрдпрдХреЛ рдПрдХ рдорд╛рддреНрд░ рд╕реНрд░реЛрдд рд╣реЛред

рдпрд╕рдорд╛ рдХреЗ рдЧрд╛рд╣реНрд░реЛ рдЫ? рдкреНрд░рдЬрдирди рдХреНрд╖рдорддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН: Git рдорд╛ рдХрдорд┐рдЯрдмрд╛рдЯ, рдЬреБрди рдкреНрд░рдХреГрддрд┐рдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЫ (рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп), рдбрдХрд░ рдЫрд╡рд┐рдорд╛, рдЬреБрди рдЙрд╕реНрддреИ рд░рд╛рдЦреНрдиреБрдкрд░реНрдЫред

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

рдЯреНрдпрд╛рдЧрд┐рдЩ рд░рдгрдиреАрддрд┐рд╣рд░реВ

рдкрд╣рд┐рд▓реЛ рд╕рд░рд▓ рдЫ git рдЯреНрдпрд╛рдЧред рд╣рд╛рдореАрд╕рдБрдЧ рдЯреНрдпрд╛рдЧ рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐рдХреЛ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЫ 1.0ред Kubernetes рдХреЛ рд╕реНрдЯреЗрдЬ рд░ рдЙрддреНрдкрд╛рджрди рдЫ, рдЬрд╣рд╛рдБ рдпреЛ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫред Git рдорд╛ рд╣рд╛рдореА рдХрдорд┐рдЯ рдЧрд░реНрдЫреМрдВ рд░ рдХреЗрд╣рд┐ рдмрд┐рдиреНрджреБрдорд╛ рд╣рд╛рдореА рдЯреНрдпрд╛рдЧ рдЧрд░реНрдЫреМрдВ 2.0ред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЕрдиреБрд╕рд╛рд░ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдЯреНрдпрд╛рдЧрдХреЛ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рд░рд╛рдЦреНрдЫреМрдВ 2.0ред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕реНрдЯреЗрдЬрдорд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрдЫреМрдВ рд░, рдпрджрд┐ рд╕рдмреИ рдареАрдХ рдЫ рднрдиреЗ, рдЙрддреНрдкрд╛рджрдирдорд╛ред

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

рджреЛрд╕реНрд░реЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ git рдХрдорд┐рдЯ + рдЯреНрдпрд╛рдЧред рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛рдорд╛ рдЯреНрдпрд╛рдЧ рдЫ 1.0; рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ - рдЙрддреНрдкрд╛рджрдирдорд╛ рддреИрдирд╛рде рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐ред рдердк рд░реВрдкрдорд╛, Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд░ рд╕реНрдЯреЗрдЬрд┐рдЩ рд░реВрдкрд░реЗрдЦрд╛рд╣рд░реВ рдЫрдиреНред рдЕрд░реНрдХреЛ рд╣рд╛рдореА Gitflow рд▓рд╛рдИ рдкрдЫреНрдпрд╛рдЙрдБрдЫреМрдВ: рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛рдорд╛ (develop) рд╣рд╛рдореА рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдмрдирд╛рдЙрдБрдЫреМрдВ, рдЬрд╕рдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╕рдБрдЧ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╣реБрдиреНрдЫ #c1ред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫреМрдВ рд░ рдпреЛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдЫреМрдВ (#c1)ред рдЙрд╣реА рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд╕рд╛рде рд╣рд╛рдореА рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЧрд░реНрди рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрдЫреМрдВред рд╣рд╛рдореА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╕рдВрдЧ рддреНрдпрд╕реНрддреИ рдЧрд░реНрдЫреМрдВ #c2 ╨╕ #c3.

рдЬрдм рд╣рд╛рдореАрд▓реЗ рдорд╣рд╕реБрд╕ рдЧрд░реНрдпреМрдВ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдкрд░реНрдпрд╛рдкреНрдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреН, рд╣рд╛рдореА рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдерд┐рд░ рдЧрд░реНрди рдерд╛рд▓реНрдЫреМрдВред Git рдорд╛ рдПрдЙрдЯрд╛ рд╢рд╛рдЦрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН release_1.1 (рдЖрдзрд╛рд░рдорд╛ #c3 рдмрд╛рдЯ develop)ред рдпреЛ рд░рд┐рд▓реАрдЬ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдХрд┐рдирднрдиреЗ ... рдпреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕реНрдЯреЗрдЬрд┐рдЩрдорд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рдмрдЧрд╣рд░реВ рдареАрдХ рдЧрд░реНрдЫреМрдВ #c4 рд░ рддреНрдпрд╕реИ рдЧрд░реА рд╕реНрдЯреЗрдЬрд┐рдЩрдорд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдПрдХреИ рд╕рдордпрдорд╛, рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рдЫ develop, рдЬрд╣рд╛рдБрдмрд╛рдЯ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд▓рд┐рдЗрдиреНрдЫ release_1.1ред рдХреЗрд╣рд┐ рдмрд┐рдиреНрджреБрдорд╛, рд╣рд╛рдореА рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХрдореНрдкрд╛рдЗрд▓ рд░ рд╕реНрдЯреЗрдЬрд┐рдЩрдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдЫреМрдВ, рдЬреБрди рд╣рд╛рдореА рдЦреБрд╕реА рдЫреМрдВ (#c25).

рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА (рдлрд╛рд╕реНрдЯ-рдлрд░реНрд╡рд╛рд░реНрдб рд╕рдВрдЧ) рд░рд┐рд▓реАрдЬ рд╢рд╛рдЦрд╛ (release_1.1) рдорд╛рд╕реНрдЯрд░ рдорд╛ред рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдХрдорд┐рдЯрдорд╛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд╕рд╛рде рдЯреНрдпрд╛рдЧ рд░рд╛рдЦреНрдпреМрдВ (1.1)ред рддрд░ рдпреЛ рдЫрд╡рд┐ рдкрд╣рд┐рд▓реЗ рдиреИ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдлреЗрд░рд┐ рд╕рдЩреНрдХрд▓рди рдирдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдХреЗрд╡рд▓ рдЕрд╡рд╕реНрдерд┐рдд рдЫрд╡рд┐рдорд╛ рджреЛрд╕реНрд░реЛ рдЯреНрдпрд╛рдЧ рдердкреНрдЫреМрдВ (рдЕрд╣рд┐рд▓реЗ рдпреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдЯреНрдпрд╛рдЧрд╣рд░реВ рдЫрдиреНред #c25 ╨╕ 1.1)ред рддреНрдпрд╕ рдкрдЫрд┐, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрдЫреМрдВред

рддреНрдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдХрдордЬреЛрд░реА рдЫ рдХрд┐ рд╕реНрдЯреЗрдЬрд┐рдЩрдорд╛ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫ (#c25), рд░ рдЙрддреНрдкрд╛рджрди рдорд╛ рдпреЛ рдлрд░рдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдЫ (1.1), рддрд░ рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ "рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдкрдорд╛" рдпреА рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдмрд╛рдЯ рдПрдЙрдЯреИ рдЫрд╡рд┐ рд╣реБрдиреНред

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

рд╣рд╛рдореА рдЕрдЧрд╛рдбрд┐ рдЬрд╛рди рд╕рдХреНрдЫреМрдВ рд░ рдПрдХ рдЪрд╛рд▓ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ... рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбрдХрд░рдлрд╛рдЗрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВ:

FROM ruby:2.3 as assets
RUN mkdir -p /app
WORKDIR /app
COPY . ./
RUN gem install bundler && bundle install
RUN bundle exec rake assets:precompile
CMD bundle exec puma -C config/puma.rb

FROM nginx:alpine
COPY --from=assets /app/public /usr/share/nginx/www/public

рдирд┐рдореНрди рд╕рд┐рджреНрдзрд╛рдиреНрдд рдЕрдиреБрд╕рд╛рд░ рдпрд╕рдмрд╛рдЯ рдлрд╛рдЗрд▓ рдирд┐рд░реНрдорд╛рдг рдЧрд░реМрдВ:

  • рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рдЫрд╡рд┐рд╣рд░реВрдХреЛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВрдмрд╛рдЯ SHA256 (ruby:2.3 ╨╕ nginx:alpine), рдЬреБрди рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рд╛рдордЧреНрд░реАрдХреЛ рдЪреЗрдХрд╕рдорд╣рд░реВ рд╣реБрдиреН;
  • рд╕рдмреИ рдЯреЛрд▓реА (RUN, CMD рд░ рдпрд╕реНрддреИред);
  • рдердкрд┐рдПрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВрдмрд╛рдЯ SHA256ред

... рд░ рддреНрдпрд╕реНрддреЛ рдлрд╛рдЗрд▓рдмрд╛рдЯ рдЪреЗрдХрд╕рдо (рдлреЗрд░рд┐ SHA256) рд▓рд┐рдиреБрд╣реЛрд╕реНред рдпреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рд╕рд╛рдордЧреНрд░реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛ред

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд╣рд╛рдореА рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ рдлрд░реНрдХреМрдВ рд░ рдХрдорд┐рдЯрдХреЛ рд╕рдЯреНрдЯрд╛ рд╣рд╛рдореА рддреНрдпрд╕реНрддрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ, рдЕрд░реНрдерд╛рддреН рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╣рд┐рдд рдЫрд╡рд┐рд╣рд░реВ рдЯреНрдпрд╛рдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

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

werf рдорд╛ рдЯреНрдпрд╛рдЧ рдЧрд░реНрджреИ

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

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

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

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

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕рдлрд╛ рдЧрд░реНрджреИ

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

рд╕рд░рд╕рдлрд╛рдИ рд░рдгрдиреАрддрд┐ рдХреЗ рд╣реЛ?

  1. рддрдкрд╛рдИрд▓реЗ рдХреЗрд╣рд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рд╕рдлрд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдЯреНрдпрд╛рдЧрд╣рд░реВрдХреЛ рдареВрд▓реЛ рдЯреНрдпрд╛рдЩреНрдЧрд▓ рдЦреЛрд▓реНрдиреБ рднрдиреНрджрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдард╛рдЙрдБрдХреЛ рд▓рд╛рдЧрд┐ рдереЛрд░реИ рддрд┐рд░реНрди рд╡рд╛рд╕реНрддрд╡рдореИ рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫред рддрд░ рдпреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдиреНрджреБ рд╕рдореНрдо рдорд╛рддреНрд░ рдХрд╛рдо рдЧрд░реНрджрдЫред
  2. рдкреВрд░реНрдг рд░рд┐рд╕реЗрдЯред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИ рдЫрд╡рд┐рд╣рд░реВ рдореЗрдЯрд╛рдЙрдиреБрднрдпреЛ рд░ CI рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╣рд╛рд▓рдХрд╛ рдЫрд╡рд┐рд╣рд░реВ рдорд╛рддреНрд░ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрди рд╕рдХреНрдЫред рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░ рдЙрддреНрдкрд╛рджрдирдорд╛ рдкреБрди: рд╕реБрд░реБ рднрдпреЛ рднрдиреЗ, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдЫрд╡рд┐ рд▓реЛрдб рдЧрд░рд┐рдиреЗрдЫ - рдЬреБрди рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдХрд╕реИрджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдпрд╕рд▓реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рд╡рд┐рдЪрд╛рд░рд▓рд╛рдИ рдорд╛рд░реНрдЫред
  3. рдирд┐рд▓реЛ рд╣рд░рд┐рдпреЛред рдПрдЙрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдУрднрд░рдлреНрд▓реЛ рд╣реБрди рдерд╛рд▓реНрдпреЛ - рд╣рд╛рдореА рдЫрд╡рд┐рд╣рд░реВ рдЕрд░реНрдХреЛрдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдЫреМрдВред рдЕрдШрд┐рд▓реНрд▓реЛ рд╡рд┐рдзрд┐рдорд╛ рдЬрд╕реНрддреИ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛: рддрдкрд╛рдЗрдБ рдХреБрди рдмрд┐рдиреНрджреБрдорд╛ рдУрднрд░рдлреНрд▓реЛ рдЧрд░реНрди рд╕реБрд░реБ рднрдПрдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЦрд╛рд▓реА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ?
  4. рд╕рдордпрдореИред рез рдорд╣рд┐рдирд╛ рднрдиреНрджрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдмреИ рдЫрд╡рд┐рд╣рд░реВ рдореЗрдЯреНрдиреЗ рд╣реЛ? рддрд░ рддреНрдпрд╣рд╛рдБ рдкрдХреНрдХреИ рдПрдХ рд╕реЗрд╡рд╛ рд╣реБрдиреЗрдЫ рдЬреБрди рдПрдХ рдорд╣рд┐рдирд╛рджреЗрдЦрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди ...
  5. рд╣рд╛рддрджреНрд╡рд╛рд░рд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдореЗрдЯрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рд╣рд╛рдореА рдХреЗрдорд╛ рдЖрдПрдХрд╛ рдЫреМрдВ рд╡рд╛рдл? рд╣рд╛рдореА рд╕рдЩреНрдХрд▓рди:

  1. Git head: рд╕рдмреИ рдЯреНрдпрд╛рдЧрд╣рд░реВ, рд╕рдмреИ рд╢рд╛рдЦрд╛рд╣рд░реВ - рд╣рд╛рдореАрд▓рд╛рдИ рдЫрд╡рд┐рд╣рд░реВрдорд╛ Git рдорд╛ рдЯреНрдпрд╛рдЧ рдЧрд░рд┐рдПрдХреЛ рд╕рдмреИ рдХреБрд░рд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреЗрд░ рдорд╛рдиреНрджреИ (рд░ рдпрджрд┐ рд╣реЛрдЗрди рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ Git рдорд╛ рдиреИ рдореЗрдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ);
  2. рд╕рдмреИ рдкреЛрдбрд╣рд░реВ рдЬреБрди рд╣рд╛рд▓ Kubernetes рдорд╛ рдкрдореНрдк рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН;
  3. рдкреБрд░рд╛рдиреЛ ReplicaSets (рдХреЗ рд╣рд╛рд▓реИ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ), рд░ рд╣рд╛рдореА рдкрдирд┐ Helm рд░рд┐рд▓реАрдЬ рд╕реНрдХреНрдпрд╛рди рд░ рддреНрдпрд╣рд╛рдБ рдирд╡реАрдирддрдо рдЫрд╡рд┐рд╣рд░реВ рдЪрдпрди рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдЫред

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

рд╕реНрдЯреЗрдЬ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

рднрд░рдкрд░реНрджреЛ рдШреЛрд╖рдгрд╛рддреНрдордХрддрд╛

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

  1. рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ;
  2. рд╕реЗрд╡рд╛ рдЬрд╛рдирдХрд╛рд░реА;
  3. рдзреЗрд░реИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ;
  4. рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕рдВрдЧ рдЦрдгреНрдб;
  5. рдкреНрд░рд╡реЗрд╢ рд╡реЗрдмрд╣реБрдХрдХреЛ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ;
  6. рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдиреНрддреНрд░рдХ (рд░ рдЕрдиреБрд╕реВрдЪрдХ) рдХреЛ рдХрд╛рдо рдХреЛ рдкрд░рд┐рдгрд╛рдоред

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

рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рднрдирд┐рдиреНрдЫ реи-рдорд╛рд░реНрдЧ рдорд░реНрдЬред рдпреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣реЗрд▓реНрдордорд╛ред

рдкрдирд┐ рдЫ реи-рдорд╛рд░реНрдЧ рдорд░реНрдЬ, рдЬреБрди рдпрд╕рдорд╛ рдлрд░рдХ рдЫ:

  • рддреБрд▓рдирд╛ рдЧрд░реНрджреИ рдкрдЫрд┐рд▓реНрд▓реЛ рдкрдЯрдХ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ ╨╕ рдирдпрд╛рдБ, рд╣рд╛рдореА рдХреЗ рдореЗрдЯрд╛рдЗрдПрдХреЛ рдерд┐рдпреЛ рд╣реЗрд░реНрдЫреМрдВ;
  • рддреБрд▓рдирд╛ рдЧрд░реНрджреИ рдирдпрд╛рдБ ╨╕ рдмрд╛рдБрдЪреНрди, рд╣рд╛рдореА рдХреЗ рдердкрд┐рдПрдХреЛ рд╡рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫ рд╣реЗрд░реНрдЫреМрдВ;
  • рд╕рдВрдХреНрд╖реЗрдк рдкреНрдпрд╛рдЪ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ рдмрд╛рдБрдЪреНрди.

рд╣рд╛рдореАрд▓реЗ рд╣реЗрд▓реНрдорд╕рдБрдЧ резрежрежреж+ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рд╡рд╛рд╕реНрддрд╡рдорд╛ реи-рддрд░реНрдлреА рдорд░реНрдЬрд╕рдБрдЧ рдмрд╛рдБрдЪрд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВред рдпрджреНрдпрдкрд┐, рдпрд╕рдорд╛ рдзреЗрд░реИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН рдЬреБрди рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░рд╛ рдкреНрдпрд╛рдЪрд╣рд░реВрд╕рдБрдЧ рд╣рд▓ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рдЬрд╕рд▓реЗ рд╣реЗрд▓реНрдорд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЛрд▓рдЖрдЙрдЯ рд╕реНрдерд┐рддрд┐

рд╣рд╛рдореНрд░реЛ CI рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдЕрд░реНрдХреЛ рдШрдЯрдирд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд Kubernetes рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЙрддреНрдкрдиреНрди рдЧрд░реЗрдкрдЫрд┐, рдпрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрджрдЫред (рдирд┐рд╡реЗрджрди рдЧрд░реНрдиреБ) рдХреНрд▓рд╕реНрдЯрд░рдорд╛ - рд╣реЗрд▓рдо рд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ kubectl applyред рдЕрд░реНрдХреЛ, рдкрд╣рд┐рд▓реЗ рдиреИ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ N-way рдорд░реНрдЬ рд╣реБрдиреНрдЫ, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ Kubernetes API рд▓реЗ CI рдкреНрд░рдгрд╛рд▓реАрд▓рд╛рдИ рдЕрдиреБрдореЛрджрди рдЧрд░реНрджреИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдиреНрдЫ, рд░ рддреНрдпреЛ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИред

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

рд╕рдмреИ рдХреБрд░рд╛ рд╕рд╣реА рддрд░рд┐рдХрд╛рд▓реЗ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ рдпреЛрдЬрдирд╛рд▓рд╛рдИ рдердк рд▓рд┐рдЩреНрдХ рдЪрд╛рд╣рд┐рдиреНрдЫ - рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЯреНрд░реНрдпрд╛рдХрд░ рдЬрд╕рд▓реЗ Kubernetes API рдмрд╛рдЯ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ рд░ рдЪреАрдЬрд╣рд░реВрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╡рд╕реНрдерд╛рдХреЛ рдердк рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрдиреЗрдЫред рд╣рд╛рдореАрд▓реЗ Go рдорд╛ рдПрдЙрдЯрд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдпреМрдВ - cubedog (рдпрд╕рдХреЛ рдШреЛрд╖рдгрд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдпрд╣рд╛рдБ), рдЬрд╕рд▓реЗ рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдЫ рд░ werf рдорд╛ рдирд┐рд░реНрдорд┐рдд рдЫред

werf рд╕реНрддрд░рдорд╛ рдпреЛ рдЯреНрд░рдпрд╛рдХрд░рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рд╡рд╛ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯрд╣рд░реВрдорд╛ рд░рд╛рдЦрд┐рдПрдХрд╛ рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдореБрдЦреНрдп рдЯрд┐рдкреНрдкрдгреА - fail-mode - рдирд┐рдореНрди рдЕрд░реНрде рдмреБрдЭреНрдЫ:

  • IgnoreAndContinueDeployProcess - рд╣рд╛рдореА рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдЫреМрдВ рд░ рддреИрдирд╛рддреА рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВ;
  • FailWholeDeployProcessImmediately - рдпреЛ рдШрдЯрдХ рдорд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реЛрдХреНрдЫ;
  • HopeUntilEndOfDeployProcess тАФ рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд▓реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрдирдХреЛ рдЕрдиреНрддреНрдпрд╕рдореНрдо рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕реНрд░реЛрдд рд░ рдПрдиреЛрдЯреЗрд╕рди рдорд╛рдирд╣рд░реВрдХреЛ рдпреЛ рд╕рдВрдпреЛрдЬрди fail-mode:

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЬрдм рд╣рд╛рдореА рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдЫреМрдВ, рдбрд╛рдЯрд╛рдмреЗрд╕ (MongoDB) рдЕрдЭреИ рддрдпрд╛рд░ рдирд╣реБрди рд╕рдХреНрдЫ - рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рдЕрд╕рдлрд▓ рд╣реБрдиреЗрдЫрдиреНред рддрд░ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╕реБрд░реБ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рддреИрдирд╛рддреА рдЕрдЭреИ рдкрдирд┐ рд╣реБрдиреЗрдЫред

werf рдорд╛ kubedog рдХреЛ рд▓рд╛рдЧреА рджреБрдИ рдердк рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рдЫрдиреН:

  • failures-allowed-per-replica - рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреГрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдЧрд┐рд░рд╛рд╡рдЯрдХреЛ рд╕рдВрдЦреНрдпрд╛;
  • show-logs-until - рд╕рдмреИ рд░реЛрд▓ рдЖрдЙрдЯ рдкреЛрдбрд╣рд░реВрдмрд╛рдЯ werf (stdout рдорд╛) рд▓рдЧрд╣рд░реВ рджреЗрдЦрд╛рдЙрдиреЗ рдХреНрд╖рдгрд▓рд╛рдИ рдирд┐рдпрдорди рдЧрд░реНрджрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЫ PodIsReady (рдкреНрдпрд╛рдбрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рдЖрдЙрди рдерд╛рд▓реЗрдкрдЫрд┐ рд╣рд╛рдореАрд▓реЗ рдирдЪрд╛рд╣рд┐рдиреЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди), рддрд░ рдорд╛рдирд╣рд░реВ рдкрдирд┐ рдорд╛рдиреНрдп рдЫрдиреН: ControllerIsReady ╨╕ EndOfDeploy.

рд╣рд╛рдореА рддреИрдирд╛рддреАрдмрд╛рдЯ рдЕрд░реВ рдХреЗ рдЪрд╛рд╣рдиреНрдЫреМрдВ?

рдкрд╣рд┐рд▓реЗ рдиреИ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рджреБрдИ рдмрд┐рдиреНрджреБрд╣рд░реВрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореА рдЪрд╛рд╣рдиреНрдЫреМрдВ:

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

рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдПрдХ рдХрдореНрдкрдиреАрдХреЛ рд░реВрдкрдорд╛, рд╡рд┐рддрд░рдгрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгрд╣рд░реВрдорд╛ (рдирд┐рд░реНрдорд╛рдг, рдкреНрд░рдХрд╛рд╢рди, рдбрд┐рдкреНрд▓реЛрдп) рдорд╛ рд╕рдмреИ рд╡рд░реНрдгрд┐рдд рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди, рдПрдХ CI рдкреНрд░рдгрд╛рд▓реА рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЫред рд╡рд╛рдл.

рдПрдЙрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЛ рд╕рдЯреНрдЯрд╛:

werf - Kubernetes рдорд╛ CI / CD рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдЙрдкрдХрд░рдг (рдЕрд╡рд▓реЛрдХрди рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

werf рдХреЛ рд╕рд╣рдпреЛрдЧрдорд╛, рд╣рд╛рдореАрд▓реЗ DevOps рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдирдорд╛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдЧрддрд┐ рдЧрд░реЗрдХрд╛ рдЫреМрдВ рд░ рд╡реНрдпрд╛рдкрдХ рд╕рдореБрджрд╛рдпрд▓реЗ рдХрдореНрддрд┐рдорд╛ рдкрдирд┐ рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд▓рд╛рдИ рдХрд╛рд░реНрдпрдорд╛ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдорд╛ рдЦреБрд╕реА рд╣реБрдиреЗрдЫреМрдВред рд╕рдБрдЧреИ рд░рд╛рдореНрд░реЛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреЗрдЫред

рднрд┐рдбрд┐рдпреЛ рд░ рд╕реНрд▓рд╛рдЗрдбрд╣рд░реВ

рдкреНрд░рджрд░реНрд╢рдирдмрд╛рдЯ рднрд┐рдбрд┐рдпреЛ (~ релреж рдорд┐рдиреЗрдЯ):

рдкреНрд░рддрд┐рд╡реЗрджрди рдкреНрд░рд╕реНрддреБрддрд┐:

PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ Kubernetes рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрдиреНрдп рд░рд┐рдкреЛрд░реНрдЯрд╣рд░реВ:

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

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