Fahatakarana ny safidy politikan'ny tambajotra miaraka amin'i Calico

Fahatakarana ny safidy politikan'ny tambajotra miaraka amin'i Calico

Ny plugin tambajotra Calico dia manome politikam-pifandraisana marobe miaraka amin'ny syntax iraisana mba hiarovana ny mpampiantrano fitaovana, milina virtoaly ary pods. Ireo politika ireo dia azo ampiharina ao anatin'ny namespace na ho politikan'ny tambajotra manerantany izay mihatra amin'ny toerana fiafaran'ny mpampiantrano (mba hiarovana ny fampiharana mandeha mivantana amin'ny mpampiantrano - ny mpampiantrano dia mety ho mpizara na milina virtoaly) na faran'ny enta-mavesatra (mba hiarovana ny rindranasa mandeha ao anaty kaontenera na milina virtoaly nampiantranoana). Ny politikan'i Calico dia ahafahanao mampihatra fepetra fiarovana amin'ny teboka isan-karazany amin'ny lalan'ny fonosana iray amin'ny fampiasana safidy toy ny preDNAT, unraracked, ary applyOnForward. Ny fahatakarana ny fomba fiasan'ireo safidy ireo dia afaka manampy amin'ny fanatsarana ny fiarovana sy ny fahombiazan'ny rafitrao manontolo. Ity lahatsoratra ity dia manazava ny maha-zava-dehibe an'ireo safidy politika Calico (preDNAT, unraracked ary applyOnForward) ampiharina amin'ny teboka farany fampiantranoana, miaraka amin'ny fanamafisana ny zava-mitranga amin'ny làlan'ny fanodinana fonosana (rojo iptabels).

Ity lahatsoratra ity dia mihevitra fa manana fahatakarana fototra momba ny fomba fiasan'ny politikan'ny tambajotra Kubernetes sy Calico ianao. Raha tsy izany dia manoro hevitra izahay hanandrana izany lesona fototra momba ny politikan'ny tambajotra и fampianarana fiarovana mpampiantrano mampiasa Calico alohan'ny hamakiana ity lahatsoratra ity. Manantena koa izahay mba hanana fahatakarana fototra momba ny asa iptables amin'ny linux.

calico politikan'ny tambajotra manerantany mamela anao hampihatra fitsipika fidirana amin'ny alàlan'ny etikety (amin'ny vondrona mpampiantrano sy enta-mavesatra/pods). Tena ilaina izany raha mampiasa rafitra samihafa ianao - milina virtoaly, rafitra mivantana amin'ny fitaovana, na fotodrafitrasa kubernetes. Ho fanampin'izay, azonao atao ny miaro ny cluster (nodes) anao amin'ny fampiasana andiana politikam-panambarana ary mampihatra ny politikan'ny tambajotra amin'ny fifamoivoizana miditra (ohatra, amin'ny alàlan'ny serivisy NodePorts na External IPs).

Amin'ny ambaratonga fototra, rehefa mampifandray pod amin'ny tambajotra i Calico (jereo ny sary etsy ambany), dia mampifandray izany amin'ny mpampiantrano amin'ny alàlan'ny interface Ethernet virtoaly (veth). Ny fifamoivoizana nalefan'ny pod dia tonga any amin'ny mpampiantrano avy amin'ity interface virtoaly ity ary karakaraina amin'ny fomba mitovy amin'ny hoe avy amin'ny tambajotra ara-batana. Amin'ny alàlan'ny default, i Calico dia manonona ireo fifandraisana ireo caliXXX. Satria ny fifamoivoizana dia tonga amin'ny alàlan'ny interface virtoaly, dia mandeha amin'ny iptables toy ny hoe ny pod dia hop iray. Noho izany, rehefa tonga amin'ny / avy amin'ny pod ny fifamoivoizana dia alefa avy amin'ny fomba fijerin'ny mpampiantrano izany.

Amin'ny node Kubernetes mihazakazaka Calico, azonao atao ny manao sarintany ny interface virtoaly (veth) amin'ny enta-mavesatra toy izao manaraka izao. Ao amin'ny ohatra etsy ambany, hitanao fa ny veth#10 (calic1cbf1ca0f8) dia mifandray amin'ny cnx-manager-* ao amin'ny namespace calico-monitoring.

[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
...

Fahatakarana ny safidy politikan'ny tambajotra miaraka amin'i Calico

Raha toa ka mamorona interface tsara ho an'ny enta-mavesatra tsirairay i Calico, ahoana no fampiharana ny politika? Mba hanaovana izany, dia mamorona farango amin'ny rojo isan-karazany amin'ny làlan'ny fanodinana fonosana mampiasa iptables i Calico.

Ny kisary etsy ambany dia mampiseho ny rojo misahana ny fanodinana fonosana ao amin'ny iptables (na ny subsystem netfilter). Rehefa tonga amin'ny alàlan'ny seraseran'ny tambajotra ny fonosana iray dia mandeha amin'ny rojo PREROUTING aloha. Ny fanapahan-kevitra momba ny lalana dia raisina avy eo, ary mifototra amin'izany, ny packet dia mandalo amin'ny INPUT (mitodika amin'ny fizotran'ny fampiantranoana) na FORWARD (mitodika amin'ny pod na node hafa amin'ny tambajotra). Avy amin'ny dingana eo an-toerana, ny fonosana dia mandeha amin'ny OUTPUT ary avy eo POSTROUTING rojo alohan'ny handefasana ny tariby.

Mariho fa ny pod dia singa ivelany (mifandray amin'ny veth) amin'ny resaka fanodinana iptables. Andao hamintina:

  • Ny fifamoivoizana mandroso (nat, routed na mankany/avy amin'ny pod) dia mandalo amin'ny rojo PREROUTING - FORWARD - POSTROUTING.
  • Ny fifamoivoizana mankany amin'ny dingan'ny mpampiantrano eo an-toerana dia mandalo amin'ny rojo PREROUTING - INPUT.
  • Ny fifamoivoizana avy amin'ny fizotry ny mpampiantrano eo an-toerana dia mandeha amin'ny rojo OUTPUT - POSTROUTING.

Fahatakarana ny safidy politikan'ny tambajotra miaraka amin'i Calico

Calico dia manome safidy politika ahafahanao mampihatra ny politika amin'ny rojo rehetra. Miaraka amin'izany ao an-tsaina, andeha hojerentsika ireo safidy fanitsiana politika samihafa misy ao Calico. Ireo isa ao amin'ny lisitry ny safidy etsy ambany dia mifanitsy amin'ny isa eo amin'ny kisary etsy ambony.

  1. Politika fiafaran'ny asa (pod).
  2. Politika endpoint mpampiantrano
  3. ApplyOnForward safidy
  4. Politika PreDNAT
  5. Politika tsy voafehy

Andeha isika hanomboka amin'ny fijerena ny fomba ampiharana ny politika amin'ireo teboka faran'ny enta-mavesatra (Kubernetes pods na OpenStack VMs), ary avy eo dia jereo ny safidy politika ho an'ny teboka farany mpampiantrano.

Toerana fiafaran'ny asa

Politika fiafaran'ny asa (1)

Ity dia safidy iray hiarovana ny pods kubernetes anao. Manohana ny fiaraha-miasa amin'ny Kubernetes NetworkPolicy i Calico, fa manome politika fanampiny ihany koa - Calico NetworkPolicy sy GlobalNetworkPolicy. Calico dia mamorona rojo ho an'ny pod tsirairay (enta-miasa) sy farango ao amin'ny rojo INPUT sy OUTPUT ho an'ny enta-mavesatra mankany amin'ny latabatra sivana amin'ny rojo FORWARD.

Host Endpoints

Politika Endpoint mpampiantrano (2)

Ankoatra ny CNI (container network interface), ny politikan'i Calico dia manome fahafahana miaro ny mpampiantrano azy. Ao amin'ny Calico, azonao atao ny mamorona toerana fiafaran'ny mpampiantrano amin'ny alàlan'ny famaritana ny fitambaran'ny fampiantranoana mpampiantrano ary, raha ilaina, ny laharan'ny seranana. Ny fampiharana ny politika ho an'ity sampana ity dia vita amin'ny alàlan'ny tabilao sivana ao amin'ny rojo INPUT sy OUTPUT. Araka ny hitanao amin'ny kisary, (2) dia mihatra amin'ny dingana eo an-toerana ao amin'ny node/host. Izany hoe, raha mamorona politika mihatra amin'ny toerana fiafaran'ny mpampiantrano ianao, dia tsy hisy fiantraikany amin'ny fifamoivoizana mankany/avy amin'ny pods izany. Saingy manome interface/syntax tokana hanakanana ny fifamoivoizana ho an'ny mpampiantrano anao sy ny pods mampiasa ny politikan'i Calico. Manamora be ny fizotran'ny fitantanana ny politika ho an'ny tambajotra samihafa izany. Ny fanamafisana ny politikan'ny endpoint mpampiantrano hanatsarana ny fiarovana cluster dia tranga fampiasana lehibe iray hafa.

Politika ApplyOnForward (3)

Ny safidy ApplyOnForward dia azo alaina ao amin'ny politikan'ny tambajotra manerantany Calico mba hamela ny politika hampiharina amin'ny fifamoivoizana rehetra mandalo amin'ny faran'ny mpampiantrano, ao anatin'izany ny fifamoivoizana izay halefan'ny mpampiantrano. Anisan'izany ny fifamoivoizana alefa any amin'ny pod eo an-toerana na any amin'ny toerana hafa amin'ny tambajotra. Ny Calico dia mitaky ity fampandehanana ity ho azo ampiasaina ho an'ny politika mampiasa PreDNAT ary tsy voarindra, jereo ireto fizarana manaraka ireto. Ho fanampin'izany, ny ApplyOnForward dia azo ampiasaina hanaraha-maso ny fifamoivoizana fampiantranoana amin'ny tranga misy router virtoaly na rindrambaiko NAT ampiasaina.

Mariho fa raha mila mampihatra ny politikan'ny tambajotra mitovy amin'ny fizotran'ny fampiantranoana sy ny pods ianao, dia tsy mila mampiasa ny safidy ApplyOnForward ianao. Ny hany ilainao atao dia ny mamorona marika ho an'ny hostendpoint ilaina sy ny fiafaran'ny asa (pod). Calico dia mahay mampihatra ny politika mifototra amin'ny marika, na inona na inona karazana teboka (hostendpoint na enta-mavesatra).

Politika PreDNAT (4)

Ao amin'ny Kubernetes, ny seranan-tsambon'ny sampan-draharaha dia azo aseho ivelany amin'ny alàlan'ny safidy NodePorts na, raha tsy izany (rehefa mampiasa Calico), amin'ny alàlan'ny dokam-barotra amin'ny alàlan'ny Cluster IPs na safidy IP ivelany. Kube-proxy dia mampifandanja ny fifamoivoizana miditra mifamatotra amin'ny serivisy mankany amin'ny pods amin'ny serivisy mifandraika amin'ny fampiasana DNAT. Raha jerena izany, ahoana no fampiharana ny politika momba ny fifamoivoizana amin'ny alàlan'ny NodePorts? Mba hahazoana antoka fa ampiharina ireo politika ireo alohan'ny hizoran'ny DNAT ny fifamoivoizana (izay sari-tany eo anelanelan'ny mpampiantrano: seranana sy ny serivisy mifanaraka amin'izany), dia manome marika ho an'ny GlobalNetworkPolicy antsoina hoe "preDNAT: true" i Calico.

Rehefa alefa ny pre-DNAT, ireo politika ireo dia ampiharina ao amin'ny (4) ao amin'ny kisary - eo amin'ny latabatra mangle amin'ny rojo PREROUTING - alohan'ny DNAT. Ny filaharan'ny politika mahazatra dia tsy arahina eto, satria ny fampiharana ireo politika ireo dia mitranga aloha kokoa amin'ny lalan'ny fifamoivoizana. Na izany aza, ny politika preDNAT dia manaja ny filaharan'ny fampiharana.

Rehefa mamorona politika miaraka amin'ny pre-DNAT, dia zava-dehibe ny mitandrina momba ny fifamoivoizana tianao hokarakaraina ary mamela ny ankamaroany ho lavina. Ny fifamoivoizana voamarika ho 'avela' ao amin'ny politika alohan'ny DNAT dia tsy hojeren'ny politikan'ny hostendpoint intsony, fa ny fifamoivoizana izay tsy mahomby amin'ny politika alohan'ny DNAT dia hitohy amin'ny rojo sisa.
Nomen'i Calico tsy maintsy atao ny mamela ny safidy applyOnForward rehefa mampiasa preDNAT, satria raha ny famaritana ny toerana misy ny fifamoivoizana dia tsy mbola voafantina. Ny fifamoivoizana dia azo alefa any amin'ny fizotran'ny mpampiantrano, na azo alefa any amin'ny pod na node hafa.

Politika tsy arahina (5)

Ny tambajotra sy ny fampiharana dia mety manana fahasamihafana lehibe amin'ny fitondran-tena. Amin'ny toe-javatra faran'izay henjana, ny fampiharana dia mety hiteraka fifandraisana vetivety maro. Mety hahatonga ny conntrack (singa fototra amin'ny tamba-jotra Linux) ho lany fahatsiarovana izany. Amin'ny fomba mahazatra, mba hampandehanana ireo karazana rindranasa ireo amin'ny Linux, dia mila manamboatra na manaisotra ny conntrack ianao, na manoratra fitsipika iptables mba hialana amin'ny conntrack. Ny politika tsy voarindra ao Calico dia safidy tsotra sy mahomby kokoa raha te handamina fifandraisana haingana araka izay tratra ianao. Ohatra, raha mampiasa massive ianao memcache na ho fepetra fanampiny fiarovana amin'ny DDoS.

Vakio ity bilaogy (na ny fandikantsika) raha mila fampahalalana bebe kokoa, ao anatin'izany ny fitsapana fampisehoana amin'ny fampiasana politika tsy voafehy.

Rehefa mametraka ny safidy "doNotTrack: true" ao amin'ny Calico globalNetworkPolicy ianao dia lasa politika **tsy voarafitra** ary ampiharina aloha be amin'ny fantsona fanodinana fonosana Linux. Raha jerena ny kisary etsy ambony dia ampiharina amin'ny rojo PREROUTING sy OUTPUT eo amin'ny tabilao manta ny politika tsy voarindra alohan'ny hanombohan'ny fanaraha-maso (conntrack). Rehefa navelan'ny politika tsy voarindra ny fonosana iray, dia voamarika hanaisotra ny fanaraha-maso ny fifandraisana ho an'io fonosana io. Midika izany hoe:

  • Ny politika tsy voarindra dia ampiharina isaky ny fonosana. Tsy misy hevitra momba ny fifandraisana (na ny fikorianan'ny). Ny tsy fahampian'ny fifandraisana dia misy vokany lehibe maro:
  • Raha te-hamela ny fifamoivoizan'ny fangatahana sy ny valin-kafatra ianao dia mila fitsipika ho an'ny fidirana sy ny fivoahana (satria matetika ny Calico dia mampiasa conntrack mba hanamarihana ny fifamoivoizana valiny araka izay azo atao).
  • Tsy mandeha amin'ny enta-mavesatry ny Kubernetes (pods) ny politika tsy voarindra, satria amin'ity tranga ity dia tsy misy fomba hanarahana ny fifandraisana mivoaka avy amin'ny pod.
  • Ny NAT dia tsy mandeha tsara amin'ny fonosana tsy voafehy (satria ny kernel dia mitahiry ny sarintany NAT amin'ny conntrack).
  • Rehefa mandalo ny fitsipika "avelao ny rehetra" ao amin'ny politika tsy voafehy, dia ho voamarika ho tsy voarindra ny fonosana rehetra. Saika tsy izany no tadiavinao foana, noho izany dia zava-dehibe ny mifantina tsara amin'ireo fonosana omen'ny politika tsy voafehy (ary mamela ny ankamaroan'ny fifamoivoizana handeha amin'ny politika ara-dalàna).
  • Ny politika tsy voarindra dia ampiharina amin'ny fiandohan'ny fantsona fanodinana fonosana. Tena ilaina ny mahatakatra izany rehefa mamorona politika Calico. Azonao atao ny manana politikan'ny pod miaraka amin'ny baiko:1 ary ny politika tsy voarindra miaraka amin'ny baiko: 1000. Tsy maninona izany. Ny politikan'ny Untracked dia ampiharina alohan'ny politika ho an'ny pod. Ny politika tsy voarindra dia manaja ny didy famonoana ho faty ihany.

Satria ny iray amin'ireo tanjon'ny politikan'ny doNotTrack dia ny hampihatra ny politika aloha be amin'ny fantsona fanodinana fonosana Linux, dia ataon'i Calico tsy maintsy mamaritra ny safidy applyOnForward rehefa mampiasa doNotTrack. Raha jerena ny kisary fanodinana fonosana, mariho fa ny politika tsy voarindra (5) dia ampiharina alohan'ny fanapahan-kevitra momba ny lalana. Ny fifamoivoizana dia azo alefa any amin'ny fizotran'ny mpampiantrano, na azo alefa any amin'ny pod na node hafa.

vokatra

Nijery ireo safidy politika isan-karazany izahay (Host endpoint, ApplyOnForward, preDNAT, ary Untracked) ao Calico sy ny fomba fampiharana azy ireo amin'ny làlan'ny fanodinana fonosana. Ny fahatakarana ny fomba fiasan'izy ireo dia manampy amin'ny famolavolana politika mahomby sy azo antoka. Miaraka amin'i Calico dia azonao atao ny mampiasa politikan'ny tambajotra manerantany izay mihatra amin'ny marika (vondron'ny nodes sy pods) ary mampihatra ny politika misy masontsivana isan-karazany. Izany dia ahafahan'ny manam-pahaizana momba ny fiarovana sy ny fandrafetana tambajotra hiaro tsara ny "zavatra rehetra" (karazana teboka farany) miaraka amin'ny fiteny politika tokana miaraka amin'ny politikan'i Calico.

Fisaorana: Misaotra anao aho Sean Crampton и Alexa Pollitta ho an'ny famerenana azy ireo sy ny fampahalalana sarobidy.

Source: www.habr.com

Add a comment