Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

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

Kubernetes рдиреЗрдЯрд╡рд░реНрдХрд┐рдЩ рдЙрдкрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рджреНрд░реБрдд рдкрд░рд┐рдЪрдп

рдПрдХ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ рдмрд┐рдирд╛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЖрдзрд╛рд░рднреВрдд рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ: "Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╕рдЪрд┐рддреНрд░ рдЧрд╛рдЗрдб"рд░"рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдп"ред

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

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

рд░ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рдВрдЧрдард┐рдд рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА "рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░" рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ NetworkPolicy APIред рдпреЛ рд╕реНрд░реЛрдд, рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВрдорд╛ рд╡рд┐рддрд░рд┐рдд, рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдмрд╛рдЯ рдЕрд░реНрдХреЛрдорд╛ рдкрд╣реБрдБрдЪ рднрд┐рдиреНрди рдЧрд░реНрди рдирд┐рдпрдорд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрди рд╕рдХреНрдЫред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрдбрд╣рд░реВ, рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВ (рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ) рд╡рд╛ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рдмреНрд▓рдХрд╣рд░реВ рдмреАрдЪ рдкрд╣реБрдБрдЪ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ:

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

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

рдпреЛ рддрд╛рд░реНрдХрд┐рдХ рдЫ рдХрд┐ рддреНрдпрд╣рд╛рдБ 2 рдкреНрд░рдХрд╛рд░рдХрд╛ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВ рдЫрдиреН: рдкреЛрдбрдорд╛ рдкреНрд░рд╡реЗрд╢ (рдЗрдиреНрдЧреНрд░реЗрд╕) рд░ рддреНрдпрд╕рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ (Egress)ред

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

рд╡рд╛рд╕реНрддрд╡рдорд╛ рдЖрдиреНрджреЛрд▓рдирдХреЛ рджрд┐рд╢рд╛рдХрд╛ рдЖрдзрд╛рд░рдорд╛ рд░рд╛рдЬрдиреАрддрд┐рд▓рд╛рдИ рдпреА реи рд╡рд░реНрдЧрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░рд┐рдПрдХреЛ рдЫ ред

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

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

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

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

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

рддреНрдпрд╕реНрддреИ рдмрд╣рд┐рд░реНрдЧрдордирдХрд╛ рд▓рд╛рдЧрд┐:

  podSelector: {}
  policyTypes:
  - Egress

- рдпрд╕рд▓рд╛рдИ рдмрдиреНрдж рдЧрд░реНрдиред рд░ рдпрд╣рд╛рдБ рдХреЗ рд╕рдорд╛рд╡реЗрд╢ рдЫ:

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

рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ CNI рдкреНрд▓рдЧрдЗрдирдХреЛ рдЫрдиреЛрдЯрдорд╛ рдлрд░реНрдХреЗрд░, рдпреЛ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫ рд╣рд░реЗрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрдирд▓реЗ NetworkPolicy рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ Flannel рд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рдХрд╕рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ, рдЬреБрди рдпреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рднрдирд┐рдПрдХреЛ рдЫ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛ред рддреНрдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкрдирд┐ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЫ - рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ Calico, рдЬрд╕рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рд╣рд░реВрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ Kubernetes API рдХреЛ рдорд╛рдирдХ рд╕реЗрдЯрд▓рд╛рдИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджрдЫред

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

рдХреНрдпрд╛рд▓рд┐рдХреЛ: рд╕рд┐рджреНрдзрд╛рдиреНрдд рдЬрд╛рдиреНрди

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

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

NetworkPolicy рдорд╛ рдмрдирд╛рдЗрдПрдХреЛ рдХреБрд░рд╛ рдпрд╣рд╛рдБ рдЫ:

  • рд░рд╛рдЬрдиреАрддрд┐рдЬреНрдЮрд╣рд░реВ рд╡рд╛рддрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдЫрдиреН;
  • рдиреАрддрд┐рд╣рд░реВ рд▓реЗрдмрд▓рд╣рд░реВ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХрд╛ рдкреЛрдбрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреН;
  • рдирд┐рдпрдорд╣рд░реВ рдкреЛрдб, рд╡рд╛рддрд╛рд╡рд░рдг рд╡рд╛ рд╕рдмрдиреЗрдЯрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ;
  • рдирд┐рдпрдорд╣рд░реВрд▓реЗ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВ, рдирд╛рдорд┐рдд рд╡рд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдкреЛрд░реНрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред

рдпрд╣рд╛рдБ рдХреЗрд▓рд┐рдХреЛрд▓реЗ рдпреА рдХрд╛рд░реНрдпрд╣рд░реВ рдХрд╕рд░реА рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджрдЫ:

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

рдХреНрдпрд╛рд▓рд┐рдХреЛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ GitHub рдорд╛ рдкрд╣рд┐рд▓реЛ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдЬреБрд▓рд╛рдИ 2016 рдорд╛ рдлрд┐рд░реНрддрд╛ рднрдпреЛ, рд░ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ Kubernetes рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдЕрдЧреНрд░рдгреА рд╕реНрдерд╛рди рд▓рд┐рдпреЛ - рдпреЛ рдкреНрд░рдорд╛рдг рд╣реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдорд╣рд░реБ рджреНрд╡рд╛рд░рд╛, The New Stack рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд:

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

K8 рдХреЛ рд╕рд╛рде рдзреЗрд░реИ рдареВрд▓рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВ, рдЬрд╕реНрддреИ рдЕрдореЗрдЬрди EKS, Azure AKS, рдЧреБрдЧрд▓ GKE рд░ рдЕрд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрди рдерд╛рд▓реЗред

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

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

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

рдХреНрдпрд╛рд▓рд┐рдХреЛрд╕рдБрдЧ рдЕрднреНрдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН

vanilla Kubernetes рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд╕реНрдерд╛рдорд╛, CNI рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрд╛ рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рддрд▓ рдЖрдЙрдБрдЫ calico.yaml, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯрдмрд╛рдЯ рдбрд╛рдЙрдирд▓реЛрдб, рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ kubectl apply -f.

рдирд┐рдпрдордХреЛ рд░реВрдкрдорд╛, рдкреНрд▓рдЧрдЗрдирдХреЛ рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдг Kubernetes рдХреЛ рдирд╡реАрдирддрдо 2-3 рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рдЙрдкрдпреБрдХреНрдд рдЫ: рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рд░ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рдЫреИрдиред рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХрд╛ рдЕрдиреБрд╕рд╛рд░, рдХреНрдпрд╛рд▓рд┐рдХреЛрд▓реЗ iptables рд╡рд╛ IPVS рдХреЛ рд╢реАрд░реНрд╖рдорд╛ CentOS 3.10, Ubuntu 7 рд╡рд╛ Debian 16 рдЪрд▓рд┐рд░рд╣реЗрдХреЛ 8 рдорд╛рдерд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рд╣рд░реВрдорд╛ рдЪрд▓реНрдЫред

рд╡рд╛рддрд╛рд╡рд░рдг рднрд┐рддреНрд░ рдЕрд▓рдЧрд╛рд╡

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

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

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

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

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

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

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

рдирд┐рдпрдорд┐рдд NetworkPolicy API рдорд╛рд░реНрдлрдд рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ рд╡рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗ рдорд╛рдерд┐ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрд▓реЗ рдмреБрдЭреНрди рд░ рд╕рдореНрдЭрди рдЧрд╛рд╣реНрд░реЛ рд╣реБрдиреЗ рдХреЛрд╖реНрдардХрд╣рд░реВ рднрдПрдХрд╛ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдХреНрдпрд╛рд▓рд┐рдХреЛрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдлрд╛рдпрд░рд╡рд╛рд▓ рдирд┐рдпрдордХреЛ рддрд░реНрдХрд▓рд╛рдИ рд╡рд┐рдкрд░рд┐рддрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди, рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН action: Allow рдорд╛ action: Deny.

рд╡рд╛рддрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧрд╛рд╡

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

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

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

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

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

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

рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреНрдпрд╛рд▓рд┐рдХреЛ рдиреАрддрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдпрд╕реНрддреЛ рд╣реБрдиреЗрдЫ:

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

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

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

рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрдпрд╛рд▓рд┐рдХреЛ рд╡рд╕реНрддреБрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

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

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

рдорд╛рдерд┐рдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВ ICMP рдорд╛рд░реНрдлрдд рдПрдХ-рдЕрд░реНрдХрд╛рд▓рд╛рдИ "рдкрд╣реБрдЪ" рдЧрд░реНрди рдЕрдЭреИ рдкрдирд┐ рд╕рдореНрднрд╡ рдЫред рд░ рдпреЛ рд╕рдорд╕реНрдпрд╛ рдорд╛рдзреНрдпрдо рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдЧрд░рд┐рдПрдХреЛ рдЫ GlobalNetworkPolicy, рдПрдХ рд╕рдВрд╕реНрдерд╛рдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛ HostEndpoint:

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

VPN рдХреЗрд╕

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

Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреА рдХреНрдпрд╛рд▓рд┐рдХреЛ: рдкрд░рд┐рдЪрдп рд░ рдПрдХ рд╕рд╛рдиреЛ рдЕрдиреБрднрд╡

рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ рдорд╛рдирдХ UDP рдкреЛрд░реНрдЯ 1194 рдорд╛рд░реНрдлрдд VPN рдорд╛ рдЬрдбрд╛рди рд╣реБрдиреНрдЫрдиреН рд░ рдЬрдбрд╛рди рд╣реБрдБрджрд╛, рдкреЛрдбрд╣рд░реВ рд░ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдмрдиреЗрдЯрд╣рд░реВрдорд╛ рдорд╛рд░реНрдЧрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫрдиреНред рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ рд░ рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрд╛ рд╕реЗрд╡рд╛рд╣рд░реВ рдЧреБрдорд╛рдЙрди рдирджрд┐рди рд╕рдореНрдкреВрд░реНрдг рд╕рдмрдиреЗрдЯрд╣рд░реВ рдзрдХреЗрд▓рд┐рдиреНрдЫрдиреНред

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

рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдЦреЛрдЬреНрдиреЗ рдкрд░рд┐рдгрд╛рдордХреЛ рд░реВрдкрдорд╛, рдирд┐рдореНрди рдЫрдиреМрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:

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

рд░реВрдЯрд┐рдЩ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпрдмрд╛рдЯ, рд╣рд╛рдореА VPN рд╕рд░реНрднрд░рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ IP рдареЗрдЧрд╛рдирд╛рджреНрд╡рд╛рд░рд╛ VPN рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓рд╛рдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдкрдорд╛ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рддреНрдпрд╕реНрддрд╛ рдЧреНрд░рд╛рд╣рдХрдХреЛ рдкрд╣реБрдБрдЪрд▓рд╛рдИ рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рдЧрд░реНрдиреЗ рдЖрджрд┐рдо рдЙрджрд╛рд╣рд░рдг рддрд▓ рджрд┐рдЗрдПрдХреЛ рдЫ, рдорд╛рдерд┐ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд Redis рдорд╛ рдЪрд┐рддреНрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ:

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

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

рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

рдпрд╕рд░реА, рдХреНрдпрд╛рд▓рд┐рдХреЛрдХреЛ рдЙрдиреНрдирдд API рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдЗрдБ рд▓рдЪрд┐рд▓реЛ рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░ рд░ рд╡рд░рдкрд░ рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрд▓реЗ рддреЛрдкрд▓реЗ рднрдБрдЧреЗрд░рд╛рд▓рд╛рдИ рдЧреЛрд▓реА рд╣рд╛рдиреЗрдХреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рди рд╕рдХреНрдЫ, рд░ BGP рд░ IP-IP рдЯрдиреЗрд▓рд╣рд░реВрдХреЛ рд╕рд╛рде L3 рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рдлреНрд▓реНрдпрд╛рдЯ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рд╕рд╛рдзрд╛рд░рдг Kubernetes рд╕реНрдерд╛рдкрдирд╛рдорд╛ рд░рд╛рдХреНрд╖рд╕реА рджреЗрдЦрд┐рдиреНрдЫ... рдпрджреНрдпрдкрд┐, рдЕрдиреНрдпрдерд╛ рдЙрдкрдХрд░рдг рдПрдХрджрдо рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд░ рдЙрдкрдпреЛрдЧреА рджреЗрдЦрд┐рдиреНрдЫред ред

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

PS

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

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

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