prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Léngkah munggaran pikeun nyebarkeun ka Kubernetes nyaéta nempatkeun aplikasi anjeun dina wadah. Dina séri ieu, urang bakal ningali kumaha anjeun tiasa nyiptakeun gambar wadahna anu leutik sareng aman.
Hatur nuhun kana Docker, nyiptakeun gambar wadahna henteu kantos langkung gampang. Sebutkeun gambar dasar, tambahkeun parobahan anjeun, sareng jieun wadahna.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Sanaos téknik ieu saé pikeun ngamimitian, ngagunakeun gambar dasar standar tiasa nyababkeun padamelan anu teu aman sareng gambar ageung pinuh ku kerentanan.

Salaku tambahan, kalolobaan gambar di Docker nganggo Debian atanapi Ubuntu pikeun gambar dasar, sareng samentawis ieu nyayogikeun kompatibilitas anu saé sareng kustomisasi anu gampang (file Docker ngan ukur nyandak dua garis kode), gambar dasar tiasa nambihan ratusan megabyte beban tambahan kana wadahna anjeun. Contona, file node.js basajan pikeun aplikasi Go "hello-world" kira-kira 700 megabyte, sedengkeun aplikasi sabenerna anjeun ngan ukur sababaraha megabyte.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Janten sadaya beban kerja tambahan ieu mangrupikeun runtah rohangan digital sareng tempat nyumputkeun kerentanan kaamanan sareng bug. Janten hayu urang tingali dua cara pikeun ngirangan ukuran gambar wadahna.

Anu kahiji nyaéta ngagunakeun gambar dasar leutik, anu kadua nyaéta ngagunakeun Pola Pangwangun. Nganggo gambar dasar anu langkung alit sigana mangrupikeun cara anu paling gampang pikeun ngirangan ukuran wadahna. Paling dipikaresep, basa atawa tumpukan nu Anjeun pake nyadiakeun gambar aplikasi aslina nu leuwih leutik batan gambar standar. Hayu urang tingali dina wadah node.js urang.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Sacara standar di Docker, titik: 8 ukuran gambar dasar 670 MB, sareng titik: 8-ukuran gambar alpine ngan 65 MB, nyaéta 10 kali leuwih leutik. Kalayan ngagunakeun gambar dasar Alpine anu langkung alit, anjeun bakal ngirangan ukuran wadahna anjeun sacara signifikan. Alpine mangrupikeun distribusi Linux anu alit sareng hampang anu populer pisan di kalangan pangguna Docker sabab cocog sareng seueur aplikasi bari ngajaga wadahna leutik. Beda sareng gambar "node" Docker standar, "node: alpine" ngaleungitkeun seueur file sareng program jasa, ngan ukur nyésakeun anu cekap pikeun ngajalankeun aplikasi anjeun.

Pikeun ngalih ka gambar dasar anu langkung alit, kantun ngapdet Dockerfile pikeun ngamimitian damel sareng gambar dasar énggal:

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Ayeuna, teu sapertos gambar onbuild anu lami, anjeun kedah nyalin kode anjeun kana wadahna sareng pasang dependensi naon waé. Dina Dockerfile anyar, wadahna dimimitian ku titik: gambar alpine, lajeng nyieun diréktori pikeun kode, installs dependensi ngagunakeun manajer pakét NPM, sarta tungtungna ngajalankeun server.js.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Pamutahiran ieu ngahasilkeun wadah anu ukuranana 10 kali langkung alit. Upami basa pamrograman atanapi tumpukan anjeun henteu gaduh fungsionalitas pangurangan gambar dasar, paké Linux Alpine. Ogé bakal nyadiakeun kamampuhan pikeun pinuh ngatur eusi wadahna. Ngagunakeun gambar dasar leutik mangrupakeun cara hébat pikeun gancang nyieun peti leutik. Tapi pangurangan anu langkung ageung tiasa dihontal nganggo Pola Pangwangun.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Dina basa anu diinterpretasi, kode sumber mimitina diteruskeun ka juru teras langsung dieksekusi. Dina basa anu disusun, kode sumber mimiti dirobih janten kode anu disusun. Sanajan kitu, kompilasi mindeng ngagunakeun parabot nu teu sabenerna diperlukeun pikeun ngajalankeun kode. Ieu ngandung harti yén anjeun sagemblengna bisa nyabut parabot ieu tina wadahna final. Anjeun tiasa nganggo Pola Pangwangun pikeun ieu.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Kode ieu dijieun dina wadahna munggaran tur disusun. Kode anu disusun teras dibungkus kana wadah akhir tanpa kompiler sareng alat anu diperyogikeun pikeun nyusun kode éta. Hayu urang ngajalankeun aplikasi Go ngaliwatan prosés ieu. Mimiti, urang bakal ngalih tina gambar onbuild ka Alpine Linux.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Dina Dockerfile anyar, wadahna dimimitian ku gambar golang:alpine. Éta teras nyiptakeun diréktori pikeun kode, nyalin kana kode sumber, ngawangun kode sumber éta, sareng ngajalankeun aplikasina. Wadah ieu langkung alit tibatan wadah onbuild, tapi masih ngandung kompiler sareng alat Go anu sanés anu urang peryogikeun. Ku kituna hayu urang ngan nimba program disusun tur nyimpen dina wadahna sorangan.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Anjeun tiasa perhatikeun anu anéh dina file Docker ieu: ngandung dua garis FROM. Bagian 4 garis kahiji Sigana persis sarua jeung Dockerfile saméméhna iwal eta ngagunakeun kecap konci AS pikeun ngaranan tahap ieu. Bagian hareup boga garis FROM anyar pikeun ngamimitian gambar anyar, dimana gaganti golang: gambar alpine urang bakal make alpine Raw salaku gambar dasar.

Raw Alpine Linux teu gaduh sertipikat SSL anu dipasang, anu bakal nyababkeun sabagéan ageung telepon API dina HTTPS gagal, janten hayu urang pasang sababaraha sertipikat CA akar.

Ayeuna datang bagian senang: mun nyalin kodeu disusun tina wadahna kahiji ka kadua, anjeun bisa kalayan gampang bisa make paréntah COPY lokasina di garis 5 tina bagian kadua. Éta ngan ukur nyalin hiji file aplikasi sareng moal mangaruhan alat utilitas Go. File Docker multi-tahap anyar bakal ngandung gambar wadahna ngan ukur 12 megabyte, dibandingkeun sareng gambar wadahna aslina 700 megabyte, anu bédana ageung!
Janten nganggo gambar dasar leutik sareng Pola Pembina mangrupikeun cara anu saé pikeun nyiptakeun wadah anu langkung alit tanpa seueur padamelan.
Éta mungkin yén gumantung kana tumpukan aplikasi, aya cara tambahan pikeun ngirangan gambar sareng ukuran wadahna, tapi naha wadahna leutik leres-leres ngagaduhan kauntungan anu tiasa diukur? Hayu urang tingali dua daérah dimana wadah alit pisan efektif - kinerja sareng kaamanan.

Pikeun meunteun kanaékan kinerja, pertimbangkeun durasi prosés nyiptakeun wadahna, nyelapkeun kana pendaptaran (push), teras retrieving ti dinya (tarik). Anjeun tiasa ningali yén wadah anu langkung alit gaduh kaunggulan anu béda tibatan wadah anu langkung ageung.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Docker bakal nyéépkeun lapisan-lapisan sahingga ngawangun salajengna bakal gancang pisan. Sanajan kitu, loba sistem CI dipaké pikeun ngawangun sarta nguji wadahna teu cache lapisan, jadi aya tabungan waktos signifikan. Sakumaha anjeun tiasa tingali, waktos ngawangun wadahna ageung, gumantung kana kakuatan mesin anjeun, ti 34 ka 54 detik, sareng nalika nganggo wadahna diréduksi nganggo Pola Pangwangun - tina 23 dugi ka 28 detik. Pikeun operasi sapertos kitu, paningkatan produktivitas bakal 40-50%. Janten pikirkeun sabaraha kali anjeun ngawangun sareng nguji kode anjeun.

Saatos wadahna diwangun, anjeun kedah nyorong gambarna (gambar wadahna push) kana pendaptaran wadahna supados anjeun tiasa dianggo dina klaster Kubernetes anjeun. Abdi nyarankeun ngagunakeun Google Container Registry.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Kalayan Google Container Registry (GCR), anjeun ngan ukur mayar kanggo neundeun sareng jaringan atah, sareng teu aya biaya manajemén wadahna tambahan. Éta pribadi, aman sareng gancang pisan. GCR ngagunakeun seueur trik pikeun nyepetkeun operasi tarik. Sakumaha anjeun tiasa tingali, nyelapkeun wadahna Gambar Docker Container nganggo go:onbuild bakal nyandak tina 15 dugi ka 48 detik, gumantung kana kinerja komputer, sareng operasi anu sami sareng wadah anu langkung alit bakal nyandak tina 14 dugi ka 16 detik, sareng pikeun mesin anu kirang produktif. Kauntungannana dina speed operasi ngaronjat ku 3 kali. Pikeun mesin anu langkung ageung, waktosna sami, sabab GCR nganggo cache global pikeun databés gambar anu dibagikeun, hartosna anjeun henteu kedah ngamuat sadayana. Dina komputer-kakuatan low, CPU mangrupa bottleneck, jadi kauntungan tina ngagunakeun peti leutik leuwih gede di dieu.

Upami anjeun nganggo GCR, kuring nyarankeun pisan ngagunakeun Google Container Builder (GCB) salaku bagian tina sistem ngawangun anjeun.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Sakumaha anjeun tiasa tingali, pamakeanna ngamungkinkeun anjeun ngahontal hasil anu langkung saé dina ngirangan durasi operasi Build + Push tibatan mesin anu produktif - dina hal ieu, prosés ngawangun sareng ngirim wadah ka host digancangan ampir 2 kali. . Tambih Deui, anjeun nampi 120 menit ngawangun gratis unggal dinten, anu nyertakeun kabutuhan wangunan wadahna anjeun dina kalolobaan kasus.

Salajengna asalna métrik kinerja pangpentingna - laju retrieving, atawa ngundeur, peti Tarik. Tur upami Anjeun salah teu paduli teuing ngeunaan waktos spent dina operasi push, panjang prosés tarikan boga dampak serius dina kinerja sistem sakabéh. Anggap anjeun gaduh klaster tilu titik sareng salah sahijina gagal. Upami anjeun nganggo sistem manajemén sapertos Google Kubernetes Engine, éta bakal otomatis ngagentos titik anu maot ku anu énggal. Nanging, titik énggal ieu bakal kosong pisan sareng anjeun kedah nyered sadaya wadah anjeun ka dinya pikeun ngamimitian damel. Lamun operasi tarikan nyokot cukup lila, klaster anjeun bakal ngajalankeun dina kinerja handap sakabéh waktu.

Aya seueur kasus dimana ieu tiasa kajantenan: nambihan titik énggal kana klaster, ningkatkeun titik, atanapi bahkan ngalih kana wadah énggal pikeun nyebarkeun. Ku kituna, ngaminimalkeun waktos ékstraksi tarikan janten faktor konci. Ieu undeniable yén wadah leutik ngundeur leuwih gancang ti nu badag. Upami anjeun ngajalankeun sababaraha wadah dina klaster Kubernetes, penghematan waktos tiasa signifikan.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Tingali kana babandingan ieu: operasi tarik dina peti leutik nyokot 4-9 kali kirang waktos, gumantung kana kakuatan mesin urang, ti operasi sarua maké go: onbuild. Ngagunakeun gambar dasar wadahna leutik anu dibagikeun sacara signifikan nyepetkeun waktos sareng kagancangan dimana titik Kubernetes énggal tiasa disebarkeun sareng online.

Hayu urang tingali masalah kaamanan. Wadah anu langkung alit dianggap langkung aman tibatan wadah anu langkung ageung sabab gaduh permukaan serangan anu langkung alit. Bener kitu? Salah sahiji fitur anu paling kapaké tina Google Container Registry nyaéta kamampuan pikeun otomatis nyeken wadah anjeun pikeun kerentanan. Sababaraha bulan kapengker kuring nyiptakeun wadah onbuild sareng multistage, janten hayu urang tingali naha aya kerentanan di dinya.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

Hasilna luar biasa: ngan 3 kerentanan sedeng anu dideteksi dina wadah leutik, sareng 16 kritis sareng 376 kerentanan sanésna kapanggih dina wadah ageung. Lamun urang tingali dina eusi wadahna badag, urang bisa nempo yén lolobana masalah kaamanan teu aya hubunganana jeung aplikasi urang, tapi aya hubunganana jeung program nu urang malah teu make. Janten nalika urang nyarioskeun permukaan serangan anu ageung, éta hartosna.

prakték pangalusna Kubernetes. Nyiptakeun wadah leutik

The takeaway jelas: ngawangun peti leutik sabab nyadiakeun kinerja nyata jeung kauntungan kaamanan pikeun sistem Anjeun.

prakték pangalusna Kubernetes. Organisasi Kubernetes kalawan ngaranspasi

Sababaraha iklan 🙂

Hatur nuhun pikeun tetep sareng kami. Naha anjeun resep artikel kami? Hoyong ningali eusi anu langkung narik? Dukung kami ku cara nempatkeun pesenan atanapi nyarankeun ka babaturan, cloud VPS pikeun pamekar ti $4.99, analog unik tina server tingkat éntri, anu diciptakeun ku kami pikeun anjeun: Sakabeh bebeneran ngeunaan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ti $ 19 atanapi kumaha babagi server a? (sadia kalawan RAID1 na RAID10, nepi ka 24 cores sarta nepi ka 40GB DDR4).

Dell R730xd 2 kali langkung mirah dina puseur data Equinix nagara golongan IV di Amsterdam? Ngan di dieu 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ti $199 di Walanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ti $99! Baca ngeunaan Kumaha ngawangun Infrastruktur Corp. kelas kalawan pamakéan Dell R730xd E5-2650 v4 server patut 9000 euro pikeun Penny a?

sumber: www.habr.com

Tambahkeun komentar