A’ tuigsinn roghainnean poileasaidh lìonra le Calico

A’ tuigsinn roghainnean poileasaidh lìonra le Calico

Tha am plugan lìonra Calico a’ toirt seachad raon farsaing de phoileasaidhean lìonra le co-chòrdadh aonaichte gus luchd-aoigheachd bathar-cruaidh, innealan brìgheil agus pods a dhìon. Faodar na poileasaidhean sin a chur an sàs taobh a-staigh ainm-àite no a bhith nam poileasaidhean lìonra cruinne a tha a’ buntainn puing crìochnachaidh aoigheachd (gus dìon a chuir air tagraidhean a tha a’ ruith gu dìreach air an aoigh - faodaidh an aoigh a bhith na fhrithealaiche no na inneal brìgheil) no puing crìochnachaidh eallach obrach (gus dìon a chuir air tagraidhean a tha a’ ruith ann an soithichean no innealan brìgheil le aoigheachd). Leigidh poileasaidhean Calico leat ceumannan tèarainteachd a chuir an sàs aig diofar amannan ann an slighe pacaid a’ cleachdadh roghainnean leithid preDNAT, unraracked, agus applyOnForward. Le bhith a’ tuigsinn mar a dh’obraicheas na roghainnean sin faodaidh e do chuideachadh le bhith a’ leasachadh tèarainteachd agus coileanadh an t-siostam iomlan agad. Tha an artaigil seo a’ mìneachadh brìgh nan roghainnean poileasaidh Calico sin (preDNAT, unraracked agus applyOnForward) air an cur an sàs ann am puingean crìochnachaidh aoigheachd, le cuideam air na thachras ann an slighean giullachd pacaid (slabhraidhean iptabels).

Tha an artaigil seo a’ gabhail ris gu bheil tuigse bhunasach agad air mar a tha poileasaidhean lìonra Kubernetes agus Calico ag obair. Mura h-eil, tha sinn a 'moladh feuchainn air oideachadh poileasaidh lìonra bunaiteach и oideachadh dìon aoigheachd cleachdadh Calico mus leugh thu an artaigil seo. Tha sinn cuideachd an dùil gum bi tuigse bhunaiteach agad air an obair iptables ann an linux.

Calico poileasaidh lìonra cruinne a’ leigeil leat seata de riaghailtean ruigsinneachd a chuir an sàs le bileagan (gu buidhnean de luchd-aoigheachd agus eallach obrach / pods). Tha seo glè fheumail ma chleachdas tu siostaman heterogeneous còmhla - innealan brìgheil, siostam gu dìreach air bathar-cruaidh, no bun-structar kubernetes. A bharrachd air an sin, faodaidh tu do bhuidheann (nodan) a dhìon le bhith a’ cleachdadh seata de phoileasaidhean dearbhach agus poileasaidhean lìonra a chuir an sàs ann an trafaic a tha a’ tighinn a-steach (mar eisimpleir, tron ​​​​t-seirbheis NodePorts no External IPs).

Aig ìre bhunaiteach, nuair a cheanglas Calico pod ris an lìonra (faic an dealbh gu h-ìosal), bidh e ga cheangal ris an aoigh a’ cleachdadh eadar-aghaidh brìgheil Ethernet (veth). Bidh an trafaic a chuir am pod a ’tighinn chun òstair bhon eadar-aghaidh brìgheil seo agus air a phròiseasadh san aon dòigh mar gum biodh e a’ tighinn bho eadar-aghaidh lìonra corporra. Gu gnàthach, tha Calico ag ainmeachadh na caliXXX eadar-aghaidh sin. Leis gu bheil an trafaic a ’tighinn tron ​​​​eadar-aghaidh brìgheil, bidh e a’ dol tro iptables mar gum biodh am pod aon hop air falbh. Mar sin, nuair a thig trafaic gu / bho pod, thèid a chuir air adhart bho shealladh an aoigh.

Air nód Kubernetes a’ ruith Calico, faodaidh tu eadar-aghaidh brìgheil (veth) a mhapadh gu eallach obrach mar a leanas. Anns an eisimpleir gu h-ìosal, chì thu gu bheil veth # 10 (calic1cbf1ca0f8) ceangailte ri cnx-manager-* anns an ainm-àite sgrùdaidh calico.

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

A’ tuigsinn roghainnean poileasaidh lìonra le Calico

Leis gu bheil Calico a’ cruthachadh eadar-aghaidh veth airson gach eallach obrach, ciamar a chuireas e poileasaidhean an gnìomh? Gus seo a dhèanamh, bidh Calico a’ cruthachadh dubhan ann an diofar shlabhraidhean den t-slighe giollachd pacaid a’ cleachdadh iptables.

Tha an diagram gu h-ìosal a’ sealltainn nan slabhraidhean a tha an sàs ann an giullachd pacaidean ann an iptables (no fo-shiostam netfilter). Nuair a ruigeas pacaid tro eadar-aghaidh lìonraidh, bidh e an toiseach a’ dol tron ​​t-sreath PREROUTING. Thèid co-dhùnadh slighe a dhèanamh an uairsin, agus stèidhichte air seo, bidh am pacaid a’ dol tro aon chuid INPUT (air a stiùireadh gu pròiseasan aoigheachd) no AIRSON (air a stiùireadh gu pod no nód eile air an lìonra). Bhon phròiseas ionadail, bidh am pasgan a 'dol tron ​​​​t-sreath OUTPUT agus an uairsin POSTROUTING mus tèid a chuir sìos an càball.

Thoir an aire gu bheil am pod cuideachd na bhuidheann taobh a-muigh (ceangailte ris an veth) a thaobh giollachd iptables. Leig dhuinn geàrr-chunntas:

  • Bidh trafaic air adhart (nat, air a stiùireadh no gu / bho pod) a’ dol tro na slabhraidhean ro-làimh - air adhart - POSTROUTING.
  • Bidh trafaic chun phròiseas aoigheachd ionadail a’ dol tron ​​​​t-sreath PREROUTING - INPUT.
  • Bidh trafaic bhon phròiseas aoigheachd ionadail a’ dol tron ​​​​t-sreath TORADH - POSTROUTING.

A’ tuigsinn roghainnean poileasaidh lìonra le Calico

Tha Calico a’ toirt seachad roghainnean poileasaidh a leigeas leat poileasaidhean a chuir an sàs thar gach slabhraidh. Le sin san amharc, leig dhuinn sùil a thoirt air na diofar roghainnean rèiteachaidh poileasaidh a tha rim faighinn ann an Calico. Tha na h-àireamhan anns an liosta roghainnean gu h-ìosal a’ freagairt ris na h-àireamhan san dealbh gu h-àrd.

  1. Poileasaidh puing crìochnachaidh eallach obrach (pod).
  2. Poileasaidh puing crìochnachaidh aoigheachd
  3. Roghainn ApplyOnForward
  4. Poileasaidh PreDNAT
  5. Poileasaidh gun lorg

Feuch an tòisich sinn le bhith a’ coimhead air mar a tha poileasaidhean air an cur an sàs ann am puingean crìochnachaidh eallach obrach (pods Kubernetes no OpenStack VMs), agus an uairsin thoir sùil air na roghainnean poileasaidh airson puingean crìochnachaidh aoigheachd.

Puingean crìochnachaidh eallach obrach

Poileasaidh puing crìochnachaidh eallach obrach (1)

Is e seo roghainn gus na pods kubernetes agad a dhìon. Tha Calico a’ toirt taic do bhith ag obair le Kubernetes NetworkPolicy, ach tha e cuideachd a’ toirt seachad poileasaidhean a bharrachd - Calico NetworkPolicy agus GlobalNetworkPolicy. Bidh Calico a’ cruthachadh slabhraidh airson gach pod (eallach obrach) agus dubhan anns na slabhraidhean INPUT agus TORADH airson an eallach obrach gu clàr sìoltachain an t-sèine FORWARD.

Puingean crìochnachaidh aoigheachd

Poileasaidh puing crìochnachaidh aoigheachd (2)

A bharrachd air CNI (eadar-aghaidh lìonra container), tha poileasaidhean Calico a’ toirt seachad comas an aoigh fhèin a dhìon. Ann an Calico, faodaidh tu ceann-uidhe aoigheachd a chruthachadh le bhith a 'sònrachadh measgachadh den eadar-aghaidh aoigheachd agus, ma tha sin riatanach, àireamhan puirt. Tha coileanadh poileasaidh airson an eintiteas seo air a choileanadh le bhith a’ cleachdadh clàr sìoltachain anns na slabhraidhean INPUT agus TORADH. Mar a chì thu bhon diagram, (2) tha iad a’ buntainn ri pròiseasan ionadail air an nód/òstair. Is e sin, ma chruthaicheas tu poileasaidh a tha a’ buntainn ris a’ cheann-uidhe aoigheachd, cha toir e buaidh air trafaic a’ dol gu / bho na pods agad. Ach tha e a’ toirt seachad aon eadar-aghaidh / co-chòrdadh airson trafaic a bhacadh don aoigh agus na pods agad a’ cleachdadh poileasaidhean Calico. Tha seo gu mòr a’ sìmpleachadh pròiseas stiùireadh phoileasaidhean airson lìonra ioma-ghnèitheach. Tha e na chùis cleachdaidh cudromach eile a bhith a’ rèiteachadh phoileasaidhean crìochnachaidh aoigheachd gus tèarainteachd brabhsair àrdachadh.

Poileasaidh Cuir a-steach air adhart (3)

Tha an roghainn ApplyOnForward ri fhaighinn ann am poileasaidh lìonra cruinne Calico gus leigeil le poileasaidhean a bhith air an cur an sàs anns a h-uile trafaic a tha a’ dol tron ​​​​ionad crìochnachaidh aoigheachd, a ’toirt a-steach trafaic a thèid a chuir air adhart leis an aoigh. Tha seo a’ toirt a-steach trafaic air a chuir air adhart chun pod ionadail no àite sam bith eile air an lìonra. Tha Calico ag iarraidh gum bi an suidheachadh seo air a chomasachadh airson poileasaidhean a’ cleachdadh PreDNAT agus gun lorg, faic na h-earrannan a leanas. A bharrachd air an sin, faodar ApplyOnForward a chleachdadh gus sùil a chumail air trafaic aoigheachd ann an cùisean far a bheil router brìgheil no bathar-bog NAT air a chleachdadh.

Thoir an aire ma dh’ fheumas tu an aon phoileasaidh lìonra a chuir an sàs anns gach cuid pròiseasan aoigheachd agus pods, cha leig thu leas an roghainn ApplyOnForward a chleachdadh. Chan eil agad ach leubail a chruthachadh airson a’ phuing aoigheachd a tha a dhìth agus puing crìochnachaidh eallach obrach (pod). Tha Calico sgiobalta gu leòr airson poileasaidh a chuir an gnìomh stèidhichte air bileagan, ge bith dè an seòrsa puing crìochnachaidh (puing aoigheachd no eallach obrach).

Poileasaidh PreDNAT (4)

Ann an Kubernetes, faodar puirt eintiteas seirbheis a nochdadh air an taobh a-muigh a’ cleachdadh an roghainn NodePorts no, gu roghnach (nuair a bhios tu a’ cleachdadh Calico), le bhith gan sanasachd a’ cleachdadh na roghainnean Cluster IPs no IPs Taobh a-muigh. Bidh Kube-proxy a’ cothromachadh trafaic a tha a’ tighinn a-steach gu seirbheis gu pods na seirbheis co-fhreagarrach a’ cleachdadh DNAT. Leis an seo, ciamar a chuireas tu poileasaidhean an sàs airson trafaic a’ tighinn tro NodePorts? Gus dèanamh cinnteach gun tèid na poileasaidhean sin a chuir an sàs mus tèid an trafaic a phròiseasadh le DNAT (a tha na mhapa eadar aoigheachd: port agus seirbheis co-fhreagarrach), tha Calico a’ toirt seachad paramadair airson globalNetworkPolicy ris an canar “preDNAT: true”.

Nuair a tha ro-DNAT air a chomasachadh, tha na poileasaidhean sin air an cur an gnìomh ann an (4) san diagram - ann an clàr mangle an t-sreath PREROUTING - dìreach ro DNAT. Chan eilear a’ leantainn an òrdugh phoileasaidhean àbhaisteach an seo, leis gu bheil cur an gnìomh nam poileasaidhean sin a’ tachairt fada nas tràithe air an t-slighe giollachd trafaic. Ach, tha poileasaidhean preDNAT a’ toirt urram do òrdugh tagraidh nam measg fhèin.

Nuair a bhios tu a’ cruthachadh phoileasaidhean le ro-DNAT, tha e cudromach a bhith faiceallach mun trafaic a tha thu airson a phròiseasadh agus leigeil leis a’ mhòr-chuid a bhith air a dhiùltadh. Cha tèid trafaic a tha air a chomharrachadh mar ‘ceadaich’ sa phoileasaidh ro-DNAT a sgrùdadh tuilleadh leis a’ phoileasaidh hostendpoint, agus leanaidh trafaic a dh’ fhàilnicheas am poileasaidh ro-DNAT tro na slabhraidhean a tha air fhàgail.
Tha Calico air a dhèanamh èigneachail an roghainn applyOnForward a chomasachadh nuair a bhios tu a’ cleachdadh preDNAT, leis nach deach ceann-uidhe na trafaic a thaghadh fhathast le mìneachadh. Faodar trafaic a stiùireadh chun phròiseas aoigheachd, no faodar a chuir air adhart gu pod no nód eile.

Poileasaidh gun rian (5)

Faodaidh eadar-dhealachaidhean mòra a bhith aig lìonraidhean agus tagraidhean ann an giùlan. Ann an cuid de chùisean fìor, faodaidh tagraidhean mòran cheanglaichean geàrr-ùine a chruthachadh. Faodaidh seo toirt air conntrack (prìomh phàirt de chruach lìonraidh Linux) ruith a-mach à cuimhne. Gu traidiseanta, gus na seòrsaichean iarrtasan seo a ruith air Linux, dh'fheumadh tu rian a chur air dòigh no a chur à comas, no riaghailtean iptables a sgrìobhadh gus faighinn seachad air conntrack. Tha poileasaidh gun rian ann an Calico na roghainn nas sìmplidh agus nas èifeachdaiche ma tha thu airson ceanglaichean a phròiseasadh cho luath ‘s a ghabhas. Mar eisimpleir, ma chleachdas tu mòr memcache no mar cheum dìon a bharrachd an aghaidh sin DDOS.

Leugh seo bhraith (no ar n-eadar-theangachadh) airson tuilleadh fiosrachaidh, a’ gabhail a-steach deuchainnean coileanaidh a’ cleachdadh poileasaidh gun rian.

Nuair a shuidhicheas tu an roghainn “doNotTrack: true” ann an Calico globalNetworkPolicy, bidh e na phoileasaidh ** gun rian ** agus thèid a chuir an sàs gu math tràth ann an loidhne-phìoban giollachd pacaid Linux. A’ coimhead air an dealbh gu h-àrd, tha poileasaidhean gun rian air an cur an sàs anns na slabhraidhean PREROUTING agus TORADH sa chlàr amh mus tòisich lorg ceangail (conntrack). Nuair a tha pasgan ceadaichte leis a’ phoileasaidh gun rian, tha e air a chomharrachadh gus tracadh ceangail a dhì-cheadachadh airson a’ phacaid sin. Tha e a' ciallachadh:

  • Tha am poileasaidh gun rian air a chur an sàs a rèir gach pacaid. Chan eil bun-bheachd ann de cheangal (no sruthadh). Tha grunn bhuilean cudromach aig dìth cheanglaichean:
  • Ma tha thu airson an dà chuid trafaic iarrtas is freagairt a cheadachadh, feumaidh tu riaghailt airson an dà chuid a-steach agus a-mach (oir mar as trice bidh Calico a’ cleachdadh conntrack gus trafaic freagairt a chomharrachadh mar a tha ceadaichte).
  • Chan eil am poileasaidh gun lorg ag obair airson eallach obrach Kubernetes (pods), oir anns a’ chùis seo chan eil dòigh ann sùil a chumail air a ’cheangal a tha a’ dol a-mach bhon pod.
  • Chan eil NAT ag obair gu ceart le pacaidean gun lorg (leis gu bheil an kernel a’ stòradh mapadh NAT ann an conntrack).
  • Nuair a thèid thu tron ​​​​riaghailt “ceadaich a h-uile duine” sa phoileasaidh gun rian, thèid a h-uile pacaid a chomharrachadh mar gun rian. Cha mhòr nach e seo an-còmhnaidh na tha thu ag iarraidh, agus mar sin tha e cudromach a bhith gu math roghnach mu na pacaidean a tha ceadaichte le poileasaidhean gun lorg (agus leigeil leis a’ mhòr-chuid de thrafaig a dhol tro phoileasaidhean àbhaisteach).
  • Bithear a’ cur an sàs poileasaidhean gun rian aig fìor thoiseach na loidhne-phìoban giollachd pacaid. Tha seo glè chudromach a thuigsinn nuair a chruthaicheas tu poileasaidhean Calico. Faodaidh poileasaidh pod a bhith agad le òrdugh: 1 agus poileasaidh gun rian le òrdugh: 1000. Cha bhi e gu diofar. Thèid am poileasaidh Untracked a chuir an sàs ron phoileasaidh airson a’ pod. Tha poileasaidhean gun rian a’ toirt spèis do òrdugh cur gu bàs a-mhàin nam measg fhèin.

Leis gur e aon de na h-adhbharan airson poileasaidh doNotTrack am poileasaidh a chuir an gnìomh gu math tràth ann an loidhne-phìoban giollachd pacaid Linux, tha Calico ga dhèanamh èigneachail an roghainn applyOnForward a shònrachadh nuair a bhios tu a’ cleachdadh doNotTrack. A’ toirt iomradh air an diagram giollachd pacaid, thoir an aire gu bheil am poileasaidh gun rian (5) air a chuir an sàs ro cho-dhùnaidhean slighe sam bith. Faodar trafaic a stiùireadh chun phròiseas aoigheachd, no faodar a chuir air adhart gu pod no nód eile.

Builean

Choimhead sinn air na diofar roghainnean poileasaidh (Host endpoint, ApplyOnForward, preDNAT, agus Untracked) ann an Calico agus mar a tha iad air an cur an sàs air an t-slighe giollachd pacaid. Bidh tuigse air mar a tha iad ag obair a’ cuideachadh le bhith a’ leasachadh phoileasaidhean èifeachdach is sàbhailte. Le Calico faodaidh tu poileasaidh lìonra cruinne a chleachdadh a tha a’ buntainn ri leubail (buidheann de nodan is pods) agus poileasaidhean a chuir an sàs le diofar pharaimearan. Leigidh seo le proifeiseantaich tèarainteachd agus dealbhadh lìonra “a h-uile dad” (seòrsaichean crìochnachaidh) a dhìon aig an aon àm a ’cleachdadh aon chànan poileasaidh le poileasaidhean Calico.

Aithneachadh: Bu mhath leam taing a thoirt Sean Crampton и Alexa Pollitta airson an ath-bhreithneachaidh agus am fiosrachadh luachmhor.

Source: www.habr.com

Cuir beachd ann