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
Å 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
Calico
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
...
Å
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.
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Å”.
- Darba slodzes galapunkta (pod) politika
- Resursdatora galapunkta politika
- Opcija ApplyOnForward
- PreDNAT politika
- 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
Lasi Ŕo
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
Avots: www.habr.com