рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдиреЛрдВрдж. рдЕрдиреБрд╡рд╛рдж: рд▓реЗрдЦрд╛рдЪреЗ рд▓реЗрдЦрдХ, рд░реЗрдЙрд╡реЗрди рд╣реЕрд░рд┐рд╕рди, рдпрд╛рдВрдирд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдЪрд╛ 20 рд╡рд░реНрд╖рд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрдиреБрднрд╡ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдЬ рддреЗ рд╕реБрд░рдХреНрд╖рд╛ рдзреЛрд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЙрдкрд╛рдп рддрдпрд╛рд░ рдХрд░рдгрд╛рд▒реНрдпрд╛ Tufin рдпрд╛ рдХрдВрдкрдиреАрдЪреЗ CTO рдЖрдгрд┐ рд╕рд╣-рд╕рдВрд╕реНрдерд╛рдкрдХ рдЖрд╣реЗрдд. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдкреЙрд▓рд┐рд╕реАрдВрдирд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЧрдореЗрдВрдЯреЗрд╢рдирд╕рд╛рдареА рдПрдХ рдмрд▒реНрдпрд╛рдкреИрдХреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдзрди рдореНрд╣рдгреВрди рддреЗ рдкрд╛рд╣рддрд╛рдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдЪрд╛ рдЕрд╕рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рддреЗ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рд▓рд╛рдЧреВ рдХрд░рдгреЗ рдЗрддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА. рд╣реА рд╕рд╛рдордЧреНрд░реА (рдЕрдЧрджреА рд╡рд┐рдкреБрд▓) рддрдЬреНрдЮрд╛рдВрдЪреА рдпрд╛ рд╕рдорд╕реНрдпреЗрдмрджреНрджрд▓ рдЬрд╛рдЧрд░реВрдХрддрд╛ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗ.

рдЖрдЬ, рдмрд▒реНрдпрд╛рдЪ рдХрдВрдкрдиреНрдпрд╛ рддреНрдпрд╛рдВрдЪреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреА рдирд┐рд╡рдб рдХрд░рдд рдЖрд╣реЗрдд. рдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЗрддрдХреЗ рдЬрд╛рд╕реНрдд рдЖрд╣реЗ рдХреА рдХрд╛рд╣реА рдЬрдг Kubernetes "рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рд╕рд╛рдареА рдирд╡реАрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо" рдореНрд╣рдгрдд рдЖрд╣реЗрдд. рд╣рд│реВрд╣рд│реВ, Kubernetes (рдХрд┐рдВрд╡рд╛ k8s) рд╣рд╛ рд╡реНрдпрд╡рд╕рд╛рдпрд╛рдЪрд╛ рдПрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдУрд│рдЦрд▓рд╛ рдЬрд╛рдК рд▓рд╛рдЧрд▓рд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рд╕рд╛рдареА рдиреЗрдЯрд╡рд░реНрдХ рд╕реБрд░рдХреНрд╖реЗрд╕рд╣ рдкрд░рд┐рдкрдХреНрд╡ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪреЗ рдЖрдпреЛрдЬрди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

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

рд╣реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪреА рдЕрдВрддрд░реНрдЧрдд рд░рдЪрдирд╛ рд╕рдордЬрдгреНрдпрд╛рд╕ рдорджрдд рдХрд░реЗрд▓; рддреЗ рдирд┐рдпрдорд┐рдд рдлрд╛рдпрд░рд╡реЙрд▓рдЪреНрдпрд╛ рдирд┐рдпрдорд╛рдВрдкреЗрдХреНрд╖рд╛ рдХрд╕реЗ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗрдд рддреЗ рд╕рдордЬреВрди рдШреНрдпрд╛. рд╣реЗ рдХрд╛рд╣реА рддреЛрдЯреЗ рджреЗрдЦреАрд▓ рдХрд╡реНрд╣рд░ рдХрд░реЗрд▓ рдЖрдгрд┐ Kubernetes рд╡рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдирд╛ рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╢рд┐рдлрд╛рд░рд╕реА рдкреНрд░рджрд╛рди рдХрд░реЗрд▓.

Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ

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

рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рдкреЙрдбреНрд╕рдордзреАрд▓ рд╕рдВрдкреНрд░реЗрд╖рдг рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛рдд

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

рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ

рдЗрддрд░ Kubernetes рд╕рдВрд╕рд╛рдзрдирд╛рдВрдкреНрд░рдорд╛рдгреЗ, рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ YAML рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдЕрдиреБрдкреНрд░рдпреЛрдЧ balance рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ postgres:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: balance
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

(рдиреЛрдВрдж. рдЕрдиреБрд╡рд╛рдж: рд╣рд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ, рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рд╕рд░реНрд╡ рддрддреНрд╕рдо рдЧреЛрд╖реНрдЯреАрдВрдкреНрд░рдорд╛рдгреЗ, рдореВрд│ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЯреВрд▓реНрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдирд╛рд╣реА, рддрд░ рдореВрд│ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдЪреНрдпрд╛ рдХрдВрдкрдиреАрдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдЖрдгрд┐ рд╕рд╛рдордЧреНрд░реАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдирдореВрдж рдХреЗрд▓реЗрд▓реЗ рдЯреБрдлрд┐рди рдСрд░реНрдХрд╛ рдЯреВрд▓ рд╡рд╛рдкрд░реВрди рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.)

рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ YAML рдЪреЗ рдореВрд▓рднреВрдд рдЬреНрдЮрд╛рди рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓. рд╣реА рднрд╛рд╖рд╛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рдирд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ (рдЯреЕрдм рдРрд╡рдЬреА рд╕реНрдкреЗрд╕рджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ). рдЗрдВрдбреЗрдВрдЯ рдХреЗрд▓реЗрд▓рд╛ рдШрдЯрдХ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд░рдЪреНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рдЬрд╡рд│рдЪреНрдпрд╛ рдЗрдВрдбреЗрдВрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдШрдЯрдХрд╛рдЪрд╛ рдЕрд╕рддреЛ. рдирд╡реАрди рд╕реВрдЪреА рдШрдЯрдХ рд╣рд╛рдпрдлрдирдиреЗ рд╕реБрд░реВ рд╣реЛрддреЛ, рдЗрддрд░ рд╕рд░реНрд╡ рдШрдЯрдХрд╛рдВрдЪреЗ рд╕реНрд╡рд░реВрдк рдЕрд╕рддреЗ рдХреА-рдореВрд▓реНрдп.

YAML рдордзреНрдпреЗ рдзреЛрд░рдгрд╛рдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛рд╡рд░, рд╡рд╛рдкрд░рд╛ kubectlрддреЗ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА:

kubectl create -f policy.yaml

рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдг рддрдкрд╢реАрд▓

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдкреЙрд▓рд┐рд╕реА рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдЪрд╛рд░ рдШрдЯрдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд:

  1. podSelector: рдпрд╛ рдзреЛрд░рдгрд╛рдореБрд│реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╢реЗрдВрдЧрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ (рд▓рдХреНрд╖реНрдпреЗ) - рдЖрд╡рд╢реНрдпрдХ;
  2. policyTypes: рдпрд╛рдордзреНрдпреЗ рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ рд╣реЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ: рдкреНрд░рд╡реЗрд╢ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рдмрд╛рд╣реЗрд░ рдкрдбрдгреЗ - рдкрд░реНрдпрд╛рдпреА, рдкрд░рдВрддреБ рдореА рд╕рд░реНрд╡ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рддреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ;
  3. ingress: рдкрд░рд╡рд╛рдирдЧреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рдпреЗрдгрд╛рд░реА рдЯрд╛рд░реНрдЧреЗрдЯ рдкреЙрдбреНрд╕рд╡рд░ рд░рд╣рджрд╛рд░реА - рдкрд░реНрдпрд╛рдпреА;
  4. egress: рдкрд░рд╡рд╛рдирдЧреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдЯрд╛рд░реНрдЧреЗрдЯ рдкреЙрдбреНрд╕рдордзреВрди рд╡рд╛рд╣рддреВрдХ рдРрдЪреНрдЫрд┐рдХ рдЖрд╣реЗ.

Kubernetes рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░реВрди рдШреЗрддрд▓реЗрд▓реЗ рдЙрджрд╛рд╣рд░рдг (рдореА рдмрджрд▓рд▓реЗ role рд╡рд░ app), рд╕рд░реНрд╡ рдЪрд╛рд░ рдШрдЯрдХ рдХрд╕реЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд рддреЗ рджрд░реНрд╢рд╡рд┐рддреЗ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:    # <<<
    matchLabels:
      app: 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

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп
рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рд╕рд░реНрд╡ рдЪрд╛рд░ рдШрдЯрдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА. рд╣реЗ рдлрдХреНрдд рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрд╣реЗ podSelector, рдЗрддрд░ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЗрдЪреНрдЫреЗрдиреБрд╕рд╛рд░ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рдЖрдкрдг рд╡рдЧрд│рд▓реНрдпрд╛рд╕ policyTypes, рдзреЛрд░рдгрд╛рдЪрд╛ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЕрд░реНрде рд▓рд╛рд╡рд▓рд╛ рдЬрд╛рдИрд▓:

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

рдЪреБрдХрд╛ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдореА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ рдиреЗрд╣рдореА рд╕реНрдкрд╖реНрдЯ рдХрд░рд╛ policyTypes.

рд╡рд░реАрд▓ рддрд░реНрдХрд╛рдиреБрд╕рд╛рд░, рдЬрд░ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ ingress рдЖрдгрд┐ / рдХрд┐рдВрд╡рд╛ egress рд╡рдЧрд│рд▓реЗ, рдзреЛрд░рдг рд╕рд░реНрд╡ рд░рд╣рджрд╛рд░реА рдирд╛рдХрд╛рд░реЗрд▓ (рдЦрд╛рд▓реА "рд╕реНрдЯреНрд░рд┐рдкрд┐рдВрдЧ рдирд┐рдпрдо" рдкрд╣рд╛).

рдбреАрдлреЙрд▓реНрдЯ рдзреЛрд░рдг рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ

рдХреЛрдгрддреАрд╣реА рдзреЛрд░рдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╕рд▓реНрдпрд╛рд╕, Kubernetes рд╕рд░реНрд╡ рд░рд╣рджрд╛рд░реАрд▓рд╛ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдЕрдиреБрдорддреА рджреЗрддреЗ. рд╕рд░реНрд╡ рд╢реЗрдВрдЧрд╛ рдЖрдкрд╛рдкрд╕рд╛рдд рдорд╛рд╣рд┐рддреАрдЪреА рдореБрдХреНрддрдкрдгреЗ рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд░реВ рд╢рдХрддрд╛рдд. рд╣реЗ рд╕реБрд░рдХреНрд╖реЗрдЪреНрдпрд╛ рджреГрд╖реНрдЯреАрдХреЛрдирд╛рддреВрди рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╡рд╛рдЯреВ рд╢рдХрддреЗ, рдкрд░рдВрддреБ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА Kubernetes рдЪреА рд░рдЪрдирд╛ рдореВрд│рдд: рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рдХрд╕рдХрд╛рдВрдиреА рдХреЗрд▓реА рд╣реЛрддреА. рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рдирдВрддрд░ рдЬреЛрдбрд▓реА рдЧреЗрд▓реА.

рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕

рдиреЗрдорд╕реНрдкреЗрд╕ рд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рд╣рдпреЛрдЧ рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ. рддреЗ рдПрдХрдореЗрдХрд╛рдВрдкрд╛рд╕реВрди рддрд╛рд░реНрдХрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╡реЗрдЧрд│реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рддрд░ рд╕реНрдкреЗрд╕рдордзреАрд▓ рд╕рдВрд╡рд╛рджрд╛рд╕ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.

рдмрд╣реБрддреЗрдХ Kubernetes рдШрдЯрдХрд╛рдВрдкреНрд░рдорд╛рдгреЗ, рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рд░рд╛рд╣рддрд╛рдд. рдмреНрд▓реЙрдХ рдордзреНрдпреЗ metadata рдкреЙрд▓рд┐рд╕реА рдХреЛрдгрддреНрдпрд╛ рдЬрд╛рдЧреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ рддреЗ рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: my-namespace  # <<<
spec:
...

рдореЗрдЯрд╛рдбреЗрдЯрд╛рдордзреНрдпреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рдХреЗрд▓реНрдпрд╛рд╕, рд╕рд┐рд╕реНрдЯрдо kubectl рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реЗрд▓ (рдбрд┐рдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ namespace=default):

kubectl apply -n my-namespace -f namespace.yaml

рдореА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛, рдЬреЛрдкрд░реНрдпрдВрдд рддреБрдореНрд╣реА рдЕрд╕реЗ рдзреЛрд░рдг рд▓рд┐рд╣реАрдд рдирд╛рд╣реА рдЬреЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЕрдиреЗрдХ рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕ рд▓рдХреНрд╖реНрдп рдХрд░рддреЗ.

рдореБрдЦреНрдп рдШрдЯрдХ podSelector рдкреЙрд▓рд┐рд╕реАрдордзреНрдпреЗ рдкреЙрд▓рд┐рд╕реА рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреВрди рдкреЙрдбреНрд╕ рдирд┐рд╡рдбрддреАрд▓ (рддреНрдпрд╛рд▓рд╛ рджреБрд╕рд▒реНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рдкреЙрдбреНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдирд╛рдХрд╛рд░рд▓рд╛ рдЬрд╛рддреЛ).

рддреНрдпрд╛рдЪрдкреНрд░рдорд╛рдгреЗ, podSelectors рдкреНрд░рд╡реЗрд╢ рдЖрдгрд┐ рдирд┐рд░реНрдЧрдорди рдмреНрд▓реЙрдХреНрд╕рдордзреНрдпреЗ рдХреЗрд╡рд│ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреВрди рд╢реЗрдВрдЧрд╛ рдирд┐рд╡рдбреВ рд╢рдХрддрд╛рдд, рдЬреЛрдкрд░реНрдпрдВрдд рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рдПрдХрддреНрд░ рдХрд░рдд рдирд╛рд╣реА namespaceSelector (рдпрд╛рдЪреА рдЪрд░реНрдЪрд╛ "рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕ рдЖрдгрд┐ рдкреЙрдбреНрд╕рджреНрд╡рд╛рд░реЗ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛" рдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓).

рдкреЙрд▓рд┐рд╕реА рдирд╛рдордХрд░рдг рдирд┐рдпрдо

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

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

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres  # <<<
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рд▓реЗрдмрд▓реНрд╕

рддреБрдореНрд╣реА рдкреЙрдбреНрд╕ рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдпрд╛рдВрд╕рд╛рд░рдЦреНрдпрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдирд╛ рд╕рд╛рдиреБрдХреВрд▓ рд▓реЗрдмрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░реВ рд╢рдХрддрд╛. рд▓реЗрдмрд▓реНрд╕ (рд▓реЗрдмрд▓ - рдЯреЕрдЧ) рд╣реЗ рдореЗрдШрдордзреАрд▓ рдЯреЕрдЧрдЪреЗ рд╕рдорддреБрд▓реНрдп рдЖрд╣реЗрдд. Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рд▓реЗрдмрд▓реЗ рд╡рд╛рдкрд░рддрд╛рдд рд╢реЗрдВрдЧрд╛рдЬреНрдпрд╛рд╡рд░ рддреЗ рд▓рд╛рдЧреВ рд╣реЛрддрд╛рдд:

podSelector:
  matchLabels:
    role: db

тАж рдХрд┐рдВрд╡рд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдЬреНрдпрд╛рд╕рд╛рдареА рддреЗ рдЕрд░реНрдЬ рдХрд░рддрд╛рдд. рд╣реЗ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдмрд▓рд╛рдВрд╕рд╣ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рд╕рд░реНрд╡ рдкреЙрдбреНрд╕ рдирд┐рд╡рдбрддреЗ:

namespaceSelector:
  matchLabels:
    project: myproject

рдПрдХ рдЦрдмрд░рджрд╛рд░реА: рд╡рд╛рдкрд░рддрд╛рдирд╛ namespaceSelector рддреБрдореНрд╣реА рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕рдордзреНрдпреЗ рдпреЛрдЧреНрдп рд▓реЗрдмрд▓ рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛. рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рдЕрдВрдЧрднреВрдд рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕ рдЬрд╕реЗ рдХреА default ╨╕ kube-system, рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд▓реЗрдмрд▓реЗ рдирд╕рддрд╛рдд.

рддреБрдореНрд╣реА рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдЬрд╛рдЧреЗрд╡рд░ рд▓реЗрдмрд▓ рдЬреЛрдбреВ рд╢рдХрддрд╛:

kubectl label namespace default namespace=default

рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рд╡рд┐рднрд╛рдЧрд╛рдд рдиреЗрдорд╕реНрдкреЗрд╕ metadata рдЦрд▒реНрдпрд╛ рдЬрд╛рдЧреЗрдЪреНрдпрд╛ рдирд╛рд╡рд╛рдЪрд╛ рд╕рдВрджрд░реНрдн рдШреНрдпрд╛рд╡рд╛, рд▓реЗрдмрд▓рдЪрд╛ рдирд╛рд╣реА:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default   # <<<
spec:
...

рд╕реНрд░реЛрдд рдЖрдгрд┐ рдЧрдВрддрд╡реНрдпрд╕реНрдерд╛рди

рдлрд╛рдпрд░рд╡реЙрд▓ рдзреЛрд░рдгрд╛рдВрдордзреНрдпреЗ рд╕реНрддреНрд░реЛрдд рдЖрдгрд┐ рдЧрдВрддрд╡реНрдпрд╕реНрдерд╛рдирд╛рдВрд╕рд╣ рдирд┐рдпрдо рдЕрд╕рддрд╛рдд. Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рд▓рдХреНрд╖реНрдпрд╛рд╕рд╛рдареА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реА рдЬрд╛рддрд╛рдд - рдкреЙрдбреНрд╕рдЪрд╛ рдПрдХ рд╕рдВрдЪ рдЬреНрдпрд╛рд╡рд░ рддреЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛рдд - рдЖрдгрд┐ рдирдВрддрд░ рдкреНрд░рд╡реЗрд╢ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рдмрд╛рд╣реЗрд░ рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рдпрдо рд╕реЗрдЯ рдХрд░рддрд╛рдд. рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдкреЙрд▓рд┐рд╕реАрдЪреЗ рд▓рдХреНрд╖реНрдп рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рд╕рд░реНрд╡ рдкреЙрдбреНрд╕ рдЕрд╕рддреАрд▓ default рдХреА рд╕рд╣ рд▓реЗрдмрд▓рд╕рд╣ app рдЖрдгрд┐ рдЕрд░реНрде db:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: 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

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп
рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдЙрдкрд╡рд┐рднрд╛рдЧ ingress рдпрд╛ рдзреЛрд░рдгрд╛рдордзреНрдпреЗ, рд▓рдХреНрд╖реНрдп рдкреЙрдбреНрд╕рд╡рд░ рдпреЗрдгрд╛рд░реА рд░рд╣рджрд╛рд░реА рдЙрдШрдбрддреЗ. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдкреНрд░рд╡реЗрд╢ рд╣рд╛ рд╕реНрддреНрд░реЛрдд рдЖрд╣реЗ рдЖрдгрд┐ рд▓рдХреНрд╖реНрдп рд╣реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЧрдВрддрд╡реНрдпрд╕реНрдерд╛рди рдЖрд╣реЗ. рддреНрдпрд╛рдЪрдкреНрд░рдорд╛рдгреЗ, рдирд┐рд░реНрдЧрдорди рд╣реЗ рдЧрдВрддрд╡реНрдпрд╕реНрдерд╛рди рдЖрд╣реЗ рдЖрдгрд┐ рд▓рдХреНрд╖реНрдп рд╣реЗ рддреНрдпрд╛рдЪреЗ рд╕реНрддреНрд░реЛрдд рдЖрд╣реЗ.

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рд╣реЗ рджреЛрди рдлрд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдорд╛рдВрдЪреНрдпрд╛ рд╕рдорддреБрд▓реНрдп рдЖрд╣реЗ: рдкреНрд░рд╡реЗрд╢ тЖТ рд▓рдХреНрд╖реНрдп; рдзреНрдпреЗрдп тЖТ рдЙрддреНрд╕рд░реНрдЬрди.

Egress рдЖрдгрд┐ DNS (рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ!)

рдмрд╛рд╣реЗрд░ рдЬрд╛рдгрд╛рд░реА рд░рд╣рджрд╛рд░реА рдорд░реНрдпрд╛рджрд┐рдд рдХрд░реВрди, DNS рд╡рд░ рд╡рд┐рд╢реЗрд╖ рд▓рдХреНрд╖ рджреНрдпрд╛ - Kubernetes рд╣реА рд╕реЗрд╡рд╛ IP рдкрддреНрддреНрдпрд╛рдВрд╡рд░ рд╕реЗрд╡рд╛рдВрдЪрд╛ рдирдХрд╛рд╢рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЦрд╛рд▓реАрд▓ рдзреЛрд░рдг рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА рдХрд╛рд░рдг рддреБрдореНрд╣реА рдЕрд░реНрдЬрд╛рд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рджрд┐рд▓реА рдирд╛рд╣реА balance DNS рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рд╛:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  policyTypes:
  - Egress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

DNS рд╕реЗрд╡реЗрдЪрд╛ рдкреНрд░рд╡реЗрд╢ рдЙрдШрдбреВрди рддреБрдореНрд╣реА рддреНрдпрд╛рдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реВ рд╢рдХрддрд╛:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:               # <<<
    ports:            # <<<
    - protocol: UDP   # <<<
      port: 53        # <<<
  policyTypes:
  - Egress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рд╢реЗрд╡рдЯрдЪрд╛ рдШрдЯрдХ to рд░рд┐рдХреНрдд рдЖрд╣реЗ, рдЖрдгрд┐ рдореНрд╣рдгреВрди рддреЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖рдкрдгреЗ рдирд┐рд╡рдбрддреЗ рд╕рд░реНрд╡ рд╢реЗрдВрдЧрд╛ рд╕рд░реНрд╡ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ, рдкрд░рд╡рд╛рдирдЧреА рджреЗрдд тАЛтАЛрдЖрд╣реЗ balance DNS рдХреНрд╡реЗрд░реА рдпреЛрдЧреНрдп Kubernetes рд╕реЗрд╡реЗрдХрдбреЗ рдкрд╛рдард╡рд╛ (рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдЪрд╛рд▓реВ kube-system).

рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рдХрд╛рд░реНрдп рдХрд░рддреЛ, рддрдерд╛рдкрд┐ рдЕрддреНрдпрд╛рдзрд┐рдХ рдЕрдиреБрдЬреНрдЮреЗрдп рдЖрдгрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд, рдХрд╛рд░рдг рддреЗ DNS рдХреНрд╡реЗрд░реА рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рддреБрдореНрд╣реА рддреАрди рд╕рд▓рдЧ рдЪрд░рдгрд╛рдВрдордзреНрдпреЗ рддреЗ рд╕реБрдзрд╛рд░реВ рд╢рдХрддрд╛.

1. рдлрдХреНрдд DNS рдХреНрд╡реЗрд░реАрдВрдирд╛ рдЕрдиреБрдорддреА рджреНрдпрд╛ рдЖрдд рдЬреЛрдбреВрди рдХреНрд▓рд╕реНрдЯрд░ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector: {} # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

2. рдХреЗрд╡рд│ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ DNS рдХреНрд╡реЗрд░реАрдВрдирд╛ рдЕрдиреБрдорддреА рджреНрдпрд╛ kube-system.

рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рд▓реЗрдмрд▓ рдЬреЛрдбрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ kube-system: kubectl label namespace kube-system namespace=kube-system - рдЖрдгрд┐ рддреЗ рд╡рд╛рдкрд░реВрди рдкреЙрд▓рд┐рд╕реАрдордзреНрдпреЗ рд▓рд┐рд╣рд╛ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector:         # <<<
        matchLabels:             # <<<
          namespace: kube-system # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

3. рдкреЕрд░рд╛рдиреЙрдЗрдб рд▓реЛрдХ рдЖрдгрдЦреА рдкреБрдвреЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ DNS рдХреНрд╡реЗрд░реАрдВрдирд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ DNS рд╕реЗрд╡реЗрдкрд░реНрдпрдВрдд рдорд░реНрдпрд╛рджрд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд kube-system. "рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕ рдЖрдгрд┐ рдкреЙрдбреНрд╕рджреНрд╡рд╛рд░реЗ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛" рд╣рд╛ рд╡рд┐рднрд╛рдЧ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдХрд╕реЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ рддреЗ рд╕рд╛рдВрдЧреЗрд▓.

рджреБрд╕рд░рд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгрдЬреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реНрддрд░рд╛рд╡рд░ DNS рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡реЗрд╕рд╛рдареА рддреЗ рдЙрдШрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.dns
  namespace: default
spec:
  podSelector: {} # <<<
  egress:
  - to:
    - namespaceSelector: {}
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

рд░рд┐рдХрд╛рдореЗ podSelector рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рд╕рд░реНрд╡ рдкреЙрдбреНрд╕ рдирд┐рд╡рдбрддреЗ.

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдкрд╣рд┐рд▓рд╛ рд╕рд╛рдордирд╛ рдЖрдгрд┐ рдирд┐рдпрдо рдХреНрд░рдо

рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдлрд╛рдпрд░рд╡реЙрд▓рдордзреНрдпреЗ, рдкреЕрдХреЗрдЯрд╡рд░реАрд▓ рдХреНрд░рд┐рдпрд╛ (рдЕрдиреБрдорддреА рджреНрдпрд╛ рдХрд┐рдВрд╡рд╛ рдирдХрд╛рд░ рджреНрдпрд╛) рдкрд╣рд┐рд▓реНрдпрд╛ рдирд┐рдпрдорд╛рджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рдЬреНрдпрд╛рдЪреЗ рд╕рдорд╛рдзрд╛рди рд╣реЛрддреЗ. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ, рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдХреНрд░рдо рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА.

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

рддреБрдореНрд╣реА рд╕реНрдЯреНрд░рд┐рдкрд┐рдВрдЧ рдирд┐рдпрдо рд╡рд╛рдкрд░реВрди рд╣реЗ рд╡рд░реНрддрди рдмрджрд▓реВ рд╢рдХрддрд╛.

рд╕реНрдЯреНрд░рд┐рдкрд┐рдВрдЧ рдирд┐рдпрдо ("рдирд╛рдХрд╛рд░")

рдлрд╛рдпрд░рд╡реЙрд▓ рдзреЛрд░рдгреЗ рд╡рд┐рд╢реЗрд╖рдд: рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдкрд░рд╡рд╛рдирдЧреА рдирд╕рд▓реЗрд▓реА рдХреЛрдгрддреАрд╣реА рд░рд╣рджрд╛рд░реА рдирд╛рдХрд╛рд░рддрд╛рдд.

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдХреЛрдгрддреАрд╣реА рдирд╛рдХрд╛рд░рдгреНрдпрд╛рдЪреА рдХреНрд░рд┐рдпрд╛ рдирд╛рд╣реАрддрдерд╛рдкрд┐, рд╕реНрддреНрд░реЛрдд рдкреЙрдбреНрд╕рдЪрд╛ рд░рд┐рдХреНрдд рдЧрдЯ (рдЗрдирдЧреНрд░реЗрд╕) рдирд┐рд╡рдбреВрди рдирд┐рдпрдорд┐рдд (рдкрд░рд╡рд╛рдирдЧреА) рдзреЛрд░рдгрд╛рд╕рд╣ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рд╣реЗ рдзреЛрд░рдг рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рд╕рд░реНрд╡ рдкреЙрдбреНрд╕ рдирд┐рд╡рдбрддреЗ рдЖрдгрд┐ рдпреЗрдгрд╛рд░реЗ рд╕рд░реНрд╡ рдЯреНрд░реЕрдлрд┐рдХ рдирд╛рдХрд╛рд░реВрди рдкреНрд░рд╡реЗрд╢ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдареЗрд╡рддреЗ.

рдЕрд╢рд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ, рддреБрдореНрд╣реА рдиреЗрдорд╕реНрдкреЗрд╕рдордзреВрди рд╕рд░реНрд╡ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд░рд╣рджрд╛рд░реА рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реВ рд╢рдХрддрд╛:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-egress
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рдкреЙрдбреНрд╕рд╡рд░ рд░рд╣рджрд╛рд░реАрд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгрд╛рд░реА рдХреЛрдгрддреАрд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдзреЛрд░рдгреЗ рдпрд╛ рдирд┐рдпрдорд╛рдкреЗрдХреНрд╖рд╛ рдкреНрд░рд╛рдзрд╛рдиреНрдп рдШреЗрддреАрд▓ (рдлрд╛рдпрд░рд╡реЙрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рдирдХрд╛рд░ рдирд┐рдпрдорд╛рдкреВрд░реНрд╡реА рдЕрдиреБрдорддреА рдирд┐рдпрдо рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ).

рд╕рд░реНрд╡рдХрд╛рд╣реА рдкрд░рд╡рд╛рдирдЧреА рджреНрдпрд╛ (рдХреЛрдгрддреНрдпрд╛рд╣реА-рдХреЛрдгрддреНрдпрд╛рд╣реА-рдХреЛрдгрддреНрдпрд╛рд╣реА-рдЕрдиреБрдорддреА рджреНрдпрд╛)

рд╕рд░реНрд╡рд╛рдВрдирд╛ рдЕрдиреБрдорддреА рджреНрдпрд╛ рдзреЛрд░рдг рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд░реАрд▓ рдирдХрд╛рд░ рдзреЛрд░рдгрд╛рд▓рд╛ рд░рд┐рдХреНрдд рдШрдЯрдХрд╛рд╕рд╣ рдкреВрд░рдХ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ ingress:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
  namespace: default
spec:
  podSelector: {}
  ingress: # <<<
  - {}     # <<<
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

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

рдХреЗрд╡рд│ рдкреНрд░рд╡реЗрд╢рд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рдпрдо рдХрдореА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рд╢реЗрдВрдЧрд╛рдВрдЪрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЪ (app:balance) рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ default:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all-to-balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  ingress: 
  - {}
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдЦрд╛рд▓реАрд▓ рдзреЛрд░рдг рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░реАрд▓ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЖрдпрдкреАрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╣ рд╕рд░реНрд╡ рдкреНрд░рд╡реЗрд╢ рдЖрдгрд┐ рдирд┐рд░реНрдЧрдорди рд░рд╣рджрд╛рд░реАрд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
spec:
  podSelector: {}
  ingress:
  - {}
  egress:
  - {}
  policyTypes:
  - Ingress
  - Egress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп
рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдПрдХрд╛рдзрд┐рдХ рдзреЛрд░рдгреЗ рдПрдХрддреНрд░ рдХрд░рдгреЗ

рддреАрди рдкрд╛рддрд│реНрдпрд╛рдВрд╡рд░ рддрд╛рд░реНрдХрд┐рдХ OR рд╡рд╛рдкрд░реВрди рдзреЛрд░рдгреЗ рдПрдХрддреНрд░ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд; рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрдЪреНрдпрд╛ рдкрд░рд╡рд╛рдирдЧреНрдпрд╛ рддреНрдпрд╛рд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╕рд░реНрд╡ рдзреЛрд░рдгрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдШрдЯрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд:

1. рд╢реЗрддрд╛рдд from ╨╕ to рдШрдЯрдХрд╛рдВрдЪреЗ рддреАрди рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд (рд╣реЗ рд╕рд░реНрд╡ OR рд╡рд╛рдкрд░реВрди рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд):

  • namespaceSelector тАФ рд╕рдВрдкреВрд░реНрдг рдиреЗрдорд╕реНрдкреЗрд╕ рдирд┐рд╡рдбрддреЗ;
  • podSelector - рд╢реЗрдВрдЧрд╛ рдирд┐рд╡рдбрддреЗ;
  • ipBlock тАФ рд╕рдмрдиреЗрдЯ рдирд┐рд╡рдбрддреЗ.

рд╢рд┐рд╡рд╛рдп, рдЙрдкрд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдШрдЯрдХрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ (рдЕрдЧрджреА рдПрдХрд╕рд╛рд░рдЦреЗ) from/to рдорд░реНрдпрд╛рджрд┐рдд рдирд╛рд╣реА. рддреЗ рд╕рд░реНрд╡ рддрд╛рд░реНрдХрд┐рдХ OR рджреНрд╡рд╛рд░реЗ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

2. рдкреЙрд▓рд┐рд╕реА рд╡рд┐рднрд╛рдЧрд╛рдЪреНрдпрд╛ рдЖрдд ingress рдЕрдиреЗрдХ рдШрдЯрдХ рдЕрд╕реВ рд╢рдХрддрд╛рдд from (рд▓реЙрдЬрд┐рдХрд▓ OR рджреНрд╡рд╛рд░реЗ рдПрдХрддреНрд░рд┐рдд). рддреНрдпрд╛рдЪрдкреНрд░рдорд╛рдгреЗ, рд╡рд┐рднрд╛рдЧ egress рдЕрдиреЗрдХ рдШрдЯрдХрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕реВ рд╢рдХрддреЛ to (рд╡рд┐рдпреЛрдЧрд╛рдиреЗ рджреЗрдЦреАрд▓ рдПрдХрддреНрд░рд┐рдд):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
  - from:
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

3. рддрд╛рд░реНрдХрд┐рдХ OR рд╕рд╣ рднрд┐рдиреНрди рдзреЛрд░рдгреЗ рджреЗрдЦреАрд▓ рдПрдХрддреНрд░ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд

рдкрдг рддреЗ рдПрдХрддреНрд░ рдХрд░рддрд╛рдирд╛, рддреНрдпрд╛рд╡рд░ рдПрдХ рдорд░реНрдпрд╛рджрд╛ рдЖрд╣реЗ рдирд┐рджрд░реНрд╢рдирд╛рд╕ рдЖрдгреВрди рджрд┐рд▓реЗ рдЦреНрд░рд┐рд╕ рдХреБрдиреА: Kubernetes рдлрдХреНрдд рднрд┐рдиреНрди рдзреЛрд░рдгреЗ рдПрдХрддреНрд░ рдХрд░реВ рд╢рдХрддрд╛рдд policyTypes (Ingress рдХрд┐рдВрд╡рд╛ Egress). рдкреНрд░рд╡реЗрд╢ (рдХрд┐рдВрд╡рд╛ рдмрд╛рд╣реЗрд░ рдкрдбрдгреЗ) рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгрд╛рд░реА рдзреЛрд░рдгреЗ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рдЕрдзрд┐рд▓рд┐рдЦрд┐рдд рдХрд░рддреАрд▓.

рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕рдордзреАрд▓ рд╕рдВрдмрдВрдз

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕рдордзреНрдпреЗ рдорд╛рд╣рд┐рддреА рд╢реЗрдЕрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ. рд╣реЗ рдирдХрд╛рд░ рдзреЛрд░рдг рд╡рд╛рдкрд░реВрди рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреЗ рдЯреНрд░реЕрдлрд┐рдХ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдпреЗрдгрд╛рд░реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрд▓ (рд╡рд░реАрд▓ "рд╕реНрдЯреНрд░рд┐рдкрд┐рдВрдЧ рдирд┐рдпрдо" рдкрд╣рд╛).

рдПрдХрджрд╛ рддреБрдореНрд╣реА рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЕрд╡рд░реЛрдзрд┐рдд рдХреЗрд▓реНрдпрд╛рд╡рд░ (рд╡рд░реАрд▓ "рд╕реНрдЯреНрд░рд┐рдкрд┐рдВрдЧ рдирд┐рдпрдо" рдкрд╣рд╛), рддреБрдореНрд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рд╡рд╛рдкрд░реВрди рдХрдиреЗрдХреНрд╢рдирд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рджреЗрдКрди рдирд╛рдХрд╛рд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдзреЛрд░рдгрд╛рд╕ рдЕрдкрд╡рд╛рдж рдХрд░реВ рд╢рдХрддрд╛. namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: # <<<
        matchLabels:
          namespace: default
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдкрд░рд┐рдгрд╛рдореА, рдирд╛рдорд╡рд┐рд╕реНрддрд╛рд░рд╛рддреАрд▓ рд╕рд░реНрд╡ рд╢реЗрдВрдЧрд╛ default рд╢реЗрдВрдЧрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЕрд╕реЗрд▓ postgres рдиреЗрдорд╕реНрдкреЗрд╕ рдордзреНрдпреЗ database. рдкрдг рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╡реЗрд╢ рдЙрдШрдбрд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓ рддрд░ рдХрд╛рдп postgres рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдлрдХреНрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реЗрдВрдЧрд╛ default?

рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕ рдЖрдгрд┐ рдкреЙрдбреНрд╕рдиреБрд╕рд╛рд░ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛

Kubernetes рдЖрд╡реГрддреНрддреА 1.11 рдЖрдгрд┐ рдЙрдЪреНрдЪ рддреБрдореНрд╣рд╛рд▓рд╛ рдСрдкрд░реЗрдЯрд░ рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ namespaceSelector ╨╕ podSelector рддрд╛рд░реНрдХрд┐рдХ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреЗ. рд╣реЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          namespace: default
      podSelector: # <<<
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рд╣реЗ рдиреЗрд╣рдореАрдЪреНрдпрд╛ OR рдРрд╡рдЬреА AND рдЕрд╕реЗ рдХрд╛ рд▓рд╛рд╡рд▓реЗ рдЬрд╛рддреЗ?

рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА podSelector рд╣рд╛рдпрдлрдирдиреЗ рд╕реБрд░реВ рд╣реЛрдд рдирд╛рд╣реА. YAML рдордзреНрдпреЗ рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рд╣реЛрддреЛ podSelector рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рдореЛрд░ рдЙрднрд╛ рдЖрд╣реЗ namespaceSelector рд╕рдорд╛рди рд╕реВрдЪреА рдШрдЯрдХ рдкрд╣рд╛. рдореНрд╣рдгреВрди, рддреЗ рддрд╛рд░реНрдХрд┐рдХ AND рд╕рд╣ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

рдЖрдзреА рд╣рд╛рдпрдлрди рдЬреЛрдбрдд рдЖрд╣реЗ podSelector рдирд╡реАрди рд╕реВрдЪреА рдШрдЯрдХрд╛рдЪрд╛ рдЙрджрдп рд╣реЛрдИрд▓, рдЬреЛ рдорд╛рдЧреАрд▓ рдШрдЯрдХрд╛рд╕рд╣ рдПрдХрддреНрд░ рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓ namespaceSelector рддрд╛рд░реНрдХрд┐рдХ OR рд╡рд╛рдкрд░рдгреЗ.

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓рд╕рд╣ рд╢реЗрдВрдЧрд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡ рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕рдордзреНрдпреЗ, рд░рд┐рдХреНрдд рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: {}
      podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд▓реЗрдмрд▓реЗ I рд╕рд╣ рдПрдХрддреНрд░ рдпреЗрддрд╛рдд

рд▓реЙрдЬрд┐рдХрд▓ OR рд╡рд╛рдкрд░реВрди рдПрдХрд╛рдзрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рд╣реЛрд╕реНрдЯ, рдиреЗрдЯрд╡рд░реНрдХ, рдЧрдЯ) рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдпрд░рд╡реЙрд▓рдЪреЗ рдирд┐рдпрдо рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдкреЕрдХреЗрдЯ рд╕реНрддреНрд░реЛрдд рдЬреБрд│рд▓реНрдпрд╛рд╕ рдЦрд╛рд▓реАрд▓ рдирд┐рдпрдо рдХрд╛рд░реНрдп рдХрд░реЗрд▓ Host_1 рдХрд┐рдВрд╡рд╛ Host_2:

| Source | Destination | Service | Action |
| ----------------------------------------|
| Host_1 | Subnet_A    | HTTPS   | Allow  |
| Host_2 |             |         |        |
| ----------------------------------------|

рддреНрдпрд╛рдЙрд▓рдЯ, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рд╡рд┐рд╡рд┐рдз рд▓реЗрдмрд▓реЗ рдордзреНрдпреЗ podSelector рдХрд┐рдВрд╡рд╛ namespaceSelector рддрд╛рд░реНрдХрд┐рдХ AND рд╕рд╣ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЦрд╛рд▓реАрд▓ рдирд┐рдпрдо рдЕрд╢рд╛ рдкреЙрдбреНрд╕ рдирд┐рд╡рдбрддреАрд▓ рдЬреНрдпрд╛рдд рджреЛрдиреНрд╣реА рд▓реЗрдмрд▓реЗ рдЖрд╣реЗрдд, role=db ╨Ш version=v2:

podSelector:
  matchLabels:
    role: db
    version: v2

рд╣реЗрдЪ рддрд░реНрдХ рд╕рд░реНрд╡ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдСрдкрд░реЗрдЯрд░рдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ: рдзреЛрд░рдг рд▓рдХреНрд╖реНрдп рдирд┐рд╡рдбрдХ, рдкреЙрдб рдирд┐рд╡рдбрдХ рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдирд┐рд╡рдбрдХ.

рд╕рдмрдиреЗрдЯ рдЖрдгрд┐ IP рдкрддреНрддреЗ (IPBlocks)

рдлрд╛рдпрд░рд╡реЙрд▓ рдиреЗрдЯрд╡рд░реНрдХрдЪреЗ рд╡рд┐рднрд╛рдЬрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА VLAN, IP рдкрддреНрддреЗ рдЖрдгрд┐ рд╕рдмрдиреЗрдЯ рд╡рд╛рдкрд░рддрд╛рдд.

Kubernetes рдордзреНрдпреЗ, IP рдкрддреНрддреЗ рдкреЙрдбреНрд╕рдирд╛ рдЖрдкреЛрдЖрдк рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рддреЗ рд╡рд╛рд░рдВрд╡рд╛рд░ рдмрджрд▓реВ рд╢рдХрддрд╛рдд, рдореНрд╣рдгреВрди рд▓реЗрдмрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдордзреНрдпреЗ рдкреЙрдбреНрд╕ рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддрд╛рдд.

рд╕рдмрдиреЗрдЯ (ipBlocks) рдЗрдирдХрдорд┐рдВрдЧ (рдЗрдирдЧреНрд░реЗрд╕) рдХрд┐рдВрд╡рд╛ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ (рдПрдЧреНрд░реЗрд╕) рдмрд╛рд╣реНрдп (рдЙрддреНрддрд░-рджрдХреНрд╖рд┐рдг) рдХрдиреЗрдХреНрд╢рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдирд╛ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╣реЗ рдзреЛрд░рдг рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рд╕рд░реНрд╡ рдкреЙрдбреНрд╕рд╕рд╛рдареА рдЙрдШрдбрддреЗ default Google DNS рд╕реЗрд╡реЗрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-dns
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 8.8.8.8/32
    ports:
    - protocol: UDP
      port: 53

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рддреАрд▓ рд░рд┐рдХрд╛рдореНрдпрд╛ рдкреЙрдб рд╕рд┐рд▓реЗрдХреНрдЯрд░рдЪрд╛ рдЕрд░реНрде "рдиреЗрдорд╕реНрдкреЗрд╕рдордзреАрд▓ рд╕рд░реНрд╡ рдкреЙрдб рдирд┐рд╡рдбрд╛."

рд╣реЗ рдзреЛрд░рдг рдХреЗрд╡рд│ 8.8.8.8 рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢рд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ; рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА IP рд╡рд░ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЖрд╣реЗ. рддрд░, рдереЛрдбрдХреНрдпрд╛рдд, рддреБрдореНрд╣реА рдЕрдВрддрд░реНрдЧрдд Kubernetes DNS рд╕реЗрд╡реЗрдЪрд╛ рдкреНрд░рд╡реЗрд╢ рдЕрд╡рд░реЛрдзрд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдЬреВрдирд╣реА рддреЗ рдЙрдШрдбрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╣реЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕реВрдЪрд┐рдд рдХрд░рд╛.

рд╕рд╣рд╕рд╛ ipBlocks ╨╕ podSelectors рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдп рдЖрд╣реЗрдд, рдХрд╛рд░рдг рдкреЙрдбреНрд╕рдЪреЗ рдЕрдВрддрд░реНрдЧрдд IP рдкрддреНрддреЗ рдпрд╛рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд ipBlocks. рд╕реВрдЪрд┐рдд рдХрд░реВрди рдЕрдВрддрд░реНрдЧрдд рдЖрдпрдкреА рдкреЙрдбреНрд╕, рддреБрдореНрд╣реА рдпрд╛ рдкрддреНрддреНрдпрд╛рдВрд╕рд╣ рдкреЙрдбреНрд╕рд╢реА/рд╡рд░реВрди рдХрдиреЗрдХреНрд╢рдирд▓рд╛ рдЕрдиреБрдорддреА рджреНрдпрд╛рд▓. рд╕рд░рд╛рд╡ рдордзреНрдпреЗ, рдХреЛрдгрддрд╛ IP рдкрддреНрддрд╛ рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд│рдгрд╛рд░ рдирд╛рд╣реА, рдореНрд╣рдгреВрдирдЪ рддреЗ рдкреЙрдбреНрд╕ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рдирдпреЗрдд.

рдкреНрд░рддрд┐-рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди, рдЦрд╛рд▓реАрд▓ рдзреЛрд░рдгрд╛рдордзреНрдпреЗ рд╕рд░реНрд╡ IP рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рдЗрддрд░ рд╕рд░реНрд╡ рдкреЙрдбреНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдкреЙрдбреНрд╕рдЪреЗ рдЕрдВрддрд░реНрдЧрдд IP рдкрддреНрддреЗ рд╡рдЧрд│реВрди рддреБрдореНрд╣реА рдХреЗрд╡рд│ рдмрд╛рд╣реНрдп IP рд╡рд░ рдкреНрд░рд╡реЗрд╢ рдЙрдШрдбреВ рд╢рдХрддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдордЪреНрдпрд╛ рдкреЙрдбрдЪреЗ рд╕рдмрдиреЗрдЯ 10.16.0.0/14 рдЕрд╕рд▓реНрдпрд╛рд╕:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 10.16.0.0/14

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдкреЛрд░реНрдЯ рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓

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

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
      - port: 443      # <<<
        protocol: TCP  # <<<
      - port: 80       # <<<
        protocol: TCP  # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдирд┐рд╡рдбрдХрд░реНрддрд╛ ports рдмреНрд▓реЙрдХрдордзреАрд▓ рд╕рд░реНрд╡ рдШрдЯрдХрд╛рдВрдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ to рдХрд┐рдВрд╡рд╛ from, рдЬреНрдпрд╛рдордзреНрдпреЗ рдЖрд╣реЗ. рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рд╕рдВрдЪрд╛рдВрд╕рд╛рдареА рднрд┐рдиреНрди рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рд╛ ingress рдХрд┐рдВрд╡рд╛ egress рд╕рд╣ рдЕрдиреЗрдХ рдЙрдкрд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ to рдХрд┐рдВрд╡рд╛ from рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдВрджрдгреАрдордзреНрдпреЗ рддреБрдордЪреЗ рдкреЛрд░реНрдЯ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    ports:             # <<<
     - port: 443       # <<<
       protocol: TCP   # <<<
  - from:
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
     - port: 80        # <<<
       protocol: TCP   # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХрд╛рдВрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдбреАрдлреЙрд▓реНрдЯ рдкреЛрд░реНрдЯ рдСрдкрд░реЗрд╢рди:

  • рддреБрдореНрд╣реА рдкреЛрд░реНрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдкреВрд░реНрдгрдкрдгреЗ рд╡рдЧрд│рд▓реНрдпрд╛рд╕ (ports), рдпрд╛рдЪрд╛ рдЕрд░реНрде рд╕рд░реНрд╡ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрдгрд┐ рд╕рд░реНрд╡ рдкреЛрд░реНрдЯ;
  • рдЖрдкрдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╡рдЧрд│рд▓реНрдпрд╛рд╕ (protocol), рдпрд╛рдЪрд╛ рдЕрд░реНрде TCP;
  • рдЖрдкрдг рдкреЛрд░реНрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╡рдЧрд│рд▓реНрдпрд╛рд╕ (port), рдпрд╛рдЪрд╛ рдЕрд░реНрде рд╕рд░реНрд╡ рдкреЛрд░реНрдЯ.

рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рд░рд╛рд╡: рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпрд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рд░рд╛рд╣реВ рдирдХрд╛, рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛.

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рддреБрдореНрд╣реА рдкреЙрдб рдкреЛрд░реНрдЯ рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдкреЛрд░реНрдЯ рдирд╛рд╣реА (рдпрд╛рд╡рд┐рд╖рдпреА рдкреБрдвреАрд▓ рдкрд░рд┐рдЪреНрдЫреЗрджрд╛рдд рдЕрдзрд┐рдХ).

рдкреЙрдбреНрд╕ рдХрд┐рдВрд╡рд╛ рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА рдзреЛрд░рдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрд╣реЗрдд рдХрд╛?

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

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рдПрдЦрд╛рджреА рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯ 80 рдРрдХрдд рдЕрд╕реЗрд▓, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪреНрдпрд╛ рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рдкреЛрд░реНрдЯ 8080 рд╡рд░ рд░рд╣рджрд╛рд░реА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдд рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдкреЙрд▓рд┐рд╕реАрдордзреНрдпреЗ рдирдХреНрдХреА 8080 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдЕрд╢реА рдпрдВрддреНрд░рдгрд╛ рд╕рдмрдСрдкреНрдЯрд┐рдорд▓ рдорд╛рдирд▓реА рдкрд╛рд╣рд┐рдЬреЗ: рдЬрд░ рд╕реЗрд╡реЗрдЪреА рдЕрдВрддрд░реНрдЧрдд рд░рдЪрдирд╛ (рдЬреНрдпрд╛ рдкреЛрд░реНрдЯрдЪреЗ рдкреЙрдб рдРрдХрддрд╛рдд) рдмрджрд▓рд▓реНрдпрд╛рд╕, рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛рд╡реА рд▓рд╛рдЧрддреАрд▓.

рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рд╡рд╛рдкрд░реВрди рдирд╡реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рджреГрд╖реНрдЯреАрдХреЛрди (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЦрд╛рд▓реА Istio рдмрджреНрджрд▓ рдкрд╣рд╛ - рдЕрдВрджрд╛рдЬреЗ рднрд╛рд╖рд╛рдВрддрд░.) рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдкреНрд░рд╡реЗрд╢ рдЖрдгрд┐ рдирд┐рд░реНрдЧрдорди рдпрд╛ рджреЛрдиреНрд╣реАрдВрдЪреА рдиреЛрдВрджрдгреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХрд╛?

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

рддрдерд╛рдкрд┐, рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд, рдЖрдкрдг рдПрдХ рдХрд┐рдВрд╡рд╛ рджреЛрдиреНрд╣реА рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢рд╛рдВрдордзреНрдпреЗ рдХрдиреЗрдХреНрд╢рдирд▓рд╛ рдЕрдиреБрдорддреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рдзреЛрд░рдгрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рд░рд╛рд╣реВ рд╢рдХрддрд╛.

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

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

рдЦрд╛рд▓реА рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХрд┐рдВрд╡рд╛ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдкрд╣рд╛.

рдиреЛрдВрджреА

Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рд░рд╣рджрд╛рд░реА рд▓реЙрдЧ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реАрдд. рд╣реЗ рдзреЛрд░рдг рдЙрджреНрджрд┐рд╖реНрдЯрд╛рдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░рдд рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреЗ рдХрдареАрдг рдХрд░рддреЗ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдЧреБрдВрддрд╛рдЧреБрдВрдд рдХрд░рддреЗ.

рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рдВрд╡рд░реАрд▓ рд░рд╣рджрд╛рд░реАрдЪреЗ рдирд┐рдпрдВрддреНрд░рдг

Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдЧреНрд░реЗрд╕ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдкреВрд░реНрдг рдкрд╛рддреНрд░ рдбреЛрдореЗрди рдирд╛рд╡ (DNS) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдд тАЛтАЛрдирд╛рд╣реАрдд. рдирд┐рд╢реНрдЪрд┐рдд IP рдкрддреНрддрд╛ рдирд╕рд▓реЗрд▓реНрдпрд╛ рдмрд╛рд╣реНрдп рдЧрдВрддрд╡реНрдпрд╕реНрдерд╛рдирд╛рдВрд╡рд░ рд░рд╣рджрд╛рд░реА рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛рдирд╛ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ рд▓рдХреНрд╖рдгреАрдп рдЧреИрд░рд╕реЛрдп рд╣реЛрддреЗ (рдЬрд╕реЗ рдХреА aws.com).

рдкреЙрд▓рд┐рд╕реА рдЪреЗрдХ

рдлрд╛рдпрд░рд╡реЙрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рдЪреЗрддрд╛рд╡рдгреА рджреЗрддреАрд▓ рдХрд┐рдВрд╡рд╛ рдЪреБрдХреАрдЪреЗ рдзреЛрд░рдг рд╕реНрд╡реАрдХрд╛рд░рдгреНрдпрд╛рд╕ рдирдХрд╛рд░рд╣реА рджреЗрддреАрд▓. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрд╛рд╣реА рдкрдбрддрд╛рд│рдгреА рджреЗрдЦреАрд▓ рдХрд░рддрд╛рдд. kubectl рджреНрд╡рд╛рд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдг рд╕реЗрдЯ рдХрд░рддрд╛рдирд╛, Kubernetes рддреЗ рдЪреБрдХреАрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдШреЛрд╖рд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рддреЗ рд╕реНрд╡реАрдХрд╛рд░рдгреНрдпрд╛рд╕ рдирдХрд╛рд░ рджреЗрдК рд╢рдХрддрд╛рдд. рдЗрддрд░ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, Kubernetes рдкреЙрд▓рд┐рд╕реА рдШреЗрддреАрд▓ рдЖрдгрд┐ рдЧрд╣рд╛рд│ рддрдкрд╢реАрд▓рд╛рдВрд╕рд╣ рддреЗ рднрд░рддреАрд▓. рддреЗ рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд:

kubernetes get networkpolicy <policy-name> -o yaml

рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдЕрдЪреВрдХ рдирд╛рд╣реА рдЖрдгрд┐ рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рддреНрд░реБрдЯреА рдЪреБрдХрд╡реВ рд╢рдХрддрд╛рдд.

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

Kubernetes рд╕реНрд╡рддрдГ рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдХреЗрд╡рд│ рдПрдХ API рдЧреЗрдЯрд╡реЗ рдЖрд╣реЗ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ (CNI) рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдгрд╛рд▓реАрд╡рд░ рдирд┐рдпрдВрддреНрд░рдгрд╛рдЪрд╛ рднрд╛рд░ рд╕реЛрдкрд╡рддреЛ. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдпреЛрдЧреНрдп CNI рдирд┐рдпреБрдХреНрдд рди рдХрд░рддрд╛ рдзреЛрд░рдгреЗ рд╕реЗрдЯ рдХрд░рдгреЗ рд╣реЗ рдлрд╛рдпрд░рд╡реЙрд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдлрд╛рдпрд░рд╡реЙрд▓рд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рди рдХрд░рддрд╛ рдкреЙрд▓рд┐рд╕реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗрдЪ рдЖрд╣реЗ. рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╕рднреНрдп CNI рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдХреНрд▓рд╛рдЙрдбрдордзреНрдпреЗ рд╣реЛрд╕реНрдЯ рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ. (рдЖрдкрдг рдкреНрд░рджрд╛рддреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдпреЗрдереЗ - рдЕрдВрджрд╛рдЬреЗ рдЯреНрд░рд╛рдиреНрд╕.), рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рд╕рдХреНрд╖рдо рдХрд░рд╛ рдЬреА рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА CNI рд╕реЗрдЯ рдХрд░реЗрд▓.

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рддреБрдореНрд╣реА рдпреЛрдЧреНрдп рдорджрддрдиреАрд╕ CNI рд╢рд┐рд╡рд╛рдп рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдг рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╕ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рддреБрдореНрд╣рд╛рд▓рд╛ рдЪреЗрддрд╛рд╡рдгреА рджреЗрдгрд╛рд░ рдирд╛рд╣реАрдд.

рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХреА рд╕реНрдЯреЗрдЯрд▓реЗрд╕?

рдорд▓рд╛ рдЖрдврд│рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕реАрдПрдирдЖрдп рд╕реНрдЯреЗрдЯрдлреБрд▓ рдЖрд╣реЗрдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХреЕрд▓рд┐рдХреЛ рд▓рд┐рдирдХреНрд╕ рдХреЙрдиреНрдЯреНрд░реЕрдХ рд╡рд╛рдкрд░рддреЗ). рд╣реЗ рдкреЙрдбрд▓рд╛ рддреЗ рдкреБрдиреНрд╣рд╛ рд╕реНрдерд╛рдкрд┐рдд рди рдХрд░рддрд╛ рд╕реБрд░реВ рдХреЗрд▓реЗрд▓реНрдпрд╛ TCP рдХрдиреЗрдХреНрд╢рдирд╡рд░ рдкреНрд░рддрд┐рд╕рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рддрдерд╛рдкрд┐, рдорд▓рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдорд╛рдирдХрд╛рдВрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдирд╛рд╣реА рдЬреЗ рд╕реНрдЯреЗрдЯрдлреБрд▓рдиреЗрд╕рдЪреА рд╣рдореА рджреЗрдИрд▓.

рдкреНрд░рдЧрдд рд╕реБрд░рдХреНрд╖рд╛ рдзреЛрд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рд╕реБрд░рдХреНрд╖рд╛ рдзреЛрд░рдгрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рд╣реА рдорд╛рд░реНрдЧ рдпреЗрдереЗ рдЖрд╣реЗрдд:

  1. рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдкреЕрдЯрд░реНрди рд╕реЗрд╡рд╛ рд╕реНрддрд░рд╛рд╡рд░ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдЖрдгрд┐ рд░рд╣рджрд╛рд░реА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди рдЖрдкрдг рдШреЗрдК рд╢рдХрддреЛ рдЗрд╕реНрдЯрд┐рдУ.
  2. рдХрд╛рд╣реА CNI рд╡рд┐рдХреНрд░реЗрддреНрдпрд╛рдВрдиреА Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪреНрдпрд╛ рдкрд▓реАрдХрдбреЗ рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреА рд╕рд╛рдзрдиреЗ рд╡рд╛рдврд╡рд▓реА рдЖрд╣реЗрдд.
  3. рддреБрдлрд┐рди рдУрд░рдХрд╛ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгрд╛рдВрдЪреА рджреГрд╢реНрдпрдорд╛рдирддрд╛ рдЖрдгрд┐ рдСрдЯреЛрдореЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ.

Tufin Orca рдкреЕрдХреЗрдЬ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ (рдЖрдгрд┐ рд╡рд░реАрд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрдЪрд╛ рд╕реНрд░реЛрдд рдЖрд╣реЗ).

рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд╣рд┐рддреА

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

Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдзреЛрд░рдгреЗ рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдЪреЗ рд╡рд┐рднрд╛рдЬрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╕рдВрдЪ рджреЗрддрд╛рдд, рдкрд░рдВрддреБ рддреЗ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рдиреА рдирд╕рддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдд рдЕрдиреЗрдХ рд╕реВрдХреНрд╖реНрдорддрд╛ рдЕрд╕рддрд╛рдд. рдпрд╛ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдореБрд│реЗ, рдорд▓рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рдЕрдиреЗрдХ рд╡рд┐рджреНрдпрдорд╛рди рдХреНрд▓рд╕реНрдЯрд░ рдзреЛрд░рдгреЗ рдмрдЧреНрдЧреА рдЖрд╣реЗрдд. рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреНрдпрд╛ рд╕рдВрднрд╛рд╡реНрдп рдЙрдкрд╛рдпрд╛рдВрдордзреНрдпреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдзреЛрд░рдг рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рд╡рд┐рднрд╛рдЬрди рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ.

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдХрд╛рд╣реА рдкреНрд░рд╢реНрдирд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдд рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рднреЗрдбрд╕рд╛рд╡рдгрд╛рд▒реНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░реЗрд▓.

рдЕрдиреБрд╡рд╛рджрдХрд╛рдХрдбреВрди рдкреБрдирд╢реНрдЪ

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛