рдЗрд╕ рд╡рд░реНрд╖, рдореБрдЦреНрдп рдпреВрд░реЛрдкреАрдп рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдореНрдореЗрд▓рди - рдХреНрдпреВрдмрдХреЙрди + рдХреНрд▓рд╛рдЙрдбрдиреЗрдЯрд┐рд╡рдХреЙрди рдпреВрд░реЛрдк 2020 - рдЖрднрд╛рд╕реА рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдирд┐рдпреЛрдЬрд┐рдд рд░рд┐рдкреЛрд░реНрдЯ "рдЬрд╛рдУ?" рджреЗрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрд╛ред рджреЗ рдШреБрдорд╛ рдХреЗ! рд╣рдорд╛рд░реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ
рдмрд╛рддрдЪреАрдд рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдпрд╣ рд▓реЗрдЦ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдСрдкрд░реЗрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдЪрдп
рдлрд╝реНрд▓реИрдВрдЯ рдореЗрдВ рд╣рдо рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдЬ рд╣рдо рдПрдХ рдФрд░ рд░реЛрдорд╛рдВрдЪрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдорд┐рд▓реЛ: рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ!
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдЗрдП рдЙрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдм рд╣реЛрддрд╛ рд╣реИ: рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ред
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреАрдЖрдИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕рдВрд╕рд╛рдзрди) рдХреЛ YAML рдлрд╝рд╛рдЗрд▓реЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░реНрд╡рд░ рдореЗрдВ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рддреАрди рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:
- рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрд╕рд╛рдзрди рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдирд╛рдо рд╕реЗ;
- рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрд╕рд╛рдзрди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ "рд╕рд╣реА" рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ - рд╕рднреА рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдпрд╛ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд░рд╛рджрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ);
- рдирдЬрд╝рд░ рд░рдЦреЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рддреБрд░рдВрдд рдЗрд╕рдХрд╛ рд╡рд░реНрддрдорд╛рди/рдЕрджреНрдпрддрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рддреАрди рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ (YAML рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреНрдп рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ)ред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ - рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рджреВрд╕рд░реА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдореМрд▓рд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛ред
рдирд┐рдпрдВрддреНрд░рдХ рджреЛ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ. рдкрд╣рд▓рд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рд▓реЙрдЬрд┐рдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ K8s рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреБрдЫ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рдЖрдЗрдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
- рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдирд┐рдпрдВрддреНрд░рдХ (рд╢рд╛рдорд┐рд▓)
kube-controller-manager
) рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИред - рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреЛ рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ (рджреЛ рдкреЙрдб) рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЗ рдкреЙрдб рдЕрднреА рддрдХ рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред
- рд╢реЗрдбреНрдпреВрд▓рд░ рдкреЙрдбреНрд╕ рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ YAMLs рдореЗрдВ рдиреЛрдб рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рддрд╛ рд╣реИред
- рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ (рдбреЙрдХрд░ рдХрд╣рддреЗ рд╣реИрдВ)ред
рдлрд┐рд░ рдпрд╣ рдкреВрд░рд╛ рдХреНрд░рдо рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреНрдпреВрдмрд▓реЗрдЯ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдкреЙрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИред рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░реЗрдкреНрд▓рд┐рдХрд╛ рд╕реЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдВрддрддрдГ рдЕрджреНрдпрддрди (рд╡рд░реНрддрдорд╛рди) рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред
рд╢реИрд▓-рдСрдкрд░реЗрдЯрд░
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рдВрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдСрдкрд░реЗрдЯрд░ рднреА рдирд┐рдпрдВрддреНрд░рдХ рд╣реИрдВ)ред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдСрдкрд░реЗрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП? рдФрд░ рдпрд╣рд╛рдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╡рд╣ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ
рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг: рд░рд╣рд╕реНрдпреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдирд╛
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ.
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рд╣реИ default
рдХреБрдЫ рд░рд╣рд╕реНрдп рдХреЗ рд╕рд╛рде mysecret
. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЕрдиреНрдп рдирд╛рдорд╕реНрдерд╛рди рднреА рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рдПрдХ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реИред
рдХрд╛рд░реНрдп рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирдП рдирд╛рдорд╕реНрдерд╛рди рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрдВ рдпрд╣ рд▓реЗрдмрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЬрдм рд▓реЗрдмрд▓ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реАрдХреНрд░реЗрдЯ рд╕реНрд╡рдпрдВ рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирдП рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рд╕рднреА рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХрд┐рд╕реА рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЧрд▓рддреА рд╕реЗ рд╕реАрдХреНрд░реЗрдЯ рдбрд┐рд▓реАрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдЬрдм рдХрд╛рд░реНрдп рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдирд╛ рдЙрдЪрд┐рдд рд╣реИред
рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЕрдиреНрдп рдХрд╛рд░реНрдпрднрд╛рд░ рдХреА рддрд░рд╣, рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреЙрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕ рдкреЙрдб рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ /hooks
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпреЗ рдмреИрд╢, рдкрд╛рдпрдерди, рд░реВрдмреА рдЖрджрд┐ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдРрд╕реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣реБрдХ рдХрд╣рддреЗ рд╣реИрдВ (рд╣реБрдХ).
рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрди рдЗрд╡реЗрдВрдЯ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЗрди рд╣реБрдХ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реБрдХ рдЪрд▓рд╛рдирд╛ рд╣реИ рдФрд░ рдХрдм? рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╣реБрдХ рдХреЗ рджреЛ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди, рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рднреА рд╣реБрдХ рдЪрд▓рд╛рддрд╛ рд╣реИ --config
рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рд╣реИ. рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣реБрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЬрд┐рдирд╕реЗ рд╡реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣реБрдХ рдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рдмрд╛рдзреНрдпрдХрд╛рд░реА рдкреНрд░рд╕рдВрдЧ) - JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдиреАрдЪреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдмреИрд╢ рдореЗрдВ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдирд╛
рдЕрдм рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рд╣реЛрдВрдЧреЗ (рд╡реИрд╕реЗ, рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ;
- рджреВрд╕рд░реЗ рдореЗрдВ рд╣реБрдХ рдХрд╛ рдореБрдЦреНрдп рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред
#!/bin/bash
source /shell_lib.sh
function __config__() {
cat << EOF
configVersion: v1
# BINDING CONFIGURATION
EOF
}
function __main__() {
# THE LOGIC
}
hook::run "$@"
рдЕрдЧрд▓рд╛ рдХрджрдо рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рд░рд╣рд╕реНрдп;
- рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рднреА рдирд╛рдорд╕реНрдерд╛рди, рддрд╛рдХрд┐ рдЖрдк рдЬрд╛рди рд╕рдХреЗрдВ рдХрд┐ рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдмрд▓ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ;
- рд▓рдХреНрд╖реНрдп рд░рд╣рд╕реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рд╕рднреА рд╕реНрд░реЛрдд рд░рд╣рд╕реНрдп рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рд╣реИрдВред
рдЧреБрдкреНрдд рд╕реНрд░реЛрдд рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ
рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд╣рдо рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд░рд╣рд╕реНрдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ mysecret
рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ default
:
function __config__() {
cat << EOF
configVersion: v1
kubernetes:
- name: src_secret
apiVersion: v1
kind: Secret
nameSelector:
matchNames:
- mysecret
namespace:
nameSelector:
matchNames: ["default"]
group: main
EOF
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реНрд░реЛрдд рд░рд╣рд╕реНрдп рдмрджрд▓рдиреЗ рдкрд░ рд╣реБрдХ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (src_secret
) рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдирд╛рдо рдФрд░ рд╕рдВрдкреВрд░реНрдг рд╡рд╕реНрддреБ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдирд╛
рдЕрдм рдЖрдкрдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рд╣реЛрдЧреАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
- name: namespaces
group: main
apiVersion: v1
kind: Namespace
jqFilter: |
{
namespace: .metadata.name,
hasLabel: (
.metadata.labels // {} |
contains({"secret": "yes"})
)
}
group: main
keepFullObjectsInMemory: false
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдлрд╝реАрд▓реНрдб рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ jqрдлрд╝рд┐рд▓реНрдЯрд░. рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, jqFilter
рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд░реБрдЪрд┐рдХрд░ рд╣реИрдВред рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╛рд▓реЗ рд╣реБрдХ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛:
рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рд░рдгреА рд╣реИ filterResults
рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдПред рдмреВрд▓рд┐рдпрди рдЪрд░ hasLabel
рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд▓реЗрдмрд▓ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЪрдпрдирдХрд░реНрддрд╛ keepFullObjectsInMemory: false
рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдкреВрд░реНрдг рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд▓рдХреНрд╖реНрдп рд░рд╣рд╕реНрдпреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдирд╛
рд╣рдо рдЙрди рд╕рднреА рд░рд╣рд╕реНрдпреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ managed-secret: "yes"
(рдпреЗ рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рд╣реИрдВ dst_secrets
):
- name: dst_secrets
apiVersion: v1
kind: Secret
labelSelector:
matchLabels:
managed-secret: "yes"
jqFilter: |
{
"namespace":
.metadata.namespace,
"resourceVersion":
.metadata.annotations.resourceVersion
}
group: main
keepFullObjectsInMemory: false
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ jqFilter
рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рджреЗрддрд╛ рд╣реИ resourceVersion
. рд░рд╣рд╕реНрдп рдмрдирд╛рддреЗ рд╕рдордп рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдпрд╣ рдЖрдкрдХреЛ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реБрдХ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддреАрди рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдЗрдиреНрд╣реЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕реНрдиреИрдкрд╢реЙрдЯ) рдЭреБрдВрдбред
рдЗрд╕ рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░:
- рдЕрдЧрд░
hasLabel
рдорд╛рдорд▓реЛрдВtrue
рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП:- рд╡реИрд╢реНрд╡рд┐рдХ рд░рд╣рд╕реНрдп рдХреА рддреБрд▓рдирд╛ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рд╕реЗ рдХрд░рддрд╛ рд╣реИ:
- рдпрджрд┐ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛;
- рдпрджрд┐ рд╡реЗ рднрд┐рдиреНрди рд╣реИрдВ - рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ
kubectl replace
рдпрд╛create
;
- рд╡реИрд╢реНрд╡рд┐рдХ рд░рд╣рд╕реНрдп рдХреА рддреБрд▓рдирд╛ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рд╕реЗ рдХрд░рддрд╛ рд╣реИ:
- рдЕрдЧрд░
hasLabel
рдорд╛рдорд▓реЛрдВfalse
рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП:- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдХреНрд░реЗрдЯ рджрд┐рдП рдЧрдП рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИ:
- рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ
kubectl delete
; - рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ
- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдХреНрд░реЗрдЯ рджрд┐рдП рдЧрдП рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИ:
рдЗрд╕ рддрд░рд╣ рд╣рдо YAML рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреА 35 рд▓рд╛рдЗрдиреЛрдВ рдФрд░ рд▓рдЧрднрдЧ рдЙрддрдиреА рд╣реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдмреИрд╢ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ Kubernetes рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реБрдП! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдХрд╛рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд░рд╣рд╕реНрдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рдЙрджрд╛рд╣рд░рдг 1: рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛
рдЖрдЗрдП рддреАрди рдкреЙрдб рд╡рд╛рд▓реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рджреЗрдЦреЗрдВред рдкреЙрдбреНрд╕ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдкреЙрдбреНрд╕ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдерд╛ (рдЪрд▓рд┐рдП рдЗрд╕реЗ v.1 рдХрд╣рддреЗ рд╣реИрдВ)ред рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рдкреЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдХреЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрдиреНрдлрд┐рдЧ рдореИрдк рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (v.2)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреЙрдбреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг (v.1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдирдП рдХреЙрдиреНрдлрд┐рдЧ рдореИрдк (v.2) рдкрд░ рдХреИрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рд╡рд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ: рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдЗрдП рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдЪреЗрдХрд╕рдо рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ template
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди:
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдЪреЗрдХрд╕рдо рд╕рднреА рдкреЙрдбреНрд╕ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реЛрдЧрд╛ред рдЕрдм рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд┐рдЧ рдореИрдк рдмрджрд▓рдиреЗ рдкрд░ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдЖрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╣реИ рдПрдХ рд╣реБрдХ рдЬреЛ рдХреЙрдиреНрдлрд┐рдЧ рдореИрдк рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдЧрд╛ рдФрд░ рдЪреЗрдХрд╕рдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛.
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд┐рдЧ рдореИрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдЙрдиреНрд╣реЗрдВ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рдЪреЗрдХрд╕рдо рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдЬрд╛рджреВ рдЪрд▓рди рдореЗрдВ рдЖ рдЬрд╛рдПрдЧрд╛: рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдкреЙрдб рдХреЛ рдорд╛рд░ рджреЗрдЧрд╛, рдПрдХ рдирдпрд╛ рдкреЙрдб рдмрдирд╛рдПрдЧрд╛, рдЙрд╕рдХреЗ рдмрдирдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдЧрд╛ Ready
, рдФрд░ рдЕрдЧрд▓реЗ рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг 2: рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рддрд░рд╣ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ MysqlDatabase
. рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рджреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ: name
╨╕ namespace.
apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
name: foo
namespace: bar
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ MysqlDatabase
, рдЙрдиреНрд╣реЗрдВ MySQL рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд╛рдВрдЫрд┐рдд рдФрд░ рджреЗрдЦреА рдЧрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ред
рдЙрджрд╛рд╣рд░рдг 3: рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рдирд┐рдЧрд░рд╛рдиреА рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдПред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдиреЛрдбреНрд╕ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рд╣реЛрдЧреАред рд╢реЗрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рдирд╛рдо рдФрд░ рдЖрдИрдкреА рдкрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрдирдХреА рдорджрдж рд╕реЗ рд╡рд╣ рдЗрди рдиреЛрдбреНрд╕ рдХреЛ рдкрд┐рдВрдЧ рдХрд░реЗрдЧрд╛ред
configVersion: v1
kubernetes:
- name: nodes
apiVersion: v1
kind: Node
jqFilter: |
{
name: .metadata.name,
ip: (
.status.addresses[] |
select(.type == "InternalIP") |
.address
)
}
group: main
keepFullObjectsInMemory: false
executeHookOnEvent: []
schedule:
- name: every_minute
group: main
crontab: "* * * * *"
рдкреНрд░рд╛рдЪрд▓ executeHookOnEvent: []
рд╣реБрдХ рдХреЛ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЪрд▓рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ (рдпрд╛рдиреА, рдиреЛрдбреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ, рдЬреЛрдбрд╝рдиреЗ, рд╣рдЯрд╛рдиреЗ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╣ рджреМрдбрд╝реЗрдЧрд╛ (рдФрд░ рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ) рдЕрдиреБрд╕реВрдЪрд┐рдд - рд╣рд░ рдорд┐рдирдЯ, рдЬреИрд╕рд╛ рдХрд┐ рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ schedule
.
рдЕрдм рд╕рд╡рд╛рд▓ рдпрд╣ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЯ рдЦреЛрдиреЗ рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ? рдЖрдЗрдП рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
function __main__() {
for i in $(seq 0 "$(context::jq -r '(.snapshots.nodes | length) - 1')"); do
node_name="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.name')"
node_ip="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.ip')"
packets_lost=0
if ! ping -c 1 "$node_ip" -t 1 ; then
packets_lost=1
fi
cat >> "$METRICS_PATH" <<END
{
"name": "node_packets_lost",
"add": $packets_lost,
"labels": {
"node": "$node_name"
}
}
END
done
}
рд╣рдо рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдирд╛рдо рдФрд░ рдЖрдИрдкреА рдкрддреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВред рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдерд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ $METRICS_PATH
.
рдХрддрд╛рд░рдмрджреНрдз рддрдВрддреНрд░
рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрдВрддреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рд▓реЗрдЦ рдЕрдзреВрд░рд╛ рд╣реЛрдЧрд╛ред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реБрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдпрджрд┐ рдЙрд╕реА рд╕рдордп рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреБрдЫ рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рдП рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдПрдХ рдФрд░ рдЖрдпреЛрдЬрди?
- рдХреНрдпрд╛ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╣реБрдХ рдХрд╛ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдПрдЧрд╛?
- рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐, рдХрд╣реЗрдВ, рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рд╕рд╛рде рдкрд╛рдБрдЪ рдШрдЯрдирд╛рдПрдБ рдШрдЯрд┐рдд рд╣реЛрдВ?
- рдХреНрдпрд╛ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛?
- рдореЗрдореЛрд░реА рдФрд░ рд╕реАрдкреАрдпреВ рдЬреИрд╕реЗ рдЙрдкрднреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрддрд╛рд░ рддрдВрддреНрд░ рд╣реИред рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХрддрд╛рд░рдмрджреНрдз рдФрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╣реБрдХ рд╣реИрдВред рдкрд╣рд▓рд╛ рдЗрд╡реЗрдВрдЯ рдкрд╣рд▓реЗ рд╣реБрдХ рддрдХ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдЗрд╕рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдХрддрд╛рд░ рдЖрдЧреЗ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЕрдЧрд▓реА рддреАрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреВрд╕рд░реЗ рд╣реБрдХ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрдиреНрд╣реЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ "рдмрдВрдбрд▓" рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рд╣реИ рд╣реБрдХ рдХреЛ рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ - рдпрд╛, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ред
рдпреЗ рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдмрдбрд╝реА рдШрдЯрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ group
рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ.
рдЖрдк рдХрд┐рддрдиреА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрддрд╛рд░реЗрдВ/рд╣реБрдХ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрддрд╛рд░ рджреЛ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред
рдЖрдкрдХреЛ рдмрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ queue
рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ. рдпрджрд┐ рдХрддрд╛рд░ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣реБрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрддрд╛рд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ (default
). рдпрд╣ рдХрддрд╛рд░ рддрдВрддреНрд░ рдЖрдкрдХреЛ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдордиреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ, рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рджрд┐рдПред
рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА, рд╕рд╛рде рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ
рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛, рддреЛ рд╣рдо рд╣рдореЗрд╢рд╛ GitHub рдкрд░ рдирдП рдЕрдВрдХ/рдкреАрдЖрд░/рд╕рд┐рддрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рдкреНрд░рд╕рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ, рд╡реИрд╕реЗ, рдЖрдк рдЕрдиреНрдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рд╡реАрдбрд┐рдпреЛ рдФрд░ рд╕реНрд▓рд╛рдЗрдб
рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╡реАрдбрд┐рдпреЛ (~23 рдорд┐рдирдЯ):
рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐:
рдкреБрдирд╢реНрдЪ
рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:
- ┬л
рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЖрд╕рд╛рди рдирд┐рд░реНрдорд╛рдг: рд╡рд░реНрд╖ рднрд░ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдкреНрд░рдЧрддрд┐ "; - ┬л
рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкрд░рд┐рдЪрдп: рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдирд╛ рдЕрдм рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ "; - ┬л
рдХреНрдпрд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ? рдРрдбрдСрди-рдСрдкрд░реЗрдЯрд░ рдХреА рдШреЛрд╖рдгрд╛ "; - ┬л
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдкреВрд░рдХ" (рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ) .
рд╕реНрд░реЛрдд: www.habr.com