Izpratne par tīkla politikas iespējām ar Calico

Izpratne par tīkla politikas iespējām ar Calico

Calico tÄ«kla spraudnis nodroÅ”ina plaÅ”u tÄ«kla politiku klāstu ar vienotu sintaksi, lai aizsargātu aparatÅ«ras saimniekdatorus, virtuālās maŔīnas un apvidus. Å Ä«s politikas var tikt lietotas nosaukumvietā vai globālās tÄ«kla politikas, kas attiecas uz resursdatora galapunkts (lai aizsargātu lietojumprogrammas, kas darbojas tieÅ”i resursdatorā - resursdators var bÅ«t serveris vai virtuālā maŔīna) vai darba slodzes galapunkts (lai aizsargātu lietojumprogrammas, kas darbojas konteineros vai mitinātās virtuālās maŔīnās). Calico politikas ļauj piemērot droŔības pasākumus dažādos paketes ceļa punktos, izmantojot tādas opcijas kā preDNAT, unraracked un applyOnForward. Izpratne par Å”o opciju darbÄ«bu var palÄ«dzēt uzlabot jÅ«su kopējās sistēmas droŔību un veiktspēju. Å ajā rakstā ir izskaidrota Å”o Calico politikas opciju (preDNAT, unraracked un applyOnForward) bÅ«tÄ«ba, kas tiek lietota resursdatora galapunktiem, uzsverot to, kas notiek pakeÅ”u apstrādes ceļos (iptabels ķēdēs).

Å ajā rakstā tiek pieņemts, ka jums ir pamatzināŔanas par Kubernetes un Calico tÄ«kla politiku darbÄ«bu. Ja nē, mēs iesakām to izmēģināt pamata tÄ«kla politikas apmācÄ«ba Šø resursdatora aizsardzÄ«bas apmācÄ«ba lietojiet Calico pirms Ŕī raksta lasÄ«Å”anas. Mēs arÄ« sagaidām, ka jums bÅ«s pamatzināŔanas par darbu iptables Linux sistēmā.

Calico globālā tÄ«kla politika ļauj lietot piekļuves noteikumu kopu, izmantojot etiÄ·etes (saimniekdatoru grupām un darba slodzēm/podiem). Tas ir ļoti noderÄ«gi, ja kopā izmantojat neviendabÄ«gas sistēmas ā€” virtuālās maŔīnas, sistēmu, kas atrodas tieÅ”i uz aparatÅ«ras, vai kubernetes infrastruktÅ«ru. Turklāt jÅ«s varat aizsargāt savu klasteru (mezglus), izmantojot deklaratÄ«vo politiku kopu, un piemērot tÄ«kla politikas ienākoÅ”ajai trafikai (piemēram, izmantojot pakalpojumu NodePorts vai External IPs).

PamatlÄ«menÄ«, kad Calico savieno podziņu ar tÄ«klu (skatiet diagrammu zemāk), tas savieno to ar resursdatoru, izmantojot virtuālo Ethernet interfeisu (veth). DatplÅ«sma, ko sÅ«ta pods, nonāk resursdatorā no Ŕīs virtuālās saskarnes un tiek apstrādāta tāpat kā tad, ja tā nāk no fiziska tÄ«kla saskarnes. Pēc noklusējuma Calico Ŕīs saskarnes nosauc par caliXXX. Tā kā trafika notiek caur virtuālo saskarni, tā iet caur iptables tā, it kā pods bÅ«tu viena lēciena attālumā. Tāpēc, kad satiksme nāk uz/no podziņa, tā tiek pārsÅ«tÄ«ta no saimniekdatora viedokļa.

Kubernetes mezglā, kurā darbojas Calico, virtuālo saskarni (veth) varat kartēt ar darba slodzi, kā norādÄ«ts tālāk. Tālāk esoÅ”ajā piemērā varat redzēt, ka veth#10 (calic1cbf1ca0f8) ir savienots ar cnx-manager-* kalikonu uzraudzÄ«bas nosaukumvietā.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever
...

[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m                            ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
...

Izpratne par tīkla politikas iespējām ar Calico

Ņemot vērā, ka Calico katrai darba slodzei izveido veth saskarni, kā tas ievieÅ” politikas? Lai to izdarÄ«tu, Calico izveido āķus dažādās pakeÅ”u apstrādes ceļa ķēdēs, izmantojot iptables.

Tālāk redzamajā diagrammā parādÄ«tas ķēdes, kas iesaistÄ«tas pakeÅ”u apstrādē iptables (vai apakÅ”sistēmā Netfilter). Kad pakete nonāk caur tÄ«kla interfeisu, tā vispirms iet caur PREROUTING ķēdi. Pēc tam tiek pieņemts lēmums par marÅ”rutÄ“Å”anu, un, pamatojoties uz to, pakete iet caur INPUT (novirzÄ«ta uz resursdatora procesiem) vai FORWARD (novirzÄ«ta uz pod vai citu tÄ«kla mezglu). No vietējā procesa pakete iet cauri OUTPUT un pēc tam POSTROUTING ķēdei, pirms tiek nosÅ«tÄ«ta pa kabeli.

Ņemiet vērā, ka iptables apstrādes ziņā pods ir arī ārēja entītija (savienota ar veth). Apkoposim:

  • PārsÅ«tÄ«tā satiksme (nat, marÅ”rutēta vai uz/no pod) iet caur ķēdēm PREROUTING - FORWARD - POSTROUTING.
  • DatplÅ«sma uz vietējo saimniekdatora procesu iet caur ķēdi PREROUTING - INPUT.
  • DatplÅ«sma no vietējā saimniekdatora procesa iet caur ķēdi OUTPUT - POSTROUTING.

Izpratne par tīkla politikas iespējām ar Calico

Calico nodroÅ”ina politikas iespējas, kas ļauj piemērot politikas visās ķēdēs. Paturot to prātā, apskatÄ«sim dažādās Calico pieejamās politikas konfigurācijas opcijas. Cipari zemāk esoÅ”ajā opciju sarakstā atbilst skaitļiem diagrammā iepriekÅ”.

  1. Darba slodzes galapunkta (pod) politika
  2. Resursdatora galapunkta politika
  3. Opcija ApplyOnForward
  4. PreDNAT politika
  5. Neizsekota politika

Sāksim ar to, kā politikas tiek piemērotas darba slodzes galapunktiem (Kubernetes podiem vai OpenStack virtuālajām maŔīnām), un pēc tam apskatÄ«sim resursdatora galapunktu politikas opcijas.

Darba slodzes galapunkti

Darba slodzes galapunkta politika (1)

Å Ä« ir iespēja aizsargāt jÅ«su kubernetes pākstis. Calico atbalsta darbu ar Kubernetes NetworkPolicy, taču tas nodroÅ”ina arÄ« papildu politikas - Calico NetworkPolicy un GlobalNetworkPolicy. Calico izveido ķēdi katram apgabalam (darba slodzei) un āķi INPUT un OUTPUT ķēdēs darba slodzei uz FORWARD ķēdes filtru tabulu.

Resursdatora galapunkti

Resursdatora galapunkta politika (2)

Papildus CNI (konteinera tÄ«kla saskarnei), Calico politikas nodroÅ”ina iespēju aizsargāt paÅ”u resursdatoru. Programmā Calico varat izveidot resursdatora galapunktu, norādot resursdatora saskarnes un, ja nepiecieÅ”ams, portu numuru kombināciju. Politikas izpilde Å”ai entÄ«tijai tiek panākta, izmantojot filtru tabulu INPUT un OUTPUT ķēdēs. Kā redzams diagrammā, (2) tie attiecas uz lokālajiem procesiem mezglā/resursdatorā. Tas nozÄ«mē, ka, ja izveidojat politiku, kas attiecas uz resursdatora galapunktu, tā neietekmēs trafiku, kas iet uz jÅ«su apvidiem/no tiem. Taču tas nodroÅ”ina vienu saskarni/sintaksi, lai bloķētu trafiku jÅ«su saimniekdatoram un podiem, izmantojot Calico politikas. Tas ievērojami vienkārÅ”o politiku pārvaldÄ«bas procesu neviendabÄ«gam tÄ«klam. Vēl viens svarÄ«gs lietoÅ”anas gadÄ«jums ir resursdatora galapunktu politiku konfigurÄ“Å”ana, lai uzlabotu klasteru droŔību.

ApplyOnForward politika (3)

Opcija ApplyOnForward ir pieejama Calico globālajā tÄ«kla politikā, lai atļautu politikas piemērot visai trafikai, kas iet caur resursdatora galapunktu, tostarp trafiku, ko pārsÅ«tÄ«s resursdators. Tas ietver datplÅ«smu, kas tiek pārsÅ«tÄ«ta uz vietējo podziņu vai jebkur citur tÄ«klā. Calico pieprasa, lai Å”is iestatÄ«jums bÅ«tu iespējots politikām, kurās tiek izmantota PreDNAT un netiek izsekota; skatiet tālāk norādÄ«tās sadaļas. Turklāt ApplyOnForward var izmantot, lai uzraudzÄ«tu resursdatora trafiku gadÄ«jumos, kad tiek izmantots virtuālais marÅ”rutētājs vai programmatÅ«ras NAT.

Ņemiet vērā: ja jums ir jāpiemēro viena un tā pati tīkla politika gan resursdatora procesiem, gan podiem, opcija ApplyOnForward nav jāizmanto. Viss, kas jums jādara, ir izveidot etiķeti vajadzīgajam resursdatora punktam un darba slodzes galapunktam (pod). Calico ir pietiekami gudrs, lai īstenotu politiku, kuras pamatā ir etiķetes, neatkarīgi no galapunkta veida (hostendpoint vai darba slodze).

PreDNAT politika (4)

Programmā Kubernetes pakalpojumu entÄ«tiju portus var atklāt ārēji, izmantojot opciju NodePorts vai pēc izvēles (izmantojot Calico), reklamējot tos, izmantojot opcijas Cluster IP vai External IPs. Kube starpniekserveris lÄ«dzsvaro ienākoÅ”o trafiku, kas ir saistÄ«ta ar pakalpojumu, atbilstoŔā pakalpojuma podiem, izmantojot DNAT. Ņemot to vērā, kā jÅ«s ievieÅ”at politikas trafikam, kas nāk caur NodePorts? Lai nodroÅ”inātu, ka Ŕīs politikas tiek piemērotas, pirms datplÅ«sma tiek apstrādāta ar DNAT (kas ir kartÄ“Å”ana starp resursdatoru: portu un atbilstoÅ”o pakalpojumu), Calico nodroÅ”ina globalNetworkPolicy parametru, ko sauc par "preDNAT: true".

Kad ir iespējots pirms-DNAT, Ŕīs politikas tiek ieviestas diagrammas 4. punktā ā€” ķēdes PREROUTING mangle tabulā ā€” tieÅ”i pirms DNST. Å eit netiek ievērota parastā politiku secÄ«ba, jo Ŕīs politikas tiek lietotas daudz agrāk trafika apstrādes ceļā. Tomēr preDNAT politikas ievēro piemēroÅ”anas secÄ«bu savā starpā.

Veidojot politikas ar pre-DNAT, ir svarÄ«gi bÅ«t uzmanÄ«giem attiecÄ«bā uz datplÅ«smu, kuru vēlaties apstrādāt, un ļaut, lai lielākā daļa tiktu noraidÄ«ta. DatplÅ«sma, kas pirms-DNAT politikā ir atzÄ«mēta kā ā€œatļautaā€, vairs netiks pārbaudÄ«ta resursdatora punkta politikā, savukārt datplÅ«sma, kas neatbilst pirms-DNAT politikai, turpināsies pa pārējām ķēdēm.
Calico ir noteicis, ka, izmantojot preDNAT, ir jāiespējo opcija applyOnForward, jo pēc definīcijas trafika galamērķis vēl nav izvēlēts. Trafiku var novirzīt uz resursdatora procesu vai arī to var pārsūtīt uz pod vai citu mezglu.

Neizsekota politika (5)

TÄ«kliem un lietojumprogrammām var bÅ«t lielas darbÄ«bas atŔķirÄ«bas. Dažos ārkārtējos gadÄ«jumos lietojumprogrammas var radÄ«t daudz Ä«slaicÄ«gu savienojumu. Tas var izraisÄ«t conntrack (Linux tÄ«kla steka pamatkomponenta) atmiņas pārtraukÅ”anu. Tradicionāli, lai palaistu Ŕāda veida lietojumprogrammas operētājsistēmā Linux, jums ir manuāli jākonfigurē vai jāatspējo conntrack vai jāraksta iptables kārtulas, lai apietu conntrack. Neizsekotā politika Calico ir vienkārŔāka un efektÄ«vāka iespēja, ja vēlaties apstrādāt savienojumus pēc iespējas ātrāk. Piemēram, ja izmantojat masÄ«vu Memcache vai kā papildu aizsardzÄ«bas lÄ«dzeklis pret DDOS.

Lasi Å”o blog post (Vai mÅ«su tulkojums), lai iegÅ«tu plaŔāku informāciju, tostarp veiktspējas testus, izmantojot neizsekoto politiku.

Iestatot opciju "doNotTrack: true" Calico globalNetworkPolicy, tā kļūst par **untracked** politiku un tiek lietota ļoti agri Linux pakeÅ”u apstrādes konveijerā. AplÅ«kojot iepriekÅ” redzamo diagrammu, neapstrādātās tabulas ķēdēs PREROUTING un OUTPUT tiek piemērotas neizsekotas politikas, pirms tiek sākta savienojuma izsekoÅ”ana (conntrack). Ja paketi atļauj neizsekoÅ”anas politika, tā tiek atzÄ«mēta, lai atspējotu savienojuma izsekoÅ”anu Å”ai paketei. Tas nozÄ«mē:

  • Neizsekotā politika tiek piemērota katrai paketei. Nav savienojuma (vai plÅ«smas) jēdziena. Savienojumu trÅ«kumam ir vairākas svarÄ«gas sekas:
  • Ja vēlaties atļaut gan pieprasÄ«jumu, gan atbildes trafiku, jums ir nepiecieÅ”ama kārtula gan ienākoÅ”ajai, gan izejoÅ”ajai informācijai (jo Calico parasti izmanto conntrack, lai atzÄ«mētu atbildes trafiku kā atļautu).
  • Neizsekotā politika nedarbojas Kubernetes darba slodzēm (podiem), jo Å”ajā gadÄ«jumā nav iespējams izsekot izejoÅ”o savienojumu no pod.
  • NAT nedarbojas pareizi ar neizsekotām paketēm (jo kodols saglabā NAT kartÄ“Å”anu conntrack).
  • Izejot kārtulu "atļaut visu" neizsekoÅ”anas politikā, visas paketes tiks atzÄ«mētas kā neizsekotas. Tas gandrÄ«z vienmēr nav tas, ko vēlaties, tāpēc ir svarÄ«gi bÅ«t ļoti selektÄ«vam attiecÄ«bā uz paketēm, kuras atļauj neizsekotas politikas (un ļaut lielākajai daļai trafika iziet caur parastajām izsekotajām politikām).
  • Neizsekotas politikas tiek piemērotas pakeÅ”u apstrādes konveijera paŔā sākumā. Tas ir ļoti svarÄ«gi saprast, veidojot Calico politikas. Jums var bÅ«t polise ar pasÅ«tÄ«jumu:1 un neizsekota politika ar pasÅ«tÄ«jumu:1000. Tam nebÅ«s nozÄ«mes. Neizsekoto politika tiks piemērota pirms aplikuma politikas. Neizsekotās politikas ievēro izpildes kārtÄ«bu tikai savā starpā.

Tā kā viens no politikas doNotTrack mērÄ·iem ir ieviest politiku ļoti agrÄ«nā Linux pakeÅ”u apstrādes konveijerā, Calico nosaka, ka, izmantojot doNotTrack, obligāti jānorāda opcija applyOnForward. Atsaucoties uz pakeÅ”u apstrādes diagrammu, ņemiet vērā, ka politika untracked(5) tiek piemērota pirms jebkādiem marÅ”rutÄ“Å”anas lēmumiem. Trafiku var novirzÄ«t uz resursdatora procesu vai arÄ« to var pārsÅ«tÄ«t uz pod vai citu mezglu.

Rezultāti

Mēs apskatÄ«jām dažādas politikas iespējas (resursdatora galapunkts, ApplyOnForward, preDNAT un Untracked) programmā Calico un to, kā tās tiek piemērotas pakeÅ”u apstrādes ceļā. Izpratne par to darbÄ«bu palÄ«dz izstrādāt efektÄ«vas un droÅ”as politikas. Izmantojot Calico, varat izmantot globālo tÄ«kla politiku, kas attiecas uz etiÄ·eti (mezglu un bloku grupu), un lietot politikas ar dažādiem parametriem. Tas ļauj droŔības un tÄ«kla dizaina profesionāļiem ērti aizsargāt ā€œvisuā€ (galapunktu veidus) vienlaikus, izmantojot vienu politikas valodu ar Calico politikām.

PateicÄ«ba: Es vēlos pateikties Å ons Kramptons Šø Aleksa Pollita par pārskatÄ«Å”anu un vērtÄ«go informāciju.

Avots: www.habr.com

Pievieno komentāru