OpenShift рд╕рд╛рдареА GitOps рдЪрд╛ рдкрд░рд┐рдЪрдп

рдЖрдЬ рдЖрдкрдг GitOps рдЪреА рддрддреНрддреНрд╡реЗ рдЖрдгрд┐ рдореЙрдбреЗрд▓реНрд╕, рддрд╕реЗрдЪ рд╣реЗ рдореЙрдбреЗрд▓реНрд╕ OpenShift рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рдХрд╕реЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓реВ. рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рджреБрд╡рд╛.

OpenShift рд╕рд╛рдареА GitOps рдЪрд╛ рдкрд░рд┐рдЪрдп

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

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

GitOps рд╕рд╛рдареА рдХреЛрдгрддреАрд╣реА рд╢реИрдХреНрд╖рдгрд┐рдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдВрд╡рд╛ рдирд┐рдпрдорд╛рдВрдЪрд╛ рдордВрдЬреВрд░ рд╕рдВрдЪ рдирд╛рд╣реА, рдлрдХреНрдд рддрддреНрддреНрд╡рд╛рдВрдЪрд╛ рд╕рдВрдЪ рдЬреНрдпрд╛рд╡рд░ рд╣реА рдкреНрд░рдерд╛ рдмрд╛рдВрдзрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ:

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

GitOps рддрддреНрддреНрд╡реЗ

  • рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдореНрд╣рдгреВрди рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд

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

  • рд╕рд┐рд╕реНрдЯрдордЪреА рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд┐рддреА рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди Git рдордзреНрдпреЗ рд╕реЗрдЯ рдЖрдгрд┐ рд╡реНрд╣рд░реНрдЬрди рдХреЗрд▓реЗ рдЖрд╣реЗ

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

  • рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рдкреБрд▓ рд╡рд┐рдирдВрддреАрджреНрд╡рд╛рд░реЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд

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

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

  • рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреНрдпрд╛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдбреНрд░рд┐рдлреНрдЯрдЪреНрдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреЗ

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

OpenShift рд╕рд╛рдареА GitOps рдореЙрдбреЗрд▓

рдСрди-рдХреНрд▓рд╕реНрдЯрд░ рд░рд┐рд╕реЛрд░реНрд╕ рд░рд┐рдХрдВрд╕рд┐рд▓рд░

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

OpenShift рд╕рд╛рдареА GitOps рдЪрд╛ рдкрд░рд┐рдЪрдп

рдмрд╛рд╣реНрдп рд╕рдВрд╕рд╛рдзрди рд╕рд╛рдордВрдЬрд╕реНрдп (рдкреБрд╢)

рдЬреЗрд╡реНрд╣рд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ тАЬGit repository - Kubernetes рдХреНрд▓рд╕реНрдЯрд░тАЭ рдЬреЛрдбреНрдпрд╛рдВрдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рд╕рдордХреНрд░рдорд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдХ рдЕрд╕рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рд╣реЗ рдореЙрдбреЗрд▓ рдорд╛рдЧреАрд▓ рдореЙрдбреЗрд▓рдЪреЗ рд░реВрдкрд╛рдВрддрд░ рдорд╛рдирд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдпреЗрдереЗ рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреНрд▓рд╕реНрдЯрд░рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╕реНрд╡рддрдВрддреНрд░ рдирд┐рдпрдВрддреНрд░рдХ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА. Git - k8s рдХреНрд▓рд╕реНрдЯрд░ рдЬреЛрдбреНрдпрд╛ рд╕рд╣рд╕рд╛ CRDs (рд╕рд╛рдиреБрдХреВрд▓ рд╕рдВрд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд╛) рдореНрд╣рдгреВрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЬреЗ рдХрдВрдЯреНрд░реЛрд▓рд░рдиреЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░реВ рд╢рдХрддрд╛рдд. рдпрд╛ рдореЙрдбреЗрд▓рдордзреНрдпреЗ, рдирд┐рдпрдВрддреНрд░рдХ CRD рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ Git рднрд╛рдВрдбрд╛рд░рд╛рдЪреА рддреБрд▓рдирд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╢реА рдХрд░рддрд╛рдд, рдЬреЗ CRD рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рддреБрд▓рдирд╛рдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдпреЛрдЧреНрдп рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдд. рд╡рд┐рд╢реЗрд╖рддрдГ, рд╣реЗ GitOps рдореЙрдбреЗрд▓ ArgoCD рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ.

OpenShift рд╕рд╛рдареА GitOps рдЪрд╛ рдкрд░рд┐рдЪрдп

OpenShift рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ GitOps

рдорд▓реНрдЯреА-рдХреНрд▓рд╕реНрдЯрд░ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдЪреЗ рдкреНрд░рд╢рд╛рд╕рди

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

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

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдмрд░реНрдпрд╛рдЪ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓, рд╡рд┐рд╢реЗрд╖рддрдГ:

  • рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдПрдХрд╕рд╛рд░рдЦреНрдпрд╛ рд╕реНрдерд┐рддреАрдд рдЖрд╣реЗрдд рд╣реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рд╛ (рдХреЙрдиреНрдлрд┐рдЧреНрд╕, рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ, рд╕реНрдЯреЛрд░реЗрдЬ рдЗ.)
  • рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддреАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рд╛ (рдХрд┐рдВрд╡рд╛ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рд╛).
  • рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддреАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдирд╡реАрди рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рд╛.
  • рдПрдХрд╛рдзрд┐рдХ OpenShift рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдмрджрд▓ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рд╛.
  • рдПрдХрд╛рдзрд┐рдХ OpenShift рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдмрджрд▓ рдкрд░рдд рдХрд░рд╛.
  • рдЯреЗрдореНрдкреНрд▓реЗрдЯреЗрдб рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд▓рд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд▓рд┐рдВрдХ рдХрд░рд╛.

рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди

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

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЦрд╛рд▓реАрд▓ рдХрд╛рд░реНрдпреЗ рд╕реЛрдбрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

  • рдХреНрд▓рд╕реНрдЯрд░реНрд╕ (рджреЗрд╡, рд╕реНрдЯреЗрдЬ, рдЗ.) рджрд░рдореНрдпрд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдЪреА рд╣рд╛рд▓рдЪрд╛рд▓ (рдмрд╛рдпрдирд░реА, рдХреЙрдиреНрдлрд┐рдЧ, рдЗ.) рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рд╛.
  • рдЕрдиреЗрдХ OpenShift рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдордзреНрдпреЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ (рдмрд╛рдпрдирд░реА, рдХреЙрдиреНрдлрд┐рдЧ, рдЗ.) рдордзреНрдпреЗ рдмрджрд▓ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рд╛.
  • рдорд╛рдЧреАрд▓ рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддреАрдд рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреАрд▓ рдмрджрд▓ рдкрд░рдд рдХрд░рд╛.

OpenShift GitOps рд╡рд╛рдкрд░ рдкреНрд░рдХрд░рдгреЗ

1. Git рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреАрд▓ рдмрджрд▓ рд▓рд╛рдЧреВ рдХрд░рдгреЗ

рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╢рд╛рд╕рдХ Git рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕рдВрдЪрдпрд┐рдд рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдирд╡реАрди рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкреЛрдЖрдк рд▓рд╛рдЧреВ рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддреАрдкреНрд░рдорд╛рдгреЗрдЪ рд╕реНрдерд┐рддреАрдд рдЖрдгреВ рд╢рдХрддреЛ.

2. рд╕реАрдХреНрд░реЗрдЯ рдореЕрдиреЗрдЬрд░рд╕рд╣ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди

рдпрд╛рд╕рд╛рдареА рдЦрд╛рд╕ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рддреНрдпрд╛рдВрдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Vault рд╕рд╛рд░рдЦреНрдпрд╛ рдпреЛрдЧреНрдп рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рд╕рд╣ OpenShift рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рд╕рдордХреНрд░рдорд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдорддреЗрдЪрд╛ рджреЗрдЦреАрд▓ рдкреНрд░рд╢рд╛рд╕рдХрд╛рд▓рд╛ рдлрд╛рдпрджрд╛ рд╣реЛрдИрд▓.

3. рдбреНрд░рд┐рдлреНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреЗ рдирд┐рдпрдВрддреНрд░рдг

рдЬрд░ OpenShift GitOps рд╕реНрд╡рддрдГрдЪ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЖрдгрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рд╕рдВрдЧрддреА рдУрд│рдЦреВрди рддреНрдпрд╛рдмрджреНрджрд▓ рдЪреЗрддрд╛рд╡рдгреА рджреЗрдд тАЛтАЛрдЕрд╕реЗрд▓ рддрд░рдЪ рдкреНрд░рд╢рд╛рд╕рдХ рддреНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдЕрд╕реЗрд▓, рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдбреНрд░рд┐рдлреНрдЯрд▓рд╛ рддреНрд╡рд░реАрдд рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдК рд╢рдХрддреАрд▓.

4. рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдбреНрд░рд┐рдлреНрдЯрдмрджреНрджрд▓ рд╕реВрдЪрдирд╛

рдЬреЗрд╡реНрд╣рд╛ рдкреНрд░рд╢рд╛рд╕рдХрд╛рд╕ рд╕реНрд╡рддрдГрд╣реВрди рдпреЛрдЧреНрдп рдЙрдкрд╛рдпрдпреЛрдЬрдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдбреНрд░рд┐рдлреНрдЯрдЪреНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдВрдмрджреНрджрд▓ рддреНрд╡рд░реАрдд рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛ рддреЗ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗрдд.

5. рдбреНрд░рд┐рдлреНрдЯрд┐рдВрдЧ рдХрд░рддрд╛рдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреЗ рдореЕрдиреНрдпреБрдЕрд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди

рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛ рдкреВрд░реНрд╡реАрдЪреНрдпрд╛ рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддреАрдд рддреНрд╡рд░реАрдд рдкрд░рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдбреНрд░рд┐рдлреНрдЯрдЪреНрдпрд╛ рдШрдЯрдиреЗрдд Git рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╕рд╣ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рд╢рд╛рд╕рдХрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

6. рдбреНрд░рд┐рдлреНрдЯрд┐рдВрдЧ рдХрд░рддрд╛рдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреЗ рдСрдЯреЛ-рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди

рдЕреЕрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрд╕рд╣ рдЖрдкреЛрдЖрдк рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░ рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддреЛ рдЬреЗрд╡реНрд╣рд╛ рдбреНрд░рд┐рдлреНрдЯ рдЖрдврд│рддреЛ, рдЬреЗрдгреЗрдХрд░реВрди рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдиреЗрд╣рдореА Git рдордзреАрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╢реА рдЬреБрд│рддреЗ.

7. рдЕрдиреЗрдХ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ - рдПрдХ рднрд╛рдВрдбрд╛рд░

рдкреНрд░рд╢рд╛рд╕рдХ рдПрдХрд╛ рдЧрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЕрдиреЗрдХ рднрд┐рдиреНрди рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдЪреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕рдВрдЪрдпрд┐рдд рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХрддреЗрдиреБрд╕рд╛рд░ рддреНрдпрд╛рдВрдирд╛ рдирд┐рд╡рдбрдХрдкрдгреЗ рд▓рд╛рдЧреВ рдХрд░реВ рд╢рдХрддреЛ.

8. рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреА рдкрджрд╛рдиреБрдХреНрд░рдо (рд╡рд╛рд░рд╕рд╛)

рдкреНрд░рд╢рд╛рд╕рдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ (рд╕реНрдЯреЗрдЬ, рдкреНрд░реЛрдб, рдЕреЕрдк рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдУ, рдЗ. рдЗрдирд╣реЗрд░рд┐рдЯрдиреНрд╕рд╕рд╣) рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреА рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддреЛ. рджреБрд╕рд░реНтАНрдпрд╛ рд╢рдмреНрджрд╛рдд, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рд╡реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реВ рд╢рдХрддреЗ.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рдкреНрд░рд╢рд╛рд╕рдХрд╛рдиреЗ рдЧрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ тАЬрдкреНрд░реЙрдбрдХреНрд╢рди рдХреНрд▓рд╕реНрдЯрд░реНрд╕ (рдкреНрд░реЙрдб) тЖТ рд╕рд┐рд╕реНрдЯрдо рдПрдХреНрд╕ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ тЖТ рд╕рд┐рд╕реНрдЯрдо рдПрдХреНрд╕рдЪреЗ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреНрд▓рд╕реНрдЯрд░реНрд╕тАЭ рд╣рд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗрдЯ рдХреЗрд▓рд╛, рддрд░ рдЦрд╛рд▓реАрд▓ рдХреЙрдиреНрдлрд┐рдЧрдЪреЗ рд╕рдВрдпреЛрдЬрди рд╕рд┐рд╕реНрдЯрдо X рдЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ:

  • рдХреЙрдиреНрдлрд┐рдЧ рд╕рд░реНрд╡ рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░реНрд╕рд╕рд╛рдареА рд╕рд╛рдорд╛рдиреНрдп.
  • рд╕рд┐рд╕реНрдЯрдо X рдХреНрд▓рд╕реНрдЯрд░рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧреНрд╕.
  • X рдкреНрд░рдгрд╛рд▓реА рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧ.

9. рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдУрд╡реНрд╣рд░рд░рд╛рдЗрдбреНрд╕

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

10. рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди, рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╛рдареА рдирд┐рд╡рдбрдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрдгрд┐ рд╡рдЧрд│рдгреЗ

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

11. рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдорд░реНрдерди

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

OpenShift рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ GitOps рдЯреВрд▓реНрд╕

ArgoCD

ArgoCD рдмрд╛рд╣реНрдп рд╕рдВрд╕рд╛рдзрди рд╕рд╛рдордВрдЬрд╕реНрдп рдореЙрдбреЗрд▓ рд▓рд╛рдЧреВ рдХрд░рддреЗ рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЖрдгрд┐ Git рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдордзреАрд▓ рдПрдХ-рддреЗ-рдЕрдиреЗрдХ рд╕рдВрдмрдВрдзрд╛рдВрдЪреЗ рдЖрдпреЛрдЬрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрдВрджреНрд░реАрдХреГрдд UI рдСрдлрд░ рдХрд░рддреЗ. рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреНрдпрд╛ рддреЛрдЯреНрдпрд╛рдВрдордзреНрдпреЗ ArgoCD рдХрд╛рд░реНрдп рдХрд░рдд рдирд╕рддрд╛рдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЕрдХреНрд╖рдорддрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ.

рдЕрдзрд┐рдХреГрдд рд╡реЗрдмрд╕рд╛рдЗрдЯ

рдкреНрд░рд╡рд╛рд╣

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

рдЕрдзрд┐рдХреГрдд рд╡реЗрдмрд╕рд╛рдЗрдЯ

OpenShift рд╡рд░ ArgoCD рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ

ArgoCD рдЙрддреНрдХреГрд╖реНрдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдгрд┐ рд╡реЗрдм рдХрдиреНрд╕реЛрд▓ рдСрдлрд░ рдХрд░рддреЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдпреЗрдереЗ рдлреНрд▓рдХреНрд╕ рдЖрдгрд┐ рдЗрддрд░ рдкрд░реНрдпрд╛рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

OpenShift 4 рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ ArgoCD рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╢рд╛рд╕рдХ рдореНрд╣рдгреВрди рдпрд╛ рдЪрд░рдгрд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛:

OpenShift рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ ArgoCD рдШрдЯрдХ рддреИрдирд╛рдд рдХрд░рдгреЗ

# Create a new namespace for ArgoCD components
oc create namespace argocd
# Apply the ArgoCD Install Manifest
oc -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.2.2/manifests/install.yaml
# Get the ArgoCD Server password
ARGOCD_SERVER_PASSWORD=$(oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server" -o jsonpath='{.items[*].metadata.name}')

рдЖрд░реНрдЧреЛрд╕реАрдбреА рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рд╕реБрдзрд╛рд░рдгрд╛ рдХрд░рдгреЗ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдУрдкрдирд╢рд┐рдлреНрдЯ рд░реВрдЯрджреНрд╡рд╛рд░реЗ рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ

# Patch ArgoCD Server so no TLS is configured on the server (--insecure)
PATCH='{"spec":{"template":{"spec":{"$setElementOrder/containers":[{"name":"argocd-server"}],"containers":[{"command":["argocd-server","--insecure","--staticassets","/shared/app"],"name":"argocd-server"}]}}}}'
oc -n argocd patch deployment argocd-server -p $PATCH
# Expose the ArgoCD Server using an Edge OpenShift Route so TLS is used for incoming connections
oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect

ArgoCD Cli рдЯреВрд▓ рддреИрдирд╛рдд рдХрд░рдд рдЖрд╣реЗ

# Download the argocd binary, place it under /usr/local/bin and give it execution permissions
curl -L https://github.com/argoproj/argo-cd/releases/download/v1.2.2/argocd-linux-amd64 -o /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd

ArgoCD рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рд╢рд╛рд╕рдХ рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдгреЗ

# Get ArgoCD Server Route Hostname
ARGOCD_ROUTE=$(oc -n argocd get route argocd-server -o jsonpath='{.spec.host}')
# Login with the current admin password
argocd --insecure --grpc-web login ${ARGOCD_ROUTE}:443 --username admin --password ${ARGOCD_SERVER_PASSWORD}
# Update admin's password
argocd --insecure --grpc-web --server ${ARGOCD_ROUTE}:443 account update-password --current-password ${ARGOCD_SERVER_PASSWORD} --new-password

рдпрд╛ рдкрд╛рдпрд▒реНрдпрд╛ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣реА ArgoCD WebUI рд╡реЗрдм рдХрдиреНрд╕реЛрд▓ рдХрд┐рдВрд╡рд╛ ArgoCD Cli рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓рджреНрд╡рд╛рд░реЗ ArgoCD рд╕рд░реНрд╡реНрд╣рд░рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддрд╛.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - рдХрдзреАрд╣реА рдЦреВрдк рдЙрд╢реАрд░ рдЭрд╛рд▓реЗрд▓рд╛ рдирд╛рд╣реА

"рдЯреНрд░реЗрди рдирд┐рдШрд╛рд▓реА рдЖрд╣реЗ" - рдЬреЗрд╡реНрд╣рд╛ рдХрд╛рд╣реАрддрд░реА рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рдЧрдорд╛рд╡рд▓реА рдЬрд╛рддреЗ рдЕрд╢рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдмрджреНрджрд▓ рддреЗ рдЕрд╕реЗ рдореНрд╣рдгрддрд╛рдд. OpenShift рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдпрд╛ рдЫрд╛рди рдирд╡реАрди рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪрд╛ рд╡рд╛рдкрд░ рддрд╛рдмрдбрддреЛрдм рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЪреА рдЗрдЪреНрдЫрд╛ рдЕрдиреЗрдХрджрд╛ рдорд╛рд░реНрдЧ, рдЙрдкрдпреЛрдЬрди рдЖрдгрд┐ рдЗрддрд░ OpenShift рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреНрдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЖрдгрд┐ рджреЗрдЦрд░реЗрдЦреАрд╕рд╣ рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреА рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ. рдкрдг рд╕рдВрдзреА рдиреЗрд╣рдореАрдЪ рдЪреБрдХрддреЗ рдХрд╛?

рдмрджреНрджрд▓ рд▓реЗрдЦрд╛рдВрдЪреА рдорд╛рд▓рд┐рдХрд╛ рд╕реБрд░реВ рдареЗрд╡рдд рдЖрд╣реЗ GitOps, рдЖрдЬ рдЖрдореНтАНрд╣реА рддреБрдореНтАНрд╣рд╛рд▓рд╛ рд╣рдБрдбрдХреНрд░рд╛рдлреНрдЯ рдХреЗрд▓реЗрд▓реЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдгрд┐ рддреНтАНрдпрд╛рдЪреНтАНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреЗ рдЕрд╢рд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдордзреНтАНрдпреЗ рд░реВрдкрд╛рдВрддрд░ рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рддреЗ рджрд╛рдЦрд╡реВ рдЬреЗрдереЗ рд╕рд░реНрд╡рдХрд╛рд╣реА GitOps рдЯреВрд▓реНрд╕рджреНрд╡рд╛рд░реЗ рд╡реНтАНрдпрд╡рд╕реНтАНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдкреНрд░рдердо httpd рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрд╡рд╣рд╕реНрддреЗ рддреИрдирд╛рдд рдХрд░реВ. рдЦрд╛рд▓реАрд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджрд╛рдЦрд╡рддреЛ рдХреА рдЖрдореНрд╣реА рдиреЗрдорд╕реНрдкреЗрд╕, рдЙрдкрдпреЛрдЬрди рдЖрдгрд┐ рд╕реЗрд╡рд╛ рдХрд╢реА рддрдпрд╛рд░ рдХрд░рддреЛ рдЖрдгрд┐ рдирдВрддрд░ рдорд╛рд░реНрдЧ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реА рд╕реЗрд╡рд╛ рдЙрдШрдб рдХрд░рддреЛ.

oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/namespace.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/deployment.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/service.yaml
oc expose svc/httpd -n simple-app

рдореНрд╣рдгреВрди рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХ рд╣рд╕реНрддрдХрд▓рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрд╣реЗ. рдЖрддрд╛ рддреЗ GitOps рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЕрдВрддрд░реНрдЧрдд рдЙрдкрд▓рдмреНрдзрддрд╛ рди рдЧрдорд╛рд╡рддрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдереЛрдбрдХреНрдпрд╛рдд, рд╣реЗ рдЕрд╕реЗ рдХрд░рддреЗ:

  • рдХреЛрдбрд╕рд╛рдареА рдЧрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рддрдпрд╛рд░ рдХрд░рд╛.
  • рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╡рд╕реНрддреВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ Git рднрд╛рдВрдбрд╛рд░рд╛рдд рдЕрдкрд▓реЛрдб рдХрд░рддреЛ.
  • GitOps рд╕рд╛рдзрдиреЗ рдирд┐рд╡рдбрдгреЗ рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреЗ.
  • рдЖрдореНрд╣реА рдЖрдордЪреЗ рднрд╛рдВрдбрд╛рд░ рдпрд╛ рдЯреВрд▓рдХрд┐рдЯрдордзреНрдпреЗ рдЬреЛрдбрддреЛ.
  • рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ GitOps рдЯреВрд▓рдХрд┐рдЯрдордзреНрдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЛ.
  • рдЖрдореНрд╣реА GitOps рдЯреВрд▓рдХрд┐рдЯ рд╡рд╛рдкрд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреА рдЪрд╛рдЪрдгреА рдЪрд╛рд▓рд╡рддреЛ.
  • рдЖрдореНрд╣реА GitOps рдЯреВрд▓рдХрд┐рдЯ рд╡рд╛рдкрд░реВрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рддреЛ.
  • рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреА рдЫрд╛рдЯрдгреА рдЖрдгрд┐ рд╕реНрд╡рдпрдВ-рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди рд╕рдХреНрд╖рдо рдХрд░рд╛.

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

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

YAML рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реНрд╕ рд╕реНрдерд╛рдирд┐рдХ рдХрд┐рдВрд╡рд╛ Git рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реНрдпрд╛ рдирд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ oc рдХрд┐рдВрд╡рд╛ kubectl binaries рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓. рдЦрд╛рд▓реАрд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрдордзреНрдпреЗ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕, рдЙрдкрдпреЛрдЬрди, рд╕реЗрд╡рд╛ рдЖрдгрд┐ рдорд╛рд░реНрдЧрд╛рд╕рд╛рдареА YAML рдЪреА рд╡рд┐рдирдВрддреА рдХрд░рдд рдЖрд╣реЛрдд. рдпрд╛рдЖрдзреА, рдЖрдореНрд╣реА рдирд╡реАрди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЖрдгрд┐ рд╕реАрдбреАрдЪреЗ рдХреНрд▓реЛрди рдХреЗрд▓реЗ.

oc get namespace simple-app -o yaml --export > namespace.yaml
oc get deployment httpd -o yaml -n simple-app --export > deployment.yaml
oc get service httpd -o yaml -n simple-app --export > service.yaml
oc get route httpd -o yaml -n simple-app --export > route.yaml

рдЖрддрд╛ Argo CD рд╕рд┐рдВрдХ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА рдЕрд╕реЗ рдлреАрд▓реНрдб рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА deployment.yaml рдлрд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВ.

sed -i '/sgeneration: .*/d' deployment.yaml

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдорд╛рд░реНрдЧ рдмрджрд▓рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдкреНрд░рдердо рдорд▓реНрдЯреАрд▓рд╛рдЗрди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░реВ рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ рдкреНрд░рд╡реЗрд╢: рдирд▓ рдмрджрд▓реВ.

export ROUTE="  ingress:                                                            
    - conditions:
        - status: 'True'
          type: Admitted"

sed -i "s/  ingress: null/$ROUTE/g" route.yaml

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

git commit -am тАШinitial commit of objectsтАЩ
git push origin master

рдкреБрдвреЗ рдЖрдореНрд╣реА рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдкрд╛рд╕реВрди рдкреБрдвреЗ рдЬрд╛рдК рдХреА рддреБрдореНрд╣реА рдЖрдзреАрдЪ ArgoCD рддреИрдирд╛рдд рдХреЗрд▓реЗ рдЖрд╣реЗ (рд╣реЗ рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ - рдорд╛рдЧреАрд▓ рдкрд╣рд╛ рдкреЛрд╕реНрдЯ). рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рддреАрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдбрд╕рд╣ рдЖрдореНрд╣реА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рднрд╛рдВрдбрд╛рд░ Argo CD рдордзреНрдпреЗ рдЬреЛрдбреВ. рдлрдХреНрдд рддреБрдореНрд╣реА рдЖрдзреА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓рд╛ рдЕрдЪреВрдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.

argocd repo add https://github.com/cooktheryan/blogpost

рдЖрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░реВрдпрд╛. рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реЗрдЯ рдХрд░рддреЗ рдЬреЗрдгреЗрдХрд░реВрди GitOps рдЯреВрд▓рдХрд┐рдЯ рдХреЛрдгрддреЗ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЖрдгрд┐ рдкрде рд╡рд╛рдкрд░рд╛рдпрдЪреЗ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддреА OpenShift рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЪреА рдХреЛрдгрддреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рд╛рдЦрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рд╕рдВрд╕рд╛рдзрдиреЗ рд╕реНрд╡рдпрдВ-рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рд╛рд╡реА рдХреА рдирд╛рд╣реА рд╣реЗ рд╕рдордЬрддреЗ.

argocd app create --project default 
--name simple-app --repo https://github.com/cooktheryan/blogpost.git 
--path . --dest-server https://kubernetes.default.svc 
--dest-namespace simple-app --revision master --sync-policy none

рдПрдХрджрд╛ рдЕрд░реНрдЬ рдЖрд░реНрдЧреЛ рд╕реАрдбреАрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЯреВрд▓рдХрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреАрд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд░реВрджреНрдз рдЖрдзреАрдкрд╛рд╕реВрди рддреИрдирд╛рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рддреЗ. рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ, рд╕реНрд╡рдпрдВ-рд╕рд┐рдВрдХ рдЖрдгрд┐ рдХреНрд▓реАрдирдЕрдк рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЖрд╣реЗрдд, рддреНрдпрд╛рдореБрд│реЗ рдШрдЯрдХ рдЕрджреНрдпрд╛рдк рдмрджрд▓рдд рдирд╛рд╣реАрдд. рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА Argo CD рдЗрдВрдЯрд░рдлреЗрд╕рдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛ рдЕрд░реНрдЬрд╛рдЪреА рд╕реНрдерд┐рддреА "рдЖрдКрдЯ рдСрдл рд╕рд┐рдВрдХ" рдЕрд╕реЗрд▓ рдХрд╛рд░рдг ArgoCD рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЕрд╕реЗ рдХреЛрдгрддреЗрд╣реА рд▓реЗрдмрд▓ рдирд╛рд╣реА.
рдореНрд╣рдгреВрдирдЪ рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдереЛрдбреНрдпрд╛ рд╡реЗрд│рд╛рдиреЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди рд╕реБрд░реВ рдХрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкреБрдиреНрд╣рд╛ рддреИрдирд╛рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реАрдд.

рдЖрддрд╛ рдЖрдордЪреНрдпрд╛ рдлрд╛рдпрд▓реАрдВрдордзреНрдпреЗ рддреНрд░реБрдЯреА рдирд╛рд╣реАрдд рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЪрд╛рдЪрдгреА рдХрд░реВ.

argocd app sync simple-app --dry-run

рдХреЛрдгрддреАрд╣реА рддреНрд░реБрдЯреА рдирд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рдирд╡рд░ рдкреБрдвреЗ рдЬрд╛рдК рд╢рдХрддрд╛.

argocd app sync simple-app

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

argocd app get simple-app
Name:               simple-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          simple-app
URL:                https://argocd-server-route-argocd.apps.example.com/applications/simple-app
Repo:               https://github.com/cooktheryan/blogpost.git
Target:             master
Path:               .
Sync Policy:        <none>
Sync Status:        Synced to master (60e1678)
Health Status:      Healthy
...   

рдЖрддрд╛ рддреБрдореНрд╣реА рд╕реНрд╡рдпрдВ-рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рди рдЖрдгрд┐ рдХреНрд▓реАрдирдЕрдк рд╕рдХреНрд╖рдо рдХрд░реВ рд╢рдХрддрд╛ рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреА рдХрд╛рд╣реАрд╣реА рдореЕрдиреНрдпреБрдЕрд▓реА рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдПрдЦрд╛рджреА рд╡рд╕реНрддреВ рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рддреЗ рдХрд┐рдВрд╡рд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рдПрдХ рдЙрдкрдпреЛрдЬрди рд╣реЛрдИрд▓.

argocd app set simple-app --sync-policy automated --auto-prune

рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ GitOps рдирд┐рдпрдВрддреНрд░рдгрд╛рдЦрд╛рд▓реА рдПрдХ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдгрд▓реЗ рдЖрд╣реЗ рдЬреЗ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХрд╛рд░реЗ GitOps рд╡рд╛рдкрд░рдд рдирд╡реНрд╣рддреЗ.

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

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