рдпрд╕ рд╡рд░реНрд╖, рдореБрдЦреНрдп рдпреВрд░реЛрдкреАрдпрди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рдореНрдореЗрд▓рди - KubeCon + CloudNativeCon Europe 2020 - рднрд░реНрдЪреБрдЕрд▓ рдерд┐рдпреЛред рдЬреЗ рд╣реЛрд╕реН, рдврд╛рдБрдЪрд╛рдорд╛ рдпрд╕реНрддреЛ рдкрд░рд┐рд╡рд░реНрддрдирд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдореЛ-рдирд┐рдпреЛрдЬрд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрдирдмрд╛рдЯ рд░реЛрдХреЗрди "рдЬрд╛рдиреБрд╣реЛрд╕реН? рдмрд╛рд╕! рд╣рд╛рдореНрд░реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрд╕рдорд░реНрдкрд┐рдд рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рднреЗрдЯреНрдиреБрд╣реЛрд╕реН
рдпреЛ рд▓реЗрдЦ, рдХреБрд░рд╛рдХрд╛рдиреАрдмрд╛рдЯ рдкреНрд░реЗрд░рд┐рдд рднрдПрдХреЛ, рдХреБрдмреЗрд░рдиреЗрдЯрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрджрдЫ рд░ рддрдкрд╛рдИрдВрд▓реЗ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ рдХрд╕рд░реА рдЖрдлреНрдиреЛ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫред
рдкрд░рд┐рдЪрдп рджрд┐рдБрджреИ
рдлреНрд▓реНрдпрд╛рдиреНрдЯрдорд╛ рд╣рд╛рдореА рдирд┐рд░рдиреНрддрд░ рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдЫреМрдВред рдЖрдЬ рд╣рд╛рдореА рдЕрд░реНрдХреЛ рд░реЛрдЪрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рднреЗрдЯреНрдиреБрд╣реЛрд╕реН: рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рдн рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ!
рдЬреЗ рд╣реЛрд╕реН, рдпреЛ рд╕рдмреИ рд╣реБрдиреНрдЫ рднрдиреНрдиреЗ рд╕рдиреНрджрд░реНрднрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВ: рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ред
Kubernetes API рд░ рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВ
Kubernetes рдорд╛ API рд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рд╡рд╕реНрддреБрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рдлрд╛рдЗрд▓ рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕ рд╕рд░реНрднрд░рдорд╛ рд╡рд╕реНрддреБрд╣рд░реВ (рд╕рдВрд╕рд╛рдзрдирд╣рд░реВ) YAML рдлрд╛рдЗрд▓рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдиреНрдЫред рдердк рд░реВрдкрдорд╛, рд╕рд░реНрднрд░рд╕рдБрдЧ рдЖрдзрд╛рд░рднреВрдд API рдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рддреАрди рдЪреАрдЬрд╣рд░реВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ:
- рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдпрд╕рдХреЛ рдкреНрд░рдХрд╛рд░ рд░ рдирд╛рдо рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрди;
- рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд░реЛрдд (рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╕рд░реНрднрд░рд▓реЗ рдХреЗрд╡рд▓ "рд╕рд╣реА" рд╡рд╕реНрддреБрд╣рд░реВ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫ - рд╕рдмреИ рдЧрд▓рдд рддрд░рд┐рдХрд╛рд▓реЗ рдмрдирд╛рдЗрдПрдХреЛ рд╡рд╛ рдЕрдиреНрдп рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрднрд┐рдкреНрд░реЗрд░рд┐рдд рдЦрд╛рд░реЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ);
- рдЯреНрд░реНрдпрд╛рдХ рд╕реНрд░реЛрддрдХреЛ рд▓рд╛рдЧрд┐ (рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рддреБрд░реБрдиреНрддреИ рдпрд╕рдХреЛ рд╣рд╛рд▓рдХреЛ/рдЕрдкрдбреЗрдЯ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ)ред
рдпрд╕рд░реА, Kubernetes рд▓реЗ рддреАрдирд╡рдЯрд╛ рдЖрдзрд╛рд░рднреВрдд рд╡рд┐рдзрд┐рд╣рд░реВ (YAML manifests рдХреЛ рд▓рд╛рдЧрд┐) рдлрд╛рдЗрд▓ рд╕рд░реНрднрд░рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдп рдЧрд░реНрджрдЫ (рд╣реЛ, рд╡рд╛рд╕реНрддрд╡рдорд╛ рддреНрдпрд╣рд╛рдБ рдЕрд░реВрд╣рд░реВ рдЫрдиреН, рддрд░ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдЫреЛрдбреНрдиреЗрдЫреМрдВ)ред
рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ рдХрд┐ рд╕рд░реНрднрд░рд▓реЗ рдорд╛рддреНрд░ рдЬрд╛рдирдХрд╛рд░реА рднрдгреНрдбрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕рд▓рд╛рдИ рдХрд╛рдо рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ рдирд┐рдпрдиреНрддреНрд░рдХ - Kubernetes рдХреЛ рд╕рдВрд╕рд╛рд░рдорд╛ рджреЛрд╕реНрд░реЛ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░ рдЖрдзрд╛рд░рднреВрдд рдЕрд╡рдзрд╛рд░рдгрд╛ред
рддреНрдпрд╣рд╛рдБ рджреБрдИ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░рдХрд╛ рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВ рдЫрдиреНред рдкрд╣рд┐рд▓реЛрд▓реЗ Kubernetes рдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдиреНрдЫ, рдпрд╕рд▓рд╛рдИ рдиреЗрд╕реНрдЯреЗрдб рддрд░реНрдХ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдЫ, рд░ K8s рдорд╛ рдлрд░реНрдХрд╛рдЙрдБрдЫред рджреЛрд╕реНрд░реЛрд▓реЗ Kubernetes рдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдиреНрдЫ, рддрд░, рдкрд╣рд┐рд▓реЛ рдкреНрд░рдХрд╛рд░рдХреЛ рд╡рд┐рдкрд░реАрдд, рдХреЗрд╣рд┐ рдмрд╛рд╣реНрдп рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫред
Kubernetes рдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реМрдВ:
- рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдХрдиреНрдЯреНрд░реЛрд▓рд░ (рд╕рдорд╛рд╡реЗрд╢
kube-controller-manager
) рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐рд╕реЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред - ReplicaSet рд▓реЗ рдпрд╕ рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рдЖрдзрд╛рд░рдорд╛ рджреБрдИ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ (рджреБрдИ рдкреЛрдбрд╣рд░реВ) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ, рддрд░ рдпреА рдкреЛрдбрд╣рд░реВ рдЕрдЭреИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЧрд░рд┐рдПрдХрд╛ рдЫреИрдирдиреНред
- рдЕрдиреБрд╕реВрдЪрдХрд▓реЗ рдкреЛрдбрд╣рд░реВ рдЕрдиреБрд╕реВрдЪрд┐рдд рдЧрд░реНрджрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ YAML рдорд╛ рдиреЛрдб рдЬрд╛рдирдХрд╛рд░реА рдердкреНрдЫред
- рдХреБрдмреЗрд▓реЗрдЯреНрд╕рд▓реЗ рдмрд╛рд╣реНрдп рд╕реНрд░реЛрддрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫ (рдбрдХрд░ рднрдиреНрдиреБрд╣реЛрд╕реН)ред
рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рд╕рдореНрдкреВрд░реНрдг рдЕрдиреБрдХреНрд░рдо рдЙрд▓реНрдЯреЛ рдХреНрд░рдордорд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдПрдХреЛ рдЫ: рдХреБрдмреЗрд▓реЗрдЯрд▓реЗ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫ, рдкреЛрдбрдХреЛ рд╕реНрдерд┐рддрд┐ рдЧрдгрдирд╛ рдЧрд░реНрджрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдлрд┐рд░реНрддрд╛ рдкрдард╛рдЙрдБрдЫред ReplicaSet рдирд┐рдпрдиреНрддреНрд░рдХрд▓реЗ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯрдХреЛ рд╕реНрдерд┐рддрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджрдЫред рдПрдЙрдЯреИ рдХреБрд░рд╛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдХрдиреНрдЯреНрд░реЛрд▓рд░рд╕рдБрдЧ рд╣реБрдиреНрдЫ рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдЕрдиреНрддрддрдГ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ (рд╡рд░реНрддрдорд╛рди) рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред
рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░
рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ Kubernetes рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрдХреЛ рд╕рдВрдпреБрдХреНрдд рдХрд╛рдордорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ (Kubernetes рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдкрдирд┐ рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВ рд╣реБрдиреН)ред рдкреНрд░рд╢реНрди рдЙрдареНрдЫ, рдХрд╕рд░реА рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ рдЖрдлреНрдиреИ рдЕрдкрд░реЗрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ? рд░ рдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░реЗрдХреЛ рдЙрджреНрдзрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдЙрдБрдЫ
рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг: рдЧреЛрдкреНрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐
рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВред
рдорд╛рдиреМрдВ рд╣рд╛рдореАрд╕рдБрдЧ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдЫред рдпрд╕рдорд╛ рдирд╛рдо рд╕реНрдерд╛рди рдЫ default
рдХреЗрд╣рд┐ рдЧреЛрдкреНрдп рд╕рдВрдЧ mysecret
ред рдердк рд░реВрдкрдорд╛, рддреНрдпрд╣рд╛рдБ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЕрдиреНрдп рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ рдЫрдиреНред рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдХреЗрд╣реА рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓ рд╕рдВрд▓рдЧреНрди рдЫред рд╣рд╛рдореНрд░реЛ рд▓рдХреНрд╖реНрдп рд▓реЗрдмрд▓рдХреЛ рд╕рд╛рде рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВрдорд╛ рдЧреЛрдкреНрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреЗ рд╣реЛред
рдирдпрд╛рдБ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрди рд╕рдХреНрдиреЗ рддрдереНрдпрджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп рдЬрдЯрд┐рд▓ рдЫ, рд░ рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдХреЗрд╣реАрдорд╛ рдпреЛ рд▓реЗрдмрд▓ рд╣реБрди рд╕рдХреНрдЫред рдЕрд░реНрдХреЛрддрд░реНрдл, рдЬрдм рд▓реЗрдмрд▓ рдореЗрдЯрд╛рдЗрдиреНрдЫ, рдЧреЛрдкреНрдп рдкрдирд┐ рдореЗрдЯрд╛рдЗрдиреБрдкрд░реНрдЫред рдпрд╕рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЧреЛрдкреНрдп рдЖрдлреИрдВ рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрди рд╕рдХреНрдЫ: рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдирдпрд╛рдБ рдЧреЛрдкреНрдп рд▓реЗрдмрд▓рд╣рд░реВрд╕рдБрдЧ рд╕рдмреИ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реБрдиреБрдкрд░реНрдЫред рдпрджрд┐ рдЧреЛрдкреНрдп рдХреБрдиреИ рдкрдирд┐ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдЧрд▓реНрддрд┐рд▓реЗ рдореЗрдЯрд┐рдПрдХреЛ рдЫ рднрдиреЗ, рд╣рд╛рдореНрд░реЛ рдЕрдкрд░реЗрдЯрд░рд▓реЗ рдпрд╕рд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдЧрд░реНрдиреБрдкрд░реНрдЫред
рдЕрдм рдЬрдм рдХрд╛рд░реНрдп рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдпреЛ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕рд▓рд╛рдИ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛред рддрд░ рдкрд╣рд┐рд▓реЗ рдпреЛ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдЖрдлреИрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рд╢рдмреНрджрд╣рд░реВ рднрдиреНрди рд▓рд╛рдпрдХ рдЫред
рдХрд╕рд░реА рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдХрд╛рдо рдЧрд░реНрджрдЫ
Kubernetes рдорд╛ рдЕрдиреНрдп рд╡рд░реНрдХрд▓реЛрдбрд╣рд░реВ рдЬрд╕реНрддреИ, рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдЖрдлреНрдиреИ рдкреЛрдбрдорд╛ рдЪрд▓реНрдЫред рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдорд╛ рдпреЛ рдкреЛрдб рдорд╛ /hooks
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рдпреА Bash, Python, Ruby, рдЖрджрд┐ рдорд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реБрди рд╕рдХреНрдЫред рд╣рд╛рдореА рддреНрдпрд╕реНрддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ рд╣реБрдХ (рд╣реБрдХрд╣рд░реБ).
рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ Kubernetes рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдиреНрдЫ рд░ рд╣рд╛рдореАрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рдпреА рд╣реБрдХрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрдЫред
рдХреБрди рд╣реБрдХ рд░ рдХрд╣рд┐рд▓реЗ рдЪрд▓рд╛рдЙрдиреЗ рднрдиреЗрд░ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рдХрд╕рд░реА рдерд╛рд╣рд╛ рд╣реБрдиреНрдЫ? рдмрд┐рдиреНрджреБ рдпреЛ рд╣реЛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╣реБрдХрдорд╛ рджреБрдИ рдЪрд░рдгрд╣рд░реВ рдЫрдиреНред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдХреЛ рд╕рдордпрдорд╛, рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ рд╕рдмреИ рд╣реБрдХрд╣рд░реВ рддрд░реНрдХрдХреЛ рд╕рд╛рде рдЪрд▓рд╛рдЙрдБрдЫ --config
рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЪрд░рдг рд╣реЛред рд░ рдпрд╕рдХреЛ рдкрдЫрд┐, рд╣реБрдХрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рддрд░рд┐рдХрд╛рдорд╛ рд╕реБрд░реВ рдЧрд░рд┐рдиреНрдЫ - рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рдЬреБрди рддрд┐рдиреАрд╣рд░реВ рд╕рдВрд▓рдЧреНрди рдЫрдиреНред рдкрдЫрд┐рд▓реНрд▓реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣реБрдХрд▓реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдиреНрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ (рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдиреНрджрд░реНрдн) - JSON рдврд╛рдБрдЪрд╛рдорд╛ рдбрд╛рдЯрд╛, рдЬрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣рд╛рдореА рддрд▓ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред
Bash рдорд╛ рдЕрдкрд░реЗрдЯрд░ рдмрдирд╛рдЙрдБрджреИ
рдЕрдм рд╣рд╛рдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫреМрдВред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рджреБрдИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рд╡реИрд╕реЗ, рд╣рд╛рдореА рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреМрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп
- рдкрд╣рд┐рд▓реЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЪрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ - рдпрд╕рд▓реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдиреНрджрд░реНрдн рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫ;
- рджреЛрд╕реНрд░реЛрд▓реЗ рд╣реБрдХрдХреЛ рдореБрдЦреНрдп рддрд░реНрдХ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред
#!/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
рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдирд╛рдордХреЛ рд╕рд╛рде рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдирдпрд╛рдБ рдлрд┐рд▓реНрдб рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рдЫ jqFilterред рдЬрд╕рд░реА рдпрд╕рдХреЛ рдирд╛рдорд▓реЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫ, 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 рдирд┐рдпрдиреНрддреНрд░рдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрд╖рдо рднрдпреМрдВ! рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдХреЛ рдХрд╛рдо рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдПрдХрд╕рд╛рде рдЬреЛрдбреНрдиреБ рд╣реЛред
рдЬреЗ рд╣реЛрд╕реН, рдЧреЛрдкреНрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдХреЛ рдЖрд╡реЗрджрдирдХреЛ рдорд╛рддреНрд░ рдХреНрд╖реЗрддреНрд░ рд╣реЛрдЗрдиред рдЙрд╣рд╛рдБ рдХреЗ рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреА рджреЗрдЦрд╛рдЙрди рдпрд╣рд╛рдБ рдХреЗрд╣реА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЫрдиреНред
рдЙрджрд╛рд╣рд░рдг рез: рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЧрд░реНрджреИ
рддреАрди рдкреЛрдбрд╣рд░реВ рдорд┐рд▓реЗрд░ рдПрдЙрдЯрд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╣реЗрд░реМрдВред рдкреЛрдбрд╣рд░реВрд▓реЗ рдХреЗрд╣реА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдЬрдм рдкреЛрдбрд╣рд░реВ рд╕реБрд░реБ рдЧрд░рд┐рдпреЛ, рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рд╕реНрдерд╛рдорд╛ рдерд┐рдпреЛ (рдпрд╕рд▓рд╛рдИ v.1 рднрдирд┐рдиреНрдЫ)ред рддрджрдиреБрд╕рд╛рд░, рд╕рдмреИ рдкреЛрдбрд╣рд░реВрд▓реЗ ConfigMap рдХреЛ рдпреЛ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред
рдЕрдм рдорд╛рдиреМрдВ рдХрд┐ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЫ (v.2)ред рдпрджреНрдпрдкрд┐, рдкреЛрдбрд╣рд░реВрд▓реЗ ConfigMap (v.1) рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫ:
рдо рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк (v.2) рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рдХрд╕рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреБ? рдЬрд╡рд╛рдл рд╕рд░рд▓ рдЫ: рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЦрдгреНрдбрдорд╛ рдЪреЗрдХрд╕рдо рдПрдиреЛрдЯреЗрд╕рди рдердкреМрдВ template
рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ:
рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдпреЛ рдЪреЗрдХрд╕рдо рд╕рдмреИ рдкреЛрдбрд╣рд░реВрдорд╛ рджрд░реНрддрд╛ рд╣реБрдиреЗрдЫ, рд░ рдпреЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдХреЛ рдЬрд╕реНрддреИ рд╣реБрдиреЗрдЫред рдЕрдм рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджрд╛ рдПрдиреЛрдЯреЗрд╕рди рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд░ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдХрд╛рдордорд╛ рдЖрдЙрдБрдЫред рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкрдорд╛ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдиреЗ рд░ рдЪреЗрдХрд╕рдо рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗ рд╣реБрдХ.
рдпрджрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫ рднрдиреЗ, рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдпрд╛рдж рдЧрд░реНрдиреЗрдЫ рд░ рдЪреЗрдХрд╕рдо рдкреБрди: рдЧрдгрдирд╛ рдЧрд░реНрдиреЗрдЫред рдЬрд╕ рдкрдЫрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХреЛ рдЬрд╛рджреВ рдЦреЗрд▓рдорд╛ рдЖрдЙрдиреЗрдЫ: рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░рд▓реЗ рдкреЛрдбрд▓рд╛рдИ рдорд╛рд░реНрдиреЗрдЫ, рдирдпрд╛рдБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ, рдпреЛ рдмрдиреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред Ready
, рд░ рдЕрд░реНрдХреЛрдорд╛ рдЬрд╛рдиреНрдЫред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рд╣реБрдиреЗрдЫ рд░ рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкрдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рд╕реНрд╡рд┐рдЪ рд╣реБрдиреЗрдЫред
рдЙрджрд╛рд╣рд░рдг реи: рдЕрдиреБрдХреВрд▓рди рд╕реНрд░реЛрдд рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИ
рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, Kubernetes рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВ рдкреНрд░рдХрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ MysqlDatabase
ред рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рджреБрдИ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЫрдиреН рднрдиреМрдВ: name
╨╕ namespace.
apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
name: foo
namespace: bar
рд╣рд╛рдореАрд╕рдБрдЧ рд╡рд┐рднрд┐рдиреНрди рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ рднрдПрдХреЛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореА MySQL рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рд╕реНрд░реЛрддрд╣рд░реВ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ MysqlDatabase
, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ MySQL рд╕рд░реНрднрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрджреИ рд░ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд░ рдЕрд╡рд▓реЛрдХрди рдЧрд░рд┐рдПрдХрд╛ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрджреИред
рдЙрджрд╛рд╣рд░рдг рей: рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ рдирд┐рдЧрд░рд╛рдиреА
рддрдкрд╛рдИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рдкрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рднрдиреЗрдХреЛ рд╕рдЮреНрдЬрд╛рд▓ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд░рд▓ рддрд░рд┐рдХрд╛ рд╣реЛред рдпрд╕ рдЙрджрд╛рд╣рд░рдгрдорд╛ рд╣рд╛рдореА рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕реНрддреЛ рдирд┐рдЧрд░рд╛рдиреА рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред
рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдбрд╣рд░реВрдХреЛ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдиреБ рдкрд░реНрдЫред рд╢реЗрд▓ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрдХреЛ рдирд╛рдо рд░ 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
рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ред
рддрдкрд╛рдИрдВ рдХреБрдиреИ рдкрдирд┐ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд▓рд╛рдо/рд╣реБрдХрд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдПрдХ рд▓рд╛рдо рджреБрдИ рд╣реБрдХ рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ, рд╡рд╛ рд╡рд┐рдкрд░рд┐рддред
рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рддрджрдиреБрд╕рд╛рд░ рдлрд┐рд▓реНрдб рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБ рд╣реЛ queue
рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ред рдпрджрд┐ рд▓рд╛рдо рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рд╣реБрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓рд╛рдордорд╛ рдЪрд▓реНрдЫ (default
)ред рдпреЛ рд▓рд╛рдЗрдирд┐рдЩ рдореЗрдХрд╛рдирд┐рдЬрдорд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╣реБрдХрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рд╕рдмреИ рд╕реНрд░реЛрдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рд╣рд╛рдореАрд▓реЗ рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░ рдХреЗ рд╣реЛ рднрдиреЗрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдпреМрдВ, рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдЫрд┐рдЯреЛ рд░ рд╕рд╣рдЬ рд░реВрдкрдорд╛ Kubernetes рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдпреМрдВ, рд░ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдХрд╛ рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рджрд┐рдпреМрдВред
рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА, рд╕рд╛рдереИ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рджреНрд░реБрдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓, рд╕рдореНрдмрдиреНрдзрд┐рддрдорд╛ рдЙрдкрд▓рдмреНрдз рдЫред
рд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпреЛ рдордирдкрд░реНрдпреЛ рднрдиреЗ, рд╣рд╛рдореА GitHub рдорд╛ рдирдпрд╛рдБ рдореБрджреНрджрд╛рд╣рд░реВ/PR/рддрд╛рд░рд╛рд╣рд░реВ рджреЗрдЦреНрди рдкрд╛рдЙрдБрджрд╛ рдЦреБрд╕реА рдЫреМрдВ, рдЬрд╣рд╛рдБ, рддрдкрд╛рдИрдВрд▓реЗ рдЕрд░реВрд▓рд╛рдИ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рднрд┐рдбрд┐рдпреЛ рд░ рд╕реНрд▓рд╛рдЗрдбрд╣рд░реВ
рдкреНрд░рджрд░реНрд╢рдирдмрд╛рдЯ рднрд┐рдбрд┐рдпреЛ (~ 23 рдорд┐рдиреЗрдЯ):
рдкреНрд░рддрд┐рд╡реЗрджрди рдкреНрд░рд╕реНрддреБрддрд┐:
PS
рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:
- ┬л
рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдХреЛ рд╕рд╛рде Kubernetes рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рд╕рдЬрд┐рд▓реЛ рд╕рд┐рд░реНрдЬрдирд╛: рд╡рд░реНрд╖рдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдЧрддрд┐ ┬╗; - ┬л
рд╢реЗрд▓-рдЕрдкрд░реЗрдЯрд░рдХреЛ рдкрд░рд┐рдЪрдп рджрд┐рдБрджреИ: Kubernetes рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рднрдпреЛ ┬╗; - ┬л
рдХреЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ? рдПрдбрдЕрди-рдЕрдкрд░реЗрдЯрд░ рдШреЛрд╖рдгрд╛ рдЧрд░реНрджреИ ┬╗; - ┬л
Kubernetes рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд░ рдкреВрд░рдХ" (рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ) .
рд╕реНрд░реЛрдд: www.habr.com