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

рдкрдврд╛рдЗрдХреЛ рдЖрдирдиреНрдж рд▓рд┐рдиреБрд╣реЛрд╕реН!
рдпреЛ рд▓реЗрдЦ рд▓реЗрдЦреНрдиреЗ рд╕рдордпрдорд╛, рдХреБрдмреЗрд░рдиреЗрдЯрдХреЛ рдЙрдореЗрд░ рд▓рдЧрднрдЧ рдЫред , рд░ рд╡рд┐рдЧрдд рджреБрдИ рд╡рд░реНрд╖рдорд╛ рдпрд╕рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдпрддрд┐ рдмрдвреЗрдХреЛ рдЫ рдХрд┐ рдпреЛ рдирд┐рд░рдиреНрддрд░ рд░реВрдкрдорд╛ рдХреНрд░рдордмрджреНрдз рдЫ рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВред Kubernetes рдпреЛ рд╡рд░реНрд╖ рддреЗрд╕реНрд░реЛ рд╕реНрдерд╛рдирдорд╛ рдЫред рд░рд┐рдХреНрдпрд╛рдк рдЧрд░реНрди: Kubernetes рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬреНрдб рд╡рд░реНрдХрд▓реЛрдбрд╣рд░реВ рдЪрд▓рд╛рдЙрди рд░ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╣реЛред
рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЕрд▓рдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╡рд┐рд╢реЗрд╖ рдбрд┐рдЬрд╛рдЗрдирдХреЛ рд░реВрдкрдорд╛ рд╕реБрд░реБ рднрдпреЛ; рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ 2007 рджреЗрдЦрд┐ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН , рд░ 2002 рджреЗрдЦрд┐ - рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВред рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ 2008 рд╕рдореНрдордорд╛ рдЕрдЭ рд░рд╛рдореНрд░реЛ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрдм рдпреЛ рдЙрдкрд▓рдмреНрдз рднрдпреЛ , рд░ рдЧреБрдЧрд▓рд▓реЗ рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдЖрдиреНрддрд░рд┐рдХ рдХрд░реНрдкреЛрд░реЗрдЯ рдореЗрдХрд╛рдирд┐рдЬреНрдо рд╡рд┐рдХрд╕рд┐рдд рдЧрд░реНрдпреЛ рдЬрд╕рд▓рд╛рдИ рднрдирд┐рдиреНрдЫ , рдЬрд╣рд╛рдБ "рд╕рдмреИ рдХрд╛рдо рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЧрд░рд┐рдиреНрдЫред" рдпрд╣рд╛рдБрдмрд╛рдЯ рд╣рд╛рдореА 2013 рдорд╛ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдЫреМрдВ, рдЬрдм рдбрдХрд░рдХреЛ рдкрд╣рд┐рд▓реЛ рд░рд┐рд▓реАрдЬ рднрдпреЛ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЕрдиреНрддрддрдГ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдореВрд╣рд┐рдХ рд╕рдорд╛рдзрд╛рди рдмрдиреНрди рдкреБрдЧреЗред рддреНрдпрд╕ рд╕рдордпрдорд╛, рдХрдиреНрдЯреЗрдирд░ рдЖрд░реНрдХреЗрд╕реНрдЯреНрд░рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рдерд┐рдпреЛ рдпрджреНрдпрдкрд┐ рдЙрдиреА рдзреЗрд░реИ рд▓реЛрдХрдкреНрд░рд┐рдп рдерд┐рдПрдирдиреНред Kubernetes рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ 2015 рдорд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдЙрдкрдХрд░рдг рдХрдиреНрдЯреЗрдирд░ рдЖрд░реНрдХреЗрд╕реНрдЯреНрд░рд╛ рдХреЛ рдХреНрд╖реЗрддреНрд░ рдорд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рднрдпреЛред
Kubernetes рдХрд┐рди рдпрддрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рдЫ рдмреБрдЭреНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, рдХреЗрд╣рд┐ рдкреНрд░рд╢реНрдирд╣рд░реБ рдХреЛ рдЬрд╡рд╛рдл рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВред рдЕрдиреНрддрд┐рдо рдкрдЯрдХ рдХрд╣рд┐рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдЙрддреНрдкрд╛рджрдирдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╕рд╣рдордд рд╣реБрди рд╕рдХреНрд╖рдо рдерд┐рдП? рддрдкрд╛рдИрд▓рд╛рдИ рдХрддрд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдерд╛рд╣рд╛ рдЫ рдЬрд╕рд▓реЗ рдЙрдкрдХрд░рдгрд╣рд░реВ рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдПрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН? рдЖрдЬ рдХрддрд┐ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдмреБрдЭреНрджреИрдирдиреН? рд╣рд╛рдореА рдпрд╕ рд▓реЗрдЦрдорд╛ рдпреА рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рд╣реЗрд░реНрдиреЗрдЫреМрдВред
YAML рдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░
рдХрдардкреБрддрд▓реА рд░ рд╢реЗрдлрдмрд╛рдЯ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рдЧрдПрдХреЛ рд╕рдВрд╕рд╛рд░рдорд╛, рд╕рдмреИрднрдиреНрджрд╛ рдареВрд▓реЛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛ "рдХреЛрдбрдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░" рдмрд╛рдЯ "рдбреЗрдЯрд╛рдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░" рдорд╛ рд╕рд░реНрдиреБ рдерд┐рдпреЛ - рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, YAML рдЬрд╕реНрддреИред Kubernetes рдорд╛ рд╕рдмреИ рд╕реНрд░реЛрддрд╣рд░реВ, рдЬрд╕рдорд╛ рдкреЛрдбрд╣рд░реВ, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ, рддреИрдирд╛рдд рдЧрд░рд┐рдПрдХрд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ, рднреЛрд▓реНрдпреБрдорд╣рд░реВ, рдЖрджрд┐ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН, рд╕рдЬрд┐рд▓реИ YAML рдлрд╛рдЗрд▓рдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
apiVersion: v1
kind: Pod
metadata:
name: site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80рдпреЛ рджреГрд╢реНрдпрд▓реЗ DevOps рд╡рд╛ SRE рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрд▓рд╛рдИ рдкрд╛рдЗрдерди рд╡рд╛ Javascript рдЬрд╕реНрддрд╛ рднрд╛рд╖рд╛рд╣рд░реВрдорд╛ рдХреЛрдб рдирд▓рд┐рдЦрд┐рдХрди рдЖрдлреНрдиреЛ рдХрд╛рд░реНрдпрднрд╛рд░ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЕрднрд┐рд╡реНрдпрдХреНрдд рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫред
рдбреЗрдЯрд╛рдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рдЕрдиреНрдп рдлрд╛рдЗрджрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:
- GitOps рд╡рд╛ Git рд╕рдЮреНрдЪрд╛рд▓рди рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдиреНрддреНрд░рдгред рдпрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕рдмреИ Kubernetes YAML рдлрд╛рдЗрд▓рд╣рд░реВ git рднрдгреНрдбрд╛рд░рд╣рд░реВрдорд╛ рд░рд╛рдЦреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рддрд╛рдХрд┐ рддрдкрд╛рдЗрдБ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╣рд┐рд▓реЗ рдЧрд░рд┐рдпреЛ, рдХрд╕рд▓реЗ рдЧрд░реНрдпреЛ, рд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рднрдпреЛ рднрдиреЗрд░ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕рд▓реЗ рд╕рдЩреНрдЧрдардирднрд░рд┐ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрдврд╛рдЙрдБрдЫ рд░ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣рдЯрд╛рдПрд░ рдкрд░рд┐рдЪрд╛рд▓рди рджрдХреНрд╖рддрд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЬрд╣рд╛рдБ рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВрд▓реЗ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрддрд╣рд░реВ рдЦреЛрдЬреНрдиреБрдкрд░реНрдЫред рдПрдХреИ рд╕рдордпрдорд╛, рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдорд░реНрдЬ рдЧрд░реЗрд░ Kubernetes рд╕реНрд░реЛрддрд╣рд░реВрдорд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫред
- рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреАред рдЬрдм рд╕реНрд░реЛрддрд╣рд░реВрд▓рд╛рдИ YAML рдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдиреНрдЫ, рдХреНрд▓рд╕реНрдЯрд░ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ Kubernetes рд╕реНрд░реЛрддрдорд╛ рдПрдХ рд╡рд╛ рджреБрдИ рдирдореНрдмрд░рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЕрддреНрдпрдиреНрддреИ рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рдЧрд░реНрджрд╛ рдпрд╕рд▓реЗ рдХрд╕рд░реА рдорд╛рдкрди рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫред Kubernetes рд▓реЗ рдкреЛрдбрд╣рд░реВрдХреЛ рддреЗрд░реНрд╕реЛ рдЕрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╕рдВрдпрдиреНрддреНрд░ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЬрд╕рд▓рд╛рдИ рдХрдо рд░ рдЙрдЪреНрдЪ рд╕реНрддрд░рдХреЛ рдЯреНрд░рд╛рдлрд┐рдХ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдкреЛрдбрд╣рд░реВрдХреЛ рдиреНрдпреВрдирддрдо рд░ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗрд░ рд╕рд╣рдЬ рд░реВрдкрдорд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рдЬрд╕рд▓рд╛рдИ рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рдЕрдЪрд╛рдирдХ рд╕реНрдкрд╛рдЗрдХрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдердк рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ, рддрдм maxReplicas 10 рджреЗрдЦрд┐ 20 рд╕рдореНрдо рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: myapp
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp-deployment
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50- рд╕реБрд░рдХреНрд╖рд╛ рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдиред Kubernetes рдорд╛ рдЪреАрдЬрд╣рд░реВ рдХрд╕рд░реА рддреИрдирд╛рдд рдЧрд░рд┐рдиреНрдЫ рднрдиреЗрд░ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди YAML рдЙрддреНрдХреГрд╖реНрдЯ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдХ рдкреНрд░рдореБрдЦ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд┐рдиреНрддрд╛рд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рдХрд╛рд░реНрдпрднрд╛рд░рд╣рд░реВ рдЧреИрд░-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рдХрд┐ рдЫреИрди рднрдиреНрдиреЗ рдЪрд┐рдиреНрддрд╛ рдЧрд░реНрджрдЫред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬрд╕реНрддреИ , YAML/JSON рдорд╛рдиреНрдпрдХрд░реНрддрд╛, рдкреНрд▓рд╕ , рд╕рдиреНрджрд░реНрдн рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдПрдХ рдиреАрддрд┐ рдорд╛рдиреНрдпрдХрд░реНрддрд╛ рддрдкрд╛рдИрдВрдХреЛ рдХрд╛рд░реНрдпрднрд╛рд░рд▓реЗ рдХрдиреНрдЯреЗрдирд░рд▓рд╛рдИ рдкреНрд░рд╢рд╛рд╕рдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд╣рд░реВрд╕рдБрдЧ рдЪрд▓реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИрдиред рдпрджрд┐ рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╕рд░рд▓ рдиреАрддрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН , рдпреЛ рдЬрд╕реНрддреЛ:
package main
deny[msg] {
input.kind = "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot = true
msg = "Containers must not run as root"
}- рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрд╕рдБрдЧ рдПрдХреАрдХрд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВред рдЖрдЬрдХреЛ рдЙрдЪреНрдЪ рдкреНрд░рд╡рд┐рдзрд┐рдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкреНрд░рд╡реГрддрд┐ рднрдиреЗрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрдорд╛ рдХрд╛рд░реНрдпрднрд╛рд░рд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБ рд╣реЛред рдШрдЯрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ Kubernetes рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛рдИ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрд╕рдБрдЧ рдПрдХреАрдХреГрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдЬрд╕рдорд╛ рдпреЛ рдЪрд▓реНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ AWS рдорд╛ Kubernetes рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЪрд▓рд╛рдЙрдЫ рд░ рддреНрдпреЛ рдПрдкрд▓рд╛рдИ рд╕реЗрд╡рд╛ рдорд╛рд░реНрдлрдд рдЙрдЬрд╛рдЧрд░ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫ рднрдиреЗ, рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕реЗрд╡рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред
LoadBalancerрдЬрд╕рд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдкреЛрдбрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрдиред
рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдпрддрд╛
Kubernetes рдзреЗрд░реИ рдПрдХреНрд╕реНрдЯреЗрдиреНрд╕рд┐рдмрд▓ рдЫ рд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдорди рдкрд░рд╛рдЙрдБрдЫрдиреНред рддреНрдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕реЗрдЯ рдЫ рдЬрд╕реНрддреИ рдкреЛрдбрд╣рд░реВ, рддреИрдирд╛рддреАрд╣рд░реВ, StatefulSets, рд░рд╣рд╕реНрдп, ConfigMaps, рдЖрджрд┐ рд╕рд╛рдБрдЪреЛ, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдлрд╛рд░рдордорд╛ рдЕрдиреНрдп рд╕реНрд░реЛрддрд╣рд░реВ рдердкреНрди рд╕рдХреНрдЫрдиреН .
рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рд╣рд╛рдореА рд╕реНрд░реЛрдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ CronTab, рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдЗрдБ рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: crontabs.my.org
spec:
group: my.org
versions:
- name: v1
served: true
storage: true
Schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
cronSpec:
type: string
pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
replicas:
type: integer
minimum: 1
maximum: 10
scope: Namespaced
names:
plural: crontabs
singular: crontab
kind: CronTab
shortNames:
- ct
рдкрдЫрд┐ рд╣рд╛рдореА рдпрд╕реНрддреЛ рдХреНрд░реЛрдирдЯреНрдпрд╛рдм рд╕рдВрд╕рд╛рдзрди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:
apiVersion: "my.org/v1"
kind: CronTab
metadata:
name: my-cron-object
spec:
cronSpec: "* * * * */5"
image: my-cron-image
replicas: 5
Kubernetes рдорд╛ рдПрдХреНрд╕реНрдЯреЗрдиреНрд╕рд┐рдмрд┐рд▓рд┐рдЯреАрдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдЖрдлреНрдиреИ рдмрдпрд╛рди рд▓реЗрдЦреНрди рд╕рдХреНрдЫред Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдорд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛ рдЬреБрди "" рдЕрдкрд░реЗрдЯрд░рдХреЛ рд╕рд╣рдпреЛрдЧрдорд╛, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ Kubernetes API рд╕рдБрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЖрджрд╛рдирдкреНрд░рджрд╛рди рдЧрд░реЗрд░ CRDs (рдЕрдиреБрдХреВрд▓ рд╕реНрд░реЛрдд рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВ) рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫред
рддреНрдпрд╣рд╛рдБ рд╕рдореБрджрд╛рдпрдорд╛ рдзреЗрд░реИ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЖрдлреНрдиреИ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрджрдЫред рдЙрдиреАрд╣рд░реБ рдордзреНрдпреЗ - рд░ рдЙрдирдХреЛ ред рдпреЛ SDK рд▓реЗ рдПрдЙрдЯрд╛ рдЖрдзрд╛рд░ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЬрд╕рдмрд╛рдЯ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рддреБрд░реБрдиреНрддреИ рдЕрдкрд░реЗрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдорд╛рдиреМрдВ рдХрд┐ рддрдкрд╛рдЗрдБ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдмрд╛рдЯ рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
$ operator-sdk new my-operator --repo github.com/myuser/my-operatorрдпрд╕рд▓реЗ YAML рдлрд╛рдЗрд▓рд╣рд░реВ рд░ Golang рдХреЛрдб рд╕рд╣рд┐рдд рддрдкрд╛рдИрдВрдХреЛ рдЕрдкрд░реЗрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ:
.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.goрддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдЗрдБ рдЖрд╡рд╢реНрдпрдХ API рд░ рдирд┐рдпрдиреНрддреНрд░рдХ рдердкреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ:
$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService
$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppServiceрддреНрдпрд╕рдкрдЫрд┐, рдЕрдиреНрддрдорд╛, рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рдЬрдореНрдорд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рддрдкрд╛рдИрдВрдХреЛ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН:
$ operator-sdk build your.container.registry/youruser/myapp-operator рдпрджрд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЕрдЭ рдмрдвреА рдирд┐рдпрдиреНрддреНрд░рдг рдЪрд╛рд╣рдиреНрдЫ рднрдиреЗ, Go рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдирд┐рдпрдиреНрддреНрд░рдХ рдХреЛ рд╡рд┐рд╡рд░рдг рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, рддрдкрд╛рдЗрдБ рдлрд╛рдЗрд▓ рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ controller.go.
рдЕрд░реНрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ , рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЗрд╡рд▓ рдШреЛрд╖рдгрд╛рддреНрдордХ YAML рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрдпрд╛рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, Apache Kafka рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЕрдкрд░реЗрдЯрд░ рд▓рдЧрднрдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдиреЗрдЫ ред рдпрд╕рдХреЛ рд╕рд╛рде, рддрдкрд╛рдЗрдБ рдХреБрдмреЗрд░рдиреЗрдЯрдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХреЗрд╡рд▓ рдХреЗрд╣реА рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рд╕рд╛рде:
$ kubectl kudo install zookeeper
$ kubectl kudo install kafkaрд░ рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ рдЕрд░реНрдХреЛ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
$ kubectl kudo install kafka --instance=my-kafka-name
-p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181
-p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m
-p BROKER_COUNT=5 -p BROKER_MEM=4096m
-p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3
-p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20
рдЕрднрд┐рдирд╡
рд╡рд┐рдЧрдд рдХреЗрд╣реА рд╡рд░реНрд╖рд╣рд░реВрдорд╛, рдкреНрд░рдореБрдЦ Kubernetes рд╡рд┐рдореЛрдЪрдирд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХ рдХреЗрд╣реА рдорд╣рд┐рдирд╛рдорд╛ рдмрд╛рд╣рд┐рд░ рдЖрдЙрдБрджреИрдЫрдиреН - рддреНрдпреЛ рд╣реЛ, рдкреНрд░рддрд┐ рд╡рд░реНрд╖ рддреАрди рджреЗрдЦрд┐ рдЪрд╛рд░ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╣рд░реВред рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрдорд╛ рдкреЗрд╢ рдЧрд░рд┐рдПрдХрд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдШрдЯреНрджреИрдиред рдпрд╕рдмрд╛рд╣реЗрдХ, рдпреА рдХрдард┐рди рд╕рдордпрдорд╛ рдкрдирд┐ рд╕реБрд╕реНрдд рд╣реБрдиреЗ рдХреБрдиреИ рд╕рдВрдХреЗрддрд╣рд░реВ рдЫреИрдирдиреН - рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдЕрд╣рд┐рд▓реЗ рдХреЗ рдЕрд╡рд╕реНрдерд╛ рдЫ .
рдирдпрд╛рдБ рдХреНрд╖рдорддрд╛рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрднрд╛рд░рд╣рд░реВрдорд╛ рдердк рд▓рдЪрд┐рд▓реЛ рд░реВрдкрдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдердк рд░реВрдкрдорд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрд▓реЗ рдЙрддреНрдкрд╛рджрдирдорд╛ рд╕рд┐рдзреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдмрдвреА рдирд┐рдпрдиреНрддреНрд░рдгрдХреЛ рдЖрдирдиреНрдж рд▓рд┐рдиреНрдЫрдиреНред
рд╕рд╛рдореБрджрд╛рдпрд┐рдХ
Kubernetes рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рдЕрд░реНрдХреЛ рдкреНрд░рдореБрдЦ рдкрдХреНрд╖ рдпрд╕рдХреЛ рд╕рдореБрджрд╛рдп рдХреЛ рдмрд▓ рд╣реЛред 2015 рдорд╛, рд╕рдВрд╕реНрдХрд░рдг 1.0 рдорд╛ рдкреБрдЧреНрджрд╛, Kubernetes рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдпреЛрдЬрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ .
рд╡рд┐рднрд┐рдиреНрди рд╕рдореБрджрд╛рдп рдкрдирд┐ рдЫрдиреН (рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рд╕рдореВрд╣рд╣рд░реВ) рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдБрджреИ рдЧрд░реНрджрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░рдорд╛ рдХрд╛рдо рдЧрд░реНрдирдорд╛ рдХреЗрдиреНрджреНрд░рд┐рдд рдЫрдиреНред рдпреА рд╕рдореВрд╣рд╣рд░реВрд▓реЗ Kubernetes рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирд▓рд╛рдИ рдЕрдЭ рд╕рд╣рдЬ рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдЙрдБрджреИ рд▓рдЧрд╛рддрд╛рд░ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдердкрд┐рд░рд╣реЗрдХрд╛ рдЫрдиреНред
рдХреНрд▓рд╛рдЙрдб рдиреЗрдЯрд┐рдн рдлрд╛рдЙрдиреНрдбреЗрд╢рдирд▓реЗ CloudNativeCon/KubeCon рдкрдирд┐ рд╣реЛрд╕реНрдЯ рдЧрд░реНрджрдЫ, рдЬреБрди, рд▓реЗрдЦреНрдиреЗ рд╕рдордпрдорд╛, рд╡рд┐рд╢реНрд╡рдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдареВрд▓реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕рдореНрдореЗрд▓рди рд╣реЛред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╡рд░реНрд╖рдорд╛ рддреАрди рдкрдЯрдХ рдЖрдпреЛрдЬрдирд╛ рд╣реБрдиреЗ, рдпрд╕рд▓реЗ Kubernetes рд░ рдпрд╕рдХреЛ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордорд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдЪрд╛рд╣рдиреЗ рд╣рдЬрд╛рд░реМрдВ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрд▓рд╛рдИ рд╕рдБрдЧреИ рд▓реНрдпрд╛рдЙрдБрдЫ, рд╕рд╛рдереИ рд╣рд░реЗрдХ рддреАрди рдорд╣рд┐рдирд╛рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдиреЗ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рд┐рдХреНрди рдЪрд╛рд╣рдиреНрдЫред
рдпрд╕рдмрд╛рд╣реЗрдХ, рдХреНрд▓рд╛рдЙрдб рдиреЗрдЯрд┐рдн рдлрд╛рдЙрдиреНрдбреЗрд╢рди рдЫ , рдЬрд╕рд▓реЗ, SIGs рд╕рдБрдЧрд╕рдБрдЧреИ, рдирдпрд╛рдБ рд░ рдЕрд╡рд╕реНрдерд┐рдд рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрджрдЫ рдХреЛрд╖ рдХреНрд▓рд╛рдЙрдб рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордорд╛ рдХреЗрдиреНрджреНрд░рд┐рддред рдпреА рдзреЗрд░реИрдЬрд╕реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрд▓реЗ Kubernetes рдХреЛ рдмрд▓рд┐рдпреЛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред
рдЕрдиреНрддрдорд╛, рдо рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрдЫреБ рдХрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рдореНрдкреВрд░реНрдг рд╕рдореБрджрд╛рдпрдХреЛ рд╕рдЪреЗрдд рдкреНрд░рдпрд╛рд╕ рдмрд┐рдирд╛ рдпреЛ рдЬрддрд┐ рд╕рдлрд▓ рд╣реБрдиреЗрдЫреИрди, рдЬрд╣рд╛рдБ рдорд╛рдирд┐рд╕рд╣рд░реВ рдПрдХреИ рдард╛рдЙрдБрдорд╛ рдмрд╕реНрдЫрдиреН рддрд░ рдПрдХреИ рд╕рдордпрдорд╛ рдирдпрд╛рдБрд╣рд░реВрд▓рд╛рдИ рд╕реНрд╡рд╛рдЧрдд рдЧрд░реНрджрдЫред
рднрд╡рд┐рд╖реНрдп
рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рднрд╡рд┐рд╖реНрдпрдорд╛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рдореБрдЦреНрдп рдЪреБрдиреМрддреАрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдХреЛрдбрдХреЛ рд╡рд┐рд╡рд░рдгрд╣рд░реВрдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд╣реЛ, рд░ рдпреЛ рдЪрд▓реНрдиреЗ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рд╣реЛрдЗрдиред рдпрд╕рд▓реЗ рдпреА рдкреНрд░рд╡реГрддреНрддрд┐рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрджрдЫ , рдЬреБрди рдЖрдЬрдХреЛ рдЕрдЧреНрд░рдгреА рдордзреНрдпреЗ рдПрдХ рд╣реЛред рдЙрдиреНрдирдд рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ ╨╕ , рдЬрд╕рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдмрд╛рдЯ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдЕрдореВрд░реНрдд рдЧрд░реНрди Kubernetes рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред
рдпрд╕ рд▓реЗрдЦрдорд╛, рд╣рд╛рдореАрд▓реЗ Kubernetes рдХреЛ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛рдХреЛ рд╕рддрд╣ рдорд╛рддреНрд░ рдЦрд░реЛрдВрдЪ рдЧрд░реЗрдХрд╛ рдЫреМрдВ - рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпреЛ рд╣рд┐рдорд╢реИрд▓реАрдХреЛ рдЯреБрдкреНрдкреЛ рдорд╛рддреНрд░ рд╣реЛред Kubernetes рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рдзреЗрд░реИ рдЕрдиреНрдп рд╕реНрд░реЛрддрд╣рд░реВ, рдХреНрд╖рдорддрд╛рд╣рд░реВ, рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рдЫрдиреНред
рд╕реНрд░реЛрдд: www.habr.com
