Calico ho an'ny tambajotra ao Kubernetes: fampidirana sy traikefa kely
Ny tanjon'ny lahatsoratra dia ny fampahafantarana ny mpamaky ny fototry ny tambajotra sy ny fitantanana ny politikan'ny tambajotra ao Kubernetes, ary koa ny plugin Calico an'ny antoko fahatelo izay manitatra ny fahaiza-manao mahazatra. Teny an-dalana, ny fanamorana ny fandrindrana sy ny endri-javatra sasany dia haseho amin'ny fampiasana ohatra tena izy avy amin'ny traikefantsika miasa.
Fampidirana haingana ny fitaovana tambajotra Kubernetes
Ao anatin'ny tontolon'ity lahatsoratra ity dia zava-dehibe ny manamarika fa ny K8s mihitsy no tsy tompon'andraikitra amin'ny fifandraisana amin'ny tambajotra eo amin'ny kaontenera sy ny nodes: noho izany, isan-karazany CNI plugins (Interface Networking Container). More momba ity hevitra ity izahay hoy koa izy ireo tamiko.
Ohatra, ny mahazatra indrindra amin'ireo plugins ireo dia Flannel - manome fifandraisana feno amin'ny tambajotra eo amin'ny node cluster rehetra amin'ny alàlan'ny fampiakarana tetezana amin'ny node tsirairay, manendry subnet ho azy. Na izany aza, ny fidirana feno sy tsy voafehy dia tsy mahasoa foana. Mba hanomezana karazana fitokanana kely indrindra ao amin'ny cluster, dia ilaina ny miditra an-tsehatra amin'ny fanamafisana ny firewall. Amin’ny ankapobeny dia apetraka eo ambany fifehezan’ny CNI iray ihany izy io, ka izay mety ho fitsabahan’ny antoko fahatelo amin’ny iptables dia azo adika diso na atao tsinontsinona mihitsy.
Ary nomena ny "out of the box" ho an'ny fandaminana ny fitantanana ny politikan'ny tambajotra ao anaty cluster Kubernetes NetworkPolicy API. Ity loharano ity, izay zaraina amin'ny toeran'ny anarana voafantina, dia mety misy fitsipika hanavahana ny fidirana amin'ny fampiharana iray mankany amin'ny iray hafa. Izy io koa dia ahafahanao manitsy ny fidirana eo anelanelan'ny pods manokana, ny tontolo iainana (namespaces) na ny sakana amin'ny adiresy IP:
Tsy io no ohatra voalohany indrindra amin'ny antontan-taratasy ofisialy dia mety hanakivy ny faniriana hahatakatra ny lojikan'ny fomba fiasan'ny politikan'ny tambajotra. Na izany aza, mbola hiezaka ny hahatakatra ny fitsipika fototra sy ny fomba fanodinana ny fifamoivoizana amin'ny alàlan'ny politikan'ny tambajotra...
Lojika fa misy karazany 2 ny fifamoivoizana: miditra ao amin'ny pod (Ingress) ary mivoaka avy ao (Egress).
Raha ny marina dia mizara ho sokajy 2 ireo ny politika mifototra amin'ny fitarihana ny hetsika.
Ny toetra ilaina manaraka dia mpifidy; izay mihatra amin'ny fitsipika. Ity dia mety ho pod (na vondron'ny pods) na tontolo iainana (izany hoe sehatra anarana). Tsipiriany manan-danja: tsy maintsy misy marika ireo karazana ireo zavatra roa ireo (marika amin'ny teny Kubernetes) - ireo no iasan'ny mpanao politika.
Ho fanampin'ny isa voafetra voafantina mitambatra amin'ny karazana marika sasany, azo atao ny manoratra fitsipika toy ny "Avelao / mandà ny zava-drehetra / rehetra" amin'ny fiovaovana samihafa. Ho an'ity tanjona ity, ny fananganana endrika dia ampiasaina:
Raha iverenana amin'ny safidin'ny plugin CNI ho an'ny cluster, dia tsara ny manamarika fa Tsy ny tambajotra rehetra plugin no manohana NetworkPolicy. Ohatra, ny Flannel efa voalaza dia tsy mahafantatra ny fomba fanamboarana ny politikan'ny tambajotra, izay voalaza mivantana ao amin'ny tahiry ofisialy. Misy safidy hafa koa voalaza ao - tetikasa Open Source calico, izay manitatra be ny fitambaran'ny API Kubernetes mahazatra amin'ny resaka politikan'ny tambajotra.
Fahalalana an'i Calico: teoria
Ny plugin Calico dia azo ampiasaina miaraka amin'ny Flannel (subproject Canal) na tsy miankina, mahafaoka ny fifandraisana amin'ny tambajotra sy ny fahaiza-mitantana ny fisiana.
Inona avy ireo fahafahana omen'ny fampiasana ny vahaolana K8s "boaty" sy ny API napetraka avy amin'ny Calico?
Ity ny zavatra natsangana tao amin'ny NetworkPolicy:
voafetran’ny tontolo iainana ny mpanao politika;
ny politika dia ampiharina amin'ny pods misy marika;
Ny fitsipika dia azo ampiharina amin'ny pods, ny tontolo iainana na ny subnets;
Ny fitsipika dia mety ahitana protocols, anarana na marika famantarana ny seranan-tsambo.
Toy izao ny fomba fanitarana ireo asa ireo i Calico:
azo ampiharina amin'ny zavatra rehetra ny politika: pod, container, milina virtoaly na interface;
Ny fitsipika dia mety ahitana hetsika manokana (fandrarana, fahazoan-dàlana, logging);
ny tanjona na loharanon'ny fitsipika dia mety ho seranan-tsambo, seranan-tsambo isan-karazany, protocols, toetra HTTP na ICMP, IP na subnet (taranaka faha-4 na faha-6), izay mpifidy (nodes, mpampiantrano, tontolo iainana);
Ho fanampin'izany, azonao atao ny mandrindra ny fandalovan'ny fifamoivoizana amin'ny alàlan'ny fanovana DNAT sy ny politikan'ny fandefasana fifamoivoizana.
Ny fanoloran-tena voalohany amin'ny GitHub ao amin'ny tahiry Calico dia niverina tamin'ny Jolay 2016, ary herintaona taty aoriana dia nahazo toerana voalohany tamin'ny fandaminana ny fifandraisana amin'ny tambajotra Kubernetes ny tetikasa - voaporofo izany, ohatra, amin'ny valin'ny fanadihadiana, notarihin'ny The New Stack:
Vahaolana lehibe maro mitantana miaraka amin'ny K8s, toy ny Amazon EKS, Azure AKS, Google GKE ary ny hafa dia nanomboka nanoro azy io mba hampiasaina.
Raha ny fampisehoana, tsara ny zava-drehetra eto. Tamin'ny fanandramana ny vokatra, ny ekipan'ny fampandrosoana Calico dia naneho ny fahombiazan'ny astronomia, nampandeha kaontenera maherin'ny 50000 tamin'ny node ara-batana 500 miaraka amin'ny tahan'ny famoronana 20 kaontenera isan-tsegondra. Tsy nisy olana hita tamin'ny scaling. Vokatra toy izany nambara efa tamin'ny fanambarana ny dikan-teny voalohany. Ny fanadihadiana tsy miankina mifantoka amin'ny fanjifana sy ny fanjifana loharanon-karena dia manamafy ihany koa fa saika mitovy amin'ny an'ny Flannel ny zava-bitan'i Calico. Ohatra:
Ny tetikasa dia mivoatra haingana dia haingana, manohana ny asa amin'ny vahaolana malaza mitantana K8s, OpenShift, OpenStack, azo atao ny mampiasa Calico rehefa mametraka cluster mampiasa kops, misy fanondroana ny fananganana tambajotra Service Mesh (ohatra ity ampiasaina miaraka amin'i Istio).
Manaova fanazaran-tena miaraka amin'ny Calico
Amin'ny tranga ankapobeny amin'ny fampiasana vanilla Kubernetes, ny fametrahana CNI dia tonga amin'ny fampiasana ny rakitra calico.yaml, alaina avy amin'ny tranonkala ofisialy, amin'ny fampiasana kubectl apply -f.
Amin'ny maha-fitsipika, ny dikan-teny ankehitriny amin'ny plugin dia mifanaraka amin'ny Kubernetes 2-3 farany: tsy voasedra ny fandidiana amin'ny dikan-teny taloha ary tsy azo antoka. Araka ny filazan'ny mpamorona, Calico dia mihazakazaka amin'ny kernel Linux mihoatra ny 3.10 mihazakazaka CentOS 7, Ubuntu 16 na Debian 8, eo an-tampon'ny iptables na IPVS.
Fitokanana ao anatin'ny tontolo iainana
Mba hahazoana fahatakarana ankapobeny, andeha hojerentsika ny tranga tsotra hahafantarana ny maha-samihafa ny politikan'ny tambajotra ao amin'ny notation Calico amin'ny mahazatra ary ny fomba hanatsorana ny fahaizan'izy ireo vakina sy ny fahafaha-mandrindra ny fomba fiasa amin'ny famoronana fitsipika:
Misy fampiharana tranonkala 2 napetraka ao amin'ny cluster: ao amin'ny Node.js sy PHP, iray amin'ireo mampiasa Redis. Mba hanakanana ny fidirana amin'ny Redis amin'ny PHP, raha mitazona fifandraisana amin'ny Node.js, ampiharo fotsiny izao politika manaraka izao:
Amin'ny ankapobeny dia navelanay ny fifamoivoizana miditra amin'ny seranan-tsambo Redis avy amin'ny Node.js. Ary mazava ho azy fa tsy nandrara zavatra hafa izy ireo. Raha vao miseho ny NetworkPolicy, dia manomboka mitoka-monina avokoa ireo mpifidy voalaza ao, raha tsy misy fepetra manokana. Na izany aza, ny fitsipika mitokana dia tsy mihatra amin'ny zavatra hafa tsy voasaron'ny mpifidy.
Mampiasa ny ohatra apiVersion Kubernetes ivelan'ny boaty, saingy tsy misy manakana anao tsy hampiasa azy io loharano mitovy anarana avy amin'ny fanaterana Calico. Ny syntax ao dia amin'ny antsipiriany kokoa, noho izany dia mila manoratra ny fitsipika ho an'ny tranga etsy ambony ianao amin'ny endrika manaraka:
Ireo fananganana voalaza etsy ambony ireo amin'ny famelana na fandavana ny fifamoivoizana rehetra amin'ny alàlan'ny NetworkPolicy API mahazatra dia misy fananganana misy fononteny izay sarotra takarina sy tsaroana. Raha ny momba an'i Calico, hanova ny lojikan'ny fitsipiky ny firewall ho mifanohitra amin'izany dia ovay fotsiny action: Allow amin'ny action: Deny.
Fitokana-monina araka ny tontolo iainana
Alaivo sary an-tsaina ny toe-javatra iray izay mahatonga ny fampiharana iray hamokatra metrika fandraharahana ho an'ny fanangonana ao amin'ny Prometheus sy famakafakana bebe kokoa amin'ny fampiasana Grafana. Mety misy angona saro-pady ny fampiakarana, izay azo jerena ampahibemaso amin'ny alàlan'ny default. Andao hanafina ity angona ity amin'ny prying eyes:
Prometheus, amin'ny ankapobeny, dia napetraka ao amin'ny tontolo serivisy manokana - amin'ny ohatra dia ho toy izao ny anaran'ny anarana:
Amin'ny ankapobeny, amin'ny fampidirana ireo karazana politika ireo ho an'ny filana manokana dia azonao atao ny miaro amin'ny fitsabahana ratsy na tsy nahy amin'ny fampandehanana ny rindranasa ao amin'ny cluster.
Ny fomba fanao tsara indrindra, araka ny filazan'ny mpamorona ny Calico, dia ny fomba "Sakanana ny zava-drehetra ary sokafy mazava izay ilainao", voarakitra ao amin'ny antontan-taratasy ofisialy (Ny hafa dia manaraka fomba mitovy - indrindra indrindra, amin'ny lahatsoratra efa voalaza).
Mampiasa zavatra Calico fanampiny
Mamelà ahy hampahatsiahy anao fa amin'ny alàlan'ny andian-tsarimihetsika Calico API dia azonao atao ny mifehy ny fisian'ny node, fa tsy voafetra amin'ny pods. Ao amin'ny ohatra manaraka mampiasa GlobalNetworkPolicy mihidy ny fahafahana mandefa ny fangatahana ICMP ao amin'ny cluster (ohatra, pings avy amin'ny pod mankany amin'ny node, eo anelanelan'ny pods, na avy amin'ny node mankany amin'ny IP pod):
Farany, hanome ohatra tena izy amin'ny fampiasana ny fiasan'ny Calico aho amin'ny trangan'ny fifaneraserana akaiky, rehefa tsy ampy ny fitsipika napetraka. Mba hidirana amin'ny rindranasa an-tranonkala dia mampiasa tonelina VPN ny mpanjifa, ary io fidirana io dia voafehy tsara ary voafetra amin'ny lisitry ny serivisy manokana azo ampiasaina:
Mifandray amin'ny VPN amin'ny alàlan'ny seranan-tsambo UDP mahazatra 1194 ny mpanjifa ary, rehefa mifandray, dia mahazo lalana mankany amin'ny zana-tsokajin'ny pods sy serivisy. Ny subnets manontolo dia atosika mba tsy ho very serivisy mandritra ny fanombohana sy fanovana adiresy.
Ny seranan-tsambo ao amin'ny konfigurasi dia manara-penitra, izay mametraka ny nuances sasany amin'ny dingan'ny fanamboarana ny fampiharana sy ny famindrana azy amin'ny cluster Kubernetes. Ohatra, ao amin'ny AWS LoadBalancer ho an'ny UDP dia niseho ara-bakiteny tamin'ny faran'ny taona lasa tao anaty lisitra voafetra ny faritra, ary tsy azo ampiasaina ny NodePort noho ny fandefasana azy amin'ny node cluster rehetra ary tsy azo atao ny manitsy ny isan'ny mpizara ho an'ny. tanjona fandeferana fahadisoana. Fanampin'izay, tsy maintsy manova ny isan'ny seranan-tsambo ianao ...
Vokatry ny fikarohana amin'ny alalan'ny vahaolana azo atao dia ireto no nosafidiana:
Ny pods miaraka amin'ny VPN dia voalahatra isaky ny node hostNetwork, izany hoe mankany amin'ny tena IP.
Ny serivisy dia alefa any ivelany amin'ny ClusterIP. Misy seranana napetraka ara-batana eo amin'ny node, izay azo idirana avy any ivelany miaraka amin'ny famandrihana kely (ny fisian'ny adiresy IP tena izy).
Ny famaritana ny node misy ny pod rose dia mihoatra ny faritry ny tantarantsika. Lazaiko fotsiny fa azonao atao ny "mametaka" ny serivisy amin'ny node na manoratra serivisy kely sidecar izay hanara-maso ny adiresy IP amin'ny serivisy VPN amin'izao fotoana izao ary hanova ny firaketana DNS voasoratra amin'ny mpanjifa - na iza na iza manana saina ampy.
Avy amin'ny fomba fijery zotra, afaka mamantatra manokana ny mpanjifa VPN amin'ny alàlan'ny adiresy IP navoakan'ny mpizara VPN. Ity ambany ity ny ohatra voalohany amin'ny famerana ny fidirana amin'ny serivisy toy izany, aseho amin'ny Redis voalaza etsy ambony:
Eto, ny fifandraisana amin'ny seranan-tsambo 6379 dia voarara mafy, fa miaraka amin'izay koa dia voatahiry ny fiasan'ny serivisy DNS, izay matetika mijaly rehefa mamorona fitsipika. Satria, araka ny voalaza teo aloha, rehefa miseho ny mpifidy iray, dia ampiharina aminy ny politikan'ny fandavana raha tsy misy fepetra hafa.
vokatra
Noho izany, amin'ny fampiasana ny API mandroso an'i Calico, azonao atao ny manitsy sy manova ny lalana ao anatin'ny cluster sy ny manodidina. Amin'ny ankapobeny, ny fampiasana azy dia mety ho toy ny fitifirana fody amin'ny tafondro, ary ny fampiharana tambajotra L3 miaraka amin'ny BGP sy IP-IP tonelina dia toa goavam-be amin'ny fametrahana Kubernetes tsotra amin'ny tambajotra fisaka... Na izany aza, raha tsy izany dia toa azo ampiharina sy mahasoa ilay fitaovana. .
Mety tsy ho azo atao foana ny mitoka-monina mba hamenoana ny fepetra takian'ny fiarovana, ary eto no tonga ny Calico (na vahaolana mitovy amin'izany). Ireo ohatra omena ato amin'ity lahatsoratra ity (miaraka amin'ny fanovana kely) dia ampiasaina amin'ny fametrahana maromaro an'ny mpanjifanay ao amin'ny AWS.