Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°. ΠΏΡ€Π΅Π²ΠΎΠ΄.: Авторот Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π°, Π Π΅ΡƒΠ²Π΅Π½ Π₯арисон, ΠΈΠΌΠ° Π½Π°Π΄ 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ искуство Π²ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° софтвСр, Π° дСнСс Π΅ CTO ΠΈ ΠΊΠΎ-основач Π½Π° Tufin, компанија која создава Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со бСзбСдносни ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ. Иако Ρ‚ΠΎΡ˜ Π³ΠΈ Π³Π»Π΅Π΄Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Ρ ΠΊΠ°ΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ моќна Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π²ΠΎ кластСр, Ρ‚ΠΎΡ˜ исто Ρ‚Π°ΠΊΠ° Π²Π΅Ρ€ΡƒΠ²Π° Π΄Π΅ΠΊΠ° Ρ‚ΠΈΠ΅ Π½Π΅ сС Ρ‚ΠΎΠ»ΠΊΡƒ лСсни Π·Π° ΡΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ пракса. Овој ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π» (ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ ΠΎΠ±Π΅ΠΌΠ΅Π½) Π΅ Π½Π°ΠΌΠ΅Π½Π΅Ρ‚ Π΄Π° ја ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ свСста Π½Π° ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΡΡ‚ΠΈΡ‚Π΅ Π·Π° ΠΎΠ²Π° ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅ ΠΈ Π΄Π° ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π³ΠΈ создадат ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ДСнСс, ΠΌΠ½ΠΎΠ³Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ сС повСќС ΠΈΠ·Π±ΠΈΡ€Π°Π°Ρ‚ Kubernetes Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ своитС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠΎΡ‚ Π·Π° овој софтвСр Π΅ Ρ‚ΠΎΠ»ΠΊΡƒ Π³ΠΎΠ»Π΅ΠΌ ΡˆΡ‚ΠΎ Π½Π΅ΠΊΠΎΠΈ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ Kubernetes β€žΠ½ΠΎΠ²ΠΈΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ систСм Π·Π° Ρ†Π΅Π½Ρ‚Π°Ρ€ΠΎΡ‚ Π·Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈβ€œ. ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½ΠΎ, Kubernetes (ΠΈΠ»ΠΈ k8s) ΠΏΠΎΡ‡Π½ΡƒΠ²Π° Π΄Π° сС ΠΏΠ΅Ρ€Ρ†Π΅ΠΏΠΈΡ€Π° ΠΊΠ°ΠΊΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ Π΄Π΅Π» ΠΎΠ΄ бизнисот, кој Π±Π°Ρ€Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Π·Ρ€Π΅Π»ΠΈ Π΄Π΅Π»ΠΎΠ²Π½ΠΈ процСси, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ ΠΌΡ€Π΅ΠΆΠ½Π° бСзбСдност.

Π—Π° бСзбСдноснитС профСсионалци ΠΊΠΎΠΈ сС Π·Π±ΡƒΠ½Π΅Ρ‚ΠΈ ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° со Kubernetes, вистинското ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ стандардната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°: Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ сè.

Овој Π²ΠΎΠ΄ΠΈΡ‡ ќС Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ја Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° структура Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ; Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ Ρ‚ΠΈΠ΅ сС Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ ΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Ρ€Π΅Π΄ΠΎΠ²Π½ΠΈ Π·Π°ΡˆΡ‚ΠΈΡ‚Π½ΠΈ Ρ•ΠΈΠ΄ΠΎΠ²ΠΈ. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ќС ΠΎΠΏΡ„Π°Ρ‚ΠΈ Π½Π΅ΠΊΠΎΠΈ стапици ΠΈ ќС Π΄Π°Π΄Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°ΠΊΠΈ Π·Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π²ΠΎ бСзбСдноста Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Kubernetes.

ΠœΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΡ‚ Π·Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‚Π΅ со ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ распорСдСни Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ слој (Ρ‚Ρ€Π΅Ρ‚ΠΈΠΎΡ‚ Π²ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ OSI). На ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈΠΌ нСдостасуваат Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ Π½Π°ΠΏΡ€Π΅Π΄Π½ΠΈΡ‚Π΅ карактСристики Π½Π° соврСмСнитС Π·Π°ΡˆΡ‚ΠΈΡ‚Π½ΠΈ Ρ•ΠΈΠ΄ΠΎΠ²ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΡΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° OSI Layer 7 ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π·Π°ΠΊΠ°Π½ΠΈ, Π½ΠΎ Ρ‚ΠΈΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ основно Π½ΠΈΠ²ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠ½Π° бСзбСдност ΡˆΡ‚ΠΎ Π΅ Π΄ΠΎΠ±Ρ€Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°.

ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π³ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈΡ‚Π΅

ΠžΠ±Π΅ΠΌΠΎΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π²ΠΎ Kubernetes сС дистрибуира Π½ΠΈΠ· ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ, ΠΊΠΎΠΈ сС ΡΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ распорСдСни Π·Π°Π΅Π΄Π½ΠΎ. Kubernetes ΠΌΡƒ Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π° Π½Π° сСкој pod IP адрСса ΡˆΡ‚ΠΎ Π΅ достапна ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈ мСста. ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π³ΠΈ поставуваат ΠΏΡ€Π°Π²Π°Ρ‚Π° Π·Π° пристап Π·Π° Π³Ρ€ΡƒΠΏΠΈ Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π½Π° ист Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ бСзбСдноснитС Π³Ρ€ΡƒΠΏΠΈ Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ‚ сС користат Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° пристапот Π΄ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини.

Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ

Како ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ рСсурси Π½Π° Kubernetes, ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ YAML. Π’ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° balance пристап Π΄ΠΎ postgres:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

(Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°. ΠΏΡ€Π΅Π²ΠΎΠ΄.: ΠΎΠ²Π°Π° слика ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚, ΠΊΠ°ΠΊΠΎ ΠΈ ситС послСдоватСлни слични, Π΅ создадСна Π½Π΅ со помош Π½Π° домашни Π°Π»Π°Ρ‚ΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚, Ρ‚ΡƒΠΊΡƒ со помош Π½Π° Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° Π’ΡƒΡ„ΠΈΠ½ ΠžΡ€ΠΊΠ°, која ја Ρ€Π°Π·Π²ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ΠΈ која Π΅ спомната Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ ΠΎΠ΄ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»ΠΎΡ‚.)

Π—Π° Π΄Π° ја Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ сопствСната ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, ќС Π²ΠΈ Ρ‚Ρ€Π΅Π±Π° основно познавањС Π½Π° YAML. Овој јазик сС заснова Π½Π° Π²ΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅ (Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ со ΠΏΡ€Π°Π·Π½ΠΈ мСста намСсто со Ρ˜Π°Π·ΠΈΡ‡ΠΈΡšΠ°). Π’ΠΎΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠΎΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π° Π½Π° Π½Π°Ρ˜Π±Π»ΠΈΡΠΊΠΈΠΎΡ‚ Π²ΠΎΠ²Π»Π΅Ρ‡Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π°Π΄ Π½Π΅Π³ΠΎ. Нов Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΠ΄ списокот Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со Ρ†Ρ€Ρ‚ΠΈΡ‡ΠΊΠ°, ситС Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ја ΠΈΠΌΠ°Π°Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΊΠ»ΡƒΡ‡-врСдност.

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ја ΠΎΠΏΠΈΡˆΠ°Π²Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π²ΠΎ YAML, користСтС ΠΊΡƒΠ±Π΅ΠΊΡ‚Π΅Π»Π΄Π° Π³ΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ Π²ΠΎ кластСрот:

kubectl create -f policy.yaml

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΌΡ€Π΅ΠΆΠ½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ:

  1. podSelector: Π³ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈΡ‚Π΅ засСгнати ΠΎΠ΄ ΠΎΠ²Π°Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° (Ρ†Π΅Π»ΠΈ) - Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ;
  2. policyTypes: ΠΎΠ·Π½Π°Ρ‡ΡƒΠ²Π° ΠΊΠ°ΠΊΠ²ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ ΠΎΠ²Π°: Π²Π»Π΅Π· ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·Π»Π΅Π· - ΠΈΠ·Π±ΠΎΡ€Π΅Π½, Π½ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌ Сксплицитно Π΄Π° сС спСцифицира Π²ΠΎ ситС случаи;
  3. ingress: Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ дојдовни ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π΄ΠΎ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈΡ‚Π΅ Π·Π° Ρ†Π΅Π» - ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½;
  4. egress: Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ појдовСн ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΎΠ΄ Ρ†Π΅Π»Π½ΠΈΡ‚Π΅ мСста Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π΅ΠΌΠ΅Π½ ΠΎΠ΄ Π²Π΅Π±-страницата Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ (јас Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ² role Π½Π° app), ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ сС користат ситС Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност
Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ситС Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π΅ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ. Π’ΠΎΠ° Π΅ само Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ podSelector, Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користат ΠΏΠΎ ΠΆΠ΅Π»Π±Π°.

Ако ΠΈΡΠΏΡƒΡˆΡ‚ΠΈΡ‚Π΅ policyTypes, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ќС сС Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π° Π½Π° слСдниов Π½Π°Ρ‡ΠΈΠ½:

  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, сС прСтпоставува Π΄Π΅ΠΊΠ° ја Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π²Π»Π΅Π·Π½Π°Ρ‚Π° страна. Ако ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ Π³ΠΎ Π½Π°Π²Π΅Π΄ΡƒΠ²Π° ΠΎΠ²Π° Сксплицитно, систСмот ќС прСтпостави Π΄Π΅ΠΊΠ° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Ρ‚.
  • ΠžΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Π»Π΅Π·Π½Π°Ρ‚Π° страна ќС сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ со присуството ΠΈΠ»ΠΈ отсуството Π½Π° соодвСтниот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ Π·Π° ΠΈΠ·Π»Π΅Π·.

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌ сСкогаш Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ Π³ΠΎ Ρ‚ΠΎΠ° Сксплицитно policyTypes.

Π‘ΠΏΠΎΡ€Π΅Π΄ Π³ΠΎΡ€Π½Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ°, Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ingress ΠΈ / ΠΈΠ»ΠΈ egress Π°ΠΊΠΎ сС ΠΈΡΠΏΡƒΡˆΡ‚ΠΈ, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ќС Π³ΠΎ ΠΎΠ΄Π±ΠΈΠ΅ Ρ†Π΅Π»ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ (Π²ΠΈΠ΄Π΅Ρ‚Π΅ β€žΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΡΠΎΠ³ΠΎΠ»ΡƒΠ²Π°ΡšΠ΅β€œ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ).

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π΅ Π”ΠΎΠ·Π²ΠΎΠ»ΠΈ

Ако Π½Π΅ сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, Kubernetes стандардно Π³ΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜. Π‘ΠΈΡ‚Π΅ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ ΠΌΠΎΠΆΠ°Ρ‚ слободно Π΄Π° Ρ€Π°Π·ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ“Ρƒ сСбС. Ова ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ΄ бСзбСдносна пСрспСктива, Π½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° Kubernetes ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎ бСшС Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Π·Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ интСропСрабилност Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅. ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π±Π΅Π° Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΡ†Π½Π°.

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ€ΠΈ со имиња

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ€ΠΈΡ‚Π΅ со имиња сС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΡ‚ Π·Π° соработка Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚. Π’ΠΈΠ΅ сС Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈΡ‚Π΅ срСдини Π΅Π΄Π½Π° ΠΎΠ΄ Π΄Ρ€ΡƒΠ³Π°, Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ просторитС Π΅ стандардно Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Π°.

Како ΠΈ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Kubernetes, ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΆΠΈΠ²Π΅Π°Ρ‚ Π²ΠΎ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ имСнски простор. Π’ΠΎ Π±Π»ΠΎΠΊΠΎΡ‚ metadata ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ‚Π΅ Π½Π° кој простор ΠΌΡƒ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°:

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

Ако имСнскиот простор Π½Π΅ Π΅ Сксплицитно Π½Π°Π²Π΅Π΄Π΅Π½ Π²ΠΎ ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅, систСмот ќС Π³ΠΎ користи имСнскиот простор Π½Π°Π²Π΅Π΄Π΅Π½ Π²ΠΎ kubectl (стандардно namespace=default):

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

ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌ Сксплицитно Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ имСнски простор, освСн Π°ΠΊΠΎ ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° која Ρ†Π΅Π»ΠΈ Π½Π° повСќС имСнски простори одСднаш.

Π“Π»Π°Π²Π½Π°Ρ‚Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ podSelector Π²ΠΎ полисата ќС сС ΠΈΠ·Π±Π΅Ρ€Π°Ρ‚ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΠΎΠ΄ имСнскиот простор Π½Π° кој ΠΌΡƒ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° (Π½Π΅ΠΌΠ° пристап Π΄ΠΎ мСстата ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ имСнски простор).

Π‘Π»ΠΈΡ‡Π½ΠΎ Π½Π° Ρ‚ΠΎΠ°, podSelectors Π²ΠΎ Π²Π»Π΅Π·Π½ΠΈΡ‚Π΅ ΠΈ ΠΈΠ·Π»Π΅Π·Π½ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π° само ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ ΠΎΠ΄ Π½ΠΈΠ²Π½ΠΈΠΎΡ‚ сопствСн имСнски простор, освСн Π°ΠΊΠΎ сСкако Π½Π΅ Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ namespaceSelector (Π·Π° ΠΎΠ²Π° ќС сС дискутира Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ β€žΠ€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΏΠΎ имСнски простори ΠΈ ΠΏΠΎΠ΄Ρ€Π°Ρ‡Ρ˜Π°β€œ).

ΠŸΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ

Π˜ΠΌΠΈΡšΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ сС СдинствСни Π²ΠΎ истиот имСнски простор. НС ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΄Π²Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со исто ΠΈΠΌΠ΅ Π½Π° ист простор, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со исто ΠΈΠΌΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ простори. Ова Π΅ корисно ΠΊΠΎΠ³Π° сакатС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π΄Π° ја ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ истата ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° повСќС простори.

ОсобСно ΠΌΠΈ сС Π΄ΠΎΠΏΠ°Ρ“Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΡšΠ΅. Π‘Π΅ состои ΠΎΠ΄ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° имСнскиот простор со Ρ†Π΅Π»Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π•Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠΊΠ°Ρ‡ΠΈΡ‚Π΅ приспособСни Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΠΈ имСнски простори. Π•Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ (Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ - ΠΎΠ·Π½Π°ΠΊΠΈ) сС Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ Π½Π° ΠΎΠ·Π½Π°ΠΊΠΈΡ‚Π΅ Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ‚. ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes користат Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡ€ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈΠ½Π° ΠΊΠΎΠΈ сС однСсуваат:

podSelector:
  matchLabels:
    role: db

… ΠΈΠ»ΠΈ имСнски просторина ΠΊΠΎΠΈ сС однСсуваат. Овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³ΠΈ ΠΈΠ·Π±ΠΈΡ€Π° ситС ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π²ΠΎ имСнскитС простори со соодвСтнитС ΠΎΠ·Π½Π°ΠΊΠΈ:

namespaceSelector:
  matchLabels:
    project: myproject

Π•Π΄Π½Π° прСтпазливост: ΠΏΡ€ΠΈ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° namespaceSelector ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ мСстата со имиња ΡˆΡ‚ΠΎ ќС Π³ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ја содрТат Ρ‚ΠΎΡ‡Π½Π°Ρ‚Π° ΠΎΠ·Π½Π°ΠΊΠ°. Π‘ΠΈΠ΄Π΅Ρ‚Π΅ свСсни Π΄Π΅ΠΊΠ° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ простори Π·Π° имиња ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС default ΠΈ kube-system, ΠΏΠΎ Π΄ΠΈΡ„ΠΎΠ»Ρ‚ Π½Π΅ содрТат Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π½Π° ΠΏΡ€Π°Π·Π½ΠΎ мСсто ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π°:

kubectl label namespace default namespace=default

Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, имСнски простор Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ metadata Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС однСсува Π½Π° вистинското ΠΈΠΌΠ΅ Π½Π° просторот, Π° Π½Π΅ Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°Ρ‚Π°:

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

Π˜Π·Π²ΠΎΡ€ ΠΈ Π΄Π΅ΡΡ‚ΠΈΠ½Π°Ρ†ΠΈΡ˜Π°

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅Π½ Ρ•ΠΈΠ΄ сС ΡΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈΠ»Π° со ΠΈΠ·Π²ΠΎΡ€ΠΈ ΠΈ дСстинации. ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π·Π° Ρ†Π΅Π» - Π·Π±ΠΈΡ€ Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π½Π° ΠΊΠΎΠΈ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ - ΠΈ ΠΏΠΎΡ‚ΠΎΠ° поставуваат ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Π²Π»Π΅Π·Π΅Π½ ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·Π»Π΅Π·Π΅Π½ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜. Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π΅Π»Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ќС Π±ΠΈΠ΄Π°Ρ‚ ситС ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π²ΠΎ имСнскиот простор default со Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° со ΠΊΠ»ΡƒΡ‡ app ΠΈ Π·Π½Π°Ρ‡Π΅ΡšΠ΅ db:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност
Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠŸΠΎΠ΄ΡΠ΅ΠΊΡ†ΠΈΡ˜Π° ingress Π²ΠΎ ΠΎΠ²Π°Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€Π° Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π΄ΠΎ Ρ†Π΅Π»Π½ΠΈΡ‚Π΅ мСста. Π‘ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π·Π±ΠΎΡ€ΠΎΠ²ΠΈ, Π²Π»Π΅Π·ΠΎΡ‚ Π΅ ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚, Π° Ρ†Π΅Π»Ρ‚Π° Π΅ соодвСтната Π΄Π΅ΡΡ‚ΠΈΠ½Π°Ρ†ΠΈΡ˜Π°. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ Π΅ Π΄Π΅ΡΡ‚ΠΈΠ½Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ Ρ†Π΅Π»Ρ‚Π° Π΅ Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€.

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Ова Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ Π½Π° Π΄Π²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅Π½ Ρ•ΠΈΠ΄: Π’Π»Π΅Π· β†’ Π¦Π΅Π»; Π¦Π΅Π» β†’ ИзлСз.

ИзлСз и DNS (ваТно!)

Π‘ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜, посвСтСтС посСбно Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° DNS - Kubernetes ја користи ΠΎΠ²Π°Π° услуга Π·Π° ΠΌΠ°ΠΏΠΈΡ€Π°ΡšΠ΅ Π½Π° услуги Π½Π° IP адрСси. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слСднава ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π΅ΠΌΠ° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ бидСјќи Π½Π΅ стС ја Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° balance пристап Π΄ΠΎ DNS:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚Π΅ со ΠΎΡ‚Π²ΠΎΡ€Π°ΡšΠ΅ пристап Π΄ΠΎ услугата DNS:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠΎΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ to Π΅ ΠΏΡ€Π°Π·Π½Π°, ΠΈ Π·Π°Ρ‚ΠΎΠ° ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·Π±ΠΈΡ€Π° ситС ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ Π²ΠΎ ситС имСнски простори, Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Ρ˜ΡœΠΈ balance испратСтС ΠΏΡ€Π°ΡˆΠ°ΡšΠ° Π·Π° DNS Π΄ΠΎ соодвСтната услуга Π½Π° Kubernetes (ΠΎΠ±ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ просторот kube-system).

Овој пристап Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°, ΠΊΠ°ΠΊΠΎ ΠΈ Π΄Π° Π΅ ΠΏΡ€Π΅ΠΌΠ½ΠΎΠ³Ρƒ попустлив ΠΈ нСсигурСн, бидСјќи Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π° DNS Π±Π°Ρ€Π°ΡšΠ°Ρ‚Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ насочСни Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ кластСрот.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ Π²ΠΎ Ρ‚Ρ€ΠΈ послСдоватСлни Ρ‡Π΅ΠΊΠΎΡ€ΠΈ.

1. Π”ΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ само Π±Π°Ρ€Π°ΡšΠ° Π·Π° DNS Π²Π½Π°Ρ‚Ρ€Π΅ кластСр со додавањС namespaceSelector:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

2. Π”ΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ DNS Π±Π°Ρ€Π°ΡšΠ° само Π²ΠΎ имСнскиот простор kube-system.

Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠ° Π²ΠΎ имСнскиот простор kube-system: kubectl label namespace kube-system namespace=kube-system - ΠΈ Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π³ΠΎ Π²ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° namespaceSelector:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

3. ΠŸΠ°Ρ€Π°Π½ΠΎΠΈΡ‡Π½ΠΈΡ‚Π΅ Π»ΡƒΡ“Π΅ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° ΠΎΠ΄Π°Ρ‚ ΡƒΡˆΡ‚Π΅ ΠΏΠΎΠ΄Π°Π»Π΅ΠΊΡƒ ΠΈ Π΄Π° Π³ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Ρ‚ Π±Π°Ρ€Π°ΡšΠ°Ρ‚Π° Π·Π° DNS Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° DNS услуга Π²ΠΎ kube-system. Π’ΠΎ Π΄Π΅Π»ΠΎΡ‚ β€žΠ€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΏΠΎ имСнски простори И ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈβ€œ ќС Π²ΠΈ ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ постигнСтС Ρ‚ΠΎΠ°.

Π”Ρ€ΡƒΠ³Π° ΠΎΠΏΡ†ΠΈΡ˜Π° Π΅ Π΄Π° сС Ρ€Π΅ΡˆΠΈ DNS Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° имСнски простор. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, Π½Π΅ΠΌΠ° Π΄Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΎΡ‚Π²ΠΎΡ€Π° Π·Π° сСкоја услуга:

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

ΠŸΡ€Π°Π·Π½ΠΎ podSelector Π³ΠΈ ΠΈΠ·Π±ΠΈΡ€Π° ситС ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π²ΠΎ имСнскиот простор.

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠŸΡ€Π² Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ ΠΈ рСдослСд Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°

Π’ΠΎ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ Π·Π°ΡˆΡ‚ΠΈΡ‚Π½ΠΈ Ρ•ΠΈΠ΄ΠΎΠ²ΠΈ, Π΄Π΅Ρ˜ΡΡ‚Π²ΠΎΡ‚ΠΎ (Π”ΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Одбиј) Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ сС ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° спорСд ΠΏΡ€Π²ΠΎΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΡˆΡ‚ΠΎ Π³ΠΎ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΡƒΠ²Π°. Π’ΠΎ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ, рСдослСдот Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π΅ Π΅ Π²Π°ΠΆΠ΅Π½.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, ΠΊΠΎΠ³Π° Π½Π΅ сС поставСни ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈΡ‚Π΅ сС Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ ΠΈ Ρ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ‚ слободно Π΄Π° Ρ€Π°Π·ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π¨Ρ‚ΠΎΠΌ ќС Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, сСкој ΠΏΠΎΠ΄ засСгнат ΠΎΠ΄ Π±Π°Ρ€Π΅ΠΌ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½ΠΈΠ² станува ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ спорСд Π΄ΠΈΡΡ˜ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° (Π»ΠΎΠ³ΠΈΡ‡ΠΊΠ° Π˜Π›Π˜) Π½Π° ситС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡˆΡ‚ΠΎ ја ΠΈΠ·Π±Ρ€Π°Π»Π΅. ΠŸΠΎΠ΄Ρ€Π°Ρ‡Ρ˜Π°Ρ‚Π° ΠΊΠΎΠΈ Π½Π΅ сС засСгнати ΠΎΠ΄ Π½ΠΈΡ‚Ρƒ Π΅Π΄Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° остануваат ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΎΠ²Π° ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΡΠΎΠ³ΠΎΠ»ΡƒΠ²Π°ΡšΠ΅.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΡΠΎΠ³ΠΎΠ»ΡƒΠ²Π°ΡšΠ΅ (β€žΠžΠ΄Π±ΠΈΡ˜β€œ)

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π½ΠΈΠΎΡ‚ Ρ•ΠΈΠ΄ ΠΎΠ±ΠΈΡ‡Π½ΠΎ Π³ΠΎ Π½Π΅Π³ΠΈΡ€Π°Π°Ρ‚ сСкој ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ ΡˆΡ‚ΠΎ Π½Π΅ Π΅ Сксплицитно Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½.

НСма Π½Π΅Π³ΠΈΡ€Π°ΡšΠ΅ Π°ΠΊΡ†ΠΈΡ˜Π° Π²ΠΎ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ, сСпак, сличСн Π΅Ρ„Π΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС постигнС со Ρ€Π΅Π΄ΠΎΠ²Π½Π° (попустлива) ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° со ΠΈΠ·Π±ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€Π°Π·Π½Π° Π³Ρ€ΡƒΠΏΠ° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ (Π²Π»Π΅Π·):

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Ова ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π³ΠΈ ΠΈΠ·Π±ΠΈΡ€Π° ситС ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π²ΠΎ имСнскиот простор ΠΈ Π³ΠΎ остава Π²Π»Π΅Π·ΠΎΡ‚ Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½, одбивајќи Π³ΠΎ Ρ†Π΅Π»ΠΈΠΎΡ‚ дојдовСн ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜.

На сличСн Π½Π°Ρ‡ΠΈΠ½, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈΠΎΡ‚ појдовСн ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ ΠΎΠ΄ имСнскиот простор:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ»ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡˆΡ‚ΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π°Ρ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π΄ΠΎ мСстата Π²ΠΎ имСнскиот простор ќС ΠΈΠΌΠ°Π°Ρ‚ прСдност ΠΏΡ€Π΅Π΄ ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ (слично Π½Π° додавањС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΡ€Π΅Π΄ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° одбивањС Π²ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅Π½ Ρ•ΠΈΠ΄).

Π”ΠΎΠ·Π²ΠΎΠ»ΠΈ сè (Any-Any-Any-Allow)

Π—Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π”ΠΎΠ·Π²ΠΎΠ»ΠΈ Π³ΠΈ ситС, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° одбивањС ΠΏΠΎΠ³ΠΎΡ€Π΅ со ΠΏΡ€Π°Π·Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ingress:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠžΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° пристап ΠΎΠ΄ ситС pods Π²ΠΎ ситС имСнски простори (ΠΈ ситС IP) Π΄ΠΎ кој Π±ΠΈΠ»ΠΎ pod Π²ΠΎ имСнскиот простор 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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π³ΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ Π²Π»Π΅Π·Π΅Π½ ΠΈ ΠΈΠ·Π»Π΅Π·Π΅Π½ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ пристап Π΄ΠΎ која Π±ΠΈΠ»ΠΎ IP адрСса Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ кластСрот:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност
Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° повСќС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ Π˜Π›Π˜ Π½Π° Ρ‚Ρ€ΠΈ Π½ΠΈΠ²ΠΎΠ°; Π”ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π½Π° сСкоја ΠΏΠΎΠ΄Π»ΠΎΠ³Π° сС поставСни Π²ΠΎ согласност со ΠΏΠΎΠ΄Π΅Π»Π±Π°Ρ‚Π° Π½Π° ситС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡˆΡ‚ΠΎ Π²Π»ΠΈΡ˜Π°Π°Ρ‚ Π½Π° Π½Π΅Π°:

1. Π’ΠΎ ΠΏΠΎΠ»ΠΈΡšΠ°Ρ‚Π° from ΠΈ to МоТС Π΄Π° сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ (ситС сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ со помош Π½Π° Π˜Π›Π˜):

  • namespaceSelector β€” Π³ΠΎ ΠΈΠ·Π±ΠΈΡ€Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ имСнски простор;
  • podSelector β€” ΠΈΠ·Π±ΠΈΡ€Π° ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ;
  • ipBlock β€” ΠΈΠ·Π±ΠΈΡ€Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°.

ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ (Π΄ΡƒΡ€ΠΈ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ) Π²ΠΎ потсСкциитС from/to Π½Π΅ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½. Π‘ΠΈΡ‚Π΅ Ρ‚ΠΈΠ΅ ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ со Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ Π˜Π›Π˜.

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

2. Π’Π½Π°Ρ‚Ρ€Π΅ Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ingress ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ from (ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ со Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ Π˜Π›Π˜). Π‘Π»ΠΈΡ‡Π½ΠΎ Π½Π° Ρ‚ΠΎΠ°, Π΄Π΅Π» egress ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° ΠΌΠ½ΠΎΠ³Ρƒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ to (исто Ρ‚Π°ΠΊΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ со Π΄ΠΈΡΡ˜ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°):

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

3. Π Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ ΠΈ со Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ Π˜Π›Π˜

Но, ΠΏΡ€ΠΈ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅, постои Π΅Π΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΅ истакна ΠšΡ€ΠΈΡ ΠšΡƒΠ½ΠΈ: Kubernetes ΠΌΠΎΠΆΠ΅ само Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ policyTypes (Ingress ΠΈΠ»ΠΈ Egress). ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π³ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ Π²Π»Π΅Π·ΠΎΡ‚ (ΠΈΠ»ΠΈ ΠΈΠ·Π»Π΅Π³ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ) ќС сС ΠΏΡ€Π΅Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°Π°Ρ‚ Π΅Π΄Π½ΠΈ со Π΄Ρ€ΡƒΠ³ΠΈ.

Врска ΠΏΠΎΠΌΠ΅Ρ“Ρƒ имСнскитС простори

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΅ ΡΠΏΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ просторитС со имиња. Ова ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСни со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° одбивањС ΡˆΡ‚ΠΎ ќС Π³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ појдовСн ΠΈ/ΠΈΠ»ΠΈ дојдов Π²ΠΎ имСнскиот простор (Π²ΠΈΠ΄Π΅Ρ‚Π΅ β€žΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΡΠΎΠ³ΠΎΠ»ΡƒΠ²Π°ΡšΠ΅β€œ ΠΏΠΎΠ³ΠΎΡ€Π΅).

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ пристапот Π΄ΠΎ имСнскиот простор (Π²ΠΈΠ΄Π΅Ρ‚Π΅ Π³ΠΎ β€žΠŸΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π·Π° ΡΠΎΠ³ΠΎΠ»ΡƒΠ²Π°ΡšΠ΅β€œ ΠΏΠΎΠ³ΠΎΡ€Π΅), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ исклучоци ΠΎΠ΄ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° одбивањС со Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ќС Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ врски ΠΎΠ΄ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ имСнски простор ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ namespaceSelector:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, ситС ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ° Π²ΠΎ имСнскиот простор default ќС ΠΈΠΌΠ°Π°Ρ‚ пристап Π΄ΠΎ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈΡ‚Π΅ postgres Π²ΠΎ имСнскиот простор database. Но, ΡˆΡ‚ΠΎ Π°ΠΊΠΎ сакатС Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ пристап Π΄ΠΎ postgres само спСцифични ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ Π²ΠΎ имСнскиот простор default?

Π€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΏΠΎ имСнски простори ΠΈ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ

ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π²Π΅Ρ€Π·ΠΈΡ˜Π° 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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π—ΠΎΡˆΡ‚ΠΎ ΠΎΠ²Π° сС Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ И намСсто Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎΡ‚ΠΎ Π˜Π›Π˜?

Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ Π½Π° ΡƒΠΌ Π΄Π΅ΠΊΠ° podSelector Π½Π΅ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со Ρ†Ρ€Ρ‚ΠΈΡ‡ΠΊΠ°. Π’ΠΎ YAML Ρ‚ΠΎΠ° Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° podSelector ΠΈ ΡΡ‚ΠΎΠ΅Ρ˜ΡœΠΈ ΠΏΡ€Π΅Π΄ Π½Π΅Π³ΠΎ namespaceSelector ΡƒΠΏΠ°Ρ‚Π΅Ρ‚Π΅ сС Π½Π° истиот Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΠ΄ списокот. Π—Π°Ρ‚ΠΎΠ°, Ρ‚ΠΈΠ΅ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ со Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ И.

Π”ΠΎΠ΄Π°Π²Π°ΡšΠ΅ Ρ†Ρ€Ρ‚ΠΈΡ‡ΠΊΠ° ΠΏΡ€Π΅Π΄ podSelector ќС Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со појава Π½Π° Π½ΠΎΠ² Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΠ΄ списокот, кој ќС сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° со ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΠΎΡ‚ namespaceSelector ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ Π˜Π›Π˜.

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ со ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° ΠΎΠ·Π½Π°ΠΊΠ° Π²ΠΎ ситС имСнски простори, внСсСтС ΠΏΡ€Π°Π·Π½ΠΎ namespaceSelector:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ПовСќС Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ сС Π·Π΄Ρ€ΡƒΠΆΡƒΠ²Π°Π°Ρ‚ со I

ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅Π½ Ρ•ΠΈΠ΄ со повСќС ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ (домаќини, ΠΌΡ€Π΅ΠΆΠΈ, Π³Ρ€ΡƒΠΏΠΈ) сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ Π˜Π›Π˜. Π‘Π»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ќС Ρ€Π°Π±ΠΎΡ‚ΠΈ Π°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ сС совпаѓа Host_1 Или Host_2:

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

Напротив, Π²ΠΎ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π²ΠΎ podSelector ΠΈΠ»ΠΈ namespaceSelector сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ со Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ И. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слСдново ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ќС ΠΈΠ·Π±Π΅Ρ€Π΅ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈ ΡˆΡ‚ΠΎ Π³ΠΈ ΠΈΠΌΠ°Π°Ρ‚ Π΄Π²Π΅Ρ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ, role=db И version=v2:

podSelector:
  matchLabels:
    role: db
    version: v2

Π˜ΡΡ‚Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π²Π°ΠΆΠΈ Π·Π° ситС Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ: ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ΠΈ Π½Π° Ρ†Π΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ΠΈ Π½Π° pod ΠΈ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ΠΈ Π½Π° имСнски простор.

ΠŸΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ ΠΈ IP адрСси (IPBlocks)

Π—Π°ΡˆΡ‚ΠΈΡ‚Π½ΠΈΡ‚Π΅ Ρ•ΠΈΠ΄ΠΎΠ²ΠΈ користат VLAN, IP адрСси ΠΈ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

Π’ΠΎ Kubernetes, IP-адрСситС сС Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°Π°Ρ‚ автоматски Π½Π° pods ΠΈ ΠΌΠΎΠΆΠ΅ чСсто Π΄Π° сС ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ сС користат Π·Π° ΠΈΠ·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° pods ΠΈ имСнски простори Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

ΠŸΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ (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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠŸΡ€Π°Π·Π½ΠΈΠΎΡ‚ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ Π½Π° pod Π²ΠΎ овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π½Π°Ρ‡ΠΈ β€žΠΈΠ·Π±Π΅Ρ€ΠΈ Π³ΠΈ ситС мСста Π²ΠΎ имСнскиот ΠΏΡ€ΠΎΡΡ‚ΠΎΡ€β€œ.

Оваа ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π° пристап само Π΄ΠΎ 8.8.8.8; пристапот Π΄ΠΎ која Π±ΠΈΠ»ΠΎ Π΄Ρ€ΡƒΠ³Π° IP адрСса Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Ρ‚. Π—Π½Π°Ρ‡ΠΈ, Π²ΠΎ ΡΡƒΡˆΡ‚ΠΈΠ½Π°, Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Π²Ρ‚Π΅ пристапот Π΄ΠΎ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° услуга Kubernetes DNS. Ако сè ΡƒΡˆΡ‚Π΅ сакатС Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅, Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ Π³ΠΎ ΠΎΠ²Π° Сксплицитно.

ΠžΠ±ΠΈΡ‡Π½ΠΎ ipBlocks ΠΈ podSelectors мСѓусСбно сС исклучуваат, бидСјќи Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ IP адрСси Π½Π° pods Π½Π΅ сС користат Π²ΠΎ ipBlocks. Π‘ΠΎ ΡƒΠΊΠ°ΠΆΡƒΠ²Π°ΡšΠ΅ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈ IP ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ, Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ ќС Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ врски Π΄ΠΎ/ΠΎΠ΄ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ со ΠΎΠ²ΠΈΠ΅ адрСси. Π’ΠΎ пракса, Π½Π΅ΠΌΠ° Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ која IP адрСса Π΄Π° ја користитС, ΠΏΠΎΡ€Π°Π΄ΠΈ ΡˆΡ‚ΠΎ Ρ‚ΠΈΠ΅ Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС користат Π·Π° ΠΈΠ·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ.

Како ΠΊΠΎΠ½Ρ‚Ρ€Π°-ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слСднава ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° ситС IP адрСси ΠΈ Π·Π°Ρ‚ΠΎΠ° Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π° пристап Π΄ΠΎ ситС Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ пристапот само Π΄ΠΎ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ IP-адрСси, со исклучок Π½Π° Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ IP-адрСси Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈΡ‚Π΅. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ pod Π΅ 10.16.0.0/14:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

ΠŸΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ

Π’ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ ΠΌΠ΅ΡˆΡƒΠ½ΠΊΠΈΡ‚Π΅ ΡΠ»ΡƒΡˆΠ°Π°Ρ‚ Π΅Π΄Π½Π° ΠΏΠΎΡ€Ρ‚Π°. Ова Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Сдноставно Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ спСцифициратС Π±Ρ€ΠΎΠ΅Π²ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΡ€Ρ‚ΠΈΡ‚Π΅ Π²ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ ΠΈ Π΄Π° оставитС сè ΠΊΠ°ΠΊΠΎ стандардно. Π‘Π΅ΠΏΠ°ΠΊ, сС ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π° Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ порСстриктивни, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ случаи сè ΡƒΡˆΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π°:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° сСлСкторот ports сС однСсува Π½Π° ситС Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π²ΠΎ Π±Π»ΠΎΠΊΠΎΡ‚ to ΠΈΠ»ΠΈ from, која содрТи. Π—Π° Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³Ρ€ΡƒΠΏΠΈ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ, ΠΏΠΎΠ΄Π΅Π»Π΅Ρ‚Π΅ ingress ΠΈΠ»ΠΈ egress Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ потсСкции со to ΠΈΠ»ΠΈ from ΠΈ Π²ΠΎ сСкој Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΈ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π°:

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

Π’ΠΎΠ²Π΅Π΄ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ Π·Π° профСсионалци Π·Π° бСзбСдност

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π°:

  • Ако цСлосно ја ΠΈΡΠΏΡƒΡˆΡ‚ΠΈΡ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° (ports), ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈ ситС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈ ситС ΠΏΠΎΡ€Ρ‚ΠΈ;
  • Ако ја ΠΈΡΠΏΡƒΡˆΡ‚ΠΈΡ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ (protocol), ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈ TCP;
  • Ако ја ΠΈΡΠΏΡƒΡˆΡ‚ΠΈΡ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° (port), ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈ ситС ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π°.

ΠΠ°Ρ˜Π΄ΠΎΠ±Ρ€Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°: НС ΠΏΠΎΡ‚ΠΏΠΈΡ€Π°Ρ˜Ρ‚Π΅ сС Π½Π° стандарднитС врСдности, Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ ΡˆΡ‚ΠΎ Π²ΠΈ Ρ‚Ρ€Π΅Π±Π° Сксплицитно.

Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΠΌΠΎΡ€Π° Π΄Π° користитС ΠΏΠΎΠ΄-ΠΏΠΎΡ€Ρ‚ΠΈ, Π° Π½Π΅ сСрвисни ΠΏΠΎΡ€Ρ‚ΠΈ (повСќС Π·Π° ΠΎΠ²Π° Π²ΠΎ слСдниот пасус).

Π”Π°Π»ΠΈ сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ услуги?

Π’ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ, ΠΏΠΎΠ΄ΠΎΠ²ΠΈΡ‚Π΅ Π²ΠΎ Kubernetes пристапуваат мСѓусСбно ΠΏΡ€Π΅ΠΊΡƒ услуга - Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π΅Π½ балансирач Π½Π° ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ кој Π³ΠΎ прСнасочува ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΊΠΎΠ½ мСстата ΡˆΡ‚ΠΎ ја спровСдуваат услугата. МоТСби мислитС Π΄Π΅ΠΊΠ° ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ пристапот Π΄ΠΎ услугитС, Π½ΠΎ Ρ‚ΠΎΠ° Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°. ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° ΠΏΠΎΠ΄-ΠΏΠΎΡ€Ρ‚ΠΈ, Π° Π½Π΅ Π½Π° сСрвисни ΠΏΠΎΡ€Ρ‚ΠΈ.

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ услугата ја ΡΠ»ΡƒΡˆΠ° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° 80, Π½ΠΎ Π³ΠΎ прСнасочува ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΊΠΎΠ½ ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° 8080 ΠΎΠ΄ Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ, ΠΌΠΎΡ€Π° Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ 8080 Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°.

Π’Π°ΠΊΠ²ΠΈΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС смСта Π·Π° Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½: Π°ΠΊΠΎ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° структура Π½Π° услугата (ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΈ ΡΠ»ΡƒΡˆΠ°Π°Ρ‚ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ) сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π°Ρ‚.

Нов архитСктонски пристап ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Service Mesh (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΠ΄Π΅Ρ‚Π΅ Π·Π° Π˜ΡΡ‚ΠΈΠΎ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ - ΠΏΡ€ΠΈΠ±Π». ΠΏΡ€Π΅Π²ΠΎΠ΄.) Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° сС справитС со овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π”Π°Π»ΠΈ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΄Π° сС рСгистрираат ΠΈ Ingress ΠΈ Egress?

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΎΡ‚ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π΅ Π΄Π°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π° А Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π° Π‘, ΠΌΠΎΡ€Π° Π΄Π° ΠΈ сС Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° создадС појдовна врска (Π·Π° ΠΎΠ²Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° ΠΈΠ·Π»Π΅Π·), Π° ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π° Π‘ ΠΌΠΎΡ€Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ дојдовна врска ( Π·Π° ΠΎΠ²Π°, соодвСтно, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Π²ΠΈ Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π²Π»Π΅Π·).

ΠœΠ΅Ρ“ΡƒΡ‚ΠΎΠ°, Π²ΠΎ пракса, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС ΠΏΠΎΡ‚ΠΏΡ€Π΅Ρ‚Π΅ Π½Π° стандардната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ врски Π²ΠΎ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π΄Π²Π΅Ρ‚Π΅ насоки.

Ако Π½Π΅ΠΊΠΎΠΈ ΠΏΠΎΠ΄-ΠΈΠ·Π²ΠΎΡ€ ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΈΠ·Π±Ρ€Π°Π½ΠΈ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС ΠΈΠ·Π»Π΅Π·-ΠŸΠΎΠ»ΠΈΡ‚ΠΈΡ‡Π°Ρ€ΠΈΡ‚Π΅, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ°Ρ‚Π° ΡˆΡ‚ΠΎ ќС ΠΌΡƒ сС Π½Π°ΠΌΠ΅Ρ‚Π½Π°Ρ‚ ќС Π±ΠΈΠ΄Π°Ρ‚ ΡƒΡ‚Π²Ρ€Π΄Π΅Π½ΠΈ со Π½ΠΈΠ²Π½Π° Π΄ΠΈΡΡ˜ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, ќС Ρ‚Ρ€Π΅Π±Π° Сксплицитно Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ со ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π° -Π½Π° адрСсатот. Ако нСкоја Π³Ρ€ΡƒΠΏΠ° Π½Π΅ Π΅ ΠΈΠ·Π±Ρ€Π°Π½Π° ΠΎΠ΄ нСкоја ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ појдовСн (ΠΈΠ·Π»Π΅Π·Π΅Π½) ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π΅ стандардно Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½.

Π‘Π»ΠΈΡ‡Π½ΠΎ Π½Π° Ρ‚ΠΎΠ°, судбината Π½Π° ΠΌΠ΅ΡˆΡƒΠ½ΠΎΡ‚ СадрСсат, ΠΈΠ·Π±Ρ€Π°Π½ΠΈ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС Π½Π°Π²Π»Π΅Π³ΡƒΠ²Π°ΡšΠ΅-ΠŸΠΎΠ»ΠΈΡ‚ΠΈΡ‡Π°Ρ€ΠΈΡ‚Π΅, ќС сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ‚ со Π½ΠΈΠ²Π½Π°Ρ‚Π° Π΄ΠΈΡΡ˜ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΌΠΎΡ€Π° Сксплицитно Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠΌΠ° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ ΠΎΠ΄ ΠΈΠ·Π²ΠΎΡ€Π½Π°Ρ‚Π° ΠΏΠΎΠ΄Π»ΠΎΠ³Π°. Ако ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π° Π½Π΅ Π΅ ΠΈΠ·Π±Ρ€Π°Π½Π° ΠΎΠ΄ Π½ΠΈΡ‚Ρƒ Π΅Π΄Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, Ρ†Π΅Π»ΠΈΠΎΡ‚ Π²Π»Π΅Π·Π΅Π½ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π·Π° Π½Π΅Π³ΠΎ Π΅ стандардно Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½.

Π’ΠΈΠ΄Π΅Ρ‚Π΅ Π΄Ρ€ΠΆΠ°Π²Ρ˜Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠ»ΠΈ Π±Π΅Π· Π΄Ρ€ΠΆΠ°Π²Ρ˜Π°Π½ΡΡ‚Π²ΠΎ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ.

Π”Π½Π΅Π²Π½ΠΈΡ†ΠΈ

ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π½Π΅ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π΅Π²ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ€Π°Π°Ρ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜. Ова Π³ΠΎ ΠΎΡ‚Π΅ΠΆΠ½ΡƒΠ²Π° ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π΄Π°Π»ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ ΠΈ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅Ρ€Π° ја ΠΊΠΎΠΌΠΏΠ»ΠΈΡ†ΠΈΡ€Π° бСзбСдносната Π°Π½Π°Π»ΠΈΠ·Π°.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ ΠΊΠΎΠ½ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ услуги

ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π°Ρ‚ Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ цСлосно ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΡƒΠ²Π°Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° Π΄ΠΎΠΌΠ΅Π½ (DNS) Π²ΠΎ сСкциитС Π·Π° ΠΈΠ·Π»Π΅Π·. Овој Ρ„Π°ΠΊΡ‚ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ Π½Π΅ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ³Π° сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π°Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π½Π° Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ дСстинации ΠΊΠΎΠΈ Π½Π΅ΠΌΠ°Π°Ρ‚ фиксна IP адрСса (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ aws.com).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°

Π—Π°ΡˆΡ‚ΠΈΡ‚Π½ΠΈΡ‚Π΅ Ρ•ΠΈΠ΄ΠΎΠ²ΠΈ ќС Π²Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄Π°Ρ‚ ΠΈΠ»ΠΈ Π΄ΡƒΡ€ΠΈ ΠΈ ќС ΠΎΠ΄Π±ΠΈΡ˜Π°Ρ‚ Π΄Π° ја ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°. Kubernetes исто Ρ‚Π°ΠΊΠ° ΠΏΡ€Π°Π²ΠΈ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. Кога поставува ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΡ€Π΅ΠΊΡƒ kubectl, Kubernetes ΠΌΠΎΠΆΠ΅ Π΄Π° изјави Π΄Π΅ΠΊΠ° Π΅ Π½Π΅Ρ‚ΠΎΡ‡Π½Π° ΠΈ Π΄Π° ΠΎΠ΄Π±ΠΈΠ΅ Π΄Π° ја ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ. Π’ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ случаи, Kubernetes ќС ја ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΈ ќС ја ΠΏΠΎΠΏΠΎΠ»Π½ΠΈ со Π΄Π΅Ρ‚Π°Π»ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ нСдостасуваат. Π’ΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС Π²ΠΈΠ΄Π°Ρ‚ со помош Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

kubernetes get networkpolicy <policy-name> -o yaml

Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ Π½Π° ΡƒΠΌ Π΄Π΅ΠΊΠ° систСмот Π·Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡ˜Π° Π½Π° Kubernetes Π½Π΅ Π΅ Π½Π΅ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ»ΠΈΠ² ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠΏΡƒΡˆΡ‚ΠΈ Π½Π΅ΠΊΠΎΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ.

Π˜Π·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅

Kubernetes Π½Π΅ Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сам ΠΏΠΎ сСбС, Ρ‚ΡƒΠΊΡƒ Π΅ само API ΠΏΠΎΡ€Ρ‚Π° ΡˆΡ‚ΠΎ Π³ΠΎ Π΄Π΅Π»Π΅Π³ΠΈΡ€Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΡ‚ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° основниот систСм Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Container Networking Interface (CNI). ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° кластСрот Kubernetes Π±Π΅Π· Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π° соодвСтниот CNI Π΅ исто ΠΊΠ°ΠΊΠΎ ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° сСрвСрот Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅Π½ Ρ•ΠΈΠ΄ Π±Π΅Π· ΠΏΠΎΡ‚ΠΎΠ° Π΄Π° Π³ΠΈ инсталиратС Π½Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π½ΠΈΡ‚Π΅ Ρ•ΠΈΠ΄ΠΎΠ²ΠΈ. Од вас зависи Π΄Π°Π»ΠΈ ќС сС осигуратС Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°Ρ‚Π΅ пристоСн CNI ΠΈΠ»ΠΈ, Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Π½Π° Kubernetes, хостирани Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ‚ (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја Π²ΠΈΠ΄ΠΈΡ‚Π΅ листата Π½Π° ΠΏΡ€ΠΎΠ²Π°Ρ˜Π΄Π΅Ρ€ΠΈ Ρ‚ΡƒΠΊΠ° - ΠΏΡ€ΠΈΠ±Π». транс.), ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡˆΡ‚ΠΎ ќС Π²ΠΈ постават CNI.

Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° Kubernetes Π½Π΅ΠΌΠ° Π΄Π° Π²Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈ Π°ΠΊΠΎ поставитС ΠΌΡ€Π΅ΠΆΠ½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π±Π΅Π· соодвСтСн помошник CNI.

Π”Ρ€ΠΆΠ°Π²Π΅Π½ ΠΈΠ»ΠΈ Π±Π΅Π· Π΄Ρ€ΠΆΠ°Π²Ρ˜Π°Π½ΡΡ‚Π²ΠΎ?

Π‘ΠΈΡ‚Π΅ Kubernetes CNI ΡˆΡ‚ΠΎ Π³ΠΈ срСтнав сС со статус (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Calico користи Linux conntrack). Ова ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° pod Π΄Π° ΠΏΡ€ΠΈΠΌΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° TCP ΠΊΠΎΠ½Π΅ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΡˆΡ‚ΠΎ ја ΠΈΠ½ΠΈΡ†ΠΈΡ€Π°Π»Π° Π±Π΅Π· Π΄Π° ΠΌΠΎΡ€Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π΄Π° ја воспостави. Како ΠΈ Π΄Π° Π΅, Π½Π΅ сум свСсСн Π·Π° стандард Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Ρ кој Π±ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π» дрТавност.

НапрСдно ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со бСзбСдносни ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ

Π•Π²Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΡΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° бСзбСдносната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π²ΠΎ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ:

  1. АрхитСктонската шСма Π½Π° Service Mesh користи ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Π·Π° странична ΠΊΠΎΠ»Π° Π·Π° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Π΄Π΅Ρ‚Π°Π»Π½Π° Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΡ˜Π° ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ΠΎΡ‚ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° услуга. Како ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π·Π΅ΠΌΠ΅ΠΌΠ΅ Π˜ΡΡ‚ΠΈΠΎ.
  2. НСкои ΠΎΠ΄ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° CNI Π³ΠΈ ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈΡ˜Π° своитС Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° Π΄Π° Π³ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π°Ρ‚ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes.
  3. Π’ΡƒΡ„ΠΈΠ½ ΠžΡ€ΠΊΠ° ΠžΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° видливост ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ.

ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ Tufin Orca ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π° со ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes (ΠΈ Π΅ ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° сликитС ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚ ΠΏΠΎΠ³ΠΎΡ€Π΅).

Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

ΠœΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π½ΡƒΠ΄Π°Ρ‚ Π΄ΠΎΠ±Π°Ρ€ сСт Π½Π° Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° кластСри, Π½ΠΎ Ρ‚ΠΈΠ΅ Π½Π΅ сС ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΈ ΠΈ ΠΈΠΌΠ°Π°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ суптилности. ΠŸΠΎΡ€Π°Π΄ΠΈ ΠΎΠ²Π°Π° слоТСност, Π²Π΅Ρ€ΡƒΠ²Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΡΡ‚ΠΎΡ˜Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° кластСри сС Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ΠΈ. ΠœΠΎΠΆΠ½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° Π·Π° овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°.

Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° овој Π²ΠΎΠ΄ΠΈΡ‡ ќС ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° сС Ρ€Π°Π·Ρ˜Π°ΡΠ½Π°Ρ‚ Π½Π΅ΠΊΠΎΠΈ ΠΏΡ€Π°ΡˆΠ°ΡšΠ° ΠΈ Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ со ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС соочитС.

PS ΠΎΠ΄ ΠΏΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π°Ρ‡

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ ΠΈ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ Π±Π»ΠΎΠ³:

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€