Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

Π¦Π΅Π»Ρ‚Π° Π½Π° статията Π΅ Π΄Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ читатСля с основитС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ взаимодСйствиС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π² Kubernetes, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ с външния плъгин Calico, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° стандартнитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ. Π’ процСса Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ дСмонстрирани удобството Π½Π° конфигурацията ΠΈ някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Ρ€Π΅Π· Ρ€Π΅Π°Π»Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΎΡ‚ нашия ΠΎΠΏΠΈΡ‚.

Π‘ΡŠΡ€Π·ΠΎ въвСдСниС Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ устройство Π½Π° Kubernetes

ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Kubernetes Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС прСдставСн Π±Π΅Π· ΠΌΡ€Π΅ΠΆΠ°. Π’Π΅Ρ‡Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ…ΠΌΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ Π·Π° основитС ΠΈΠΌ: β€žΠ˜Π»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° устройството Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π² KubernetesΒ» ΠΈ Β«Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурност».

Π’ контСкста Π½Π° Ρ‚Π°Π·ΠΈ статия Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π½Π΅ отговаря самият K8s: Π·Π° Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ CNI плъгини (Container Networking Interface). По-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° Ρ‚Π°Π·ΠΈ концСпция Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Ρ€Π°Π·ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅.

НапримСр, Π½Π°ΠΉ-разпространСният ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ плъгини β€” Flannel осигурява пълна ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ всички възли Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Ρ‡Ρ€Π΅Π· ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° мостовС Π½Π° всСки възСл, ΠΊΠ°Ρ‚ΠΎ ΠΌΡƒ прикрСпя подсСти. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΏΡŠΠ»Π½Π°Ρ‚Π° ΠΈ Π½Π΅Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π° наличност Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°. Π—Π° Π΄Π° сС осигури ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° изолация Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС намСси Π² конфигурацията Π½Π° firewall-Π°. Π’ общия случай Ρ‚ΠΎΠΉ Π΅ оставСн ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° самия CNI, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ всякакви външни намСси Π² iptables ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ»ΠΈ изцяло ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Π½ΠΈ.

А β€žΠΈΠ·Π²ΡŠΠ½ ΠΊΡƒΡ‚ΠΈΡΡ‚Π°β€œ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes сС прСдоставя NetworkPolicy API. Π’ΠΎΠ·ΠΈ рСсурс, ΠΊΠΎΠΉΡ‚ΠΎ сС Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° Π²ΡŠΡ€Ρ…Ρƒ ΠΈΠ·Π±Ρ€Π°Π½ΠΈ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° ΠΎΡ‚ Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ. Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° позволява настройванС Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ pod-ΠΎΠ²Π΅, срСди (пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°) ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ с 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 Ρ‚ΠΈΠΏΠ° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ: входящ (Ingress) Π² pod ΠΈ изходящ (Egress) ΠΎΡ‚ Π½Π΅Π³ΠΎ.

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° сС раздСля Π½Π° Ρ‚Π΅Π·ΠΈ 2 ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΠΎ посоката Π½Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.

БлСдващият Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π΅ сСлСктор; Π»ΠΈΡ†Π΅Ρ‚ΠΎ, към ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС pod (ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠ° ΠΎΡ‚ pod) ΠΈΠ»ΠΈ пространство (Ρ‚.Π΅. namespace). Π’Π°ΠΆΠ½Π° подробност: ΠΈ Π΄Π²Π°Ρ‚Π° Ρ‚ΠΈΠΏΠ° Π½Π° Ρ‚Π΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ трябва Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ (label Π² тСрминологията Π½Π° Kubernetes) β€” ΠΈΠΌΠ΅Π½Π½ΠΎ с тях ΠΎΠΏΠ΅Ρ€ΠΈΡ€Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅.

ОсвСн ΠΊΡ€Π°ΠΉΠ½ΠΎΡ‚ΠΎ число Π½Π° сСлСкторитС, ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ с някакъв Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚, ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° написванС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠ°Ρ‚ΠΎ β€žΠŸΠΎΠ·Π²ΠΎΠ»ΠΈ/Π·Π°Π±Ρ€Π°Π½ΠΈ всичко Π½Π° Π²ΡΠΈΡ‡ΠΊΠΈβ€œ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ. Π—Π° Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ конструкции ΠΎΡ‚ Π²ΠΈΠ΄Π°:

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

β€” Π² Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° всички pod’и Π² пространството сС затваря входящият Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС постигнато с Ρ‚Π°ΠΊΠ°Π²Π° конструкция:

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

По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° изходящия:

  podSelector: {} 
  policyTypes: 
  - Egress

β€” Π·Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅. А Π΅Ρ‚ΠΎ ΠΊΠ°ΠΊ Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅:

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

Π’Ρ€ΡŠΡ‰Π°ΠΉΠΊΠΈ сС към ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° CNI плъгин Π·Π° кластСра, слСдва Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ Π½Π΅ всСки ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ плъгин ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π° с NetworkPolicy. НапримСр, Π²Π΅Ρ‡Π΅ спомСнатият Flannel Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, Π·Π° ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’Π°ΠΌ ΡΡŠΡ‰ΠΎ Π΅ спомСната Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° β€” Open Source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, CalicoΠΊΠΎΠΉΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° стандартния Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ API Π½Π° Kubernetes ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

Π—Π°ΠΏΠΎΠ·Π½Π°ΠΉΡ‚Π΅ сС с Calico: тСория

ΠŸΠ»ΡŠΠ³ΠΈΠ½ΡŠΡ‚ Calico ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² интСграция с Flannel (ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Canal) ΠΈΠ»ΠΈ самостоятСлно, ΠΏΠΎΠΊΡ€ΠΈΠ²Π°ΠΉΠΊΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° осигуряванС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚, Ρ‚Π°ΠΊΠ° ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚Ρ‚Π°.

Какви Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° β€žΠΊΡƒΡ‚ΠΈΡβ€œ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ K8s ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ API Π½Π° Calico?

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ Π² NetworkPolicy:

  • ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎ пространството;
  • ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ към pod’и, ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ с Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ;
  • ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ към pod’и, пространства ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ;
  • ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈ ΠΈΠ»ΠΈ символични указания Π·Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅.

А Π΅Ρ‚ΠΎ ΠΊΠ°ΠΊ Calico Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ към всСки ΠΎΠ±Π΅ΠΊΡ‚: pod, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина ΠΈΠ»ΠΈ интСрфСйс;
  • ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ дСйствиС (Π·Π°Π±Ρ€Π°Π½Π°, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π»ΠΎΠ³Π²Π°Π½Π΅);
  • ΠšΠ°Ρ‚ΠΎ Ρ†Π΅Π» ΠΈΠ»ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΡ€Ρ‚, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, HTTP ΠΈΠ»ΠΈ ICMP Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ, IP ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° (4 ΠΈΠ»ΠΈ 6 поколСния), всякакви сСлСктори (възли, хостовС, срСди);
  • Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° настройки DNAT ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° прСнасочванС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.

ΠŸΡŠΡ€Π²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΈΡ‚ΠΈ Π² GitHub Π² рСпозитория Π‘alico са Π΄Π°Ρ‚ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ юли 2016 Π³., Π° Π²Π΅Ρ‡Π΅ слСд Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π·Π°Π΅ΠΌΠ° Π²ΠΎΠ΄Π΅Ρ‰ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² организацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ Π½Π° Kubernetes β€” Π·Π° Ρ‚ΠΎΠ²Π° говорят, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΠΎΡ‚ The New Stack:

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

Много Π³ΠΎΠ»Π΅ΠΌΠΈ managed Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с K8s, ΠΊΠ°Ρ‚ΠΎ Amazon EKS, Azure AKS, Google GKE ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ, Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° Π³ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Ρ‚ Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°.

Π©ΠΎ сС отнася Π΄ΠΎ производитСлността, всичко Π΅ чудСсно. ΠŸΡ€ΠΈ тСстванСто Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° си Π΅ΠΊΠΈΠΏΡŠΡ‚ Π½Π° Calico дСмонстрира астрономични показания, стартирайки Π½Π°Π΄ 50000 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° 500 физичСски възСла със скорост Π½Π° създаванС ΠΎΡ‚ 20 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² сСкунда. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π΅ са установСни. Π’Π°ΠΊΠΈΠ²Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ бяха обявСни Π²Π΅Ρ‡Π΅ ΠΏΡ€ΠΈ анонса Π½Π° ΠΏΡŠΡ€Π²Π°Ρ‚Π° вСрсия. НСзависими изслСдвания, насочСни към пропускната способност ΠΈ ΠΎΠ±Π΅ΠΌΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурси, ΡΡŠΡ‰ΠΎ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΡΡ‚ производитСлността Π½Π° Calico, която практичСски Π½Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π° Π½Π° Flannel. НапримСр:

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΎ сС Ρ€Π°Π·Π²ΠΈΠ²Π°, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π° Π² популярни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ managed K8s, OpenShift, OpenStack, ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Calico ΠΏΡ€ΠΈ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° kops, срСщат сС спомСнавания Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Service Mesh ΠΌΡ€Π΅ΠΆΠΈ (Π΅Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ с Istio).

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° с Calico

Π’ общия случай Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²Π°Π½ΠΈΠ»ΠΎΠ² Kubernetes, инсталиранСто Π½Π° CNI сС свСТда Π΄ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»Π° calico.yaml, ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ ΠΎΡ‚ официалния сайт, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° kubectl apply -f.

ОбикновСно, Π°ΠΊΡ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° вСрсия Π½Π° ΠΏΠ»ΡƒΠ³ΠΈΠ½Π° Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠ° с 2-3 послСднитС вСрсии Π½Π° Kubernetes: Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π² ΠΏΠΎ-стари вСрсии Π½Π΅ сС тСства ΠΈ Π½Π΅ сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°. Π‘ΠΏΠΎΡ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, Calico Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Linux ядро Π½Π°Π΄ 3.10 ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° CentOS 7, Ubuntu 16 ΠΈΠ»ΠΈ Debian 8, Π²ΡŠΡ€Ρ…Ρƒ iptables ΠΈΠ»ΠΈ IPVS.

Π˜Π·ΠΎΠ»Π°Ρ†ΠΈΡ Π²ΡŠΡ‚Ρ€Π΅ Π² срСдата

Π—Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ прост случай, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π² нотацията Π½Π° Calico ΠΎΡ‚ стандартнитС ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ към ΡΡŠΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° улСснява тяхната чСтливост ΠΈ Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚ ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅:

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

Π’ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° са Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ 2 Π²Π΅Π±-прилоТСния: Π½Π° Node.js ΠΈ PHP, β€” Π΅Π΄Π½ΠΎ ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Redis. Π—Π° Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ Redis ΠΎΡ‚ PHP, оставяйки ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ с 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

По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΏΠΎΡ€Ρ‚Π° Π½Π° Redis ΠΎΡ‚ Node.js. Ясно Π½Π΅ Π·Π°Π±Ρ€Π°Π½ΠΈΡ…ΠΌΠ΅ Π½ΠΈΡ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС появи NetworkPolicy, всички сСлСктори, спомСнати Π² Π½Π΅Π³ΠΎ, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Ρ‚, Π°ΠΊΠΎ Π½Π΅ Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ. ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° изолация Π½Π΅ Π²Π°ΠΆΠ°Ρ‚ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈ ΠΎΡ‚ сСлСктора.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° apiVersion Kubernetes β€žΠΈΠ·Π²ΡŠΠ½ ΠΊΡƒΡ‚ΠΈΡΡ‚Π°β€œ, Π½ΠΎ Π½ΠΈΡ‰ΠΎ Π½Π΅ ΠΏΡ€Π΅Ρ‡ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° СдноимСнният рСсурс ΠΎΡ‚ доставката Π½Π° Calico. Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Ρ‚Π°ΠΌ Π΅ ΠΏΠΎ-Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½, слСдоватСлно Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π·Π° горСпосочСния случай Π² слСдния Π²ΠΈΠ΄:

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 ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ слоТни Π·Π° Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅ ΠΈ запомнянС конструкции със скобки. Π’ случая с Calico, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡ‚ΠΎ, Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° смСним action: Allow Π½Π° action: Deny.

Π˜Π·ΠΎΠ»Π°Ρ†ΠΈΡ ΠΏΠΎ срСди

Π‘Π΅Π³Π° Π΄Π° си прСдставим ситуация, Π² която ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° бизнСс ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π° тяхното ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π² Prometheus ΠΈ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· с Grafana. Π’ Скспорта ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°Ρ‚ чувствитСлни Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° всСобщо наблюдСниС. НСка Π·Π°Ρ‰ΠΈΡ‚ΠΈΠΌ Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ странни ΠΏΠΎΠ³Π»Π΅Π΄ΠΈ:

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

Prometheus, ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΅ изнСсСн Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ слуТСбно срСдищС β€” Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС namespace ΠΎΡ‚ слСдния Π²ΠΈΠ΄:

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

ПолС metadata.labels Ρ‚ΡƒΠΊ сС ΠΎΠΊΠ°Π·Π° Π½Π΅ случайно. ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ бСшС спомСнато, namespaceSelector (ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ podSelector) ΠΎΠΏΠ΅Ρ€ΠΈΡ€Π° с Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΎΡ‚ всички pod'ΠΎΠ²Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡ€Ρ‚, Ρ‰Π΅ трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ някаква Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° (ΠΈΠ»ΠΈ Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅) ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ конфигурация ΠΊΠ°Ρ‚ΠΎ:

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

А Π² случай Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Calico ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Ρ‰Π΅ бъдС Ρ‚Π°ΠΊΡŠΠ²:

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

По ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, добавяйки ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π½ΡƒΠΆΠ΄ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ ΠΈΠ»ΠΈ случайно намСсванС Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° прилоТСнията Π² кластСра.

Най-Π΄ΠΎΠ±Ρ€Π°Ρ‚Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, спорСд ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Calico, Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ β€žΠ—Π°Π±Ρ€Π°Π½ΠΈ всичко ΠΈ явно ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎβ€œ, фиксиран Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ спазват ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ β€” ΠΏΠΎ-спСциално, Π² Π²Π΅Ρ‡Π΅ спомСнатата статия).

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Calico

Напомням, Ρ‡Π΅ Ρ‡Ρ€Π΅Π· Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ API Calico ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚Ρ‚Π° Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅, Π±Π΅Π· Π΄Π° сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚Π΅ Π΄ΠΎ pod'ΠΎΠ²Π΅. Π’ слСдващия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° GlobalNetworkPolicy сС Π±Π»ΠΎΠΊΠΈΡ€Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° ICMP заявки Π² кластСра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΈΠ½Π³ ΠΎΡ‚ pod Π² възСл, ΠΌΠ΅ΠΆΠ΄Ρƒ pod'ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚ възСл Π΄ΠΎ IP адрСса Π½Π° pod):

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

Накрая, Ρ‰Π΅ Π΄Π°ΠΌ напълно Ρ€Π΅Π°Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Calico Π·Π° случай Π½Π° взаимодСйствиС ΠΎΠΊΠΎΠ»ΠΎ кластСра, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стандартния Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π΅Π½. Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ VPN Ρ‚ΡƒΠ½Π΅Π», ΠΈ Ρ‚ΠΎΠ·ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΅ строго ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ списък ΠΎΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ услуги:

Calico Π·Π° ΠΌΡ€Π΅ΠΆΠΈ Π² Kubernetes: Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π°

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ с VPN ΠΏΡ€Π΅Π· стандартния UDP ΠΏΠΎΡ€Ρ‚ 1194 ΠΈ ΠΏΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ към кластСрни подсистСми Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ услугитС. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠΈΡ‚Π΅ сС прСнасочват изцяло, Π·Π° Π΄Π° Π½Π΅ сС загубят услугитС ΠΏΡ€ΠΈ рСстартиранС ΠΈ смяна Π½Π° адрСситС.

ΠŸΠΎΡ€Ρ‚ΡŠΡ‚ Π² конфигурацията Π΅ стандартСн, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°Π»Π°Π³Π° някои нюанси ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ прСмСстванСто ΠΌΡƒ Π² Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. НапримСр, Π² AWS LoadBalancer Π·Π° UDP Ρ‚ΠΎΠΉ бСшС въвСдСн Π΅Π΄Π²Π° Π² края Π½Π° ΠΌΠΈΠ½Π°Π»Π°Ρ‚Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ списък ΠΎΡ‚ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ, Π° NodePort Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΏΡ€ΠΎΠ±ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π½Π° всички възли Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ Π½Π΅ Π΅ възмоТно Π΄Π° сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° броят Π½Π° инстанциитС Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° с Ρ†Π΅Π» отказоустойчивост. ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π½Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅Ρ‚Π΅, ΠΈΠ·Π±Ρ€Π°Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅...

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±Π΅ ΠΈΠ·Π±Ρ€Π°Π½ΠΎ слСдното:

  1. ΠŸΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ с VPN сС ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ‚ Π½Π° възСл Π² Ρ€Π΅ΠΆΠΈΠΌ hostNetwork, тоСст Π½Π° фактичСския IP.
  2. Услугата сС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° навън Ρ‡Ρ€Π΅Π· ClusterIP. На възСла физичСски сС отваря ΠΏΠΎΡ€Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΎΡ‚Π²ΡŠΠ½ с ΠΌΠ°Π»ΠΊΠΈ ΡƒΠ³ΠΎΠ²ΠΎΡ€ΠΊΠΈ (условно Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° Ρ€Π΅Π°Π»Π΅Π½ IP адрСс).
  3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° възСла, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ стартиран ΠΏΠΎΠ΄ΡŠΡ‚, Π΅ извън ΠΎΠ±Ρ…Π²Π°Ρ‚Π° Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π°Π·ΠΊΠ°Π·Π²Π°Π½Π΅. Π©Π΅ ΠΊΠ°ΠΆΠ° само, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС β€žΠ·Π°ΠΊΡ€Π΅ΠΏΠΈβ€œ услугата Π·Π° възСла ΠΈΠ»ΠΈ Π΄Π° сС напишС малък sidecar-service, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ слСди тСкущия IP адрСс Π½Π° 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 Π½Π° Calico ΠΌΠΎΠΆΠ΅Ρ‚Π΅ гъвкаво Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π΄Π° промСнятС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° Π² кластСра ΠΈ ΠΎΠΊΠΎΠ»ΠΎ Π½Π΅Π³ΠΎ. ΠšΠ°Ρ‚ΠΎ цяло Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ стрСлянС с ΠΏΡƒΡˆΠΊΠ° ΠΏΠΎ Π²Ρ€Π°Π½ΠΈ, Π° внСдряванСто Π½Π° L3 ΠΌΡ€Π΅ΠΆΠ° с BGP ΠΈ IP-IP Ρ‚ΡƒΠ½Π΅Π»ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° монструозно Π² проста инсталация Π½Π° Kubernetes Π² плоска мрСТа… Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° напълно ТизнСспособСн ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½.

Π˜Π·ΠΎΠ»Π°Ρ†ΠΈΡΡ‚Π° Π½Π° кластСра Π·Π° осигуряванС Π½Π° изискванията Π·Π° сигурност Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π² Ρ‚Π°ΠΊΠΈΠ²Π° случаи Π½Π° ΠΏΠΎΠΌΠΎΡ‰ ΠΈΠ΄Π²Π° Calico (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈ Π² статията (с ΠΌΠ°Π»ΠΊΠΈ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ), сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² няколко инсталации Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ Π² AWS.

P.S.

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster