OpenShift рдХреЗ рд▓рд┐рдП GitOps рдХрд╛ рдкрд░рд┐рдЪрдп

рдЖрдЬ рд╣рдо GitOps рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░ рдореЙрдбрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдЗрди рдореЙрдбрд▓реЛрдВ рдХреЛ OpenShift рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЧрд╛рдЗрдб рдЙрдкрд▓рдмреНрдз рд╣реИ ╨┐╨╛ ╤Б╤Б╤Л╨╗╨║╨╡.

OpenShift рдХреЗ рд▓рд┐рдП GitOps рдХрд╛ рдкрд░рд┐рдЪрдп

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, GitOps рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Git рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред GitOps рдореЗрдВ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдПрдХрд▓ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╢реНрд░рд╡рдг рдпреЛрдЧреНрдп рд╣реИред

GitOps рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЯреНрд░реИрдХрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЛрдИ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ; рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред GitOps рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ (рд╕рдореАрдХреНрд╖рд╛, рдкреБрд▓ рдЕрдиреБрд░реЛрдз, рдЯреИрдЧ рдЗрддреНрдпрд╛рджрд┐) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рдмрдВрдзрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рди рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

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

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

GitOps рд╕рд┐рджреНрдзрд╛рдВрдд

  • рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

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

  • рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди Git рдореЗрдВ рд╕реЗрдЯ рдФрд░ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ

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

  • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ

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

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

  • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдмрд╣рд╛рд╡ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдирд╛

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

рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП GitOps рдореЙрдбрд▓

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

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

OpenShift рдХреЗ рд▓рд┐рдП GitOps рдХрд╛ рдкрд░рд┐рдЪрдп

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

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

OpenShift рдХреЗ рд▓рд┐рдП GitOps рдХрд╛ рдкрд░рд┐рдЪрдп

рдУрдкрдирд╢рд┐рдлреНрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ GitOps

рдорд▓реНрдЯреА-рдХреНрд▓рд╕реНрдЯрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдкреНрд░рд╢рд╛рд╕рди

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдФрд░ рдорд▓реНрдЯреА-рдХреНрд▓рд╛рдЙрдб рд░рдгрдиреАрддрд┐рдпреЛрдВ рдФрд░ рдПрдЬ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рдмрдврд╝рддреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рд╕рд╛рде, рдкреНрд░рддрд┐ рдЧреНрд░рд╛рд╣рдХ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рднреА рдмрдврд╝ рд░рд╣реА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдЬ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╕реИрдХрдбрд╝реЛрдВ рдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдФрд░ рдСрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рдореЗрдВ рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдпрд╛ рд╕рдордиреНрд╡рд┐рдд рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

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

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

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдиреНрдпрд╛рд╕

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

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

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

рдУрдкрдирд╢рд┐рдлреНрдЯ GitOps рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ

1. Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рдирд╛

рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╢рд╛рд╕рдХ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирдП рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред

2. рдЧреБрдкреНрдд рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рд╛рде рддреБрд▓реНрдпрдХрд╛рд▓рди

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЙрд▓реНрдЯ рдЬреИрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдУрдкрдирд╢рд┐рдлреНрдЯ рдЧреБрдкреНрдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рднреА рд▓рд╛рдн рд╣реЛрдЧрд╛ред

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

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗрд╡рд▓ рддрднреА рдкрдХреНрд╖ рдореЗрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ OpenShift GitOps рд╕реНрд╡рдпрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмреАрдЪ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡реЗ рдмрд╣рд╛рд╡ рдкрд░ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд╕рдХреЗрдВред

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

рд╡реЗ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдкреНрд░рд╢рд╛рд╕рдХ рд╕реНрд╡рдпрдВ рдЙрдЪрд┐рдд рдЙрдкрд╛рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрд╣рд╛рд╡ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

5. рдмрд╣рддреЗ рд╕рдордп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрд╣рд╛рд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдкрд┐рдЫрд▓реА рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

6. рдмрд╣рддреЗ рд╕рдордп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдСрдЯреЛ-рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХрд┐рд╕реА рдмрд╣рд╛рд╡ рдХрд╛ рдкрддрд╛ рдЪрд▓рдиреЗ рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣рдореЗрд╢рд╛ Git рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдПред

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

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдПрдХ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ OpenShift рдХреНрд▓рд╕реНрдЯрд░реЛрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдо "рдкреНрд░реЛрдбрдХреНрд╢рди рдХреНрд▓рд╕реНрдЯрд░реНрд╕ (рдкреНрд░реЛрдб) тЖТ рд╕рд┐рд╕реНрдЯрдо

  • рд╕рднреА рдЙрддреНрдкрд╛рджрди рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред
  • рд╕рд┐рд╕реНрдЯрдо X рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред
  • рдПрдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред

9. рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдУрд╡рд░рд░рд╛рдЗрдб рд╣реЛрддреЗ рд╣реИрдВ

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдЙрдирдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рди рдкрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

10. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЪрдпрдирд╛рддреНрдордХ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдФрд░ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░реЗрдВ

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░реЛрдВ рдкрд░ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдпрд╛ рдЧреИрд░-рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

OpenShift рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ GitOps рдЙрдкрдХрд░рдг

рдЖрд░реНрдЧреЛрд╕реАрдбреА

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 рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рддрд╛рдХрд┐ рдЗрд╕реЗ рдУрдкрдирд╢рд┐рдлреНрдЯ рд░реВрдЯ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗ

# 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 - рдХрднреА рднреА рджреЗрд░ рдирд╣реАрдВ рд╣реЛрддреА

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

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

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо 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

рдЖрдЗрдП рдЕрдм рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдирд┐рдпреЛрдЬрди.yaml рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕реЗ Argo CD рд╕рд┐рдВрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ