Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Ny dingana voalohany amin'ny fandefasana amin'ny Kubernetes dia ny fametrahana ny fampiharanao ao anaty fitoeran-javatra. Amin'ity andiany ity dia hojerentsika ny fomba ahafahanao mamorona sary fitoeran-javatra kely azo antoka.
Misaotra an'i Docker, ny famoronana sary container dia tsy mora kokoa. Manorata sary fototra, ampio ny fanovanao, ary mamorona fitoeran-javatra.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Na dia tsara ho an'ny fanombohana aza ity teknika ity, ny fampiasana sary fototra mahazatra dia mety hitarika amin'ny asa tsy azo antoka miaraka amin'ny sary lehibe feno vulnerability.

Fanampin'izany, ny ankamaroan'ny sary ao amin'ny Docker dia mampiasa Debian na Ubuntu ho an'ny sary fototra, ary na dia manome fampifanarahana tsara sy fanamboarana mora aza izany (ny rakitra Docker dia tsy misy afa-tsy andalana roa), ny sary fototra dia afaka manampy entana fanampiny megabytes an-jatony amin'ny fitoeranao. Ohatra, ny rakitra node.js tsotra ho an'ny fampiharana Go "hello-world" dia eo amin'ny 700 megabytes, raha toa ka megabytes vitsivitsy monja ny fampiharana anao.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Ka ireo enta-mavesatra fanampiny rehetra ireo dia fandaniam-bola amin'ny habaka nomerika ary toerana fiafenana lehibe ho an'ny vulnerability sy ny bibikely. Andeha Γ ry isika hijery fomba roa hampihenana ny haben'ny sary fitoeran-javatra.

Ny voalohany dia ny fampiasana sary fototra kely, ny faharoa dia ny fampiasana ny Builder Pattern. Ny fampiasana sary fototra kely kokoa angamba no fomba mora indrindra hampihenana ny haben'ny fitoeranao. Azo inoana fa ny fiteny na stack ampiasainao dia manome sary fampiharana tany am-boalohany izay kely kokoa noho ny sary mahazatra. Andeha hojerentsika ny fitoeran-javatra node.js.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Amin'ny alΓ lan'ny default ao amin'ny Docker, ny haben'ny sary fototra: 8 dia 670 MB, ary ny node: 8 MB ny haben'ny sary 65-alpine, izany hoe 10 heny kely kokoa. Amin'ny fampiasana ny sary fototra Alpine kely kokoa dia hampihena be ny haben'ny fitoeranao ianao. Alpine dia fizarana Linux kely sy maivana izay tena malaza amin'ny mpampiasa Docker satria mifanaraka amin'ny rindranasa maro izy io ary mitazona fitoeran-javatra kely. Tsy sahala amin'ny sary "node" mahazatra Docker, "node: alpine" dia manala rakitra sy programa serivisy maro, ary ireo izay ampy hampandehanana ny fampiharana anao ihany no sisa.

Raha hifindra any amin'ny sary fototra kely kokoa, havaozy fotsiny ny Dockerfile hanombohana miasa amin'ny sary fototra vaovao:

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Ankehitriny, tsy toy ny sary onbuild taloha, mila mandika ny kaody ao anaty fitoeran-javatra ianao ary mametraka ny fiankinan-doha. Ao amin'ny Dockerfile vaovao, manomboka amin'ny sary node:alpine ilay container, avy eo mamorona lahatahiry ho an'ny code, mametraka fiankinan-doha amin'ny alΓ lan'ny mpitantana fonosana NPM, ary farany dia mihazakazaka server.js.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Ity fanavaozana ity dia miteraka kaontenera iray izay avo 10 heny ny habeny. Raha toa ka tsy manana fampiasa fampihenana sary fototra ny fiteny fandaharana na stack anao dia ampiasao ny Alpine Linux. Izy io koa dia hanome fahafahana mitantana tanteraka ny votoatin'ny kaontenera. Ny fampiasana sary fototra kely dia fomba tsara hamoronana kaontenera kely haingana. Saingy ny fampihenana lehibe kokoa aza dia azo atao amin'ny alΓ lan'ny Builder Pattern.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Amin'ny fiteny voadika, ny kaody loharano dia alefa amin'ny mpandika teny aloha ary avy eo dia alefa mivantana. Amin'ny fiteny natambatra, ny kaody loharano dia avadika ho kaody voaangona voalohany. Na izany aza, ny fanangonana matetika dia mampiasa fitaovana izay tsy tena ilaina amin'ny fampandehanana ny kaody. Midika izany fa azonao atao ny manala tanteraka ireo fitaovana ireo amin'ny fitoeran-javatra farany. Azonao atao ny mampiasa Builder Pattern amin'izany.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Ny kaody dia noforonina ao amin'ny kaontenera voalohany ary natambatra. Ny kaody voaangona dia atambatra ao anaty fitoeran-javatra farany tsy misy mpanangona sy fitaovana ilaina amin'ny fanangonana io kaody io. Andao hanao fampiharana Go amin'ny alΓ lan'ity dingana ity. Voalohany, hifindra avy amin'ny sary onbuild mankany amin'ny Alpine Linux isika.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Ao amin'ny Dockerfile vaovao, manomboka amin'ny sary golang:alpine ilay container. Avy eo dia mamorona lahatahiry ho an'ny kaody, mandika izany ao amin'ny kaody loharano, manangana io kaody loharano io, ary mitantana ny fampiharana. Ity kaontenera ity dia kely kokoa noho ny kaontenera onbuild, saingy mbola misy ny compiler sy ny fitaovana Go hafa izay tsy dia ilaintsika loatra. Andeha Γ ry esorina fotsiny ilay programa natambatra ary apetraka ao anaty fitoerany manokana.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Mety mahatsikaritra zavatra hafahafa ianao amin'ity rakitra Docker ity: misy andalana FROM roa. Ny fizarana andalana 4 voalohany dia mitovy tanteraka amin'ny Dockerfile teo aloha afa-tsy ny fampiasana ny teny fototra AS mba hanomezana anarana ity dingana ity. Ny fizarana manaraka dia manana tsipika FROM vaovao hanombohana sary vaovao, izay ho solon'ny golang:alpine sary dia hampiasa Raw alpine ho sary fototra.

Raw Alpine Linux dia tsy manana mari-pankasitrahana SSL napetraka, izay hahatonga ny ankamaroan'ny antso API amin'ny HTTPS tsy hahomby, koa andao hametraka certificat root CA sasany.

Tonga izao ny ampahany mahafinaritra: ny mandika ny kaody voaangona avy amin'ny kaontenera voalohany mankany amin'ny faharoa, azonao atao ny mampiasa ny baiko COPY hita eo amin'ny andalana 5 amin'ny fizarana faharoa. Handika rakitra fampiharana iray fotsiny izy io ary tsy hisy fiantraikany amin'ny fitaovana Go utility. Ny rakitra Docker vaovao misy dingana maro dia ahitana sary fitoeran-javatra izay 12 megabytes fotsiny ny habeny, raha ampitahaina amin'ny sarin'ny kaontenera tany am-boalohany izay 700 megabytes, izay fahasamihafana lehibe!
Noho izany, ny fampiasana sary fototra kely sy Builder Pattern dia fomba tsara hamoronana kaontenera kely kokoa tsy misy asa be.
Mety misy fomba fanampiny hampihenana ny sary sy ny haben'ny kaontenera, miankina amin'ny stack fampiharana, fa tena manana tombony azo refesina ve ny kaontenera kely? Andeha hojerentsika ny faritra roa izay tena mandaitra ny kaontenera kely - ny fampisehoana sy ny fiarovana.

Mba hanombanana ny fitomboan'ny fampisehoana, diniho ny faharetan'ny dingan'ny famoronana fitoeran-javatra, ampidiro ao amin'ny rejisitra (manosika), ary alaivo avy eo (misintona). Hitanao fa manana tombony miavaka ny kaontenera kely kokoa noho ny kaontenera lehibe kokoa.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Docker dia hanao cache ny sosona ka ho haingana be ny fananganana manaraka. Na izany aza, maro ny CI rafitra ampiasaina amin'ny fananganana sy ny fitsapana fitoeran-javatra tsy cache sosona, noho izany dia misy fotoana lehibe fitsitsiana. Araka ny hitanao, ny fotoana hanaovana fitoeran-javatra lehibe, arakaraka ny herin'ny milina, dia avy amin'ny 34 ka hatramin'ny 54 segondra, ary rehefa mampiasa fitoeran-javatra nihena mampiasa ny Builder Pattern - avy amin'ny 23 ka hatramin'ny 28 segondra. Ho an'ny asa toy izany, ny fitomboan'ny vokatra dia ho 40-50%. Ka eritrereto fotsiny hoe impiry ianao no manangana sy manandrana ny kaody.

Aorian'ny fananganana ny kaontenera dia mila manosika ny sariny ianao (sarin'ny kaontenera tosika) ao amin'ny rejisitra kaontenera mba hahafahanao mampiasa azy ao amin'ny cluster Kubernetes anao. Manoro hevitra aho amin'ny fampiasana Google Container Registry.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Miaraka amin'ny Google Container Registry (GCR), ny fitahirizana manta sy ny tambajotra ihany no aloanao, ary tsy misy saram-pitantanana fitahirizana fanampiny. Mitokana izy io, azo antoka ary tena haingana. Mampiasa tetika maro ny GCR mba hanafainganana ny asa fisintonana. Araka ny hitanao, ny fampidirana docker Container Image container amin'ny fampiasana go:onbuild dia haharitra 15 ka hatramin'ny 48 segondra, miankina amin'ny fahombiazan'ny ordinatera, ary ny fandidiana mitovy amin'ny container kely kokoa dia maharitra 14 ka hatramin'ny 16 segondra, ary ho an'ny milina tsy dia mamokatra. mitombo in-3 ny tombony amin'ny hafainganam-pandehan'ny asa. Ho an'ny milina lehibe kokoa dia mitovy ny fotoana, satria GCR dia mampiasa cache manerantany ho an'ny angon-drakitra ifampizarana sary, midika izany fa tsy mila mampiditra azy ireo mihitsy ianao. Ao amin'ny solosaina misy herinaratra ambany, ny CPU no bottleneck, noho izany ny tombony amin'ny fampiasana kaontenera kely dia lehibe kokoa eto.

Raha mampiasa GCR ianao dia manoro hevitra mafy aho ny hampiasa Google Container Builder (GCB) ho ampahany amin'ny rafitra fananganana anao.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Araka ny hitanao, ny fampiasana azy dia ahafahanao mahazo vokatra tsara kokoa amin'ny fampihenana ny faharetan'ny asa Build + Push noho ny milina mamokatra - amin'ity tranga ity, ny fizotran'ny fananganana sy fandefasana kaontenera ho an'ny mpampiantrano dia efa ho in-2 haingana kokoa. Fanampin'izay, mahazo 120 minitra fanamboarana maimaim-poana isan'andro ianao, izay mahafeno ny filanao amin'ny fananganana kaontenera amin'ny ankamaroan'ny tranga.

Manaraka izany dia tonga ny mari-pandrefesana manan-danja indrindra - ny hafainganam-pandehan'ny fakana, na ny fampidinana, Pull container. Ary raha tsy miraharaha loatra ny fotoana lany amin'ny asa fanosehana ianao, dia misy fiantraikany lehibe amin'ny fahombiazan'ny rafitra manontolo ny halavan'ny fizotry ny fisintonana. Andeha atao hoe manana cluster misy node telo ianao ary tsy nahomby ny iray. Raha mampiasa rafitra fitantanana toy ny Google Kubernetes Engine ianao, dia hanolo ho azy ny node maty amin'ny iray vaovao. Na izany aza, ity node vaovao ity dia ho foana tanteraka ary tsy maintsy hisintona ny fitoeranao rehetra ao anatiny ianao vao manomboka miasa. Raha maharitra ela ny asa fisintonana, dia handeha amin'ny fampisehoana ambany kokoa ny cluster anao mandritra ny fotoana rehetra.

Betsaka ny tranga mety hitrangan'izany: manampy node vaovao amin'ny cluster, manavao ny nodes, na mivadika amina container vaovao hapetraka mihitsy aza. Noho izany, ny fampihenana ny fotoana fitrandrahana dia lasa zava-dehibe. Tsy azo lavina fa ny kaontenera kely dia misintona haingana kokoa noho ny lehibe. Raha mitantana kaontenera maromaro ao anaty cluster Kubernetes ianao, dia mety ho lehibe ny fitsitsiana fotoana.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Jereo ity fampitahana ity: ny asa fisintonana amin'ny kaontenera kely dia mandany 4-9 heny ny fotoana, arakaraka ny herin'ny milina, noho ny asa mitovy amin'ny fampiasana go:onbuild. Ny fampiasana sary ifampizarana, fitoeran-javatra kely fototra dia manafaingana ny fotoana sy ny hafainganan'ny fametrahana ny node Kubernetes vaovao sy ny fidirana an-tserasera.

Andeha hojerentsika ny resaka fiarovana. Ny kaontenera kely kokoa dia heverina ho azo antoka kokoa noho ny lehibe kokoa noho izy ireo manana faritra fanafihana kely kokoa. Tena izany ve? Ny iray amin'ireo endri-javatra mahasoa indrindra amin'ny Google Container Registry dia ny fahafahana manara-maso ho azy ny kaontenerao mba hahitana ny fahalemena. Volana vitsivitsy lasa izay dia nanamboatra container onbuild sy multistage aho, ka andeha hojerentsika raha misy vulnerability ao.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Mahagaga ny vokatra: vulnerability 3 antonony ihany no hita tao anaty kaontenera kely iray, ary vulnerability 16 mitsikera ary 376 hafa no hita tao anaty kaontenera lehibe iray. Raha mijery ny votoatin'ny kaontenera lehibe iray isika, dia hitantsika fa ny ankamaroan'ny olana momba ny fiarovana dia tsy misy ifandraisany amin'ny fampiharana ataontsika, fa mifandray amin'ny programa izay tsy ampiasainay akory. Koa rehefa miresaka momba ny fanafihana lehibe ny olona dia izay no tiany holazaina.

Kubernetes fanao tsara indrindra. Mamorona kaontenera kely

Mazava ny azo alaina: manangana kaontenera kely satria manome tombony tena izy sy fiarovana ny rafitrao.

Kubernetes fanao tsara indrindra. Organisation of Kubernetes miaraka amin'ny namespace

Ny doka sasany πŸ™‚

Misaotra anao nijanona niaraka taminay. Tianao ve ny lahatsoratray? Te-hahita votoaty mahaliana kokoa? Tohano izahay amin'ny fametrahana baiko na fanolorana amin'ny namana, cloud VPS ho an'ny mpamorona manomboka amin'ny $4.99, analogue tsy manam-paharoa amin'ny mpizara ambaratonga fidirana, izay noforoninay ho anao: Ny marina rehetra momba ny VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps avy amin'ny $19 na ahoana no hizarana mpizara? (misy miaraka amin'ny RAID1 sy RAID10, hatramin'ny 24 cores ary hatramin'ny 40GB DDR4).

Dell R730xd 2x mora kokoa amin'ny foibe data Equinix Tier IV any Amsterdam? Eto ihany 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV manomboka amin'ny $199 any Holandy! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - manomboka amin'ny $99! Vakio ny momba ny Ahoana ny fananganana infrastructure corp. kilasy amin'ny fampiasana mpizara Dell R730xd E5-2650 v4 mitentina 9000 euros amin'ny denaria iray?

Source: www.habr.com

Add a comment