рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЗрд▓рд┐рдХреЛ: рдЬрд╛рдирдирд╛ рдФрд░ рдереЛрдбрд╝рд╛ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛



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

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдп


рдмрд┐рдирд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреАред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдХреЗ рдореВрд▓ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рд╣реИ: " рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрд▓рд╕реНрдЯреНрд░реЗрдЯреЗрдб рдЧрд╛рдЗрдб " рдФрд░ " рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп "ред

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

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

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

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-network-policy namespace: default spec: podSelector: matchLabels: role: db policyTypes: - Ingress - Egress ingress: - from: - ipBlock: cidr: 172.17.0.0/16 except: - 172.17.1.0/24 - namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: frontend ports: - protocol: TCP port: 6379 egress: - to: - ipBlock: cidr: 10.0.0.0/24 ports: - protocol: TCP port: 5978 

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

рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╣реИрдВ: рдкреЙрдб (рдЗрдирдЧреНрд░реЗрд╢рди) рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдЙрд╕рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ (рдИрдЧреНрд░реЗрдб)ред



рджрд░рдЕрд╕рд▓, рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд░рд╛рдЬрдиреАрддрд┐ рдХреЛ рдЗрди 2 рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдЧрд▓реА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рд╣реИ; рд╡рд╣ рдЬрд┐рд╕ рдкрд░ рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдлрд▓реА (рдпрд╛ рдлрд▓реА рдХрд╛ рдПрдХ рд╕рдореВрд╣) рдпрд╛ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг (рдпрд╛рдиреА рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг: рдЗрди рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдПрдХ рд▓реЗрдмрд▓ (рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рд▓реЗрдмрд▓ ) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпреЗ рдРрд╕реА рдиреАрддрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреА рд╣реИрдВред

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

  podSelector: {} ingress: [] policyTypes: - Ingress 

- рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рднреА рдкреЙрдбреНрд╕ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рд╡рд┐рдкрд░реАрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  podSelector: {} ingress: - {} policyTypes: - Ingress 

рдЗрд╕реА рддрд░рд╣ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЗ рд▓рд┐рдП:

  podSelector: {} policyTypes: - Egress 

- рдЗрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛ред рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ:

  podSelector: {} egress: - {} policyTypes: - Egress 

рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП CNI рдкреНрд▓рдЧрдЗрди рдХреА рдкрд╕рдВрдж рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди NetworkPolicy рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП рдлрд▓рд╛рд▓реИрди рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдХреЗрд▓рд┐рдХреЛ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдорд╛рдирдХ рдХреБрдмреЗрд░рдиреЗрдЯ рдПрдкреАрдЖрдИ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред



рдорд┐рд▓реЛ рдХреИрд▓рд┐рдХреЛ: рд╕рд┐рджреНрдзрд╛рдВрдд


Calico рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝реНрд▓реЗрдиреЗрд▓ (рдПрдХ рдирд╣рд░ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдХреЗ рд╕рд╛рде рдпрд╛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдкреНрд░рдмрдВрдзрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред

K8s рдмреЙрдХреНрд╕рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдФрд░ рдХреИрд▓рд┐рдХреЛ рдПрдкреАрдЖрдИ рд╕реЗрдЯ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ?

рдпрд╣рд╛рдБ рд╣реИ рдЬреЛ NetworkPolicy рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

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

рдФрд░ рдпрд╣рд╛рдБ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреЗрд▓рд┐рдХреЛ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ:

  • рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдлрд▓реА, рдХрдВрдЯреЗрдирд░, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕;
  • рдирд┐рдпрдореЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ (рдирд┐рд╖реЗрдз, рдЕрдиреБрдорддрд┐, рд▓реЙрдЧрд┐рдВрдЧ) рд╣реЛ рд╕рдХрддреА рд╣реИ;
  • рд▓рдХреНрд╖реНрдп рдпрд╛ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╕реНрд░реЛрдд рдкреЛрд░реНрдЯ, рдкреЛрд░реНрдЯ рд░реЗрдВрдЬ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓, HTTP рдпрд╛ ICMP рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ, IP рдпрд╛ рд╕рдмрдиреЗрдЯ (4 рдпрд╛ 6 рдкреАрдврд╝рд┐рдпрд╛рдБ), рдХреЛрдИ рднреА рдЪрдпрдирдХрд░реНрддрд╛ (рдиреЛрдбреНрд╕, рд╣реЛрд╕реНрдЯ, рд╡рд╛рддрд╛рд╡рд░рдг) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ;
  • рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, DNAT рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЕрдЧреНрд░реЗрд╖рдг рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд╣рд▓рд╛ GitHub рдХреИрд▓рд┐рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЬреБрд▓рд╛рдИ 2016 рддрдХ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рд╕рдВрдЧрдарди рдореЗрдВ рдПрдХ рдЕрдЧреНрд░рдгреА рд╕реНрдерд╛рди рд▓рд┐рдпрд╛ - рдпрд╣ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдж рдиреНрдпреВ рд╕реНрдЯреИрдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ:



K8s рдХреЗ рд╕рд╛рде рдХрдИ рдмрдбрд╝реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдорд╛рдзрд╛рди, рдЬреИрд╕реЗ рдХрд┐ рдЕрдореЗрдЬрди EKS , Azure AKS , Google GKE рдФрд░ рдЕрдиреНрдп, рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд░рдиреЗ рд▓рдЧреЗред

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



рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИ, рдпрд╣ K8s, OpenShift, OpenStack рдЬреИрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдХреИрд▓реЛрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рдХреИрд▓рд┐рдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд╕реЗрд╡рд╛ рдЬрд╛рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдВрджрд░реНрдн рд╣реИрдВ ( рдпрд╣рд╛рдВ рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ )ред

рдХреИрд▓рд┐рдХреЛ рдХреЗ рд╕рд╛рде рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ


рд╡реЗрдирд┐рд▓рд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реАрдПрдирдЖрдИ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб calico.yaml . calico.yaml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдирд╡реАрдирддрдо 2-3 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ: рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреИрд▓рд┐рдХреЛ рд▓рд┐рдирдХреНрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдкрд░ 3.10 рд╕реЗ рдКрдкрд░ рд╕реЗрдВрдЯреЛрд╕ 7, рдЙрдмрдВрдЯреВ 16 рдпрд╛ рдбреЗрдмрд┐рдпрди 8 рдХреЗ рддрд╣рдд, рдЖрдИрдкрдмрд▓ рдпрд╛ рдЖрдИрдкреАрд╡реАрдПрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред

рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЕрдВрджрд░ рдЗрдиреНрд╕реБрд▓реЗрд╢рди


рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХреИрд▓рд┐рдХреЛ рд╕рдВрдХреЗрддрди рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпрд╛рдВ рдорд╛рдирдХ рд▓реЛрдЧреЛрдВ рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЙрдирдХреА рдкрдардиреАрдпрддрд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ:



рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ 2 рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдирд╛рдд рд╣реИрдВ: Node.js рдФрд░ PHP, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ Redis рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред PHP рд╕реЗ Redis рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Node.js рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдЫреЛрдбрд╝рддреЗ рд╕рдордп, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-redis-nodejs spec: podSelector: matchLabels: service: redis ingress: - from: - podSelector: matchLabels: service: nodejs ports: - protocol: TCP port: 6379 

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд╣рдордиреЗ Node.js. рд╕реЗ Redis рдкреЛрд░реНрдЯ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдФрд░ рдХреБрдЫ рднреА рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЬреИрд╕реЗ рд╣реА NetworkPolicy рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рддрдм рдЗрд╕рдореЗрдВ рдмрддрд╛рдП рдЧрдП рд╕рднреА рдЪрдпрдирдХрд░реНрддрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рд╕рдВрдХреЗрдд рди рджрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрд▓рдЧрд╛рд╡ рдирд┐рдпрдо рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЪрдпрдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

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

 apiVersion: crd.projectcalico.org/v1 kind: NetworkPolicy metadata: name: allow-redis-nodejs spec: selector: service == 'redis' ingress: - action: Allow protocol: TCP source: selector: service == 'nodejs' destination: ports: - 6379 

рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХрдкреЙрд▓рд┐рд╢реА рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдпрд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдмреНрд░реИрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдордЭрдирд╛ рдФрд░ рдпрд╛рдж рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдХреЗрд▓рд┐рдХреЛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдо рдХреЗ рддрд░реНрдХ рдХреЛ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ action: Allow рдмрджрд▓реЗрдВ action: Allow action: Deny рдХрд░рдиреЗ рдХреА action: Allow action: Deny ред

рдкрд░реНрдпрд╛рд╡рд░рдг рдЕрд▓рдЧрд╛рд╡


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



рдкреНрд░реЛрдореЗрдерд┐рдпрд╕, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рд╣реЛрдЧрд╛:

 apiVersion: v1 kind: Namespace metadata: labels: module: prometheus name: kube-prometheus 

рдпрд╣рд╛рдВ metadata.labels рдлреАрд▓реНрдб рдЖрдХрд╕реНрдорд┐рдХ рдирд╣реАрдВ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, podSelector (рдЬреИрд╕реЗ podSelector ) рд▓реЗрдмрд▓ рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдкрд░ рд╕рднреА рдкреЙрдбреНрд╕ рд╕реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рд▓реЗрдмрд▓ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╛ рдореМрдЬреВрджрд╛ рд╡рд╛рд▓реЗ рд╕реЗ рд▓реЗрдирд╛), рдФрд░ рдлрд┐рд░ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ:

 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-metrics-prom spec: podSelector: {} ingress: - from: - namespaceSelector: matchLabels: module: prometheus ports: - protocol: TCP port: 9100 

рдФрд░ рдпрджрд┐ рдЖрдк рдХреИрд▓рд┐рдХреЛ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрдЧрд╛:

 apiVersion: crd.projectcalico.org/v1 kind: NetworkPolicy metadata: name: allow-metrics-prom spec: ingress: - action: Allow protocol: TCP source: namespaceSelector: module == 'prometheus' destination: ports: - 9100 

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдиреАрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдХрд░, рдЖрдк рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдпрд╛ рдЖрдХрд╕реНрдорд┐рдХ рд╣рд╕реНрддрдХреНрд╖реЗрдк рд╕реЗ рд░рдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдХреИрд▓рд┐рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


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

 apiVersion: crd.projectcalico.org/v1 kind: GlobalNetworkPolicy metadata: name: block-icmp spec: order: 200 selector: all() types: - Ingress - Egress ingress: - action: Deny protocol: ICMP egress: - action: Deny protocol: ICMP 

рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдЕрднреА рднреА ICMP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рддрдХ "рдкрд╣реБрдВрдЪ" рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдФрд░ рдпрд╣ рд╕рд╡рд╛рд▓ GlobalNetworkPolicy рдорд╛рдзреНрдпрдо рд╕реЗ HostEndpoint рд╕рдВрд╕реНрдерд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ:

 apiVersion: crd.projectcalico.org/v1 kind: GlobalNetworkPolicy metadata: name: deny-icmp-kube-02 spec: selector: "role == 'k8s-node'" order: 0 ingress: - action: Allow protocol: ICMP egress: - action: Allow protocol: ICMP --- apiVersion: crd.projectcalico.org/v1 kind: HostEndpoint metadata: name: kube-02-eth0 labels: role: k8s-node spec: interfaceName: eth0 node: kube-02 expectedIPs: ["192.168.2.2"] 

рд╡реАрдкреАрдПрди рдорд╛рдорд▓рд╛


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



рдЧреНрд░рд╛рд╣рдХ рдорд╛рдирдХ рдпреВрдбреАрдкреА рдкреЛрд░реНрдЯ 1194 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдкреАрдПрди рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рдлрд▓реА рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдмрдиреЗрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдкреБрд╢ рд╕рдмрдиреЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдФрд░ рдкрддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рджреМрд░рд╛рди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЦреЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкреЛрд░реНрдЯ рдорд╛рдирдХ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдкрд░ рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА AWS рдореЗрдВ, UDP рдХреЗ рд▓рд┐рдП LoadBalancer, рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реАрдорд┐рдд рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдФрд░ NodePort рдХреЛ рд╕рднреА рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧрд▓рддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдорд╛рдкрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╕рд╛рде рд╣реА, рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ рд░реЗрдВрдЬ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ ...

рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛:

  1. рд╡реАрдкреАрдПрди рдкреЙрдбреНрд╕ рдХреЛ hostNetwork рдореЛрдб рдореЗрдВ рдкреНрд░рддрд┐ рд╣реЛрд╕реНрдЯ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ hostNetwork рд╣реИ, рдЕрд░реНрдерд╛рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдИрдкреА рдкрд░ред
  2. рд╕реЗрд╡рд╛ ClusterIP рдкреЛрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рд╣реИред рдмрдВрджрд░рдЧрд╛рд╣ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдЬрдмрд╛рди рдкрд░ рдЙрдЧрддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рд╣рд░ рд╕реЗ рдХреБрдЫ рдХреИрд╡рд┐рдЯреНрд╕ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдИрдкреА рдкрддреЗ рдХреА рд╕рд╢рд░реНрдд рдЙрдкрд▓рдмреНрдзрддрд╛) рдХреЗ рд╕рд╛рде рд╕реБрд▓рдн рд╣реИред
  3. рдиреЛрдб рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЬрд┐рд╕ рдкрд░ рдлрд▓реА рдЧреБрд▓рд╛рдм рд╣рдорд╛рд░реА рдХрд╣рд╛рдиреА рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реА рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╣реЛрд╕реНрдЯ рдХреЛ рд╕реЗрд╡рд╛ рдХреЛ рдордЬрдмреВрддреА рд╕реЗ "рдиреЗрд▓" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реЗрд╡рд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реАрдкреАрдПрди рд╕реЗрд╡рд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рдЖрдИрдкреА рдкрддреЗ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдЧрд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдбреАрдПрдирдПрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ - рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдХрд▓реНрдкрдирд╛ рд╣реИред

рд░реВрдЯрд┐рдВрдЧ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╣рдо рд╡реАрдкреАрдПрди рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЕрдкрдиреЗ рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрджрд┐рдо рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЙрдкрд░реНрдпреБрдХреНрдд рд░реЗрдбрд┐рд╕ рдкрд░ рдПрдХ рджреГрд╖реНрдЯрд╛рдВрдд:

 apiVersion: crd.projectcalico.org/v1 kind: HostEndpoint metadata: name: vpnclient-eth0 labels: role: vpnclient environment: production spec: interfaceName: "*" node: kube-02 expectedIPs: ["172.176.176.2"] --- apiVersion: crd.projectcalico.org/v1 kind: GlobalNetworkPolicy metadata: name: vpn-rules spec: selector: "role == 'vpnclient'" order: 0 applyOnForward: true preDNAT: true ingress: - action: Deny protocol: TCP destination: ports: [6379] - action: Allow protocol: UDP destination: ports: [53, 67] 

рдпрд╣рд╛рдВ, рдкреЛрд░реНрдЯ 6379 рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝рд╛рдИ рд╕реЗ рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдбреАрдПрдирдПрд╕ рд╕реЗрд╡рд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рдордХрд╛рдЬ рдЕрдХреНрд╕рд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд░рддреЗ рд╕рдордп рдкреАрдбрд╝рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХ рдПрдХ рдирд┐рд╖реЗрдзрд╛рддреНрдордХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреАрддрд┐ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛред

рдкрд░рд┐рдгрд╛рдо


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

рд╕реБрд░рдХреНрд╖рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░ рдЕрд▓рдЧрд╛рд╡ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реИ рдХрд┐ рдХреИрд▓рд┐рдХреЛ (рдпрд╛ рдПрдХ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди) рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг (рдереЛрдбрд╝рд╛ рд╢реЛрдзрди рдХреЗ рд╕рд╛рде) рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдХрдИ рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдореЗрдВ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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


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

Source: https://habr.com/ru/post/hi485716/


All Articles