рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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

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

Kubernetes рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрд░ рдЕрдиреНрдпреЛрд▓рдорд╛ рдкрд░реЗрдХрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрдЯреАрдХрд░рдг рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдиреАрддрд┐ рд╣реБрди рд╕рдХреНрдЫ: рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реНред

рдпреЛ рдЧрд╛рдЗрдбрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдЖрдиреНрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ; рддрд┐рдиреАрд╣рд░реВ рдирд┐рдпрдорд┐рдд рдлрд╛рдпрд░рд╡рд╛рд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдорд╣рд░реВрдмрд╛рдЯ рдХрд╕рд░реА рднрд┐рдиреНрди рдЫрдиреН рднрдиреЗрд░ рдмреБрдЭреНрдиреБрд╣реЛрд╕реНред рдпрд╕рд▓реЗ рдХреЗрд╣реА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрдирд┐ рд╕рдореЗрдЯреНрдЫ рд░ Kubernetes рдорд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдорджреНрджрдд рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВ

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

рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрд▓реЗ рдкреЛрдбрд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдЮреНрдЪрд╛рд░рд▓рд╛рдИ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫ

Kubernetes рдорд╛ рд╡рд░реНрдХрд▓реЛрдбрд╣рд░реВ рдкреЛрдбрд╣рд░реВрдорд╛ рд╡рд┐рддрд░рдг рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рдорд╛ рдПрдХ рд╡рд╛ рдзреЗрд░реИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╕рдБрдЧреИ рддреИрдирд╛рдд рд╣реБрдиреНрдЫрдиреНред 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

(рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: рдпреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯ, рд╕рдмреИ рдкрдЫрд┐рд▓реНрд▓рд╛ рд╕рдорд╛рдирд╣рд░реВ рдЬрд╕реНрддреИ, рдиреЗрдЯрд┐рдн Kubernetes рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЛрдЗрди, рддрд░ Tufin Orca рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╣реЛ, рдЬреБрди рдореВрд▓ рд▓реЗрдЦрдХреЛ рд▓реЗрдЦрдХрдХреЛ рдХрдореНрдкрдиреАрджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рдЬреБрди рд╕рд╛рдордЧреНрд░реАрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЫред)

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

YAML рдорд╛ рдиреАрддрд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН kubectlрдпрд╕рд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди:

kubectl create -f policy.yaml

рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛

Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд▓реЗ рдЪрд╛рд░ рддрддреНрд╡рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:

  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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп
рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рд╕рдмреИ рдЪрд╛рд░ рддрддреНрд╡рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рдпреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдорд╛рддреНрд░ рд╣реЛ podSelector, рдЕрдиреНрдп рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЗрдЪреНрдЫрд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЫреЛрдбреНрдиреБрд╣реЛрд╕реН policyTypes, рдиреАрддрд┐рд▓рд╛рдИ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░рд┐рдиреЗрдЫ:

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

рдЧрд▓реНрддреАрд╣рд░реВрдмрд╛рдЯ рдмрдЪреНрди рдо рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБ рд╕рдзреИрдВ рд╕реНрдкрд╖реНрдЯ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН policyTypes.

рдорд╛рдерд┐рдХреЛ рддрд░реНрдХ рдЕрдиреБрд╕рд╛рд░, рдпрджрд┐ рдорд╛рдкрджрдгреНрдбрд╣рд░реВ ingress рд░ / рд╡рд╛ egress рд╣рдЯрд╛рдЗрдпреЛ, рдиреАрддрд┐рд▓реЗ рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВрд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗрдЫ (рддрд▓ "рд╕реНрдЯреНрд░рд┐рдкрд┐рдЩ рдирд┐рдпрдо" рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН)ред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдиреАрддрд┐ рдЕрдиреБрдорддрд┐ рдЫ

рдпрджрд┐ рдХреБрдиреИ рдиреАрддрд┐рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, Kubernetes рд▓реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╕рдмреИ рдкреЛрдбрд╣рд░реВрд▓реЗ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдЖрджрд╛рдирдкреНрд░рджрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдпреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпрдмрд╛рдЯ рдкреНрд░рддрд┐рд╡рдиреНрдзрд╛рддреНрдордХ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫ, рддрд░ рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ 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 рдиреАрддрд┐рдорд╛ рдирд╛рдорд╕реНрдерд╛рдирдмрд╛рдЯ рдкреЛрдбрд╣рд░реВ рдЪрдпрди рдЧрд░реНрдиреЗрдЫ рдЬреБрди рдиреАрддрд┐рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ (рдпрд╕рд▓рд╛рдИ рдЕрд░реНрдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕рдмрд╛рдЯ рдкреЛрдбрд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ)ред

рддреНрдпрд╕реНрддреИ, рдкреЛрдбрд╕реЗрд▓реЗрдХреНрдЯрд░рд╣рд░реВ рдкреНрд░рд╡реЗрд╢ рд░ рдирд┐рдХрд╛рд╕ рдмреНрд▓рдХрд╣рд░реВрдорд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЖрдлреНрдиреИ рдиреЗрдорд╕реНрдкреЗрд╕рдмрд╛рдЯ рдкреЛрдбрд╣рд░реВ рдорд╛рддреНрд░ рдЪрдпрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрдмрд╕рдореНрдо рддрдкрд╛рдИрдВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреБрд╣реБрдиреНрди 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 рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рд▓реЗрдмрд▓рд╣рд░реВ

рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдмреЗрд░рдиреЗрдЯ рд╡рд╕реНрддреБрд╣рд░реВрдорд╛ рдЖрдлреВ рдЕрдиреБрдХреВрд▓ рд▓реЗрдмрд▓рд╣рд░реВ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ рдкреЛрдбрд╣рд░реВ рд░ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВред рд▓реЗрдмрд▓ (рд▓реЗрдмрд▓ - рдЯреНрдпрд╛рдЧрд╣рд░реВ) рдХреНрд▓рд╛рдЙрдбрдорд╛ рдЯреНрдпрд╛рдЧрд╣рд░реВрдХреЛ рдмрд░рд╛рдмрд░ рд╣реЛред 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп
рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рддрдкрд╛рдИрдВрд▓реЗ 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдЕрдиреНрддрд┐рдо рддрддреНрд╡ 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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 рдирд╛рдорд╕реНрдерд╛рдирдорд╛ рд╕рдмреИ рдкреЛрдбрд╣рд░реВ рдЪрдпрди рдЧрд░реНрджрдЫред

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдкрд╣рд┐рд▓реЛ рдЦреЗрд▓ рд░ рдирд┐рдпрдо рдХреНрд░рдо

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

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

рддрдкрд╛рдИрдВ рд╕реНрдЯреНрд░рд┐рдкрд┐рдЩ рдирд┐рдпрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╕реНрдЯреНрд░рд┐рдкрд┐рдЩ рдирд┐рдпрдо ("рдЕрд╕реНрд╡реАрдХрд╛рд░")

рдлрд╛рдпрд░рд╡рд╛рд▓ рдиреАрддрд┐рд╣рд░реВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреБрдиреИ рдкрдирд┐ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫ рдЬреБрди рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдЕрдиреБрдорддрд┐ рдЫреИрдиред

Kubernetes рдорд╛ рдХреБрдиреИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд╛рд░реНрдп рдЫреИрдирддрдерд╛рдкрд┐, рд╕реНрд░реЛрдд рдкреЛрдбрд╣рд░реВрдХреЛ рдЦрд╛рд▓реА рд╕рдореВрд╣ (рдЗрдирдЧреНрд░реЗрд╕) рдЪрдпрди рдЧрд░реЗрд░ рдирд┐рдпрдорд┐рдд (рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ) рдиреАрддрд┐рдХреЛ рд╕рд╛рде рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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

рддреНрдпрд╕реНрддреИ рдЧрд░реА, рддрдкрд╛рдИрдВрд▓реЗ рдирд╛рдо рд╕реНрдерд╛рдирдмрд╛рдЯ рд╕рдмреИ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдкреНрд░рддрд┐рдмрдиреНрдз рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдкреЛрдбрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ рдХреБрдиреИ рдкрдирд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреАрддрд┐рд╣рд░реВрд▓реЗ рдпрд╕ рдирд┐рдпрдорд▓рд╛рдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджрд┐рдиреЗрдЫ (рдлрд╛рдпрд░рд╡рд╛рд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдирд┐рдпрдо рдЕрдШрд┐ рдЕрдиреБрдорддрд┐ рдирд┐рдпрдо рдердкреНрдиреБ рдЬрд╕реНрддреИ)ред

рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН (рдХреБрдиреИ рдкрдирд┐-рдХреБрдиреИ рдкрдирд┐-рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН)

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

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдмрд╛рдЯ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдирд╛рдорд╕реНрдерд╛рдирдорд╛ рдХреБрдиреИ рдкрдирд┐ рдкреЛрдбрдорд╛ рд╕рдмреИ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ (рд░ рд╕рдмреИ рдЖрдИрдкреА) рдорд╛ рд╕рдмреИ рдкреЛрдбрд╣рд░реВ 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдирд┐рдореНрди рдиреАрддрд┐рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд╣рд┐рд░рдХреЛ рдХреБрдиреИ рдкрдирд┐ IP рдорд╛ рдкрд╣реБрдБрдЪ рд╕рд╣рд┐рдд рд╕рдмреИ рдкреНрд░рд╡реЗрд╢ рд░ рдирд┐рд╕реНрдХрдиреЗ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ:

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп
рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдмрд╣реБ рдиреАрддрд┐рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджреИ

рдиреАрддрд┐рд╣рд░реВ рддреАрди рддрд╣рдорд╛ рддрд╛рд░реНрдХрд┐рдХ рд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрдпреБрдХреНрдд рдЫрдиреН; рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдбрдХреЛ рдЕрдиреБрдорддрд┐рд╣рд░реВ рдпрд╕рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдиреЗ рд╕рдмреИ рдиреАрддрд┐рд╣рд░реВрдХреЛ рд╡рд┐рдЪреНрдЫреЗрдж рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ:

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдирд╛рдорд╕реНрдерд╛рдирдорд╛ рд╕рдмреИ рдкреЛрдбрд╣рд░реВ 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдХрд┐рди рдпрд╕рд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

I рд╕рдБрдЧ рдзреЗрд░реИ рд▓реЗрдмрд▓рд╣рд░реВ рдорд┐рд▓реНрдЫ

рдзреЗрд░реИ рд╡рд╕реНрддреБрд╣рд░реВ (рд╣реЛрд╕реНрдЯрд╣рд░реВ, рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВ, рд╕рдореВрд╣рд╣рд░реВ) рд╕рдВрдЧ рдлрд╛рдпрд░рд╡рд╛рд▓рдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдорд╣рд░реВ рддрд╛рд░реНрдХрд┐рдХ OR рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрдпреБрдХреНрдд рдЫрдиреНред рдпрджрд┐ рдкреНрдпрд╛рдХреЗрдЯ рд╕реНрд░реЛрдд рдореЗрд▓ рдЦрд╛рдиреНрдЫ рднрдиреЗ рдирд┐рдореНрди рдирд┐рдпрдорд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ Host_1 рд╡рд╛ Host_2:

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

рдпрд╕рдХреЛ рд╡рд┐рдкрд░рд┐рдд, Kubernetes рдорд╛ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдмрд▓рд╣рд░реВ podSelector рд╡рд╛ namespaceSelector рддрд╛рд░реНрдХрд┐рдХ AND рд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди рдирд┐рдпрдорд▓реЗ рджреБрд╡реИ рд▓реЗрдмрд▓ рднрдПрдХрд╛ рдкреЛрдбрд╣рд░реВ рдЪрдпрди рдЧрд░реНрдиреЗрдЫ, role=db ╨Ш version=v2:

podSelector:
  matchLabels:
    role: db
    version: v2

рдПрдЙрдЯреИ рддрд░реНрдХ рд╕рдмреИ рдкреНрд░рдХрд╛рд░рдХрд╛ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ: рдиреАрддрд┐ рд▓рдХреНрд╖реНрдп рдЪрдпрдирдХрд░реНрддрд╛рд╣рд░реВ, рдкреЛрдб рдЪрдпрдирдХрд░реНрддрд╛рд╣рд░реВ, рд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдЪрдпрдирдХрд░реНрддрд╛рд╣рд░реВред

рд╕рдмрдиреЗрдЯ рд░ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ (IPBlocks)

рдлрд╛рдпрд░рд╡рд╛рд▓рд╣рд░реВрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЦрдгреНрдб рдЧрд░реНрди VLANs, 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдпрд╕ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЦрд╛рд▓реА рдкреЛрдб рдЪрдпрдирдХрд░реНрддрд╛рдХреЛ рдЕрд░реНрде "рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рд╕рдмреИ рдкреЛрдбрд╣рд░реВ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред"

рдпреЛ рдиреАрддрд┐рд▓реЗ 8.8.8.8 рдорд╛ рдорд╛рддреНрд░ рдкрд╣реБрдБрдЪ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ; рдХреБрдиреИ рдкрдирд┐ рдЕрдиреНрдп рдЖрдИрдкреА рдкрд╣реБрдБрдЪ рдирд┐рд╖реЗрдзрд┐рдд рдЫред рддреНрдпрд╕реЛрднрдП, рд╕рдВрдХреНрд╖реЗрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдиреНрддрд░рд┐рдХ Kubernetes DNS рд╕реЗрд╡рд╛рдорд╛ рдкрд╣реБрдБрдЪ рдЕрд╡рд░реБрджреНрдз рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЕрдЭреИ рдпрд╕рд▓рд╛рдИ рдЦреЛрд▓реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд╕рдВрдХреЗрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ ipBlocks ╨╕ podSelectors рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдкрдорд╛ рдЕрдирдиреНрдп рдЫрдиреН, рдХрд┐рдирдХрд┐ рдкреЛрдбрд╣рд░реВрдХреЛ рдЖрдиреНрддрд░рд┐рдХ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди ipBlocksред рд╕рдВрдХреЗрдд рдЧрд░реЗрд░ рдЖрдиреНрддрд░рд┐рдХ рдЖрдИрдкреА рдкреЛрдбрд╣рд░реВ, рддрдкрд╛рдИрдВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВрд╕рдБрдЧ рдкреЛрдбрд╣рд░реВрдорд╛/рдмрд╛рдЯ рдЬрдбрд╛рдирд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реБрдиреЗрдЫред рдЕрднреНрдпрд╛рд╕рдорд╛, рддрдкрд╛рдИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рдХреБрди рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ, рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВ рдкреЛрдбрд╣рд░реВ рдЪрдпрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реБрдБрджреИрдиред

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

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рддрдкрд╛рдИрдВ рдкреЛрдбрд╣рд░реВрдХреЛ рдЖрдиреНрддрд░рд┐рдХ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдмрд╛рд╣реЗрдХ, рдмрд╛рд╣реНрдп рдЖрдИрдкреАрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рдкрд╣реБрдБрдЪ рдЦреЛрд▓реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдИрдВрдХреЛ рдкреЛрдбрдХреЛ рд╕рдмрдиреЗрдЯ 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдкреЛрд░реНрдЯ рд░ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВ

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

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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдЪрдпрдирдХрд░реНрддрд╛ 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

рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреЛрд░реНрдЯ рд╕рдЮреНрдЪрд╛рд▓рди:

  • рдпрджрд┐ рддрдкрд╛рдИрдБрд▓реЗ рдкреЛрд░реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЫреЛрдбреНрдиреБрднрдпреЛ рднрдиреЗ (ports), рдпрд╕рдХреЛ рдорддрд▓рдм рд╕рдмреИ рдкреНрд░реЛрдЯреЛрдХрд▓ рд░ рд╕рдмреИ рдкреЛрд░реНрдЯрд╣рд░реВ;
  • рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░реЛрдЯреЛрдХрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдЫреЛрдбреНрдиреБрд╣реБрдиреНрдЫ (protocol), рдпрд╕рдХреЛ рдЕрд░реНрде TCP;
  • рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреЛрд░реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдЫреЛрдбреНрдиреБрднрдпреЛ рднрдиреЗ (port), рдпрд╕рдХреЛ рдорддрд▓рдм рд╕рдмреИ рдкреЛрд░реНрдЯрд╣рд░реВред

рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕: рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВрдорд╛ рднрд░ рдирдкрд░реНрдиреБрд╣реЛрд╕реН, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЗ рдЪрд╛рд╣рд┐рдиреНрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдХреЗ рдкреЛрдб рд╡рд╛ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЫрдиреН?

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

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рд╕реЗрд╡рд╛рд▓реЗ рдкреЛрд░реНрдЯ 80 рд╕реБрдиреНрдЫ, рддрд░ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдпрд╕рдХреЛ рдкреЛрдбрдХреЛ рдкреЛрд░реНрдЯ 8080 рдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдорд╛ рдареНрдпрд╛рдХреНрдХреИ 8080 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫред

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

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

рдХреЗ рдпреЛ рдкреНрд░рд╡реЗрд╢ рд░ рдирд┐рдХрд╛рд╕реА рджреБрд╡реИ рджрд░реНрддрд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ?

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

рдпрджреНрдпрдкрд┐, рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛, рддрдкрд╛рдЗрдБ рдПрдХ рд╡рд╛ рджреБрдмреИ рджрд┐рд╢рд╛рд╣рд░реВрдорд╛ рдЬрдбрд╛рдирд╣рд░реВ рдЕрдиреБрдорддрд┐ рджрд┐рди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдиреАрддрд┐рдорд╛ рднрд░ рдкрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

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

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

рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╡рд╛ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рддрд▓ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред

рд▓рдЧрд╣рд░реВ

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

рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рдирд┐рдпрдиреНрддреНрд░рдг

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

рдиреАрддрд┐ рдЬрд╛рдБрдЪ

рдлрд╛рдпрд░рд╡рд╛рд▓рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдиреЗрдЫ рд╡рд╛ рдЧрд▓рдд рдиреАрддрд┐ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗрдЫред Kubernetes рд▓реЗ рдХреЗрд╣рд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрдирд┐ рдЧрд░реНрджрдЫред kubectl рдорд╛рд░реНрдлрдд рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рд╕реЗрдЯ рдЧрд░реНрджрд╛, Kubernetes рд▓реЗ рдпреЛ рдЧрд▓рдд рдЫ рднрдиреЗрд░ рдШреЛрд╖рдгрд╛ рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫред рдЕрдиреНрдп рдЕрд╡рд╕реНрдерд╛рдорд╛, Kubernetes рд▓реЗ рдиреАрддрд┐ рд▓рд┐рдиреЗрдЫ рд░ рдЫреБрдЯреЗрдХреЛ рд╡рд┐рд╡рд░рдгрд╣рд░реВ рднрд░реНрдиреЗрдЫред рддрд┐рдиреАрд╣рд░реВ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ:

kubernetes get networkpolicy <policy-name> -o yaml

рдХреБрдмреЗрд░рдиреЗрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдЫреИрди рд░ рдХреЗрд╣реА рдкреНрд░рдХрд╛рд░рдХрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫреБрдЯрд╛рдЙрди рд╕рдХреНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

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

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЙрдкрдпреБрдХреНрдд рд╕рд╣рдпреЛрдЧреА CNI рдмрд┐рдирд╛ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рд╕реЗрдЯ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ Kubernetes рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдиреЗ рдЫреИрдиред

рд░рд╛рдЬреНрдпрд░рд╣рд┐рдд рд╡рд╛ рд░рд╛рдЬреНрдпрд╡рд┐рд╣реАрди?

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

рдЙрдиреНрдирдд рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рдпрд╣рд╛рдБ Kubernetes рдорд╛ рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдкреНрд░рд╡рд░реНрддрди рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдХреЗрд╣реА рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН:

  1. рд╕реЗрд╡рд╛ рдореЗрд╖ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдврд╛рдБрдЪрд╛рд▓реЗ рд╕реЗрд╡рд╛ рд╕реНрддрд░рдорд╛ рд╡рд┐рд╕реНрддреГрдд рдЯреЗрд▓рд┐рдореЗрдЯреНрд░реА рд░ рдЯреНрд░рд╛рдлрд┐рдХ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рджрд╛рди рдЧрд░реНрди рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рд╣рд╛рдореАрд▓реЗ рд▓рд┐рди рд╕рдХреНрдЫреМрдВ рдЗрд╕реНрддрд┐рдУ.
  2. рдХреЗрд╣реА CNI рд╡рд┐рдХреНрд░реЗрддрд╛рд╣рд░реВрд▓реЗ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВ рднрдиреНрджрд╛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рди рдЖрдлреНрдиреЛ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реЗрдХрд╛ рдЫрдиреНред
  3. рдЯреБрдлрд┐рди рдУрд░реНрдХрд╛ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рджреГрд╢реНрдпрддрд╛ рд░ рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

Tufin Orca рдкреНрдпрд╛рдХреЗрдЬрд▓реЗ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрджрдЫ (рд░ рдорд╛рдерд┐рдХреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯрд╣рд░реВрдХреЛ рд╕реНрд░реЛрдд рд╣реЛ)ред

рдердк рдЬрд╛рдирдХрд╛рд░реА

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

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

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреЛ рдЧрд╛рдЗрдбрд▓реЗ рдХреЗрд╣рд┐ рдкреНрд░рд╢реНрдирд╣рд░реВ рд╕реНрдкрд╖реНрдЯ рдЧрд░реНрди рд░ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдХреНрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PS

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди