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 Ρ‚ΠΈΠΏΠ° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ: входящ Π² pod (Ingress) ΠΈ изходящ ΠΎΡ‚ Π½Π΅Π³ΠΎ (Egress).

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

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

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

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

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

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

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

По Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° изходящия:

  podSelector: {}
  policyTypes:
  - Egress

β€” Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΠΌ. А Π΅Ρ‚ΠΎ ΠΊΠ°ΠΊ Π·Π° Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ:

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

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

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

Π—Π°ΠΏΠΎΠ·Π½Π°Π²Π°ΠΌΠ΅ сС с Calico: тСория

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

Какви Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° "кутия" Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ K8s ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ API ΠΎΡ‚ Calico?

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

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

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

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

ΠŸΡŠΡ€Π²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΈΡ‚ΠΈ Π½Π° GitHub Π² рСпозитория Calico Π΄Π°Ρ‚ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ юли 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 ΠΈ ΠΏΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ към кластСрнитС подсистСми Π½Π° pod’овСтС ΠΈ услугитС. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠΈΡ‚Π΅ сС push-Π²Π°Ρ‚ изцяло, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ Π·Π°Π³ΡƒΠ±Π° Π½Π° услуги ΠΏΡ€ΠΈ рСстартирания ΠΈ промяна Π½Π° адрСси.

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

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° възмоТни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ бСшС ΠΈΠ·Π±Ρ€Π°Π½ΠΎ слСдното:

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