werf - Kubernetes рдордзреАрд▓ CI/CD рд╕рд╛рдареА рдЖрдордЪреЗ рд╕рд╛рдзрди (рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдЕрд╣рд╡рд╛рд▓)

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

рд╕рд╛рджрд░реАрдХрд░рдг рдЭрд╛рд▓реНрдпрд╛рдкрд╛рд╕реВрди, рдЖрдордЪреА рдЙрдкрдпреБрдХреНрддрддрд╛ (рдкреВрд░реНрд╡реА dapp рдореНрд╣рдгреВрди рдУрд│рдЦрд▓реА рдЬрд╛рдд рд╣реЛрддреА) рдЪрд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЯрдкреНрдкрд╛ рдЧрд╛рдард▓рд╛ рдЖрд╣реЗ GitHub рд╡рд░ 1000 рддрд╛рд░реЗ тАФ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪрд╛ рд╡рд╛рдврддрд╛ рд╕рдореБрджрд╛рдп рдЕрдиреЗрдХ DevOps рдЕрднрд┐рдпрдВрддреНрдпрд╛рдВрд╕рд╛рдареА рдЬреАрд╡рди рд╕реЛрдкреЗ рдХрд░реЗрд▓.

werf - Kubernetes рдордзреАрд▓ CI/CD рд╕рд╛рдареА рдЖрдордЪреЗ рд╕рд╛рдзрди (рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдЕрд╣рд╡рд╛рд▓)

рддрд░, рдУрд│рдЦ рдХрд░реВрди рджреЗрдК рдЕрд╣рд╡рд╛рд▓рд╛рдЪрд╛ рд╡реНрд╣рд┐рдбрд┐рдУ (~47 рдорд┐рдирд┐рдЯреЗ, рд▓реЗрдЦрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдорд╛рд╣рд┐рддреАрдкреВрд░реНрдг) рдЖрдгрд┐ рддреНрдпрд╛рддреАрд▓ рдореБрдЦреНрдп рдЙрддрд╛рд░рд╛ рдордЬрдХреВрд░ рд╕реНрд╡рд░реВрдкрд╛рдд. рдЬрд╛!

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд▓рд╛ рдХреЛрдб рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреЗ

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

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдбрд┐рд▓рд┐рд╡реНрд╣рд░реА рдХрд╢реА рджрд┐рд╕рддреЗ?

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

werf - Kubernetes рдордзреАрд▓ CI/CD рд╕рд╛рдареА рдЖрдордЪреЗ рд╕рд╛рдзрди (рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдЕрд╣рд╡рд╛рд▓)

рдпреЗрдереЗ рдХрд╛рд╣реА рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдЯрд┐рдкрд╛ рдЖрд╣реЗрдд:

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

рдЪрд▓рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреАрд▓ рд╡рд░реАрд▓ рдбрд┐рд▓рд┐рд╡реНрд╣рд░реА рдпреЛрдЬрдиреЗрдХрдбреЗ рдкрд░рдд рдЬрд╛рдКрдпрд╛: рдпрд╛рдЪрд╛ рд╢реЛрдз рдХреЗрд╡рд│ рдЖрдкрд▓реНрдпрд╛рджреНрд╡рд╛рд░реЗрдЪ рдирд╛рд╣реА рддрд░ рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рдгрд╛рд▒реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рдиреЗ рдХреЗрд▓рд╛ рд╣реЛрддрд╛. рдЦрд░рдВ рддрд░, рдпрд╛ рдкреЕрдЯрд░реНрдирд▓рд╛ рдЖрддрд╛ GitOps рдореНрд╣рдгрддрд╛рдд (рдЖрдкрдг рд╕рдВрдЬреНрдЮрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдорд╛рдЧреАрд▓ рдХрд▓реНрдкрдирд╛рдВрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдпреЗрдереЗ). рдпреЛрдЬрдиреЗрдЪреЗ рдЯрдкреНрдкреЗ рдкрд╛рд╣реВ.

рд╕реНрдЯреЗрдЬ рддрдпрд╛рд░ рдХрд░рд╛

рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рдЖрдкрдг 2019 рдордзреНрдпреЗ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓реВ рд╢рдХрддрд╛, рдЬреЗрд╡реНрд╣рд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рдбреЙрдХрд░рдлрд╛рдИрд▓реНрд╕ рдХрд╕реЗ рд▓рд┐рд╣рд╛рдпрдЪреЗ рдЖрдгрд┐ рдХрд╕реЗ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдЕрд╕рддреЗ docker build?.. рдпреЗрдереЗ рдореА рд▓рдХреНрд╖ рджреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ рдЕрд╢рд╛ рдмрд╛рд░рдХрд╛рд╡реЗ рдЖрд╣реЗрдд:

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

рд╣реЗ рд╣рд┐рдордирдЧрд╛рдЪреЗ рдлрдХреНрдд рдЯреЛрдХ рд╣реЛрддреЗ рдЬреНрдпрд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХрдЬрдг рддреЛрдВрдб рджреЗрддреЛ. рдкрд░рдВрддреБ рдЗрддрд░ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд, рд╡рд┐рд╢реЗрд╖рддрдГ:

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

рдЖрдгрд┐ рдпреЗрдереЗ рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗрдд:

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

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

werf рдордзреНрдпреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛

рддреНрдпрд╛рдореБрд│реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдорд┐рд│рд╛рд▓реЗ werf (рдкреВрд░реНрд╡реА рдкреНрд░рд╕рд┐рджреНрдз рдбреЕрдк рд╕рд╛рд░рдЦреЗ) тАФ рдлреНрд▓реЕрдВрдЯ рдХрдВрдкрдиреАрдЪреА рдПрдХ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдЙрдкрдпреБрдХреНрддрддрд╛, рдЬреА рдЖрдореНрд╣реА рдЕрдиреЗрдХ рд╡рд░реНрд╖рд╛рдВрдкрд╛рд╕реВрди рдмрдирд╡рдд рдЖрд╣реЛрдд. рд╣реЗ рд╕рд░реНрд╡ 5 рд╡рд░реНрд╖рд╛рдВрдкреВрд░реНрд╡реА рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рд╕рд╣ рд╕реБрд░реВ рдЭрд╛рд▓реЗ рдЬреНрдпрд╛рдиреЗ рдбреЙрдХрд░рдлрд╛рдИрд▓реНрд╕рдЪреЗ рдЕрд╕реЗрдВрдмреНрд▓реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗ рдЖрдгрд┐ рдЧреЗрд▓реНрдпрд╛ 3 рд╡рд░реНрд╖рд╛рдВрдкрд╛рд╕реВрди рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рдд: рдЪреНрдпрд╛ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрд╕рд╣ рдПрдХрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдЪреМрдХрдЯреАрдд рдкреВрд░реНрдг рд╡рд┐рдХрд╛рд╕ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛. (рдкреНрд░рдердо рд░реБрдмреА рдордзреНрдпреЗ, рдЖрдгрд┐ рдирдВрддрд░ рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдгрд┐ рддреНрдпрд╛рдЪ рд╡реЗрд│реА рдкреБрдирд░реНрдирд╛рдорд┐рдд). werf рдордзреНрдпреЗ рдХреЛрдгрддреЗ рдЕрд╕реЗрдВрдмреНрд▓реАрдЪреЗ рдкреНрд░рд╢реНрди рд╕реЛрдбрд╡рд▓реЗ рдЬрд╛рддрд╛рдд?

werf - Kubernetes рдордзреАрд▓ CI/CD рд╕рд╛рдареА рдЖрдордЪреЗ рд╕рд╛рдзрди (рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдЕрд╣рд╡рд╛рд▓)

рдирд┐рд│реНрдпрд╛ рд░рдВрдЧрд╛рдд рдЫрд╛рдпрд╛рдВрдХрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЖрдзреАрдЪ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд, рд╕рдорд╛рдВрддрд░ рдмрд┐рд▓реНрдб рддреНрдпрд╛рдЪ рд╣реЛрд╕реНрдЯрдордзреНрдпреЗ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рдЖрдгрд┐ рдкрд┐рд╡рд│реНрдпрд╛ рд░рдВрдЧрд╛рдд рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЙрдиреНрд╣рд╛рд│реНрдпрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рдЪреЗ рдирд┐рдпреЛрдЬрд┐рдд рдЖрд╣реЗ.

рдиреЛрдВрджрдгреАрдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рдирд╛рдЪрд╛ рдЯрдкреНрдкрд╛ (рдкреНрд░рдХрд╛рд╢рд┐рдд)

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

рдпрд╛рдд рдЗрддрдХреЗ рдЕрд╡рдШрдб рдХрд╛рдп рдЖрд╣реЗ? рдкреБрдирд░реБрддреНрдкрд╛рджрдирдХреНрд╖рдорддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рд╛: рдЧрд┐рдЯрдордзреАрд▓ рдХрдорд┐рдЯрдордзреВрди, рдЬреЗ рдирд┐рд╕рд░реНрдЧрд╛рдд рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЖрд╣реЗ (рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп), рдбреЙрдХрд░ рдкреНрд░рддрд┐рдореЗрд╕рд╛рдареА, рдЬреА рд╕рдорд╛рди рдареЗрд╡рд▓реА рдкрд╛рд╣рд┐рдЬреЗ.

рддреЗ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареАрд╣реА рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдореВрд│ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рд╛, рдХрд╛рд░рдг рдЖрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЖрд╣реЗ рдХреА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдЪрд╛рд▓рдгрд╛рд░реЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдгрддреНрдпрд╛ рдХрдорд┐рдЯрдордзреВрди рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ (рдордЧ рдЖрдкрдг рдбрд┐рдл рдЖрдгрд┐ рддрддреНрд╕рдо рдЧреЛрд╖реНрдЯреА рдХрд░реВ рд╢рдХрддреЛ).

рдЯреЕрдЧрд┐рдВрдЧ рдзреЛрд░рдгреЗ

рдкрд╣рд┐рд▓рд╛ рд╕реЛрдкрд╛ рдЖрд╣реЗ git рдЯреЕрдЧ. рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЕрд╢реА рдЯреЕрдЧ рдХреЗрд▓реЗрд▓реА рдкреНрд░рддрд┐рдорд╛ рдЕрд╕рд▓реЗрд▓реА рдиреЛрдВрджрдгреА рдЖрд╣реЗ 1.0. Kubernetes рдордзреНрдпреЗ рд╕реНрдЯреЗрдЬ рдЖрдгрд┐ рдЙрддреНрдкрд╛рджрди рдЖрд╣реЗ, рдЬрд┐рдереЗ рд╣реА рдкреНрд░рддрд┐рдорд╛ рдЕрдкрд▓реЛрдб рдХреЗрд▓реА рдЖрд╣реЗ. Git рдордзреНрдпреЗ рдЖрдкрдг рдХрдорд┐рдЯ рдХрд░рддреЛ рдЖрдгрд┐ рдХрдзреАрддрд░реА рдЯреЕрдЧ рдХрд░рддреЛ 2.0. рдЖрдореНрд╣реА рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреАрд▓ рд╕реВрдЪрдирд╛рдВрдиреБрд╕рд╛рд░ рддреЗ рдЧреЛрд│рд╛ рдХрд░рддреЛ рдЖрдгрд┐ рдЯреЕрдЧрд╕рд╣ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдареЗрд╡рддреЛ 2.0. рдЖрдореНрд╣реА рддреЗ рд╕реНрдЯреЗрдЬрд╡рд░ рдЖрдгрддреЛ рдЖрдгрд┐ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╛рдареА.

werf - Kubernetes рдордзреАрд▓ CI/CD рд╕рд╛рдареА рдЖрдордЪреЗ рд╕рд╛рдзрди (рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдЕрд╣рд╡рд╛рд▓)

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

рджреБрд╕рд░рд╛ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ git рдХрдорд┐рдЯ + рдЯреЕрдЧ. рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦреЗрд▓рд╛ рдЯреЕрдЧ рдЖрд╣реЗ 1.0; рддреНрдпрд╛рд╕рд╛рдареА рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ - рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╛рдареА рддреИрдирд╛рдд рдХреЗрд▓реЗрд▓реА рдкреНрд░рддрд┐рдорд╛. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдХреЙрдиреНрдЯреВрд░реНрд╕ рдЖрд╣реЗрдд. рдкреБрдвреЗ рдЖрдореНрд╣реА 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. рд╡реЗрд│реЗрдиреБрд╕рд╛рд░. 1 рдорд╣рд┐рдиреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬреБрдиреНрдпрд╛ рд╕рд░реНрд╡ рдЗрдореЗрдЬ рд╣рдЯрд╡рд╛рдпрдЪреНрдпрд╛? рдкрдг рдЕрд╢реА рд╕реЗрд╡рд╛ рдирдХреНрдХреАрдЪ рдЕрд╕реЗрд▓ рдЬреА рдорд╣рд┐рдирд╛рднрд░ рдЕрдкрдбреЗрдЯ рдЭрд╛рд▓реЗрд▓реА рдирд╛рд╣реА...
  5. рд╕реНрд╡рд╣рд╕реНрддреЗ рдЖрдзреАрдЪ рдХрд╛рдп рд╣рдЯрд╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рддреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рд╛.

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

рдЖрдореНрд╣реА рдХрд╛рдп рдЖрд▓реЛ рдЖрд╣реЛрдд werf? рдЖрдореНрд╣реА рдЧреЛрд│рд╛ рдХрд░рддреЛ:

  1. рдЧрд┐рдЯ рд╣реЗрдб: рд╕рд░реНрд╡ рдЯреЕрдЧ, рд╕рд░реНрд╡ рд╢рд╛рдЦрд╛ - рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░реВрди рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рдЪрд┐рддреНрд░рд╛рдВрдордзреНрдпреЗ рдЧрд┐рдЯрдордзреНрдпреЗ рдЯреЕрдЧ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ (рдЖрдгрд┐ рдирд╕рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ рдЧрд┐рдЯрдордзреНрдпреЗрдЪ рд╣рдЯрд╡рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓);
  2. рд╕рд░реНрд╡ рд╢реЗрдВрдЧрд╛ рдЬреНрдпрд╛ рд╕рдзреНрдпрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдмрд╛рд╣реЗрд░ рдЯрд╛рдХрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд;
  3. рдЬреБрдиреЗ ReplicaSets (рдЬреЗ рдиреБрдХрддреЗрдЪ рд░рд┐рд▓реАрдЭ рдЭрд╛рд▓реЗ рд╣реЛрддреЗ), рдЖрдгрд┐ рдЖрдореНрд╣реА рд╣реЗрд▓реНрдо рд░рд┐рд▓реАрдЭ рд╕реНрдХреЕрди рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рддреЗрдереЗ рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдорд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рдЪреА рджреЗрдЦреАрд▓ рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣реЛрдд.

... рдЖрдгрд┐ рдпрд╛ рд╕рдВрдЪрд╛рддреВрди рдПрдХ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдмрдирд╡рд╛ - рдкреНрд░рддрд┐рдорд╛рдВрдЪреА рд╕реВрдЪреА рдЬреА рдЖрдореНрд╣реА рд╣рдЯрд╡рдгрд╛рд░ рдирд╛рд╣реА. рдЖрдореНрд╣реА рдЗрддрд░ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕рд╛рдл рдХрд░рддреЛ, рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрдирд╛рде рд╕реНрдЯреЗрдЬ рдкреНрд░рддрд┐рдорд╛ рд╕рд╛рдкрдбрддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛ рджреЗрдЦреАрд▓ рд╣рдЯрд╡рддрд╛рдд.

рд╕реНрдЯреЗрдЬ рддреИрдирд╛рдд рдХрд░рд╛

рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣ рдШреЛрд╖рдгрд╛рддреНрдордХрддрд╛

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

  1. рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ;
  2. рд╕реЗрд╡рд╛ рдорд╛рд╣рд┐рддреА;
  3. рдЕрдиреЗрдХ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ;
  4. рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреАрд╕рд╣ рд╡рд┐рднрд╛рдЧ;
  5. рдкреНрд░рд╡реЗрд╢ рд╡реЗрдмрд╣реБрдХрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдХреЗрд▓реЗрд▓реЗ рдмрджрд▓;
  6. рд╡рд┐рд╡рд┐рдз рдирд┐рдпрдВрддреНрд░рдХ (рдЖрдгрд┐ рд╢реЗрдбреНрдпреВрд▓рд░) рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо.

рдореНрд╣рдгреВрди, рдЬреЗрд╡реНрд╣рд╛ рдирд╡реАрди рд╕рдВрд╕рд╛рдзрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рджрд┐рд╕рддреЗ (рдирд╡реАрди), рдЖрдореНрд╣реА рдлрдХреНрдд рд╡рд░реНрддрдорд╛рди, "рд▓рд╛рдЗрд╡реНрд╣" рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдШреЗрдКрди рддреНрдпрд╛рд╡рд░ рдЕрдзрд┐рд▓рд┐рдЦрд┐рдд рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА (рд░рд╛рд╣рддрд╛рдд). рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рддреБрд▓рдирд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓ рдирд╡реАрди рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╣ (рд╢реЗрд╡рдЯрдЪреЗ рд▓рд╛рдЧреВ) рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рд░реЛрд▓ рдХрд░рд╛ рд░рд╛рд╣рддрд╛рдд рдкреЕрдЪ рдкреНрд░рд╛рдкреНрдд.

рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рд▓рд╛ рдореНрд╣рдгрддрд╛рдд 2-рдорд╛рд░реНрдЧ рд╡рд┐рд▓реАрдиреАрдХрд░рдг. рд╣реЗ рд╣реЗрд▓реНрдордордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде.

рддрд╕реЗрдЪ рдЖрд╣реЗ 3-рдорд╛рд░реНрдЧ рд╡рд┐рд▓реАрдиреАрдХрд░рдг, рдЬреЗ рддреНрдпрд╛рдордзреНрдпреЗ рднрд┐рдиреНрди рдЖрд╣реЗ:

  • рддреБрд▓рдирд╛ рдХрд░рдгреЗ рд╢реЗрд╡рдЯрдЪреЗ рд▓рд╛рдЧреВ ╨╕ рдирд╡реАрди, рдЖрдореНрд╣реА рдХрд╛рдп рд╣рдЯрд╡рд▓реЗ рд╣реЛрддреЗ рддреЗ рдкрд╛рд╣рддреЛ;
  • рддреБрд▓рдирд╛ рдХрд░рдгреЗ рдирд╡реАрди ╨╕ рд░рд╛рд╣рддрд╛рдд, рдЖрдореНрд╣реА рдХрд╛рдп рдЬреЛрдбрд▓реЗ рдХрд┐рдВрд╡рд╛ рдмрджрд▓рд▓реЗ рдЖрд╣реЗ рддреЗ рдкрд╛рд╣рддреЛ;
  • рдмреЗрд░реАрдЬ рдкреЕрдЪ рд▓рд╛рдЧреВ рдЖрд╣реЗ рд░рд╛рд╣рддрд╛рдд.

рдЖрдореНрд╣реА рд╣реЗрд▓реНрдорд╕рд╣ 1000+ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рддреЛ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд 2-рд╡реЗ рдорд░реНрдЬрд╕рд╣ рдЬрдЧрддреЛ. рддрдерд╛рдкрд┐, рдпрд╛рдд рдЕрдиреЗрдХ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд рдЬреНрдпрд╛ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдкреЕрдЪрдиреЗ рд╕реЛрдбрд╡рд▓реНрдпрд╛ рдЖрд╣реЗрдд, рдЬреНрдпрд╛ рд╣реЗрд▓реНрдорд▓рд╛ рд╕рд╛рдорд╛рдиреНрдпрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░рддрд╛рдд.

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

рдЖрдордЪреА CI рдкреНрд░рдгрд╛рд▓реА рдкреБрдвреАрд▓ рдЗрд╡реНрд╣реЗрдВрдЯрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рд╛рдареА рдирд╡реАрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ (рд▓рд╛рдЧреВ рдХрд░рд╛) рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ - рд╣реЗрд▓реНрдо рд╡рд╛рдкрд░реВрди рдХрд┐рдВрд╡рд╛ kubectl apply. рдкреБрдвреЗ, рдЖрдзреАрдЪ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реЗ рдПрди-рд╡реЗ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рд╣реЛрддреЗ, рдЬреНрдпрд╛рд▓рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ API CI рдкреНрд░рдгрд╛рд▓реАрд▓рд╛ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдЕрдиреБрдореЛрджрдирд╛рдиреЗ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддреЗ.

werf - Kubernetes рдордзреАрд▓ CI/CD рд╕рд╛рдареА рдЖрдордЪреЗ рд╕рд╛рдзрди (рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдЕрд╣рд╡рд╛рд▓)

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

рд╕рд░реНрд╡рдХрд╛рд╣реА рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдпрд╛ рдпреЛрдЬрдиреЗрд▓рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рджреБрд╡реНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ - рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЯреНрд░реЕрдХрд░ рдЬреЛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ API рдХрдбреВрди рд╕реНрдерд┐рддреА рдорд╛рд╣рд┐рддреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрд▓ рдЖрдгрд┐ рдЧреЛрд╖реНрдЯреАрдВрдЪреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддреАрдЪреНрдпрд╛ рдкреБрдвреАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрд▓. рдЖрдореНрд╣реА рдЧреЛ рдордзреНрдпреЗ рдПрдХ рдореБрдХреНрдд рд╕реНрд░реЛрдд рд▓рд╛рдпрдмреНрд░рд░реА рддрдпрд╛рд░ рдХреЗрд▓реА - 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.

рдирд┐рд╖реНрдХрд░реНрд╖рд╛рдРрд╡рдЬреА:

werf - Kubernetes рдордзреАрд▓ CI/CD рд╕рд╛рдареА рдЖрдордЪреЗ рд╕рд╛рдзрди (рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдЕрд╣рд╡рд╛рд▓)

werf рдЪреНрдпрд╛ рдорджрддреАрдиреЗ, рдЖрдореНрд╣реА DevOps рдЕрднрд┐рдпрдВрддреНрдпрд╛рдВрд╕рд╛рдареА рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рдд рдЪрд╛рдВрдЧрд▓реА рдкреНрд░рдЧрддреА рдХреЗрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рдореЛрдареНрдпрд╛ рд╕рдореБрджрд╛рдпрд╛рдиреЗ рдХрд┐рдорд╛рди рдпрд╛ рдЙрдкрдпреБрдХреНрддрддреЗрдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рддрд░ рдЖрдирдВрдж рд╣реЛрдИрд▓. рдПрдХрддреНрд░рд┐рддрдкрдгреЗ рдЪрд╛рдВрдЧрд▓рд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рд╕реЛрдкреЗ рд╣реЛрдИрд▓.

рд╡реНрд╣рд┐рдбрд┐рдУ рдЖрдгрд┐ рд╕реНрд▓рд╛рдЗрдбреНрд╕

рдХрд╛рдордЧрд┐рд░реАрдордзреАрд▓ рд╡реНрд╣рд┐рдбрд┐рдУ (~47 рдорд┐рдирд┐рдЯреЗ):

рдЕрд╣рд╡рд╛рд▓рд╛рдЪреЗ рд╕рд╛рджрд░реАрдХрд░рдг:

PS

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдмрджреНрджрд▓ рдЗрддрд░ рдЕрд╣рд╡рд╛рд▓:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛