Calico mo te whatunga i Kubernetes: whakataki me te wheako iti
Ko te kaupapa o te tuhinga ko te whakamohio i te kaipanui ki nga kaupapa o te whatunga me te whakahaere i nga kaupapa here whatunga i Kubernetes, me te mono-tuatoru Calico mono e whakawhānui ana i nga kaha paerewa. I te huarahi, ka whakaatuhia te ngawari o te whirihoranga me etahi ahuatanga ma te whakamahi i nga tauira pono mai i to maatau wheako whakahaere.
He whakataki tere ki te taputapu whatunga Kubernetes
I roto i te horopaki o tenei tuhinga, he mea nui kia mohio ko K8s ake te kawenga mo te hononga whatunga i waenga i nga ipu me nga pona: mo tenei, CNI monomai (Atanga Whatunga Ipu). Ētahi atu e pā ana ki tenei ariā tatou i korero ano ratou ki ahau.
Hei tauira, ko te nuinga o enei monomai Tuhinga — ka whakarato i te hononga whatunga katoa i waenga i nga kohinga kapoi katoa ma te hiki i nga piriti ki ia pona, ka tautapa he kupenga-roto ki a ia. Heoi, ko te whakaurunga oti me te kore ture kaore e whai hua i nga wa katoa. Ki te whakarato i etahi momo wehewehe iti i roto i te tautau, he mea tika ki te wawao i te whirihoranga o te papaahi. I roto i te keehi whanui, ka tukuna ki raro i te mana whakahaere o te CNI ano, na reira ka taea te whakamaoritanga o nga wawaotanga tuatoru-tuatoru i roto i nga iptables ka pohehe, ka warewarehia ranei.
A "i waho o te pouaka" mo te whakarite i te whakahaere kaupapa here whatunga i roto i te roopu Kubernetes ka whakaratohia WhatungaPolicy API. Ko tenei rauemi, ka tohatohahia ki runga i nga mokowāingoa kua tohua, kei roto pea nga ture hei wehe i te urunga mai i tetahi tono ki tetahi atu. Ka taea hoki e koe te whirihora i te urunga i waenga i nga putunga motuhake, nga taiao (mokowā ingoa), poraka ranei o nga wahitau IP:
Ehara tenei i te tauira o mua tuhinga whaimana kia kotahi, mo nga wa katoa ka pehia te hiahia ki te mohio ki te arorau o te mahi kaupapa here whatunga. Engari, ka ngana tonu tatou ki te mohio ki nga maapono taketake me nga tikanga o te tukatuka i nga rerenga waka ma te whakamahi i nga kaupapa here whatunga...
E tika ana kia 2 nga momo waka: te uru ki roto i te poka (Ingress) me te puta atu (Egress).
Inaa, kua wehea nga mahi torangapu ki enei waahanga e rua i runga i te ahunga o te neke.
Ko te huanga e hiahiatia ana ko te kaiwhiriwhiri; te tangata e pa ana te ture. Ka taea e tenei he peera (he roopu roopu ranei) he taiao ranei (arā, he mokowā ingoa). He taipitopito nui: me whai tapanga nga momo mea e rua (tapanga i roto i nga kupu Kubernetes) - koinei nga mahi a nga kaitōrangapū.
I tua atu i te maha o nga kaiwhiriwhiri kua whakakotahihia e etahi momo tapanga, ka taea te tuhi i nga ture penei "Tukua/whakakahoretia nga mea katoa/katoa" i roto i nga rereke rereke. Mo tenei kaupapa, ka whakamahia nga hanganga o te ahua:
Ka hoki mai ano ki te kowhiringa o te mono CNI mo te tautau, he mea tika kia mahara tera e kore e tautoko nga mono whatunga katoa i te NetworkPolicy. Hei tauira, ko te Flannel kua whakahuatia ake nei kaore e mohio ki te whirihora i nga kaupapa here whatunga, e he korero tika i roto i te whare pupuri mana. Ka whakahuahia ano he momo rereke ki reira - he kaupapa Open Source Calico, e tino whakawhānui ana i te huinga paerewa o nga API Kubernetes mo nga kaupapa here whatunga.
Te mohio ki a Calico: te ariā
Ka taea te whakamahi i te mono Calico ki te whakauru ki te Flannel (kaupapa kaupapa Canal) motuhake ranei, e hipoki ana i nga hononga whatunga me nga mana whakahaere waatea.
He aha nga waahi ka taea e te whakamahi i te otinga "pouaka" K8 me te huinga API mai i Calico e whakarato ana?
Anei nga mea kua whakauruhia ki roto NetworkPolicy:
he iti noa nga kaitōrangapū e te taiao;
ka whakamahia nga kaupapa here ki nga peera kua tohua ki nga tapanga;
Ka taea te whakamahi i nga ture ki nga pene, ki nga taiao, ki nga kupenga-roto ranei;
Ka taea e nga ture te whakauru i nga kawa, ingoa, tohu tohu tohu ranei.
Anei me pehea e whakawhānuihia ai e Calico enei mahi:
Ka taea te whakamahi kaupapa here ki tetahi mea: te putea, te ipu, te miihini mariko, te atanga ranei;
Ka taea e nga ture te whakauru i tetahi mahi motuhake (te aukati, te whakaaetanga, te takiuru);
ko te whainga, te puna ranei o nga ture ka taea te tauranga, te whānuitanga o nga tauranga, nga kawa, nga huanga HTTP, ICMP ranei, IP, kupenga-roto ranei (whakatupuranga tua-4, 6th ranei), ahakoa he kaiwhiriwhiri (nga pokapu, ope, taiao);
I tua atu, ka taea e koe te whakahaere i te haere o nga waka ma te whakamahi i nga tautuhinga DNAT me nga kaupapa here tuku waka.
Ko te mahi tuatahi i runga i te GitHub i roto i te whare putunga Calico i hoki mai ki te marama o Hurae 2016, a, kotahi tau i muri mai ka whai mana te kaupapa ki te whakarite hononga whatunga Kubernetes - ka kitea tenei, hei tauira, na nga hua rangahau, i whakahaeretia e The New Stack:
He maha nga otinga whakahaere nui me nga K8, penei i Amazon EKS, Azure AKS, Google GKE a ka timata etahi atu ki te taunaki kia whakamahia.
Mo te mahi, he pai nga mea katoa i konei. I te whakamatautau i a raatau hua, i whakaatuhia e te roopu whanaketanga Calico nga mahi arorangi, neke atu i te 50000 nga ipu i runga i te 500 nga pona tinana me te reiti hanga 20 ipu ia hekona. Karekau he raruraru i kitea mo te whakatauine. Ko nga hua pera i panuitia i te panuitanga o te putanga tuatahi. Ko nga rangahau motuhake e aro ana ki te whakaurunga me te kohi rauemi ka whakau i te pai o te mahi a Calico ki ta Flannel. Hei tauira:
Kei te tino tere te whakawhanaketanga o te kaupapa, e tautoko ana i nga mahi i roto i nga otinga rongonui e whakahaerehia ana nga K8s, OpenShift, OpenStack, ka taea te whakamahi i te Calico i te wa e whakamahi ana i te roopu. kopa, he tohutoro mo te hanganga o nga whatunga Ratonga Mesh (he tauira tenei whakamahia i te taha o Istio).
Parakatihi me Calico
I roto i te take whanui mo te whakamahi vanilla Kubernetes, ko te whakauru i te CNI ka heke iho ki te whakamahi i te konae calico.yaml, tangohia mai i te paetukutuku mana, ma te whakamahi kubectl apply -f.
Hei tikanga, ko te putanga o naianei o te mono he hototahi ki nga putanga 2-3 hou o Kubernetes: ko te mahi i roto i nga putanga tawhito kaore i te whakamatauhia, kaore hoki e whakamanahia. E ai ki nga kaihanga, ka rere a Calico i runga i nga kakano Linux i runga ake i te 3.10 e whakahaere ana i te CentOS 7, Ubuntu 16, Debian 8 ranei, i runga ake o nga iptables, IPVS ranei.
Te wehewehe i roto i te taiao
Mo te maaramatanga whanui, me titiro ki tetahi keehi ngawari kia mohio ai he pehea te rereke o nga kaupapa here whatunga i roto i te tohu Calico mai i nga paerewa me pehea te huarahi ki te hanga ture e ngawari ai te panui me te ngawari o te whirihoranga:
E 2 nga tono tukutuku kua tukuna ki roto i te roopu: i Node.js me PHP, ko tetahi e whakamahi ana i a Redis. Hei aukati i te uru ki Redis mai i te PHP, i te wa e mau tonu ana te hononga ki a Node.js, whakamahia noa te kaupapa here e whai ake nei:
Ko te mea nui i whakaaetia e matou nga waka taumai ki te tauranga Redis mai i Node.js. A ka tino marama kaore ratou i aukati i tetahi atu mea. Ka puta mai a NetworkPolicy, ka timata nga kaiwhiriwhiri katoa e whakahuahia ana i roto, ki te wehe ke, ki te kore e tohua. Heoi, karekau nga ture wehe e pa ana ki etahi atu mea kaore i kapi i te kaiwhiriwhiri.
Ka whakamahia e te tauira apiVersion Ka puta a Kubernetes i te pouaka, engari kaore he mea hei aukati i a koe ki te whakamahi he rauemi o taua ingoa mai i te tuku Calico. Ko te wetereo kei reira he taipitopito ake, no reira me tuhi ano koe i te ture mo te keehi o runga ake nei ki te ahua e whai ake nei:
Ko nga hangahanga kua whakahuahia ake nei mo te whakaae, te whakakore ranei i nga waka katoa ma te NetworkPolicy API auau kei roto nga hanga me nga reu he uaua ki te mohio me te maumahara. I roto i te take o Calico, ki te huri i te arorau o te ture papaahi ki te ritenga atu, huri noa action: Allow i runga i action: Deny.
Wehenga ma te taiao
Inaianei whakaarohia he ahuatanga ka hangaia e tetahi tono nga inenga pakihi mo te kohi i Prometheus me etahi atu tātaritanga ma te whakamahi i te Grafana. He raraunga tairongo pea kei roto i te tukunga ake, ka kitea ano e te marea ma te taunoa. Me huna e tatou enei raraunga mai i nga karu karu:
Ko te Prometheus, hei tikanga, ka tuuhia ki tetahi waahi ratonga motuhake - hei tauira ka waiho hei ingoa mokowhiti penei:
mara metadata.labels karekau he aitua tenei. Ka rite ki te korero i runga ake nei, namespaceSelector (me te podSelector) e mahi ana me nga tapanga. No reira, kia taea ai te tango i nga inenga mai i nga putunga katoa i runga i tetahi tauranga motuhake, me taapiri e koe etahi momo tapanga (me tango mai ranei i nga mea o mua), katahi ka tono whirihoranga penei:
I te nuinga o te waa, ma te taapiri i enei momo kaupapa here mo nga hiahia motuhake, ka taea e koe te whakamarumaru ki te pokanoa kino, pokanoa ranei i roto i te whakahaeretanga o nga tono i roto i te roopu.
Ko te mahi pai rawa atu, e ai ki nga kaihanga o Calico, ko te "Poraka nga mea katoa me te whakatuwhera i nga mea e hiahia ana koe", kua tuhia ki roto. tuhinga whaimana (ko etahi e whai ana i te huarahi rite - ina koa, i roto i tuhinga kua whakahuatia).
Te whakamahi i etahi atu mea Calico
Maku e whakamahara ki a koe na roto i te huinga roa o nga API Calico ka taea e koe te whakarite i te waatea o nga pona, kaua e whakawhäitihia ki nga pene. I roto i te tauira e whai ake nei te whakamahi GlobalNetworkPolicy kua katia te kaha ki te tuku i nga tono ICMP i roto i te tautau (hei tauira, nga pings mai i te poti ki tetahi pona, i waenga i nga poti, mai i tetahi pona ki tetahi poti IP):
I roto i te keehi o runga ake nei, ka taea tonu e nga pokapu tautau te "toro atu" ki a raatau ano ma te ICMP. A ka whakatauhia tenei take ma te huarahi GlobalNetworkPolicy, hoatu ki tetahi hinonga HostEndpoint:
Hei whakamutunga, ka hoatu e ahau he tauira tino pono mo te whakamahi i nga mahi a Calico mo te keehi o te taunekeneke tata-tata, i te mea kaore e ranea te huinga paerewa o nga kaupapa here. Hei uru atu ki te tono tukutuku, ka whakamahi nga kiritaki i te ara VPN, a ka tino whakahaeretia tenei urunga, ka whakawhäitihia ki te rarangi o nga ratonga e whakaaetia ana kia whakamahia:
Ka hono atu nga kaihoko ki te VPN ma te tauranga UDP paerewa 1194, a, ina hono ana, ka whiwhi huarahi ki nga kupenga-roto kapoi o nga poti me nga ratonga. Ka panaia nga kupengaroto katoa kia kore ai e ngaro nga ratonga i te wa o te whakaara ano me te whakatika i nga huringa.
Ko te tauranga i roto i te whirihoranga he paerewa, e kii ana i etahi ahuatanga mo te whirihora i te tono me te whakawhiti ki te roopu Kubernetes. Hei tauira, i roto i te AWS LoadBalancer mo te UDP i puta mooni i te mutunga o tera tau i roto i te raarangi iti o nga rohe, a kaore e taea te whakamahi a NodePort na tona tuku whakamua i runga i nga kohinga kohinga katoa a kaore e taea te tauine i te maha o nga tuunga tuunga mo nga kaupapa whakararu i te he. Hei taapiri, me whakarereke e koe te awhe taunoa o nga tauranga...
Na te rapu i nga otinga ka taea, ko enei e whai ake nei i kowhiria:
Ko nga Pods me te VPN kua whakaritea mo ia node ki roto hostNetwork, ara, ki te IP tūturu.
Ka tukuna te ratonga ki waho ClusterIP. Kua whakauruhia he tauranga ki runga i te node, ka uru mai i waho me nga rahui iti (te waahi o te waahi IP tuuturu).
Ko te whakatau i te node kei runga te poroporo i tua atu i te whanuitanga o to maatau korero. Ka kii noa ahau ka taea e koe te "whao" i te ratonga ki te node, ki te tuhi ranei i tetahi ratonga sidecar iti ka aro turuki i te wahitau IP o naianei o te ratonga VPN me te whakatika i nga rekoata DNS kua rehitatia me nga kaihoko - ko wai e nui ana te whakaaro.
Mai i te tirohanga ararere, ka taea e taatau te tautuhi i tetahi kaihoko VPN ma tana wahitau IP i tukuna e te tūmau VPN. Kei raro nei he tauira tuatahi mo te aukati i te uru o te kiritaki ki nga ratonga, e whakaatuhia ana i runga i te Redis kua whakahuahia ake nei:
I konei, ko te hono ki te tauranga 6379 ka tino aukatihia, engari i te wa ano ka tiakina te mahi o te ratonga DNS, he maha nga wa e raru ana te mahi i te wa e whakatakoto ana i nga ture. Na te mea, pera i te korero i mua ake nei, ka puta mai he kaiwhiriwhiri, ka tukuna te kaupapa here whakahē taunoa ki a ia mena kaore i tohua.
Ngā putanga
No reira, ma te whakamahi i te API matatau a Calico, ka taea e koe te whirihora ngawari me te huri i te ararere ki roto, huri noa i te tautau. I te nuinga o te waa, ko te ahua o tana whakamahinga he rite ki te pupuhi pihoihoi me te pu, me te whakatinana i te whatunga L3 me nga kohanga BGP me te IP-IP he ahua kino i roto i te whakaurunga Kubernetes ngawari ki runga i te whatunga papatahi... Heoi, ki te kore te ahua o te taputapu he tino pai me te whai hua. .
Ko te wehe i te kahui ki te whakatutuki i nga whakaritenga haumarutanga kaore pea e taea i nga wa katoa, a koinei te waahi ka tae mai a Calico (he otinga rite ranei) ki te whakaora. Ko nga tauira i hoatu i roto i tenei tuhinga (me nga whakarereke iti) ka whakamahia i roto i nga whakaurunga maha o o taatau kiritaki i AWS.