OpenShift рдХреЛ рд▓рд╛рдЧреА GitOps рдХреЛ рдкрд░рд┐рдЪрдп

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

OpenShift рдХреЛ рд▓рд╛рдЧреА GitOps рдХреЛ рдкрд░рд┐рдЪрдп

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

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

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

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

GitOps рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВ

  • рдкреНрд░рдгрд╛рд▓реА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ

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

  • рд╡рд╛рдВрдЫрд┐рдд рд░рд╛рдЬреНрдп рд░ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди Git рдорд╛ рд╕реЗрдЯ рд░ рд╕рдВрд╕реНрдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ

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

  • рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдорд╛рд░реНрдлрдд рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ

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

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

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

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

OpenShift рдХреЛ рд▓рд╛рдЧрд┐ GitOps рдореЛрдбреЗрд▓рд╣рд░реВ

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

рдпрд╕ рдореЛрдбреЗрд▓рдХрд╛ рдЕрдиреБрд╕рд╛рд░, рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рдПрдХ рдирд┐рдпрдиреНрддреНрд░рдХ рдЫ рдЬреБрди рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрд░реЛрддрд╣рд░реВрд╕рдБрдЧ Git рднрдгреНрдбрд╛рд░рдорд╛ Kubernetes рд╕реНрд░реЛрддрд╣рд░реВ (YAML рдлрд╛рдЗрд▓рд╣рд░реВ) рддреБрд▓рдирд╛ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред рдпрджрд┐ рд╡рд┐рд╕рдВрдЧрддрд┐рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЗрдпреЛ рднрдиреЗ, рдирд┐рдпрдиреНрддреНрд░рдХрд▓реЗ рд╕реВрдЪрдирд╛рд╣рд░реВ рдкрдард╛рдЙрдБрдЫ рд░ рд╕рдореНрднрд╡рддрдГ рднрд┐рдиреНрдирддрд╛рд╣рд░реВ рд╕рдЪреНрдпрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░рдмрд╛рд╣реА рдЧрд░реНрдЫред рдпреЛ GitOps рдореЛрдбреЗрд▓ рдПрдиреНрдереЛрд╕ рдХрдиреНрдлрд┐рдЧ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ Weaveworks рдлреНрд▓рдХреНрд╕ рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

OpenShift рдХреЛ рд▓рд╛рдЧреА GitOps рдХреЛ рдкрд░рд┐рдЪрдп

рдмрд╛рд╣реНрдп рд╕реНрд░реЛрдд рдореЗрд▓рдорд┐рд▓рд╛рдкрдХрд░реНрддрд╛ (рдкреБрд╢)

рдпрд╕ рдореЛрдбреЗрд▓рд▓рд╛рдИ рдЕрдШрд┐рд▓реНрд▓реЛрдХреЛ рднрд┐рдиреНрдирддрд╛рдХреЛ рд░реВрдкрдорд╛ рдорд╛рдиреНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрдм рд╣рд╛рдореАрд╕рдБрдЧ "Git рднрдгреНрдбрд╛рд░ - Kubernetes рдХреНрд▓рд╕реНрдЯрд░" рдЬреЛрдбреАрд╣рд░реВрдорд╛ рд╕реНрд░реЛрддрд╣рд░реВ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдПрдХ рд╡рд╛ рдмрдвреА рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВ рдЫрдиреНред рдпрд╣рд╛рдБ рднрд┐рдиреНрдирддрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЖрдлреНрдиреИ рдЫреБрдЯреНрдЯреИ рдирд┐рдпрдиреНрддреНрд░рдХ рд╣реБрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред Git - k8s рдХреНрд▓рд╕реНрдЯрд░ рдЬреЛрдбреАрд╣рд░реВ рдкреНрд░рд╛рдп: CRDs (рдЕрдиреБрдХреВрд▓ рд╕реНрд░реЛрдд рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВ) рдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ рдирд┐рдпрдиреНрддреНрд░рдХрд▓реЗ рдХрд╕рд░реА рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕ рдореЛрдбреЗрд▓ рднрд┐рддреНрд░, рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрд▓реЗ CRD рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ Git рднрдгреНрдбрд╛рд░рд▓рд╛рдИ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрд░реЛрддрд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрдЫрдиреН, рдЬреБрди CRD рдорд╛ рдкрдирд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рддреБрд▓рдирд╛рдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдпреЛ GitOps рдореЛрдбреЗрд▓ ArgoCD рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

OpenShift рдХреЛ рд▓рд╛рдЧреА GitOps рдХреЛ рдкрд░рд┐рдЪрдп

OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ GitOps

рдмрд╣реБ-рдХреНрд▓рд╕реНрдЯрд░ Kubernetes рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдХреЛ рдкреНрд░рд╢рд╛рд╕рди

Kubernetes рдХреЛ рдкреНрд░рд╕рд╛рд░ рд░ рдмрд╣реБ-рдХреНрд▓рд╛рдЙрдб рд░рдгрдиреАрддрд┐ рд░ рдХрд┐рдирд╛рд░рд╛ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдХреЛ рдмрдвреНрджреЛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╕рдВрдЧ, рдкреНрд░рддрд┐ рдЧреНрд░рд╛рд╣рдХ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рдкрдирд┐ рдмрдвреНрджреИ рдЫред

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

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдзреЗрд░реИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА:

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

рдЖрд╡реЗрджрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ

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

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдирд┐рдореНрди рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреБрдкрд░реНрдЫ:

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

OpenShift GitOps рдкреНрд░рдпреЛрдЧ рдХреЗрд╕рд╣рд░реВ

1. Git рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджреИ

рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╢рд╛рд╕рдХрд▓реЗ Git рднрдгреНрдбрд╛рд░рдорд╛ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдирдпрд╛рдБ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ Git рднрдгреНрдбрд╛рд░рдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЬреНрдЮрд╛рдд рд░рд╛рдЬреНрдпрдХреЛ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐рдорд╛ рд▓реНрдпрд╛рдЙрди рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХреНрдЫред

2. рдЧреЛрдкреНрдп рдкреНрд░рдмрдиреНрдзрдХ рд╕рдВрдЧ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди

рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рд╕рдлреНрдЯрд╡реЗрдпрд░ рдЬрд╕реНрддреИ рднрд▓реНрдЯрд╕рдБрдЧ OpenShift рдЧреЛрдкреНрдп рд╡рд╕реНрддреБрд╣рд░реВ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛рдмрд╛рдЯ рдкреНрд░рд╢рд╛рд╕рдХрд▓реЗ рдкрдирд┐ рд▓рд╛рдн рдЙрдард╛рдЙрдиреЗрдЫред

3. рдмрд╣рд╛рд╡ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдХреЛ рдирд┐рдпрдиреНрддреНрд░рдг

рдпрджрд┐ OpenShift GitOps рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рд░ рднрдгреНрдбрд╛рд░рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХрд╛ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрджрдЫ рд░ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдиреНрдЫ рднрдиреЗ рдкреНрд░рд╢рд╛рд╕рдХ рдорд╛рддреНрд░ рдкрдХреНрд╖рдорд╛ рд╣реБрдиреЗрдЫрдиреН, рддрд╛рдХрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдмрд╣рд╛рд╡рдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рди рд╕рдХреНрдЫрдиреНред

4. рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмрд╣рд╛рд╡ рдмрд╛рд░реЗ рд╕реВрдЪрдирд╛рд╣рд░реВ

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

5. рдмрд╣рд╛рд╡ рдЧрд░реНрджрд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдХреЛ рдореНрдпрд╛рдиреБрдЕрд▓ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди

рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмрд╣рд╛рд╡рдХреЛ рдШрдЯрдирд╛рдорд╛, рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛рдИ рдЕрдШрд┐рд▓реНрд▓реЛ рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐рдорд╛ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдлрд░реНрдХрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, Git рднрдгреНрдбрд╛рд░рд╕рдБрдЧ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рдкреНрд░рд╢рд╛рд╕рдХрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

6. рдмрд╣рд┐рд░рд╛ рд╣реБрдБрджрд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд╕реНрд╡рдд: рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди

рдкреНрд░рд╢рд╛рд╕рдХрд▓реЗ рдкрдирд┐ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдЫ рднрдгреНрдбрд╛рд░рд╕рдБрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрдм рдПрдХ рдмрд╣рд╛рд╡ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЗрдиреНрдЫ, рддрд╛рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдзреИрдВ Git рдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред

7. рдзреЗрд░реИ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ - рдПрдЙрдЯрд╛ рднрдгреНрдбрд╛рд░

рдкреНрд░рд╢рд╛рд╕рдХрд▓реЗ рдПрдХ Git рднрдгреНрдбрд╛рд░рдорд╛ рдзреЗрд░реИ рдлрд░рдХ OpenShift рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдкрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЫрдиреМрдЯ рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХреНрдЫред

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

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

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рдкреНрд░рд╢рд╛рд╕рдХрд▓реЗ Git рднрдгреНрдбрд╛рд░рдорд╛ рдкрджрд╛рдиреБрдХреНрд░рдо "рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ (рдЙрддреНрдкрд╛рджрди) тЖТ рдкреНрд░рдгрд╛рд▓реА X рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ тЖТ рдкреНрд░рдгрд╛рд▓реА X рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ" рд╕реЗрдЯ рдЧрд░реНрджрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдирд┐рдореНрди рдХрдиреНрдлрд┐рдЧрд╣рд░реВрдХреЛ рд╕рдВрдпреЛрдЬрди рдкреНрд░рдгрд╛рд▓реА 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}')

ArgoCD рд╕рд░реНрднрд░ рдХреЛ рд╕реБрдзрд╛рд░ рддрд╛рдХрд┐ рдпреЛ OpenShift рдорд╛рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ

# 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 рднрдгреНрдбрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рд╣рд╛рдореА рд╣рд╛рдореНрд░рд╛ рд╣рд╛рд▓рдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВ рдирд┐рд░реНрдпрд╛рдд рдЧрд░реНрдЫреМрдВ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ Git рднрдгреНрдбрд╛рд░рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдЫреМрдВред
  • GitOps рдЙрдкрдХрд░рдгрд╣рд░реВ рдЪрдпрди рд░ рддреИрдирд╛рддреА рдЧрд░реНрджреИред
  • рд╣рд╛рдореА рдпрд╕ рдЯреВрд▓рдХрд┐рдЯрдорд╛ рд╣рд╛рдореНрд░реЛ рднрдгреНрдбрд╛рд░ рдердкреНрдЫреМрдВред
  • рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ GitOps рдЯреВрд▓рдХрд┐рдЯрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдЫреМрдВред
  • рд╣рд╛рдореА GitOps рдЯреВрд▓рдХрд┐рдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдкрд░реАрдХреНрд╖рдг рд░рди рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдЫреМрдВред
  • рд╣рд╛рдореА GitOps рдЯреВрд▓рдХрд┐рдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд╕реНрддреБрд╣рд░реВ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдЫреМрдВред
  • рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рдЫрд╛рдБрдЯреНрдиреЗ рд░ рд╕реНрд╡рдд: рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

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

рдпрджрд┐ YAML рд╡рд╕реНрддреБ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рд╡рд╛ Git рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ oc рд╡рд╛ kubectl рдмрд╛рдЗрдирд░реАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рддрд▓рдХреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯрдорд╛ рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдиреЗрдорд╕реНрдкреЗрд╕, рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ, рд╕реЗрд╡рд╛ рд░ рдорд╛рд░реНрдЧрдХреЛ рд▓рд╛рдЧрд┐ 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

рд╕рд╛рдереИ, рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рдореА рдкрд╣рд┐рд▓реЗ рдмрд╣реБрд░реЗрдЦрд╛ рдЪрд░ рд╕реЗрдЯ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рддреНрдпрд╕рдкрдЫрд┐ ingress: null рд▓рд╛рдИ рддреНрдпреЛ рдЪрд░рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╕рдБрдЧ рдмрджрд▓реНрдиреЗрдЫреМрдВред

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 рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреБрднрдпреЛ (рдпреЛ рдХрд╕рд░реА рдЧрд░реНрдиреЗ - рдЕрдШрд┐рд▓реНрд▓реЛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдкреЛрд╕реНрдЯ)ред рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдХреЛрдб рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реА рд╣рд╛рдореАрд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдЕрд░реНрдЧреЛ рд╕реАрдбреАрдорд╛ рдердкреНрдиреЗрдЫреМрдВред рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рд╕рд╣реА рднрдгреНрдбрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдЕрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрджрдЫ рддрд╛рдХрд┐ GitOps рдЯреВрд▓рдХрд┐рдЯрд▓реЗ рдХреБрди рднрдгреНрдбрд╛рд░ рд░ рдорд╛рд░реНрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ, рдХреБрди рдУрдкрдирд╢рд┐рдлреНрдЯ рд╡рд╕реНрддреБрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рднрдгреНрдбрд╛рд░рдХреЛ рдХреБрди рд╡рд┐рд╢реЗрд╖ рд╢рд╛рдЦрд╛ рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рд╕реНрд░реЛрддрд╣рд░реВ рд╕реНрд╡рдд: рд╕рд┐рдЩреНрдХ рдЧрд░реНрдиреБрдкрд░реНрдЫ рдХрд┐ рднрдиреЗрд░ рдмреБрдЭреНрджрдЫред

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

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