Ni oye awọn aṣayan eto imulo nẹtiwọki pẹlu Calico

Ni oye awọn aṣayan eto imulo nẹtiwọki pẹlu Calico

Ohun itanna nẹtiwọọki Calico n pese ọpọlọpọ awọn eto imulo nẹtiwọọki pẹlu sintasi iṣọkan kan lati daabobo awọn ọmọ ogun ohun elo, awọn ẹrọ foju ati awọn adarọ-ese. Awọn eto imulo wọnyi le ṣee lo laarin aaye orukọ tabi jẹ awọn ilana nẹtiwọọki agbaye ti o kan si ogun endpoint (lati daabobo awọn ohun elo ti n ṣiṣẹ taara lori agbalejo - agbalejo le jẹ olupin tabi ẹrọ foju) tabi opin iṣẹ (lati daabobo awọn ohun elo ti n ṣiṣẹ ninu awọn apoti tabi awọn ẹrọ foju ti gbalejo). Awọn eto imulo Calico gba ọ laaye lati lo awọn ọna aabo ni awọn aaye pupọ ni ọna apo-iwe kan nipa lilo awọn aṣayan bii preDNAT, aiṣedeede, ati applyOnForward. Loye bi awọn aṣayan wọnyi ṣe n ṣiṣẹ le ṣe iranlọwọ ilọsiwaju aabo ati iṣẹ ṣiṣe ti eto gbogbogbo rẹ. Nkan yii ṣe alaye pataki ti awọn aṣayan eto imulo Calico wọnyi (preDNAT, unraracked ati applyOnForward) ti a lo si awọn aaye ipari ogun, pẹlu tcnu lori ohun ti o ṣẹlẹ ni awọn ọna ṣiṣe apo-iwe (awọn ẹwọn iptabels).

Nkan yii dawọle pe o ni oye ipilẹ ti bii Kubernetes ati awọn eto nẹtiwọọki Calico ṣe n ṣiṣẹ. Ti kii ba ṣe bẹ, a ṣeduro gbiyanju rẹ Tutorial eto imulo nẹtiwọki ipilẹ и ogun Idaabobo Tutorial lilo Calico ṣaaju kika nkan yii. A tun nireti pe o ni oye ipilẹ ti iṣẹ naa iptables ni linux.

Calico agbaye nẹtiwọki imulo gba ọ laaye lati lo eto awọn ofin iwọle nipasẹ awọn aami (si awọn ẹgbẹ ti ogun ati awọn ẹru iṣẹ / awọn adarọ-ese). Eyi wulo pupọ ti o ba lo awọn ọna ṣiṣe oriṣiriṣi papọ - awọn ẹrọ foju, eto taara lori ohun elo, tabi awọn amayederun kubernetes kan. Ni afikun, o le daabobo iṣupọ rẹ (awọn apa) nipa lilo awọn eto imulo asọye ati lo awọn ilana nẹtiwọọki si ijabọ ti nwọle (fun apẹẹrẹ, nipasẹ NodePorts tabi iṣẹ IPs ita).

Ni ipele ipilẹ, nigbati Calico ba so pọdu kan pọ si nẹtiwọọki (wo aworan atọka isalẹ), o so pọ mọ agbalejo nipa lilo wiwo Ethernet foju kan (veth). Awọn ijabọ ti a firanṣẹ nipasẹ adarọ-ese wa si agbalejo lati inu wiwo foju yii ati pe a ṣe ilana ni ọna kanna bi ẹnipe o wa lati inu wiwo nẹtiwọọki ti ara. Nipa aiyipada, Calico lorukọ awọn atọkun wọnyi caliXXX. Niwọn igba ti ijabọ naa wa nipasẹ wiwo foju, o lọ nipasẹ awọn iptables bi ẹnipe podu naa jẹ hop kan kuro. Nitorina, nigbati ijabọ ba de/lati inu podu kan, o ti firanṣẹ siwaju lati oju wiwo agbalejo.

Lori ipade Kubernetes kan ti n ṣiṣẹ Calico, o le ya aworan wiwo foju kan (veth) si iṣẹ ṣiṣe bi atẹle. Ninu apẹẹrẹ ti o wa ni isalẹ, o le rii pe veth#10 (calic1cbf1ca0f8) ti sopọ mọ oluṣakoso cnx-* ni aaye orukọ abojuto 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
...

Ni oye awọn aṣayan eto imulo nẹtiwọki pẹlu Calico

Fun pe Calico ṣẹda wiwo veth fun iṣẹ ṣiṣe kọọkan, bawo ni o ṣe fi ipa mu awọn eto imulo? Lati ṣe eyi, Calico ṣẹda awọn kio ni ọpọlọpọ awọn ẹwọn ti ọna ṣiṣe apo-iwe nipa lilo awọn iptables.

Aworan ti o wa ni isalẹ fihan awọn ẹwọn ti o ni ipa ninu sisẹ soso ni awọn iptables (tabi eto abẹlẹ netfilter). Nigbati soso kan ba de nipasẹ wiwo nẹtiwọọki kan, o kọkọ lọ nipasẹ pq PREROUTING. A ṣe ipinnu ipa-ọna lẹhinna, ati da lori eyi, apo-iwe naa kọja boya INPUT (ti a ṣe itọsọna si awọn ilana igbalejo) tabi SIWAJU (dari si adarọ-ese tabi ipade miiran lori nẹtiwọọki). Lati ilana agbegbe, apo-iwe naa lọ nipasẹ OUTPUT ati lẹhinna POSTROUTING pq ṣaaju ki o to firanṣẹ si isalẹ okun naa.

Ṣe akiyesi pe adarọ-ese naa tun jẹ nkan ita (ti o sopọ si veth) ni awọn ofin ti sisẹ iptables. Jẹ ki a ṣe akopọ:

  • Ijabọ ti a firanṣẹ siwaju (nat, ipa tabi si/lati inu adarọ ese) kọja nipasẹ PREROUTING - FORWARD - Awọn ẹwọn POSTROUTING.
  • Ijabọ si ilana igbalejo agbegbe n kọja nipasẹ PREROUTING - pq INPUT.
  • Ijabọ lati ilana igbalejo agbegbe lọ nipasẹ OUTPUT - POSTROUTING pq.

Ni oye awọn aṣayan eto imulo nẹtiwọki pẹlu Calico

Calico pese awọn aṣayan eto imulo ti o gba ọ laaye lati lo awọn eto imulo kọja gbogbo awọn ẹwọn. Pẹlu iyẹn ni lokan, jẹ ki a wo awọn aṣayan iṣeto eto imulo oriṣiriṣi ti o wa ni Calico. Awọn nọmba ti o wa ninu atokọ awọn aṣayan ni isalẹ badọgba si awọn nọmba ninu aworan atọka loke.

  1. Eto imulo ipari iṣẹ (podu).
  2. Ogun endpoint imulo
  3. ApplyOnForward aṣayan
  4. Ilana PreDNAT
  5. Untracked Afihan

Jẹ ki a bẹrẹ nipa wiwo bii awọn eto imulo ṣe lo si awọn aaye ipari iṣẹ ṣiṣe (Kubernetes pods tabi OpenStack VMs), ati lẹhinna wo awọn aṣayan eto imulo fun awọn aaye opin ogun.

Ipari Iṣẹ-ṣiṣe

Ilana Ipari Oju iṣẹ (1)

Eyi jẹ aṣayan lati daabobo awọn pods kubernetes rẹ. Calico ṣe atilẹyin ṣiṣẹ pẹlu Kubernetes NetworkPolicy, ṣugbọn o tun pese awọn eto imulo afikun - Calico NetworkPolicy ati GlobalNetworkPolicy. Calico ṣẹda pq kan fun adarọ ese kọọkan (fifuye iṣẹ) ati awọn iwọ ni awọn ẹwọn INPUT ati OUTPUT fun iṣẹ ṣiṣe si tabili àlẹmọ ti pq FORWARD.

Ogun Endpoints

Ilana Ipari Ogun (2)

Ni afikun si CNI (ni wiwo nẹtiwọọki apoti), awọn eto imulo Calico pese agbara lati daabobo agbalejo funrararẹ. Ni Calico, o le ṣẹda aaye ipari agbalejo nipa sisọ akojọpọ kan ti wiwo ogun ati, ti o ba jẹ dandan, awọn nọmba ibudo. Imudaniloju eto imulo fun nkan yii jẹ aṣeyọri nipa lilo tabili àlẹmọ ninu awọn ẹwọn INPUT ati OUTPUT. Bi o ti le rii lati aworan atọka, (2) wọn lo si awọn ilana agbegbe lori ipade / agbalejo. Iyẹn ni, ti o ba ṣẹda eto imulo ti o kan si aaye opin ogun, kii yoo ni ipa lori ijabọ lilọ si / lati awọn adarọ-ese rẹ. Ṣugbọn o pese wiwo ẹyọkan / sintasi fun didi ijabọ fun agbalejo rẹ ati awọn adarọ-ese ni lilo awọn ilana Calico. Eyi jẹ ki o rọrun pupọ ilana ti iṣakoso awọn eto imulo fun nẹtiwọọki oriṣiriṣi kan. Ṣiṣeto awọn eto imulo opin ogun lati mu aabo iṣupọ jẹ ọran lilo pataki miiran.

Ilana IwajuLori (3)

Aṣayan ApplyOnForward wa ni eto imulo nẹtiwọọki agbaye ti Calico lati gba awọn ilana laaye lati lo si gbogbo awọn ijabọ ti o kọja nipasẹ aaye opin ogun, pẹlu ijabọ ti yoo firanṣẹ nipasẹ agbalejo. Eyi pẹlu ijabọ ti a firanṣẹ si adarọ-ese agbegbe tabi nibikibi miiran lori nẹtiwọọki. Calico nilo eto yii lati ṣiṣẹ fun awọn eto imulo nipa lilo PreDNAT ati ṣiṣi silẹ, wo awọn apakan atẹle. Ni afikun, ApplyOnForward le ṣee lo lati ṣe atẹle ijabọ ogun ni awọn ọran nibiti a ti lo olulana foju tabi NAT sọfitiwia.

Ṣe akiyesi pe ti o ba nilo lati lo eto imulo nẹtiwọọki kanna si awọn ilana igbalejo mejeeji ati awọn adarọ-ese, lẹhinna o ko nilo lati lo aṣayan ApplyOnForward. Gbogbo ohun ti o nilo lati ṣe ni ṣẹda aami kan fun aaye alejo gbigba ti o nilo ati ipari ipari iṣẹ (pod). Calico jẹ ọlọgbọn to lati fi ipa mu ilana imulo ti o da lori awọn akole, laibikita iru ipari ipari (point hostend tabi fifuye iṣẹ).

Ilana PreDNAT (4)

Ni Kubernetes, awọn ibudo ohun elo iṣẹ le ṣe afihan ni ita nipa lilo aṣayan NodePorts tabi, ni iyan (nigbati o nlo Calico), nipa ipolowo wọn nipa lilo awọn IP Cluster tabi awọn aṣayan IPs ita. Kube-aṣoju iwọntunwọnsi ijabọ ti nwọle ti a dè si iṣẹ kan si awọn adarọ-ese ti iṣẹ ti o baamu nipa lilo DNAT. Fun eyi, bawo ni o ṣe fi ipa mu awọn eto imulo fun ijabọ ti n bọ nipasẹ NodePorts? Lati rii daju pe awọn eto imulo wọnyi wa ni lilo ṣaaju ṣiṣe ijabọ nipasẹ DNAT (eyiti o jẹ aworan agbaye laarin ogun: ibudo ati iṣẹ ti o baamu), Calico pese paramita kan fun globalNetworkPolicy ti a pe ni “preDNAT: otitọ”.

Nigbati o ba ti ṣiṣẹ ṣaaju-DNAT, awọn eto imulo wọnyi wa ni imuse ni (4) ninu aworan atọka - ni tabili mangle ti pq PREROUTING - lẹsẹkẹsẹ ṣaaju DNAT. Ilana deede ti awọn eto imulo ko ni atẹle nibi, nitori ohun elo ti awọn eto imulo wọnyi waye pupọ ni iṣaaju ni ọna ṣiṣe ijabọ. Sibẹsibẹ, awọn ilana preDNAT bọwọ fun aṣẹ ohun elo laarin ara wọn.

Nigbati o ba ṣẹda awọn eto imulo pẹlu iṣaaju-DNAT, o ṣe pataki lati ṣọra nipa ijabọ ti o fẹ ṣe ilana ati gba ọpọlọpọ laaye lati kọ. Ijabọ ti a samisi bi 'gba laaye' ninu eto imulo iṣaaju-DNAT kii yoo ṣe ayẹwo nipasẹ eto imulo hostendpoint mọ, lakoko ti ijabọ ti o kuna eto imulo iṣaaju-DNAT yoo tẹsiwaju nipasẹ awọn ẹwọn to ku.
Calico ti jẹ ki o jẹ dandan lati mu aṣayan applyOnForward ṣiṣẹ nigba lilo preDNAT, niwọn bi o ti jẹ pe nipa asọye ibi ti irin-ajo ko ti yan sibẹsibẹ. O le ṣe itọsọna ijabọ si ilana igbalejo, tabi o le firanṣẹ si adarọ-ese kan tabi ipade miiran.

Ilana ti ko tọpa (5)

Awọn nẹtiwọki ati awọn ohun elo le ni awọn iyatọ nla ni ihuwasi. Ni diẹ ninu awọn iṣẹlẹ ti o lewu, awọn ohun elo le ṣe ipilẹṣẹ ọpọlọpọ awọn asopọ igba kukuru. Eyi le fa conntrack (apakankan pataki kan ti akopọ Nẹtiwọọki Linux) lati pari iranti. Ni aṣa, lati ṣiṣẹ iru awọn ohun elo lori Lainos, iwọ yoo ni lati tunto pẹlu ọwọ tabi mu conntrack kuro, tabi kọ awọn ofin iptables lati fori conntrack. Eto imulo ti ko tọpinpin ni Calico jẹ aṣayan ti o rọrun ati lilo daradara ti o ba fẹ ṣe ilana awọn isopọ ni yarayara bi o ti ṣee. Fun apẹẹrẹ, ti o ba lo nla memcache tabi bi afikun odiwon ti Idaabobo lodi si DDOS.

Ka eyi bulọọgi post (tabi itumọ wa) fun alaye diẹ sii, pẹlu awọn idanwo iṣẹ nipa lilo eto imulo ti ko tọpa.

Nigbati o ba ṣeto aṣayan “doNotTrack: ootọ” ni Calico globalNetworkPolicy, o di eto imulo ** ti ko tọpa *** ati pe o lo ni kutukutu ni opo gigun ti epo-pipe Linux. Wiwo aworan atọka ti o wa loke, awọn eto imulo ti ko tọpa ni a lo ninu awọn ẹwọn PREROUTING ati OUTPUT ninu tabili aise ṣaaju ki ipasẹ asopọ (conntrack) to bẹrẹ. Nigbati soso kan ba gba laaye nipasẹ eto imulo ti ko tọpa, o ti samisi lati mu ipasẹ asopọ kuro fun soso yẹn. O tumo si:

  • Ilana ti ko tọpa ni a lo lori ipilẹ-packet kan. Ko si ero ti asopọ (tabi sisan). Aini awọn asopọ ni ọpọlọpọ awọn abajade pataki:
  • Ti o ba fẹ gba awọn ibeere mejeeji laaye ati ijabọ esi, o nilo ofin kan fun mejeeji inbound ati ti njade (niwọn igba ti Calico maa n lo conntrack lati samisi ijabọ esi bi a ti gba laaye).
  • Eto imulo ti ko ni itọpa ko ṣiṣẹ fun awọn iṣẹ ṣiṣe Kubernetes (pods), nitori ninu ọran yii ko si ọna lati tọpa asopọ ti njade lati podu.
  • NAT ko ṣiṣẹ ni deede pẹlu awọn apo-iwe ti a ko tọpa (niwọn igba ti kernel tọju aworan agbaye NAT ni ilodisi).
  • Nigbati o ba n kọja nipasẹ ofin “gba gbogbo laaye” ninu eto imulo ti ko tọpinpin, gbogbo awọn apo-iwe yoo jẹ samisi bi aitọpa. Eyi fẹrẹ jẹ nigbagbogbo kii ṣe ohun ti o fẹ, nitorinaa o ṣe pataki lati jẹ yiyan pupọ nipa awọn apo-iwe ti a gba laaye nipasẹ awọn eto imulo ti ko tọpa (ati gba ọpọlọpọ awọn ijabọ lati lọ nipasẹ awọn ilana itọpa deede).
  • Awọn eto imulo ti ko tọpa ni a lo ni ibẹrẹ pupọ ti opo gigun ti epo sisẹ. Eyi ṣe pataki pupọ lati ni oye nigbati o ṣẹda awọn eto imulo Calico. O le ni eto imulo podu pẹlu aṣẹ: 1 ati eto imulo ti ko tọpa pẹlu aṣẹ: 1000. Kii yoo ṣe pataki. Ilana ti a ko tọpa yoo lo ṣaaju eto imulo fun podu naa. Awọn eto imulo ti ko tọpa bọwọ fun aṣẹ ipaniyan nikan laarin ara wọn.

Nitori ọkan ninu awọn idi ti eto imulo doNotTrack ni lati fi ipa mu ilana naa ni kutukutu ninu opo gigun ti epo packet Linux, Calico jẹ ki o jẹ dandan lati pato aṣayan applyOnForward nigba lilo doNotTrack. Ntọkasi aworan atọka sisẹ apo, ṣakiyesi pe eto imulo ti ko tọpa (5) ni a lo ṣaaju awọn ipinnu ipa-ọna eyikeyi. O le ṣe itọsọna ijabọ si ilana igbalejo, tabi o le firanṣẹ si adarọ-ese kan tabi ipade miiran.

Awọn esi

A wo ọpọlọpọ awọn aṣayan eto imulo (Opin igbalejo, ApplyOnForward, preDNAT, ati Untracked) ni Calico ati bii wọn ṣe lo ni ọna sisẹ apo. Loye bi wọn ṣe n ṣiṣẹ ṣe iranlọwọ ni idagbasoke awọn eto imulo to munadoko ati ailewu. Pẹlu Calico o le lo eto imulo nẹtiwọọki agbaye kan ti o kan aami kan (ẹgbẹ kan ti awọn apa ati awọn adarọ-ese) ati lo awọn eto imulo pẹlu ọpọlọpọ awọn aye. Eyi ngbanilaaye aabo ati awọn alamọdaju apẹrẹ nẹtiwọọki lati ni irọrun daabobo “ohun gbogbo” (awọn oriṣi ipari) ni ẹẹkan ni lilo ede eto imulo kan pẹlu awọn eto imulo Calico.

Ifọwọsi: Emi yoo fẹ lati dúpẹ lọwọ Sean Crampton и Alexa Pollitta fun wọn awotẹlẹ ati ki o niyelori alaye.

orisun: www.habr.com

Fi ọrọìwòye kun