рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреА рдпреЛрдЧреНрдп рддреБрд▓рдирд╛ рд▓рд╛рдЧреВ рдХрд░рд╛, рдмрджрд▓рд╛ рдЖрдгрд┐ рдкреЕрдЪ рдХрд░рд╛

Kubernetes рдХрдбреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рдЕрдкрдбреЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд: рд▓рд╛рдЧреВ рдХрд░рд╛, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛, рдкреЕрдЪ рдХрд░рд╛ рдЖрдгрд┐ рдмрджрд▓рд╛. рдкреНрд░рддреНрдпреЗрдХрдЬрдг рдХрд╛рдп рдХрд░рддреЛ рдЖрдгрд┐ рдХрдзреА рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рдпрд╛рдмрд╛рдмрдд рд╕рдВрднреНрд░рдо рдЖрд╣реЗ. рдЪрд▓рд╛ рддреЗ рдмрд╛рд╣реЗрд░ рдХрд╛рдвреВрдпрд╛.

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреА рдпреЛрдЧреНрдп рддреБрд▓рдирд╛ рд▓рд╛рдЧреВ рдХрд░рд╛, рдмрджрд▓рд╛ рдЖрдгрд┐ рдкреЕрдЪ рдХрд░рд╛

рддрд░ Google рд╡рд░ рд╢реЛрдзрд╛ "kubernetes apply vs рдмрджрд▓рд╛" рд╣рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реНрдерд┐рдд рдЖрд╣реЗ StackOverflow рд▓рд╛ рдЙрддреНрддрд░ рджреНрдпрд╛, рдЬреЗ рдпреЛрдЧреНрдп рдирд╛рд╣реА. рд╢реЛрдзрддрд╛рдирд╛ "kubernetes рд▓рд╛рдЧреВ рд╡рд┐ рдкреЕрдЪ" рд╕рд╛рдареА рдкрд╣рд┐рд▓реА рд▓рд┐рдВрдХ рдЖрд╣реЗ kubectl patch, рдЬреНрдпрд╛рдд рддреБрд▓рдирд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдирд╛рд╣реА apply ╨╕ patch. рд╣рд╛ рд▓реЗрдЦ рд╡рд┐рд╡рд┐рдз рдкрд░реНрдпрд╛рдп, рддрд╕реЗрдЪ рдкреНрд░рддреНрдпреЗрдХрд╛рдЪрд╛ рдпреЛрдЧреНрдп рд╡рд╛рдкрд░ рдкрд╛рд╣рдгрд╛рд░ рдЖрд╣реЗ.

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

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕реАрдПрд▓рдЖрдп

рдЬрд░ рддреБрдореНрд╣реА рдЖрдзреАрдЪ CLI рджреНрд╡рд╛рд░реЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░реНрд╕рд╕рд╣ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣реА рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд рдЖрд╣рд╛рдд apply ╨╕ edit. рд╕рдВрдШ apply рдлрд╛рдИрд▓рдордзреАрд▓ рд╕рдВрд╕рд╛рдзрди рддрдкрд╢реАрд▓ рд╡рд╛рдЪрддреЗ рдЖрдгрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛ "рдЕрдкреНрд╕рд░реНрдЯ" рдмрдирд╡рддреЗ, рдЙрджрд╛. рдЬрд░ рддреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕реЗрд▓ рддрд░ рд╕рдВрд╕рд╛рдзрди рддрдпрд╛рд░ рдХрд░рддреЗ рдЖрдгрд┐ рддреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рддреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ. рд╕рдВрдШ edit API рджреНрд╡рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рд╡рд╛рдЪрддреЗ, рдирдВрддрд░ рд╕реНрдерд╛рдирд┐рдХ рдлрд╛рдЗрд▓рд╡рд░ рд╕рдВрд╕рд╛рдзрди рддрдкрд╢реАрд▓ рд▓рд┐рд╣рд┐рддреЗ, рдЬреА рдирдВрддрд░ рдордЬрдХреВрд░ рд╕рдВрдкрд╛рджрдХрд╛рдд рдЙрдШрдбрд▓реА рдЬрд╛рддреЗ. рддреБрдореНрд╣реА рдлрд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВрди рд╕реЗрд╡реНрд╣ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, kubectl API рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реЗрд▓реЗ рдмрджрд▓ рдкрд░рдд рдкрд╛рдард╡реЗрд▓, рдЬреЗ рд╣реЗ рдмрджрд▓ рд╕рдВрд╕рд╛рдзрдирд╛рд╡рд░ рдХрд╛рд│рдЬреАрдкреВрд░реНрд╡рдХ рд▓рд╛рдЧреВ рдХрд░реЗрд▓.

рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рдЖрдЬреНрдЮрд╛ рдорд╛рд╣рд┐рдд рдирд╛рд╣реАрдд patch ╨╕ replace. рд╕рдВрдШ patch рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░ рдлрдХреНрдд рдмрджрд▓рд▓реЗрд▓рд╛ рднрд╛рдЧ рдкреНрд░рджрд╛рди рдХрд░реВрди рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдВрд╕рд╛рдзрди рддрдкрд╢реАрд▓рд╛рдЪрд╛ рднрд╛рдЧ рдмрджрд▓рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рд╕рдВрдШ replace рд╕рд╛рд░рдЦреЗрдЪ рдХрд╛рд░реНрдп рдХрд░рддреЗ edit, рдкрд░рдВрддреБ рд╕рд░реНрд╡рдХрд╛рд╣реА рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ: рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕рдВрд╕рд╛рдзрди рддрдкрд╢реАрд▓рд╛рдЪреА рд╡рд░реНрддрдорд╛рди рдЖрд╡реГрддреНрддреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд╛рдкрд░реВрди kubectl get -o yaml, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛, рдирдВрддрд░ рд╡рд╛рдкрд░рд╛ replace рдмрджрд▓рд▓реЗрд▓реНрдпрд╛ рддрдкрд╢реАрд▓рд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рд╕рдВрдШ replace рд░рд┐рд╕реЛрд░реНрд╕ рд╡рд╛рдЪрдгреЗ рдЖрдгрд┐ рдмрджрд▓рдгреЗ рдпрд╛рдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА рдмрджрд▓ рдЭрд╛рд▓реНрдпрд╛рд╕ рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

Kubernetes API

рдЖрдкрдг рдХрджрд╛рдЪрд┐рдд рдкрджреНрдзрддреАрдВрд╢реА рдкрд░рд┐рдЪрд┐рдд рдЖрд╣рд╛рдд CoreV1().Pods().Update(), replaceNamespacedService рдХрд┐рдВрд╡рд╛ patch_namespaced_deployment, рдЬрд░ рддреБрдореНрд╣реА рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рджреНрд╡рд╛рд░реЗ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд╛рд▓ Kubernetes API рд╕рд╛рдареА рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА рдХрд╛рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╡рд╛рдкрд░рдгреЗ. рд▓рд╛рдпрдмреНрд░рд░реА рдкрджреНрдзрддреА рд╡рд╛рдкрд░реВрди HTTP рд╡рд┐рдирдВрддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рдпрд╛ рдкрджреНрдзрддреА рд╣рд╛рддрд╛рд│рддреЗ PUT ╨╕ PATCH... рдЬреНрдпрд╛рдд update ╨╕ replace рд╡рд╛рдкрд░рд╛ PUTрдЖрдгрд┐ patch, рддреЗ рдХрд┐рддреАрд╣реА рдХреНрд╖реБрд▓реНрд▓рдХ рдЕрд╕рд▓реЗ рддрд░реА рд╡рд╛рдкрд░рддреЗ PATCH.

рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ kubectl API рджреНрд╡рд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░рд╕рд╣ рджреЗрдЦреАрд▓ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рджреБрд╕рд░рд╝реНрдпрд╛ рд╢рдмреНрджрд╛рдд, kubectlрдЧреЛ рд▓рдБрдЧреНрд╡реЗрдЬрд╕рд╛рдареА рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рд╡рд░ рдПрдХ рд░реЕрдкрд░ рдЖрд╣реЗ, рдЬреЗ рдорд╛рдирдХ API рдХреНрд╖рдорддрд╛рдВрд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрдгрд┐ рд╡рд╛рдЪрдиреАрдп рд╕реНрд╡рд░реВрдкрд╛рдд рд╕рдмрдХрдорд╛рдВрдб рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд╕реЗ рдЖрдкрдг рдЖрдзреАрдЪ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдЕрд╕реЗрд▓, рдкрджреНрдзрдд apply рдорд╛рдЧреАрд▓ рдкрд░рд┐рдЪреНрдЫреЗрджрд╛рдд рд╡рд░ рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд▓рд╛ рдирд╡реНрд╣рддрд╛. рд╕рдзреНрдпрд╛ (рдореЗ 2020, рдЕрдВрджрд╛рдЬреЗ рдЕрдиреБрд╡рд╛рджрдХ) рд╕рд░реНрд╡ рддрд░реНрдХ kubectl apply, рдореНрд╣рдгрдЬреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕рд▓реЗрд▓реА рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд╡рд┐рджреНрдпрдорд╛рди рд╕рдВрд╕рд╛рдзрдиреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ, рдкреВрд░реНрдгрдкрдгреЗ рдХреЛрдбрдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ kubectl. рдкреНрд░рдпрддреНрди рдХреЗрд▓реЗ рдЬрд╛рдд рдЖрд╣реЗрдд рддрд░реНрдХ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╡рд░ apply API рдмрд╛рдЬреВрд▓рд╛, рдкрд░рдВрддреБ рддреЗ рдЕрджреНрдпрд╛рдк рдмреАрдЯрд╛рдордзреНрдпреЗ рдЖрд╣реЗ. рдореА рдЦрд╛рд▓реА рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд▓рд┐рд╣реАрди.

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдкреЕрдЪ

рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд╛рдкрд░рд▓реЗ patch, рдЖрдкрдг рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрдирд┐рдд рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рджреЛрдиреНрд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА Kubernetes API рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рдЖрдгрд┐ kubectl (рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдирд╛рд╣реА, рдХрд╛рд░рдг рддреЗ рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╛рдареА рдПрдХ рдЖрд╡рд░рдг рдЖрд╣реЗ, рдЕрдВрджрд╛рдЬреЗ рдЕрдиреБрд╡рд╛рджрдХ).

рдзреЛрд░рдгрд╛рддреНрдордХ рдХрд╛рдо рдХрд░рд╛

рд╕рд░реНрд╡ рд╕рдВрдШ kubectl apply, edit ╨╕ patch рдкрджреНрдзрдд рд╡рд╛рдкрд░рд╛ PATCH рд╡рд┐рджреНрдпрдорд╛рди рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА HTTP рд╡рд┐рдирдВрддреНрдпрд╛рдВрдордзреНрдпреЗ. рдЬрд░ рддреБрдореНрд╣реА рдХрдорд╛рдВрдбреНрд╕рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рддрд░ рддреЗ рд╕рд░реНрд╡ рджреГрд╖реНрдЯреАрдХреЛрди рд╡рд╛рдкрд░рддрд╛рдд рд╕реНрдЯреНрд░реЕрдЯреЗрдЬрд┐рдХ-рдорд░реНрдЬ рдкреЕрдЪрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЬрд░реА рдЖрджреЗрд╢ patch рдЗрддрд░ рдкрдзреНрджрддреА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд (рдЦрд╛рд▓реАрд▓ рдпрд╛рд╡рд░ рдЕрдзрд┐рдХ). рд╕реНрдЯреНрд░реЕрдЯреЗрдЬрд┐рдХ-рдорд░реНрдЬ рдкреЕрдЪрд┐рдВрдЧ рдкрдзреНрджрдд рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирд╕рд╣ рдкреБрд░рд╡рд▓реЗрд▓реЗ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рд╡рд┐рд▓реАрди рдХрд░реВрди "рддреЗ рдмрд░реЛрдмрд░ рдорд┐рд│рд╡рдгреНрдпрд╛рдЪрд╛" рдкреНрд░рдпрддреНрди рдХрд░рддреЗ. рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрдкрдгреЗ, рддреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдгрд┐ рдЕреЕрд░реЗ рджреЛрдиреНрд╣реА рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдмрджрд▓ рд╣реЗ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЕрд╕рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рдгреЗ patch рдкреЙрдб рдХрдВрдЯреЗрдирд░ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдирд╡реАрди рдПрдиреНрд╡реНрд╣рд╛рдпрд░реНрдирдореЗрдВрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд╕рд╣, рддреЗ рдПрдиреНрд╡реНрд╣рд╛рдпрд░реНрдирдореЗрдВрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рддреНрдпрд╛рдВрдирд╛ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдЯ рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рд╡рд┐рджреНрдпрдорд╛рди рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рддреЗ. рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд╛рдкрд░реВрди рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рддрдкрд╢реАрд▓рд╛рдордзреНрдпреЗ рдкреЕрд░рд╛рдореАрдЯрд░ рдореВрд▓реНрдп рд╢реВрдиреНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдХреНрддреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕рдВрдШ рдХреЛрдгрддреНрдпрд╛ kubectl рдЕрджреНрдпрдпрд╛рд╡рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ рдХрд╛?

рдЖрдкрдг рд╡рд╛рдкрд░реВрди рдЖрдкрд▓реА рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рд╕ kubectl apply, рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддрд╛рдирд╛ рдиреЗрд╣рдореА рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ kubectl applyрддреЗ kubectl рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рд╡рд┐рдирдВрддреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдмрджрд▓рд╛рдВрдЪрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдК рд╢рдХрддреЗ. рдлрд╛рдпрджрд╛ рдиреЗрд╣рдореА рд╡рд╛рдкрд░рд╛ apply рдореНрд╣рдгрдЬреЗ рддреЗ рдкреВрд░реНрд╡реА рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рддрдкрд╢реАрд▓рд╛рдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдареЗрд╡рддреЗ, рдЬреЗ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЧреБрдгрдзрд░реНрдо рдЖрдгрд┐ рдЕреЕрд░реЗ рдШрдЯрдХ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реЗ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рд╣реЗ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рд╣реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ apply рдЧреБрдгрдзрд░реНрдо рдЖрдгрд┐ рдЕреЕрд░реЗ рдШрдЯрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА, рддрд░ рд╕рд╛рдорд╛рдиреНрдп рдзреЛрд░рдгрд╛рддреНрдордХ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА. рд╕рдВрдШ edit ╨╕ patch рддреНрдпрд╛ рдиреЛрдЯреНрд╕ рдЕрдкрдбреЗрдЯ рдХрд░реВ рдирдХрд╛ kubectl apply рддреНтАНрдпрд╛рдЪреНтАНрдпрд╛ рдмрджрд▓рд╛рдВрдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдгреНтАНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рддреЗ, рддреНрдпрд╛рдореБрд│реЗ рдХреБрдмреЗрд░реНрдиреЗрдЯреНрд╕ API рджреНрд╡рд╛рд░реЗ рдЯреНрд░реЕрдХ рдХреЗрд▓реЗрд▓реЗ рдЖрдгрд┐ рдХреЗрд▓реЗрд▓реЗ рдХреЛрдгрддреЗрд╣реА рдмрджрд▓, рдкрд░рдВрддреБ рдЖрджреЗрд╢рд╛рдВрджреНрд╡рд╛рд░реЗ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд edit ╨╕ patch, рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рдЖрджреЗрд╢рд╛рдВрдирд╛ рдЕрджреГрд╢реНрдп applyрддреЗ рдЖрд╣реЗ apply рд╕рд╛рдареА рдЗрдирдкреБрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рджрд┐рд╕рдд рдирд╕рд▓реЗ рддрд░реАрд╣реА рддреНрдпрд╛рдВрдирд╛ рдХрд╛рдвреВрди рдЯрд╛рдХрдд рдирд╛рд╣реА apply (рдХрд╛рдЧрджрдкрддреНрд░рд╛рдд рдЕрд╕реЗ рдореНрд╣рдЯрд▓реЗ рдЖрд╣реЗ edit ╨╕ patch рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдиреЛрдЯреНрд╕рдордзреНрдпреЗ рд╕реБрдзрд╛рд░рдгрд╛ рдХрд░рд╛ apply, рдкрд░рдВрддреБ рд╕рд░рд╛рд╡ рдордзреНрдпреЗ - рдирд╛рд╣реА).

рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд╡рд╛рдкрд░рдд рдирд╕рд▓реНрдпрд╛рд╕ apply, рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ edit, рдЖрдгрд┐ patch, рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд▒реНрдпрд╛ рдмрджрд▓рд╛рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрдиреБрдХреВрд▓ рдЕрд╕рд▓реЗрд▓реА рдХрдорд╛рдВрдб рдирд┐рд╡рдбрдгреЗ. BOM рдЧреБрдгрдзрд░реНрдо рдЬреЛрдбрддрд╛рдирд╛ рдЖрдгрд┐ рдмрджрд▓рддрд╛рдирд╛, рджреЛрдиреНрд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрди рдЕрдВрджрд╛рдЬреЗ рд╕рдорд╛рди рдЕрд╕рддрд╛рдд. рддрдкрд╢реАрд▓ рдЧреБрдгрдзрд░реНрдо рдХрд┐рдВрд╡рд╛ рдЕреЕрд░реЗ рдШрдЯрдХ рд╣рдЯрд╡рддрд╛рдирд╛ edit рдПрдХ-рд╡реЗрд│ рд▓рд╛рдБрдЪ рд╕рд╛рд░рдЦреЗ рд╡рд╛рдЧрддреЗ apply, рд╕рдВрдкрд╛рджрдирд╛рдкреВрд░реНрд╡реА рдЖрдгрд┐ рдирдВрддрд░ рддрдкрд╢реАрд▓ рдХрд╕рд╛ рд╣реЛрддрд╛ рдпрд╛рдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдареЗрд╡рдгреНрдпрд╛рд╕рд╣, рдЬреЗрдгреЗрдХрд░реВрди рддреБрдореНрд╣реА рд╕реНрддреНрд░реЛрддрд╛рдордзреВрди рдЧреБрдгрдзрд░реНрдо рдЖрдгрд┐ рдЕреЕрд░реЗ рдШрдЯрдХ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдХрд╛рдвреВрди рдЯрд╛рдХреВ рд╢рдХрддрд╛. рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдкреНрд░реЙрдкрд░реНрдЯреА рд╡реНрд╣реЕрд▓реНрдпреВ рд╢реВрдиреНрдп рд╡рд░ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ patchрд╕рдВрд╕рд╛рдзрдирд╛рддреВрди рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА. рд╕реНрдЯреНрд░реЕрдЯреЗрдЬрд┐рдХ-рдорд░реНрдЬ рдкреЕрдЪрд┐рдВрдЧ рд╡рд╛рдкрд░реВрди рдЕреЕрд░реЗ рдШрдЯрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреЗ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗ рдХрд╛рд░рдг рддреНрдпрд╛рд╕рд╛рдареА рдорд░реНрдЬ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдкрд░реНрдпрд╛рдпрд╛рдВрд╕рд╛рдареА рдЦрд╛рд▓реА рдЗрддрд░ рдЕрдкрдЧреНрд░реЗрдб рдкрдзреНрджрддреА рдкрд╣рд╛.

рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рдЕрджреНрдпрдпрд╛рд╡рдд рдкрджреНрдзрддреА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬреЗ рд╡рд░реАрд▓ рдЖрджреЗрд╢рд╛рдВрдкреНрд░рдорд╛рдгреЗрдЪ рд╡рд╛рдЧрддрд╛рдд kubectl, рд╡рд┐рдирдВрддреНрдпрд╛рдВрдордзреНрдпреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ content-type ╨▓ application/strategic-merge-patch+json. рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреАрд▓ рдЧреБрдгрдзрд░реНрдо рдХрд╛рдвреВрди рдЯрд╛рдХрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдВрдЪреА рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЕрд╢рд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рд╢реВрдиреНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. kubectl patch. рддреБрдореНрд╣рд╛рд▓рд╛ рдЕреЕрд░реЗ рдШрдЯрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдЕрдкрдбреЗрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдорд░реНрдЬ рдирд┐рд░реНрджреЗрд╢ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд рдХрд┐рдВрд╡рд╛ рдЕрдкрдбреЗрдЯреНрд╕рд╕рд╛рдареА рд╡реЗрдЧрд│рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд╛рдкрд░рд╛рд╡рд╛.

рдЕрджреНрдпрддрдирд╛рдВрд╕рд╛рдареА рдЗрддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрди

Kubernetes рджреЛрди рдЗрддрд░ рдЕрджреНрдпрддрди рдкрджреНрдзрддреАрдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ: JSON рдорд░реНрдЬ рдкреЕрдЪ ╨╕ JSON рдкреЕрдЪ. JSON рд╡рд┐рд▓реАрди рдкреЕрдЪ рджреГрд╖реНрдЯрд┐рдХреЛрди рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдЖрдВрд╢рд┐рдХ Kubernetes рддрдкрд╢реАрд▓ рдШреЗрддреЗ рдЖрдгрд┐ рд╕реНрдЯреНрд░реЕрдЯреЗрдЬрд┐рдХ-рдорд░реНрдЬ рдкреЕрдЪрд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдкреНрд░рдорд╛рдгреЗрдЪ рд╡рд┐рд▓реАрди рд╡рд╕реНрддреВрдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ. рджреЛрдШрд╛рдВрдордзреАрд▓ рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рддреЗ рдкреЙрдб рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреАрд▓ рдХрдВрдЯреЗрдирд░ рдЕреЕрд░реЗрд╕рд╣ рдХреЗрд╡рд│ рдЕреЕрд░реЗ рдмрджрд▓рдгреНрдпрд╛рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА JSON рдорд░реНрдЬ рдкреЕрдЪ рд╡рд╛рдкрд░рддрд╛рдирд╛, рдХреЛрдгрддреНрдпрд╛рд╣реА рдХрдВрдЯреЗрдирд░рдЪреА рдорд╛рд▓рдорддреНрддрд╛ рдмрджрд▓рд▓реНрдпрд╛рд╕ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рд╕рдВрдкреВрд░реНрдг рддрдкрд╢реАрд▓ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреНрдпрд╛рдореБрд│реЗ рдмреАрдУрдПрдордордзреАрд▓ рдЕреЕрд░реЗрдордзреВрди рдШрдЯрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░ рддреБрдореНрд╣реА JSON рдорд░реНрдЬ рдкреЕрдЪ рд╡рд╛рдкрд░реВрди рдирд┐рд╡рдбреВ рд╢рдХрддрд╛ kubectl patch --type=merge. Kubernetes API рд╕рд╣ рдХрд╛рдо рдХрд░рддрд╛рдирд╛, рддреБрдореНрд╣реА рд╡рд┐рдирдВрддреА рдкрджреНрдзрдд рд╡рд╛рдкрд░рд╛рд╡реА PATCH рдЖрдгрд┐ рд╕реНрдерд╛рдкрдирд╛ content-type ╨▓ application/merge-patch+json.

JSON рдкреЕрдЪ рджреГрд╖реНрдЯреАрдХреЛрди, рд╕рдВрд╕рд╛рдзрдирд╛рдЪреЗ рдЖрдВрд╢рд┐рдХ рддрдкрд╢реАрд▓ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рдЖрдкрдг рдЕтАНреЕрд░реЗ рдореНрд╣рдгреВрди рд╕рдВрд╕рд╛рдзрдирд╛рдордзреНрдпреЗ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдмрджрд▓ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рд╡рд╛рдкрд░рддреЛ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдЕтАНреЕрд░реЗрдЪрд╛ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рд╕рдВрд╕рд╛рдзрдирд╛рдордзреНрдпреЗ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдмрджрд▓рд╛рдЪреЗ рд╡рд░реНрдгрди рджрд░реНрд╢рд╡рддреЛ. рдХреЗрд▓реЗ рдЬрд╛рдгрд╛рд░реЗ рдмрджрд▓ рд╡реНрдпрдХреНрдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рдЕрдзрд┐рдХ рд▓рд╡рдЪрд┐рдХ рдЖрдгрд┐ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдорд╛рд░реНрдЧ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдВрд╢рд┐рдХ рд╕рдВрд╕рд╛рдзрди рддрдкрд╢реАрд▓ рдкрд╛рдард╡рдгреНрдпрд╛рдРрд╡рдЬреА рд╡реЗрдЧрд│реНрдпрд╛, рдХреБрдмрд░рдиреЗрдЯ рдирд╕рд▓реЗрд▓реНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдмрджрд▓ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд┐рдВрдорддреАрд╡рд░. IN kubectl рддреБрдореНрд╣реА JSON рдкреЕрдЪ рд╡рд╛рдкрд░реВрди рдирд┐рд╡рдбреВ рд╢рдХрддрд╛ kubectl patch --type=json. Kubernetes API рд╡рд╛рдкрд░рддрд╛рдирд╛, рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд┐рдирдВрддреА рдкрджреНрдзрддреА рд╡рд╛рдкрд░реВрди рдХрд╛рд░реНрдп рдХрд░рддреЛ PATCH рдЖрдгрд┐ рд╕реНрдерд╛рдкрдирд╛ content-type ╨▓ application/json-patch+json.

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣рд╡рд╛ рдЖрд╣реЗ - рдмрджрд▓реА рд╡рд╛рдкрд░рд╛

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

  • A рдЖрдгрд┐ B рд▓рд╛ API рдордзреВрди рд╕рдВрд╕рд╛рдзрдирд╛рдЪреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рдорд┐рд│рддреЗ
  • рдкреНрд░рддреНрдпреЗрдХ рдПрдХрд╛рдиреЗ рдХрд╛рдЙрдВрдЯрд░ рд╡рд╛рдврд╡реВрди рдЖрдгрд┐ "рдЕрдкрдбреЗрдЯ-рдмрд╛рдп" рдиреЛрдЯрдордзреНрдпреЗ рдЕрдиреБрдХреНрд░рдореЗ "A" рдХрд┐рдВрд╡рд╛ "B" рдЬреЛрдбреВрди рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ.
  • рдЖрдгрд┐ рддреЗ рд╕рдВрд╕рд╛рдзрди рдереЛрдбреЗ рдЬрд▓рдж рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ
  • B рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ

рдкрд░рд┐рдгрд╛рдореА, рдЕрджреНрдпрддрди A рдЧрдорд╛рд╡рд▓рд╛ рдЖрд╣реЗ. рд╢реЗрд╡рдЯрдЪреЗ рдСрдкрд░реЗрд╢рди patch рдЬрд┐рдВрдХрд▓рд╛, рдХрд╛рдЙрдВрдЯрд░ рджреЛрди рдРрд╡рдЬреА рдПрдХрд╛рдиреЗ рд╡рд╛рдврд╡рд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ "рдЕрдкрдбреЗрдЯ-рдмрд╛рдп" рдиреЛрдЯрдЪреЗ рдореВрд▓реНрдп "B" рдиреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдд "A" рдирд╕рддреЗ. рджреГрд╖реНрдЯреАрдХреЛрди рд╡рд╛рдкрд░реВрди рдЕрджреНрдпрддрдиреЗ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рдХрд╛рдп рд╣реЛрддреЗ рдпрд╛рдЪреНрдпрд╛рд╢реА рд╡рд░реАрд▓ рддреБрд▓рдирд╛ рдХрд░реВрдпрд╛ replace:

  • A рдЖрдгрд┐ B рд▓рд╛ API рдордзреВрди рд╕рдВрд╕рд╛рдзрдирд╛рдЪреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рдорд┐рд│рддреЗ
  • рдкреНрд░рддреНрдпреЗрдХ рдПрдХрд╛рдиреЗ рдХрд╛рдЙрдВрдЯрд░ рд╡рд╛рдврд╡реВрди рдЖрдгрд┐ "рдЕрдкрдбреЗрдЯ-рдмрд╛рдп" рдиреЛрдЯрдордзреНрдпреЗ рдЕрдиреБрдХреНрд░рдореЗ "A" рдХрд┐рдВрд╡рд╛ "B" рдЬреЛрдбреВрди рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ.
  • рдЖрдгрд┐ рддреЗ рд╕рдВрд╕рд╛рдзрди рдереЛрдбреЗ рдЬрд▓рдж рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ
  • B рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ, рдкрд░рдВрддреБ рд╕рдВрд╕рд╛рдзрди рдЖрд╡реГрддреНрддреА рддрдкрд╢реАрд▓рд╛рдордзреНрдпреЗ рдЕрд╕рд▓реНрдпрд╛рдореБрд│реЗ API рдиреЗ рдЕрджреНрдпрддрди рдирд╛рдХрд╛рд░рд▓реЗ рдЖрд╣реЗ replace рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдордзреАрд▓ рд╕рдВрд╕рд╛рдзрдирд╛рдЪреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдЖрд╡реГрддреНрддреАрд╢реА рдЬреБрд│рдд рдирд╛рд╣реА рдХрд╛рд░рдг рд╕рдВрд╕рд╛рдзрдирд╛рдЪреА рдЖрд╡реГрддреНрддреА A рдЪреНрдпрд╛ рдмрджрд▓реА рдСрдкрд░реЗрд╢рдирдиреЗ рд╡рд╛рдврд╡рд▓реА рд╣реЛрддреА.

рд╡рд░реАрд▓ рдмрд╛рдмрддреАрдд, B рд▓рд╛ рд╕рдВрд╕рд╛рдзрди рдкреБрдиреНрд╣рд╛ рдЖрдгрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓, рдирд╡реАрди рд╕реНрдерд┐рддреАрдд рдмрджрд▓ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓ replace. рдпрд╛рдореБрд│реЗ рдХрд╛рдЙрдВрдЯрд░ рджреЛрдирдиреЗ рд╡рд╛рдврд╡рд▓реЗ тАЛтАЛрдЬрд╛рдИрд▓ рдЖрдгрд┐ "рдЕрдкрдбреЗрдЯ-рдмрд╛рдп" рдиреЛрдЯрдордзреНрдпреЗ рд╢реЗрд╡рдЯреА "AB" рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рд╣реЛрдИрд▓.

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

$ kubectl get deployment my-deployment -o json 
    | jq '.spec.template.spec.containers[0].env[1].value = "new value"' 
    | kubectl replace -f -

рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА рдЦрд╛рд▓реАрд▓ рджреЛрди рдЖрдЬреНрдЮрд╛, рдХреНрд░рдорд╢рдГ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛, рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╣реЛрддреАрд▓, рдХрд╛рд░рдг deployment.yaml рдорд╛рд▓рдорддреНрддрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдирд╛рд╣реА .metadata.resourceVersion

$ kubectl create -f deployment.yaml
$ kubectl replace -f deployment.yaml

рд╣реЗ рд╡рд░ рд╕рд╛рдВрдЧрд┐рддрд▓реЗрд▓реНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдЪреНрдпрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╡рд╛рдЯреЗрд▓, рдореНрд╣рдгрдЬреЗ. "рдЬреЛрдбреВрди resourceVersion рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдореЗрдЯрд╛рдбреЗрдЯрд╛рдордзреНрдпреЗ." рдЕрд╕реЗ рдореНрд╣рдгрдгреЗ рдЪреБрдХреАрдЪреЗ рдЖрд╣реЗ рдХрд╛? рдирд╛рд╣реА, рддрд╕реЗ рдирд╛рд╣реА, рдХрд╛рд░рдг рдЬрд░ kubectl рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реВрдЪрдирд╛ resourceVersion, рддреЗ рддреЗ рд░рд┐рд╕реЛрд░реНрд╕рдордзреВрди рд╡рд╛рдЪреЗрд▓ рдЖрдгрд┐ рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдЬреЛрдбреЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪ рддреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрд▓ replace. рдХрд╛рд░рдг рдЖрдкрдг рдЕрдгреБрд╢рдХреНрддреАрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рд░рд╛рд╣рд┐рд▓реНрдпрд╛рд╕ рд╣реЗ рд╕рдВрднрд╛рд╡реНрдп рдзреЛрдХрд╛рджрд╛рдпрдХ рдЖрд╣реЗ, рдЬрд╛рджреВ рдкреВрд░реНрдгрдкрдгреЗ рдмрд╛рдЬреВрд▓рд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ kubectl, API рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд▒реНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рддрд╛рдирд╛ рддреБрдореНрд╣реА рддреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рд░рд╛рд╣реВ рдирдпреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕рд╛рдзрди рддрдкрд╢реАрд▓ рд╡рд╛рдЪрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓, рддреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рдирдВрддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ PUT рд╡рд┐рдирдВрддреА

рддреБрдореНрд╣реА рдкреЕрдЪ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА - рдЖрдореНрд╣реА рдмрджрд▓рддреЛ

рдХрдзреАрдХрдзреА рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдмрджрд▓ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддрд╛рдд рдЬреЗ API рджреНрд╡рд╛рд░реЗ рд╣рд╛рддрд╛рд│рд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рдЖрдкрдг рд╕рдВрд╕рд╛рдзрди рд╣рдЯрд╡реВрди рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░реВрди рдмрджрд▓рдгреНрдпрд╛рдЪреА рд╕рдХреНрддреА рдХрд░реВ рд╢рдХрддрд╛. рд╣реЗ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ kubectl replace --force. рдХрдорд╛рдВрдб рд░рди рдХреЗрд▓реНрдпрд╛рдиреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рддрд╛рдмрдбрддреЛрдм рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реА рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рдВрдирд╛ рдкреБрд░рд╡рд▓реЗрд▓реНрдпрд╛ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреВрди рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. API рдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА "рдлреЛрд░реНрд╕ рд░рд┐рдкреНрд▓реЗрд╕" рд╣рдБрдбрд▓рд░ рдирд╛рд╣реА рдЖрдгрд┐ API рджреНрд╡рд╛рд░реЗ рдЕрд╕реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рджреЛрди рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдкреНрд░рдердо рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рд╕рд╛рдареА рд╕реЗрдЯ рдХрд░реВрди рд╕рдВрд╕рд╛рдзрди рд╣рдЯрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ gracePeriodSeconds рд╢реВрдиреНрдп (0) рдкрд░реНрдпрдВрдд рдЖрдгрд┐ propagationPolicy "рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА" рдордзреНрдпреЗ рдЖрдгрд┐ рдирдВрддрд░ рдЗрдЪреНрдЫрд┐рдд рддрдкрд╢реАрд▓рд╛рд╕рд╣ рд╣реЗ рд╕рдВрд╕рд╛рдзрди рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рд╛.

рдЪреЗрддрд╛рд╡рдгреА: рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рд╕рдВрднрд╛рд╡реНрдп рдзреЛрдХрд╛рджрд╛рдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдерд┐рддреА рд╣реЛрдК рд╢рдХрддреЗ.

рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдЕрд░реНрдЬ рдХрд░рд╛

рд╡рд░ рдирдореВрдж рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, Kubernetes рд╡рд┐рдХрд╛рд╕рдХ рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╡рд░ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗрдд apply рдкрд╛рд╕реВрди kubectl Kubernetes API рдордзреНрдпреЗ. рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ apply Kubernetes 1.18 рджреНрд╡рд╛рд░реЗ рдЙрдкрд▓рдмреНрдз kubectl apply --server-side рдХрд┐рдВрд╡рд╛ рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди API рджреНрд╡рд╛рд░реЗ PATCH ╤Б content-type application/apply-patch+YAML.

рдЯреАрдк: JSON рджреЗрдЦреАрд▓ рд╡реИрдз YAML рдЖрд╣реЗ, рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣реА JSON рдореНрд╣рдгреВрди рддрдкрд╢реАрд▓ рдкрд╛рдард╡реВ рд╢рдХрддрд╛ рдЬрд░реА content-type рдЕрд╕реЗрд▓ application/apply-patch+yaml.

рддреНрдпрд╛рд╢рд┐рд╡рд╛рдп рддрд░реНрдХ kubectl API рджреНрд╡рд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ, apply рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ, рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреАрд▓ рдлреАрд▓реНрдбрд╕рд╛рдареА рдХреЛрдг рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗ рдпрд╛рдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдареЗрд╡рддреЗ, рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд╡рд┐рд╡рд╛рдж-рдореБрдХреНрдд рд╕рдВрдкрд╛рджрдирд╛рд╕рд╛рдареА рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдХрд╛рдзрд┐рдХ рдкреНрд░рд╡реЗрд╢рд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдЬрд░ apply рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╣реЛрдИрд▓, рд╡рд┐рд╡рд┐рдз рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА рдПрдХ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЗрдВрдЯрд░рдлреЗрд╕ рджрд┐рд╕реЗрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, kubectl, Pulumi рдХрд┐рдВрд╡рд╛ Terraform, GitOps, рддрд╕реЗрдЪ рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░реВрди рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ.

рдкрд░рд┐рдгрд╛рдо

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдорд╛рд░реНрдЧрд╛рдВрдЪреЗ рд╣реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдард░рд▓реЗ. рд╣реЗ рдЬрд╛рдгреВрди рдШреЗрдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ рдХреА рддреЗ рдлрдХреНрдд рд▓рд╛рдЧреВ рд╡рд┐рд░реБрджреНрдз рдмрджрд▓рдгреЗ рдирд╛рд╣реА; рд▓рд╛рдЧреВ рдХрд░рд╛, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛, рдкреЕрдЪ рдХрд░рд╛ рдХрд┐рдВрд╡рд╛ рдмрджрд▓рд╛ рд╡рд╛рдкрд░реВрди рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рддрддреНрд╡рддрдГ, рдкреНрд░рддреНрдпреЗрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд╖реЗрддреНрд░ рдЕрд╕рддреЗ. рдЕрдгреБ рдмрджрд▓рд╛рдВрд╕рд╛рдареА, рдкреБрдирд░реНрд╕реНрдерд┐рдд рдХрд░рдгреЗ рд╢реНрд░реЗрдпрд╕реНрдХрд░ рдЖрд╣реЗ; рдЕрдиреНрдпрдерд╛, рддреБрдореНрд╣реА рд▓рд╛рдЧреВ рдХрд░реВрди рд╕реНрдЯреНрд░реЕрдЯреЗрдЬрд┐рдХ-рдорд░реНрдЬ рдкреЕрдЪ рд╡рд╛рдкрд░рд╛рд╡рд╛. рдХрдореАрддрдХрдореА, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬрдгреНрдпрд╛рдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЛ рдХреА "kubernetes apply vs replace" рд╢реЛрдзрддрд╛рдирд╛ рддреБрдореНрд╣реА Google рдХрд┐рдВрд╡рд╛ StackOerflow рд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡реВ рд╢рдХрдд рдирд╛рд╣реА. рдХрд┐рдорд╛рди рд╣рд╛ рд▓реЗрдЦ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдЙрддреНрддрд░рд╛рдЪреА рдЬрд╛рдЧрд╛ рдШреЗрдИрдкрд░реНрдпрдВрдд.

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреА рдпреЛрдЧреНрдп рддреБрд▓рдирд╛ рд▓рд╛рдЧреВ рдХрд░рд╛, рдмрджрд▓рд╛ рдЖрдгрд┐ рдкреЕрдЪ рдХрд░рд╛

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

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