рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЗрд╕ рд╡рд░реНрд╖, рдореБрдЦреНрдп рдпреВрд░реЛрдкреАрдп рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдореНрдореЗрд▓рди - рдХреНрдпреВрдмрдХреЙрди + рдХреНрд▓рд╛рдЙрдбрдиреЗрдЯрд┐рд╡рдХреЙрди рдпреВрд░реЛрдк 2020 - рдЖрднрд╛рд╕реА рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдирд┐рдпреЛрдЬрд┐рдд рд░рд┐рдкреЛрд░реНрдЯ "рдЬрд╛рдУ?" рджреЗрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрд╛ред рджреЗ рдШреБрдорд╛ рдХреЗ! рд╣рдорд╛рд░реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░.

рдмрд╛рддрдЪреАрдд рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдпрд╣ рд▓реЗрдЦ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдСрдкрд░реЗрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдкрд░рд┐рдЪрдп рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╡реАрдбрд┐рдпреЛ (~23 рдорд┐рдирдЯ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ, рд▓реЗрдЦ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлрд╝реА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг) рдФрд░ рдкрд╛рдареНрдп рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдЕрдВрд╢ред рдЬрд╛рдирд╛!

рдлрд╝реНрд▓реИрдВрдЯ рдореЗрдВ рд╣рдо рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдЬ рд╣рдо рдПрдХ рдФрд░ рд░реЛрдорд╛рдВрдЪрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдорд┐рд▓реЛ: рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ!

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдЗрдП рдЙрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдм рд╣реЛрддрд╛ рд╣реИ: рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ред

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреАрдЖрдИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ

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

  • рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрд╕рд╛рдзрди рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдирд╛рдо рд╕реЗ;
  • рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрд╕рд╛рдзрди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ "рд╕рд╣реА" рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ - рд╕рднреА рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдпрд╛ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд░рд╛рджрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ);
  • рдирдЬрд╝рд░ рд░рдЦреЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рддреБрд░рдВрдд рдЗрд╕рдХрд╛ рд╡рд░реНрддрдорд╛рди/рдЕрджреНрдпрддрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ)ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рддреАрди рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ (YAML рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреНрдп рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ)ред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ - рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рджреВрд╕рд░реА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдореМрд▓рд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛ред

рдирд┐рдпрдВрддреНрд░рдХ рджреЛ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ. рдкрд╣рд▓рд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рд▓реЙрдЬрд┐рдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ K8s рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреБрдЫ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

рдЖрдЗрдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

  • рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдирд┐рдпрдВрддреНрд░рдХ (рд╢рд╛рдорд┐рд▓) kube-controller-manager) рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИред
  • рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреЛ рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ (рджреЛ рдкреЙрдб) рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЗ рдкреЙрдб рдЕрднреА рддрдХ рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред
  • рд╢реЗрдбреНрдпреВрд▓рд░ рдкреЙрдбреНрд╕ рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ YAMLs рдореЗрдВ рдиреЛрдб рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рддрд╛ рд╣реИред
  • рдХреНрдпреВрдмрд▓реЗрдЯреНрд╕ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ (рдбреЙрдХрд░ рдХрд╣рддреЗ рд╣реИрдВ)ред

рдлрд┐рд░ рдпрд╣ рдкреВрд░рд╛ рдХреНрд░рдо рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреНрдпреВрдмрд▓реЗрдЯ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдкреЙрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИред рд░реЗрдкреНрд▓рд┐рдХрд╛рд╕реЗрдЯ рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░реЗрдкреНрд▓рд┐рдХрд╛ рд╕реЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдВрддрддрдГ рдЕрджреНрдпрддрди (рд╡рд░реНрддрдорд╛рди) рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд╢реИрд▓-рдСрдкрд░реЗрдЯрд░

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рдВрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдСрдкрд░реЗрдЯрд░ рднреА рдирд┐рдпрдВрддреНрд░рдХ рд╣реИрдВ)ред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдСрдкрд░реЗрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП? рдФрд░ рдпрд╣рд╛рдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╡рд╣ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░. рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЛ рдкрд░рд┐рдЪрд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг: рд░рд╣рд╕реНрдпреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдирд╛

рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ.

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рд╣реИ default рдХреБрдЫ рд░рд╣рд╕реНрдп рдХреЗ рд╕рд╛рде mysecret. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЕрдиреНрдп рдирд╛рдорд╕реНрдерд╛рди рднреА рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рдПрдХ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реИред

рдХрд╛рд░реНрдп рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирдП рдирд╛рдорд╕реНрдерд╛рди рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрдВ рдпрд╣ рд▓реЗрдмрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЬрдм рд▓реЗрдмрд▓ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реАрдХреНрд░реЗрдЯ рд╕реНрд╡рдпрдВ рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирдП рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рд╕рднреА рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХрд┐рд╕реА рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЧрд▓рддреА рд╕реЗ рд╕реАрдХреНрд░реЗрдЯ рдбрд┐рд▓реАрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдм рдЬрдм рдХрд╛рд░реНрдп рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

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

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрди рдЗрд╡реЗрдВрдЯ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЗрди рд╣реБрдХ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реБрдХ рдЪрд▓рд╛рдирд╛ рд╣реИ рдФрд░ рдХрдм? рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╣реБрдХ рдХреЗ рджреЛ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди, рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рднреА рд╣реБрдХ рдЪрд▓рд╛рддрд╛ рд╣реИ --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:

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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) рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдирд╛рдо рдФрд░ рд╕рдВрдкреВрд░реНрдг рд╡рд╕реНрддреБ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдирд╛

рдЕрдм рдЖрдкрдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рд╣реЛрдЧреАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ:

- 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 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд░реБрдЪрд┐рдХрд░ рд╣реИрдВред рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╛рд▓реЗ рд╣реБрдХ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛:

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рд░рдгреА рд╣реИ 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. рд░рд╣рд╕реНрдп рдмрдирд╛рддреЗ рд╕рдордп рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдпрд╣ рдЖрдкрдХреЛ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

  • рдЕрдЧрд░ hasLabel рдорд╛рдорд▓реЛрдВ true рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП:
    • рд╡реИрд╢реНрд╡рд┐рдХ рд░рд╣рд╕реНрдп рдХреА рддреБрд▓рдирд╛ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рд╕реЗ рдХрд░рддрд╛ рд╣реИ:
      • рдпрджрд┐ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛;
      • рдпрджрд┐ рд╡реЗ рднрд┐рдиреНрди рд╣реИрдВ - рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ kubectl replace рдпрд╛ create;
  • рдЕрдЧрд░ hasLabel рдорд╛рдорд▓реЛрдВ false рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП:
    • рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдХреНрд░реЗрдЯ рджрд┐рдП рдЧрдП рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИ:
      • рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ kubectl delete;
      • рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рд░рд╣рд╕реНрдп рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдмреИрд╢ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдк рд╣рдорд╛рд░реЗ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрджрд╛рд╣рд░рдг рд╕рд╣рд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА.

рдЗрд╕ рддрд░рд╣ рд╣рдо YAML рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреА 35 рд▓рд╛рдЗрдиреЛрдВ рдФрд░ рд▓рдЧрднрдЧ рдЙрддрдиреА рд╣реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдмреИрд╢ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ Kubernetes рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реБрдП! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдХрд╛рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд░рд╣рд╕реНрдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рдЙрджрд╛рд╣рд░рдг 1: рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛

рдЖрдЗрдП рддреАрди рдкреЙрдб рд╡рд╛рд▓реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рджреЗрдЦреЗрдВред рдкреЙрдбреНрд╕ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдкреЙрдбреНрд╕ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдерд╛ (рдЪрд▓рд┐рдП рдЗрд╕реЗ v.1 рдХрд╣рддреЗ рд╣реИрдВ)ред рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рдкреЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдХреЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрдиреНрдлрд┐рдЧ рдореИрдк рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (v.2)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреЙрдбреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрдореИрдк рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг (v.1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдирдП рдХреЙрдиреНрдлрд┐рдЧ рдореИрдк (v.2) рдкрд░ рдХреИрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рд╡рд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ: рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдЗрдП рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдЪреЗрдХрд╕рдо рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ template рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди:

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

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

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

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЙрджрд╛рд╣рд░рдг 2: рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рддрд░рд╣ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ MysqlDatabase. рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рджреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ: name ╨╕ namespace.

apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
  name: foo
  namespace: bar

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ MysqlDatabase, рдЙрдиреНрд╣реЗрдВ MySQL рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд╛рдВрдЫрд┐рдд рдФрд░ рджреЗрдЦреА рдЧрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЙрджрд╛рд╣рд░рдг 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 рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ.

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЖрдк рдХрд┐рддрдиреА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрддрд╛рд░реЗрдВ/рд╣реБрдХ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрддрд╛рд░ рджреЛ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдЖрдкрдХреЛ рдмрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ queue рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ. рдпрджрд┐ рдХрддрд╛рд░ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣реБрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрддрд╛рд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ (default). рдпрд╣ рдХрддрд╛рд░ рддрдВрддреНрд░ рдЖрдкрдХреЛ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖

рд╣рдордиреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ, рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рджрд┐рдПред

рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА, рд╕рд╛рде рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ GitHub рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА. рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВ: рдЖрдк рдЙрди рдкрд░ рд╡рд┐рд╢реЗрд╖ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣ (рд░реВрд╕реА рдореЗрдВ) рдпрд╛ рдореЗрдВ рдпрд╣ рдордВрдЪ (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ)ред

рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛, рддреЛ рд╣рдо рд╣рдореЗрд╢рд╛ GitHub рдкрд░ рдирдП рдЕрдВрдХ/рдкреАрдЖрд░/рд╕рд┐рддрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рдкреНрд░рд╕рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ, рд╡реИрд╕реЗ, рдЖрдк рдЕрдиреНрдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ. рдЙрдирдореЗрдВ рд╕реЗ рдпрд╣ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ addon-рдСрдкрд░реЗрдЯрд░, рдЬреЛ рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдмрдбрд╝рд╛ рднрд╛рдИ рд╣реИ. рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдРрдб-рдСрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЕрдкрдбреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЪрд╛рд░реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░/рдорд╛рдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреА рд╣реИ, рдЪрд╛рд░реНрдЯ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ, рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рднреА рдХрд░ рд╕рдХрддреА рд╣реИред

рдЬрд╛рдирд╛? рджреЗ рдШреБрдорд╛ рдХреЗ! рд╢реЗрд▓-рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдорд┐рд▓реЗрдВ (KubeCon EU'2020 рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рд╡реАрдбрд┐рдпреЛ рдФрд░ рд╕реНрд▓рд╛рдЗрдб

рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╡реАрдбрд┐рдпреЛ (~23 рдорд┐рдирдЯ):


рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐:

рдкреБрдирд╢реНрдЪ

рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:

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

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