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