(Zindikirani. transl.: chithunzichi, monga zina zonse zofananira, zidapangidwa osati kugwiritsa ntchito zida zakubadwa za Kubernetes, koma pogwiritsa ntchito chida cha Tufin Orca, chomwe chinapangidwa ndi kampani ya mlembi wa nkhani yoyambirira komanso yomwe yatchulidwa kumapeto kwa nkhaniyi.)
Kuti mumasulire mfundo zanu zapaintaneti, mudzafunika chidziwitso choyambirira cha YAML. Chilankhulochi chimachokera ku indentation (yofotokozedwa ndi mipata osati ma tabu). Chinthu cholowera mkati ndi cha chapafupi chomwe chili pamwamba pake. Mndandanda watsopano umayamba ndi hyphen, zinthu zina zonse zimakhala ndi mawonekedwe chinsinsi - mtengo.
Pambuyo pofotokoza mfundo mu YAML, gwiritsani ntchito kubctlkupanga mu cluster:
kubectl create -f policy.yaml
Mfundo za Network Policy
Mafotokozedwe a mfundo za Kubernetes network akuphatikiza zinthu zinayi:
podSelector: imatanthawuza ma pods omwe akhudzidwa ndi ndondomekoyi (zolinga) - zofunikira;
policyTypes: imasonyeza kuti ndi mitundu yanji ya ndondomeko zomwe zikuphatikizidwa mu izi: ingress ndi / kapena egress - mwachisawawa, koma ndikupangira kufotokoza momveka bwino muzochitika zonse;
ingress: amatanthauza kuloledwa akubwera magalimoto opita ku ma pod - mwasankha;
Malinga ndi mfundo pamwamba, ngati magawo ingress ndi / kapena egress zosiyidwa, ndondomekoyi ikana magalimoto onse (onani "Stripping Rule" pansipa).
Mfundo yosasinthika ndiyololedwa
Ngati palibe ndondomeko zomwe zafotokozedwa, Kubernetes amalola magalimoto onse mwachisawawa. Ma pod onse amatha kusinthanitsa zidziwitso mwaufulu pakati pawo. Izi zitha kuwoneka ngati zosagwirizana ndi chitetezo, koma kumbukirani kuti Kubernetes adapangidwa poyambirira ndi opanga kuti azitha kugwiritsa ntchito bwino ntchito. Malamulo a netiweki adawonjezedwa pambuyo pake.
Malo a mayina
Namespaces ndi njira yolumikizirana ya Kubernetes. Amapangidwa kuti azilekanitsa malo omveka kuchokera kwa wina ndi mnzake, pomwe kulumikizana pakati pamipata kumaloledwa mwachisawawa.
Monga zigawo zambiri za Kubernetes, mfundo zapaintaneti zimakhala m'malo enaake. Mu block metadata mukhoza kufotokoza malo omwe ndondomekoyi ndi yake:
Ngati namespace sichinatchulidwe mwatsatanetsatane mu metadata, dongosololi lidzagwiritsa ntchito dzina lotchulidwa mu kubectl (mwachisawawa namespace=default):
kubectl apply -n my-namespace -f namespace.yaml
Ndikupangira tchulani malo a mayina mwatsatanetsatane, pokhapokha mutalemba ndondomeko yomwe imayang'ana malo ambiri a mayina nthawi imodzi.
Waukulu chinthu podSelector mu ndondomekoyi idzasankha ma pods kuchokera kumalo omwe ndondomekoyi ili (ikuletsedwa kupeza ma pod kuchokera kumalo ena a mayina).
Mofananamo, podSelectors mu ingress ndi egress blocks atha kusankha ma pod kuchokera ku malo awoawo, pokhapokha mutaphatikiza nawo namespaceSelector (izi zidzakambidwa mu gawo "Zosefera ndi malo a mayina ndi ma pod").
Malamulo Otchula Malamulo
Mayina a ndondomeko ndi apadera m'malo amodzi. Sipangakhale ndondomeko ziwiri zokhala ndi dzina lomwelo mu malo amodzi, koma pangakhale ndondomeko zokhala ndi dzina lomwelo m'malo osiyanasiyana. Izi ndizothandiza mukafuna kugwiritsanso ntchito mfundo zomwezo m'malo angapo.
Ndimakonda kwambiri njira imodzi yotchulira mayina. Zimapangidwa ndi kuphatikiza dzina lamalo ndi malo omwe mukufuna. Mwachitsanzo:
Mutha kuphatikizira zilembo zachikhalidwe ku zinthu za Kubernetes, monga ma pod ndi malo amazina. Zolemba (malemba - ma tag) ndi ofanana ndi ma tag mumtambo. Kubernetes network policy imagwiritsa ntchito zilembo kusankha matumbamomwe amagwirira ntchito:
podSelector:
matchLabels:
role: db
... kapena malo a mayinakumene iwo akufunsira. Chitsanzochi chimasankha ma pod onse m'malo a mayina okhala ndi zilembo zofananira:
Ndondomeko za firewall zimakhala ndi malamulo omwe ali ndi magwero ndi kopita. Ndondomeko za netiweki za Kubernetes zimatanthauzidwa ngati chandamale - seti ya ma pods omwe amawagwiritsa ntchito - kenako ndikukhazikitsa malamulo olowera ndi / kapena kutuluka. Mu chitsanzo chathu, chandamale cha ndondomekoyi chidzakhala ma pod onse mu malo a mayina default yokhala ndi makiyi app ndi mtengo db:
Chomaliza to ilibe kanthu, chifukwa chake imasankha mwanjira ina mitundu yonse yamitundu yosiyanasiyana, kulola balance tumizani mafunso a DNS ku ntchito yoyenera ya Kubernetes (nthawi zambiri imayenda mumlengalenga kube-system).
Njira iyi imagwira ntchito, komabe wololera mopambanitsa ndi wosatetezeka, chifukwa imalola mafunso a DNS kuti awongoledwe kunja kwa tsango.
Mutha kuwongolera munjira zitatu zotsatizana.
1. Lolani mafunso a DNS okha mkati masango powonjezera namespaceSelector:
2. Lolani mafunso a DNS mkati mwa dzina lokha kube-system.
Kuti muchite izi muyenera kuwonjezera chizindikiro ku malo a mayina kube-system: kubectl label namespace kube-system namespace=kube-system - ndi kulemba mu ndondomeko ntchito namespaceSelector:
3. Anthu osokonezeka amatha kupita patsogolo ndikuchepetsa mafunso a DNS ku ntchito inayake ya DNS kube-system. Gawo la "Zosefera ndi mayina NDI ma pod" lidzakuuzani momwe mungakwaniritsire izi.
Njira ina ndikuthetsa DNS pamlingo wa namespace. Pankhaniyi, sichidzafunika kutsegulidwa pa ntchito iliyonse:
Chopanda kanthu podSelector amasankha makadi onse mu malo maina.
Machesi oyamba ndi dongosolo la malamulo
Mu zozimitsa moto wamba, zochita (Lolani kapena Kukana) pa paketi zimatsimikiziridwa ndi lamulo loyamba lomwe limakwaniritsa. Ku Kubernetes, dongosolo la ndondomeko zilibe kanthu.
Mwachikhazikitso, ngati palibe ndondomeko zomwe zakhazikitsidwa, mauthenga pakati pa ma pod amaloledwa ndipo amatha kusinthanitsa zambiri mwaufulu. Mukangoyamba kupanga ndondomeko, poto iliyonse yomwe imakhudzidwa ndi imodzi mwa izo imakhala yokhayokha malinga ndi kusiyana (zomveka OR) za ndondomeko zonse zomwe zasankha. Ma pod omwe sanakhudzidwe ndi ndondomeko iliyonse amakhalabe otseguka.
Chonde dziwani kuti malamulo ena owonjezera omwe amalola kuchuluka kwa magalimoto m'malo a mayina adzakhala patsogolo kuposa lamuloli (zofanana ndi kuwonjezera lamulo lololeza musanayambe lamulo lokana mu kasinthidwe ka firewall).
Iwo amalola mwayi kuchokera ma pod onse m'malo onse a mayina (ndi IP onse) ku pod iliyonse mu malo a mayina default. Khalidweli limayatsidwa mwachisawawa, choncho nthawi zambiri silifunika kufotokozedwanso. Komabe, nthawi zina mungafunike kuyimitsa kwakanthawi zilolezo zina kuti muzindikire vutoli.
Lamulo likhoza kuchepetsedwa kuti lilole kupeza kokha gulu linalake la makoko (app:balance) mu dzina default:
Ndondomeko zimaphatikizidwa pogwiritsa ntchito zomveka OR pamagulu atatu; Zilolezo za pod iliyonse zimayikidwa molingana ndi kusagwirizana kwa mfundo zonse zomwe zimakhudza:
1. M'minda from ΠΈ to Mitundu itatu ya zinthu imatha kufotokozedwa (zonsezo zimaphatikizidwa pogwiritsa ntchito OR):
namespaceSelector - amasankha dzina lonse;
podSelector - amasankha makoswe;
ipBlock - amasankha subnet.
Kuphatikiza apo, kuchuluka kwa zinthu (ngakhale zofanana) m'magawo from/to osati malire. Zonsezi zidzaphatikizidwa ndi zomveka OR.
2. Mkati mwa gawo la ndondomeko ingress ikhoza kukhala ndi zinthu zambiri from (zophatikizidwa ndi zomveka OR). Mofananamo, gawo egress ikhoza kukhala ndi zinthu zambiri to (komanso kuphatikizidwa ndi disjunction):
Chifukwa chake, madontho onse amalowa m'magazi default adzakhala ndi mwayi wopeza ma pod postgres mu namespace database. Koma bwanji ngati mukufuna kutsegula mwayi postgres makadi enieni okha mu malo a mayina default?
Sefa ndi malo a mayina ndi ma pod
Mtundu wa Kubernetes 1.11 ndi wapamwamba umakupatsani mwayi wophatikiza ogwiritsa ntchito namespaceSelector ΠΈ podSelector pogwiritsa ntchito zomveka NDI. Zikuwoneka motere:
M'malo mwake, ku Kubernetes zolemba zosiyanasiyana mu podSelector kapena namespaceSelector aphatikizidwa ndi zomveka NDI.Mwachitsanzo, lamulo lotsatirali lisankha mapoto okhala ndi zilembo zonse ziwiri, role=db Π version=v2:
podSelector:
matchLabels:
role: db
version: v2
Mfundo yofananayo imagwiranso ntchito kwa mitundu yonse ya ogwiritsa ntchito: osankha zolinga, osankha ma pod, ndi osankha malo.
Ma subnet ndi ma adilesi a IP (IPBlocks)
Ma firewall amagwiritsa ntchito ma VLAN, ma adilesi a IP, ndi ma subnets kuti agawane netiweki.
Ku Kubernetes, ma adilesi a IP amaperekedwa ku ma pods okha ndipo amatha kusintha pafupipafupi, chifukwa chake zilembo zimagwiritsidwa ntchito kusankha ma pod ndi malo am'malo mumadongosolo a netiweki.
Ma subnet (ipBlocks) amagwiritsidwa ntchito poyang'anira zolowera (ingress) kapena zotuluka (egress) zakunja (North-South). Mwachitsanzo, ndondomekoyi imatsegula ma pod onse kuchokera ku namespace default mwayi wopeza ntchito ya Google DNS:
Chosankha chopanda kanthu muchitsanzo ichi chimatanthauza "sankhani ma pod onse mumalo a mayina."
Ndondomekoyi imalola mwayi wopezeka ku 8.8.8.8; kupeza IP ina iliyonse ndikoletsedwa. Chifukwa chake, kwenikweni, mwaletsa kulowa mkati mwa Kubernetes DNS service. Ngati mukufunabe kutsegula, onetsani izi momveka bwino.
zambiri ipBlocks ΠΈ podSelectors ndizogwirizana, popeza ma adilesi a IP amkati samagwiritsidwa ntchito ipBlocks. Posonyeza mkati IP pod, mudzalola kulumikizana ku/kuchokera ku ma pods okhala ndi ma adilesi awa. M'malo mwake, simudzadziwa adilesi ya IP yomwe mungagwiritse ntchito, chifukwa chake sayenera kugwiritsidwa ntchito posankha ma pod.
Monga chitsanzo chotsutsa, mfundo zotsatirazi zikuphatikiza ma IP onse motero zimalola mwayi wopeza ma pod ena onse:
Nthawi zambiri, ma pods ku Kubernetes amalumikizana wina ndi mnzake kudzera muutumiki - chowongolera katundu chomwe chimawongolera kuchuluka kwa magalimoto omwe amayendetsa ntchitoyi. Mutha kuganiza kuti malamulo a pa intaneti amawongolera mwayi wopeza ntchito, koma izi sizili choncho. Mfundo za netiweki za Kubernetes zimagwira ntchito pamadoko, osati madoko.
Mwachitsanzo, ngati ntchito ikumvetsera ku doko 80, koma ikuwongolera magalimoto ku doko 8080 la ma pod ake, muyenera kufotokoza ndendende 8080 mu ndondomeko ya intaneti.
Njira yotereyi iyenera kuonedwa ngati yocheperako: ngati mawonekedwe amkati mwautumiki (madoko omwe ma pod amamvera) asintha, mfundo zapaintaneti ziyenera kusinthidwa.
Njira yatsopano yomanga pogwiritsa ntchito Service Mesh (mwachitsanzo, onani za Istio pansipa - pafupifupi transl.) zimakuthandizani kuthana ndi vutoli.
Kodi ndikofunikira kulembetsa onse Ingress ndi Egress?
Yankho lalifupi ndi inde, kuti pod A azilankhulana ndi pod B, ayenera kuloledwa kupanga mgwirizano wotuluka (chifukwa cha izi muyenera kukonza ndondomeko ya egress), ndipo pod B iyenera kuvomereza kugwirizana komwe kukubwera ( chifukwa cha izi, mufunika ndondomeko ya ingress).
Ngati zina -gwero adzasankhidwa ndi mmodzi kapena angapo kupatula-andale, zoletsa zomwe zimayikidwa zidzatsimikiziridwa ndi kusagwirizana kwawo. Pankhaniyi, muyenera kulola momveka bwino kulumikizana ndi pod -kwa wolandila. Ngati pod sanasankhidwe ndi ndondomeko iliyonse, magalimoto ake otuluka (egress) amaloledwa mwachisawawa.
Mofananamo, tsogolo la pod ndiwolemba, osankhidwa ndi mmodzi kapena angapo ingress-andale, adzatsimikiziridwa ndi kusagwirizana kwawo. Pankhaniyi, muyenera kulola momveka bwino kuti alandire magalimoto kuchokera ku gwero la pod. Ngati pod sanasankhidwe ndi ndondomeko iliyonse, magalimoto onse olowa nawo amaloledwa mwachisawawa.
Onani Stateful kapena Stateless pansipa.
Mitengo
Mfundo za netiweki za Kubernetes sizingalembe kuchuluka kwa magalimoto. Izi zimapangitsa kuti zikhale zovuta kudziwa ngati ndondomeko ikugwira ntchito monga momwe ikufunira ndipo imasokoneza kwambiri kusanthula chitetezo.
Kuwongolera magalimoto kupita kuzinthu zakunja
Malamulo a netiweki a Kubernetes samakulolani kuti mutchule dzina lachidziwitso chokwanira (DNS) m'magawo a egress. Izi zimabweretsa kusokoneza kwakukulu mukayesa kuchepetsa kuchuluka kwa magalimoto kumalo opita kunja komwe kulibe adilesi ya IP yokhazikika (monga aws.com).
kubernetes get networkpolicy <policy-name> -o yaml
Kumbukirani kuti dongosolo lovomerezeka la Kubernetes silingalephereke ndipo likhoza kuphonya mitundu ina ya zolakwika.
Kuphedwa
Kubernetes samagwiritsa ntchito ndondomeko zapaintaneti palokha, koma ndi chipata cha API chomwe chimapereka katundu wowongolera ku dongosolo lomwe limatchedwa Container Networking Interface (CNI). Kukhazikitsa ndondomeko pamagulu a Kubernetes popanda kugawa CNI yoyenera ndi chimodzimodzi kupanga ndondomeko pa seva yoyang'anira zozimitsa moto popanda kuziyika paziwopsezo zamoto. Zili ndi inu kuti muwonetsetse kuti muli ndi CNI yabwino kapena, pankhani ya nsanja za Kubernetes, zokhala pamtambo. (mutha kuwona mndandanda wa omwe amapereka apa - pafupifupi. trans.), yambitsani ndondomeko za netiweki zomwe zingakukhazikitseni CNI.