рдЬрд╛рдЙ? рдмрд╛рд╕! рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (рдХреБрдмреЗрдХрди EU'2020 рдмрд╛рдЯ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ)

рдпрд╕ рд╡рд░реНрд╖, рдпреБрд░реЛрдкрдХреЛ рдкреНрд░рдореБрдЦ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рдореНрдореЗрд▓рди - рдХреБрдмреЗрдХрди + рдХреНрд▓рд╛рдЙрдбрдиреЗрдЯрд┐рднрдХрди рдпреБрд░реЛрдк реирежреиреж - рднрд░реНрдЪреБрдЕрд▓ рдерд┐рдпреЛред рдпрджреНрдпрдкрд┐, рдврд╛рдБрдЪрд╛рдорд╛ рдпреЛ рдкрд░рд┐рд╡рд░реНрддрдирд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрд╕рдорд░реНрдкрд┐рдд рд╣рд╛рдореНрд░реЛ рд▓рд╛рдореЛ-рдпреЛрдЬрдирд╛рдмрджреНрдз рднрд╛рд╖рдг, "рдЬрд╛рдиреБрд╣реЛрд╕реН? рдмрд╛рд╢! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН" рдкреНрд░рджрд╛рди рдЧрд░реНрдирдмрд╛рдЯ рд░реЛрдХреЗрдиред рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░.

рдпрд╕ рд╡рд╛рд░реНрддрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдпреЛ рд▓реЗрдЦрд▓реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрджрдЫ рд░ рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ рдХрд╕рд░реА рдЖрдлреНрдиреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫред

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рдкрд░рд┐рдЪрдп рджрд┐рдБрджреИ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рднрд┐рдбрд┐рдпреЛ (рдЕрдВрдЧреНрд░реЗрдЬреАрдорд╛ ~реирей рдорд┐рдиреЗрдЯ, рд▓реЗрдЦ рднрдиреНрджрд╛ рдзреЗрд░реИ рдЬрд╛рдирдХрд╛рд░реАрдореВрд▓рдХ) рд░ рдпрд╕рдХреЛ рд╕рд╛рд░рд╛рдВрд╢ рдкрд╛рдардХреЛ рд░реВрдкрдорд╛ред рдЕрдм рдЬрд╛рдФрдВ!

рдлреНрд▓реНрдпрд╛рдиреНрдЯрдорд╛, рд╣рд╛рдореА рдирд┐рд░рдиреНрддрд░ рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрджреИрдЫреМрдВред рдЖрдЬ, рд╣рд╛рдореА рдЕрд░реНрдХреЛ рд░реЛрдорд╛рдЮреНрдЪрдХ рдЕрд╡рдзрд╛рд░рдгрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗрдЫреМрдВред рднреЗрдЯреНрдиреБрд╣реЛрд╕реН: рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рдн рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ!

рдпрджреНрдпрдкрд┐, рдпреЛ рд╕рдмреИ рдХреБрди рд╕рдиреНрджрд░реНрднрдорд╛ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВ: рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ред

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

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

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

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

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ рдХрд┐ рд╕рд░реНрднрд░рд▓реЗ рдЬрд╛рдирдХрд╛рд░реА рдорд╛рддреНрд░ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕рд▓рд╛рдИ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ рдирд┐рдпрдиреНрддреНрд░рдХ тАФ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХреЛ рд╕рдВрд╕рд╛рд░рдорд╛ рджреЛрд╕реНрд░реЛ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░ рдЖрдзрд╛рд░рднреВрдд рдЕрд╡рдзрд╛рд░рдгрд╛ред

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

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реМрдВ:

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

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

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░

рдпреЛ рдерд╛рд╣рд╛ рднрдпреЛ рдХрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрдХреЛ рд╕рд╣рдХрд╛рд░реНрдпрдорд╛ рдирд┐рд░реНрдорд┐рдд рдЫ (рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдкрдирд┐ рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВ рд╣реБрдиреН)ред рдкреНрд░рд╢реНрди рдЙрдареНрдЫ: рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ рддрдкрд╛рдИрдВ рдХрд╕рд░реА рдЖрдлреНрдиреИ рдЕрдкрд░реЗрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ? рд░ рддреНрдпрд╣реАрдБ рд╣рд╛рдореНрд░реЛ рдЕрдкрд░реЗрдЯрд░ рдЖрдЙрдБрдЫред рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рдпрд╕рд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрд▓рд╛рдИ рдкрд░рд┐рдЪрд┐рдд рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЖрдлреНрдиреИ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг: рдЧреЛрдкреНрдп рдХреБрд░рд╛рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдЙрдиреЗ

рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВред

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

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

рдЕрдм рдХрд╛рд░реНрдп рддрдпрд╛рд░ рднрдЗрд╕рдХреЗрдХреЛ рдЫ, рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗ рд╕рдордп рдЖрдПрдХреЛ рдЫред рддрд░ рдкрд╣рд┐рд▓реЗ, рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рд╢рдмреНрджрд╣рд░реВред

рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ

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

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

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

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ рдХреБрди рд╣реБрдХ рдХрд╣рд┐рд▓реЗ рд░ рдХрд╣рд┐рд▓реЗ рдЪрд▓рд╛рдЙрдиреЗ рднрдиреЗрд░ рдХрд╕рд░реА рдерд╛рд╣рд╛ рдкрд╛рдЙрдБрдЫ? рдкреНрд░рддреНрдпреЗрдХ рд╣реБрдХрдорд╛ рджреБрдИ рдЪрд░рдгрд╣рд░реВ рд╣реБрдиреНрдЫрдиреНред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдХреЛ рд╕рдордпрдорд╛, рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ рд╕рдмреИ рд╣реБрдХрд╣рд░реВрд▓рд╛рдИ рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрдХреЛ рд╕рд╛рде рдЪрд▓рд╛рдЙрдБрдЫред --config тАФ рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЪрд░рдг рд╣реЛред рдпрд╕рдкрдЫрд┐, рд╣реБрдХрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫрдиреНтАФрддрд┐рдиреАрд╣рд░реВ рдмрд╛рдБрдзрд┐рдПрдХрд╛ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ред рдкрдЫрд┐рд▓реНрд▓реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣реБрдХрд▓реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдиреНрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ (рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдиреНрджрд░реНрдн) тАФ JSON рдврд╛рдБрдЪрд╛рдорд╛ рдбреЗрдЯрд╛, рдЬрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣рд╛рдореА рддрд▓ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗрдЫреМрдВред

Bash рдорд╛ рдЕрдкрд░реЗрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рдЕрдм рд╣рд╛рдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫреМрдВред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреНрдиреБ рдкрд░реНрдиреЗрдЫ (рдЦреИрд░, рд╣рд╛рдореА рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдЫреМрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢реЗрд▓_рд▓рд┐рдм, рдЬрд╕рд▓реЗ Bash рдорд╛ рд╣реБрдХ рд▓реЗрдЦрдирд▓рд╛рдИ рдзреЗрд░реИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫ):

  • рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЪрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛ рдЖрд╡рд╢реНрдпрдХ рдЫ - рдпрд╕рд▓реЗ рдмрд╛рдЗрдиреНрдбрд┐рдЩ рд╕рдиреНрджрд░реНрдн рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрдЫ;
  • рджреЛрд╕реНрд░реЛрдорд╛ рд╣реБрдХрдХреЛ рдореБрдЦреНрдп рддрд░реНрдХ рд╕рдорд╛рд╡реЗрд╢ рдЫред

#!/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 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

Bash рдорд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдордХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдмрд╛рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рднрдгреНрдбрд╛рд░рд╣рд░реВ.

рдпрд╕рд░реА рд╣рд╛рдореАрд▓реЗ рейрел рд▓рд╛рдЗрдирдХрд╛ YAML рдХрдиреНрдлрд┐рдЧ рд░ рд▓рдЧрднрдЧ рдЙрд╣реА рдорд╛рддреНрд░рд╛рдорд╛ Bash рдХреЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг Kubernetes рдирд┐рдпрдиреНрддреНрд░рдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрд╖рдо рднрдпреМрдВ! рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдХреЛ рдХрд╛рдо рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдПрдХрд╕рд╛рде рдЬреЛрдбреНрдиреБ рд╣реЛред

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

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

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

рдЕрдм рдорд╛рдиреМрдВ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЫ (v.2)ред рдпрджреНрдпрдкрд┐, рдкреЛрдбрд╣рд░реВрд▓реЗ рдЕрдЭреИ рдкрдирд┐ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк (v.1) рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫрдиреН:

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рдо рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирдпрд╛рдБ ConfigMap (v.2) рдорд╛ рдХрд╕рд░реА рдорд╛рдЗрдЧреНрд░реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреБ? рдЙрддреНрддрд░ рд╕рд░рд▓ рдЫ: рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЦрдгреНрдбрдорд╛ рдЪреЗрдХрд╕рдо рдПрдиреЛрдЯреЗрд╕рди рдердкреМрдВред template рддреИрдирд╛рддреА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ:

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

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

рдпрджрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЧрд░реНрдЫ рднрдиреЗ, рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдпрд╛рдж рдЧрд░реНрдиреЗрдЫ рд░ рдЪреЗрдХрд╕рдо рдкреБрди: рдЧрдгрдирд╛ рдЧрд░реНрдиреЗрдЫред рддреНрдпрд╕рдкрдЫрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХреЛ рдЬрд╛рджреВ рд╕реБрд░реБ рд╣реБрдиреЗрдЫ: рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░рд▓реЗ рдкреЛрдбрд▓рд╛рдИ рдорд╛рд░реНрдиреЗрдЫ, рдирдпрд╛рдБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ, рд░ рдпреЛ рдмрдиреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреЗрдЫред Ready, рд░ рдЕрд░реНрдХреЛрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред рдпрд╕рд▓реЗ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд▓рд╛рдИ рд╕рд┐рдВрдХ рдЧрд░реНрдиреЗрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкрдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдЧрд░реНрдиреЗрдЫред

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рдЙрджрд╛рд╣рд░рдг реи: рдЕрдиреБрдХреВрд▓рди рд╕реНрд░реЛрдд рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИ

рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рд╡рд╕реНрддреБ рдкреНрд░рдХрд╛рд░рд╣рд░реВ (рдкреНрд░рдХрд╛рд░рд╣рд░реВ) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ MysqlDatabaseрдорд╛рдиреМрдВ рдпрд╕ рдкреНрд░рдХрд╛рд░рдорд╛ рджреБрдИ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЫрдиреН: name ╨╕ namespace.

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

рд╣рд╛рдореАрд╕рдБрдЧ рд╡рд┐рднрд┐рдиреНрди рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ рднрдПрдХреЛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореА MySQL рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рд╕реНрд░реЛрддрд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред MysqlDatabase, MySQL рд╕рд░реНрднрд░рдорд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЬрдбрд╛рди рд░ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЗрдЪреНрдЫрд┐рдд рд░ рдЕрд╡рд▓реЛрдХрди рдЧрд░рд┐рдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рдиред

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рдЙрджрд╛рд╣рд░рдг рей: рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХрдХреЛ рдирд┐рдЧрд░рд╛рдиреА

рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рдкрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдиреЗрдЯрд╡рд░реНрдХ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд░рд▓ рддрд░рд┐рдХрд╛ рд╣реЛред рдпрд╕ рдЙрджрд╛рд╣рд░рдгрдорд╛, рд╣рд╛рдореА рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдорд╛рди рдирд┐рдЧрд░рд╛рдиреА рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред

рдкрд╣рд┐рд▓рд╛, рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдбрд╣рд░реВрдорд╛ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдиреБ рдкрд░реНрдиреЗрдЫред рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрдХреЛ рдирд╛рдо рд░ IP рдареЗрдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдиреНрдЫред рдпрд╕рд▓реЗ рдпреА рдиреЛрдбрд╣рд░реВрд▓рд╛рдИ рдкрд┐рдВрдЧ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫред

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
}

рд╣рд╛рдореА рдиреЛрдбрд╣рд░реВрдХреЛ рд╕реВрдЪреА рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдБрдЫреМрдВ, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдирд╛рдо рд░ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреМрдВ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд┐рдЩ рдЧрд░реНрдЫреМрдВ, рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рд▓рд╛рдИ рдкрдард╛рдЙрдБрдЫреМрдВред рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдорд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рд░реНрдпрд╛рдд рдЧрд░реНрди рд╕рдХреНрдЫ, рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рд░реНрдЧ рдЕрдиреБрд╕рд╛рд░ рдЕрд╡рд╕реНрдерд┐рдд рдлрд╛рдЗрд▓рдорд╛ рдмрдЪрдд рдЧрд░реНрджреИ $METRICS_PATH.

рдпрд╣рд╛рдБ рдпрддрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рд╛рдзрд╛рд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдЧрдордирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдкрд░реЗрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд▓рд╛рдордмрджреНрдз рд╕рдВрдпрдиреНрддреНрд░

рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдорд╛ рдирд┐рд░реНрдорд┐рдд рдЕрд░реНрдХреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕рдВрдпрдиреНрддреНрд░рдХреЛ рд╡рд░реНрдгрди рдирдЧрд░реА рдпреЛ рд▓реЗрдЦ рдкреВрд░рд╛ рд╣реБрдиреЗ рдерд┐рдПрдиред рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдпрд╕рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рднрдПрдХреЛ рдШрдЯрдирд╛рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рд╣реБрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред

  • рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдПрдХреИ рд╕рдордпрдорд╛ рдХреЗрд╣рд┐ рднрдпреЛ рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ? рдЕрд░реНрдХреЛ рдПрдЙрдЯрд╛ рдХреБрд░рд╛ рдШрдЯрдирд╛?
  • рдХреЗ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ рд╣реБрдХрдХреЛ рдЕрд░реНрдХреЛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдЙрдиреЗрдЫ?
  • рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐, рдорд╛рдиреМрдВ, рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдПрдХреИрдЪреЛрдЯрд┐ рдкрд╛рдБрдЪрд╡рдЯрд╛ рдШрдЯрдирд╛рд╣рд░реВ рдШрдЯреЗ рднрдиреЗ?
  • рдХреЗ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗрдЫ?
  • рдореЗрдореЛрд░реА рд░ CPU рдЬрд╕реНрддрд╛ рдЦрдкрдд рднрдПрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рд╣реБрдиреНрдЫ?

рд╕реМрднрд╛рдЧреНрдпрд╡рд╢, рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдорд╛ рдирд┐рд░реНрдорд┐рдд рдХреНрдпреБрдЗрдЩ рдореЗрдХрд╛рдирд┐рдЬрдо рдЫред рд╕рдмреИ рдШрдЯрдирд╛рд╣рд░реВ рдХреНрдпреБрдЗрдЩ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рд░ рдХреНрд░рдорд┐рдХ рд░реВрдкрдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред

рдпрд╕рд▓рд╛рдИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рджрд┐рдПрд░ рдмреБрдЭреМрдВред рдорд╛рдиреМрдВ рд╣рд╛рдореАрд╕рдБрдЧ рджреБрдИрд╡рдЯрд╛ рд╣реБрдХрд╣рд░реВ рдЫрдиреНред рдкрд╣рд┐рд▓реЛ рдШрдЯрдирд╛ рдкрд╣рд┐рд▓реЛ рд╣реБрдХрдорд╛ рдЬрд╛рдиреНрдЫред рдПрдХрдкрдЯрдХ рдпреЛ рдкреНрд░рд╢реЛрдзрди рднрдПрдкрдЫрд┐, рдХреНрдпреБ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдЫред рдЕрд░реНрдХреЛ рддреАрди рдШрдЯрдирд╛рд╣рд░реВ рджреЛрд╕реНрд░реЛ рд╣реБрдХрдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░рд┐рдиреНрдЫрдиреНтАФрддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХреНрдпреБрдмрд╛рдЯ рддрд╛рдирд┐рдиреНрдЫ рд░ "рдмреНрдпрд╛рдЪ" рдорд╛ рдердкрд┐рдиреНрдЫред рдЕрд░реНрдерд╛рддреН, рд╣реБрдХрд▓реЗ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдПрд░реНрд░реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ тАФ рд╡рд╛, рдЕрдЭ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдиреНрджрд░реНрднрд╣рд░реВрдХреЛ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ред

рд╕рд╛рдереИ рдпреА рдШрдЯрдирд╛рд╣рд░реВрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдареВрд▓реЛ рдШрдЯрдирд╛рдорд╛ рдорд┐рд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫрдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред group рдмрд╛рдЗрдиреНрдбрд┐рдЩ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ред

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

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

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рддрдкрд╛рдИрдВрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рддрджрдиреБрд╕рд╛рд░ рдлрд┐рд▓реНрдб рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБ рд╣реЛред queue рдмрд╛рдЗрдиреНрдбрд┐рдЩ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ред рдпрджрд┐ рдХреБрдиреИ рдХреНрдпреБ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рд╣реБрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреНрдпреБрдорд╛ рдЪрд▓реНрдЫ (default)ред рдпреЛ рдХреНрдпреБрдЗрдЩ рдореЗрдХрд╛рдирд┐рдЬрдорд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╣реБрдХрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рд╕рдмреИ рд╕реНрд░реЛрдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

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

рд╣рд╛рдореАрд▓реЗ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ рднрдиреЗрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдпреМрдВ, рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдЫрд┐рдЯреЛ рд░ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдпреМрдВ, рд░ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдХрд╛ рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдпреМрдВред

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

рд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпреЛ рдорди рдкрд░реНрдпреЛ рднрдиреЗ, рд╣рд╛рдореА GitHub рдорд╛ рдирдпрд╛рдБ рдЕрдВрдХ/PRs/рддрд╛рд░рд╛рд╣рд░реВ рд╣реЗрд░реНрди рдкрд╛рдЙрдБрджрд╛ рд╕рдзреИрдВ рдЦреБрд╕реА рд╣реБрдиреЗрдЫреМрдВ, рдЬрд╣рд╛рдБ, рд╡реИрд╕реЗ, рддрдкрд╛рдИрдВрд▓реЗ рдЕрд░реВрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░реЛрдЪрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрддреА рдордзреНрдпреЗ, рдпреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫ addon-operator, рдЬреБрди рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдХреЛ рдЬреЗрдареЛ рднрд╛рдЗ рд╣реЛрдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд▓реЗ рдПрдб-рдЕрдирд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд╡рд┐рднрд┐рдиреНрди рдЪрд╛рд░реНрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ/рдорд╛рдирд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрджрдЫ, рдЪрд╛рд░реНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫ, рд░ рдХреНрд▓рд╕реНрдЯрд░ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрди рд╕рдХреНрдЫред

рдЬрд╛рдиреБрд╕реН? рдмрд╛рд╕! рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН (KubeCon EU'2020 рд╡рд╛рд░реНрддрд╛рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ)

рднрд┐рдбрд┐рдпреЛ рд░ рд╕реНрд▓рд╛рдЗрдбрд╣рд░реВ

рдкреНрд░рджрд░реНрд╢рдирдХреЛ рднрд┐рдбрд┐рдпреЛ (~реирей рдорд┐рдиреЗрдЯ):

рднрд┐рдбрд┐рдпреЛ рдкреНрд▓реЗ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдкреНрд░рддрд┐рд╡реЗрджрди рдкреНрд░рд╕реНрддреБрддрд┐:

PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рднрдПрдХрд╛ рд╕рд╛рдЗрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рднрд░рдкрд░реНрджреЛ рд╣реЛрд╕реНрдЯрд┐рдЩ рдЦрд░рд┐рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН ЁЯФе DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рднрд░рдкрд░реНрджреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдЩ рдХрд┐рдиреНрдиреБрд╣реЛрд╕реН | ProHoster