praktik paling apik Kubernetes. Nggawe wadhah cilik

praktik paling apik Kubernetes. Nggawe wadhah cilik

Langkah pisanan kanggo nyebarake menyang Kubernetes yaiku nyelehake aplikasi sampeyan ing wadhah. Ing seri iki, kita bakal ndeleng carane nggawe gambar wadhah cilik lan aman.
Thanks kanggo Docker, nggawe gambar wadhah ora nate luwih gampang. Nemtokake gambar dhasar, tambahake owah-owahan, lan gawe wadhah.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Nalika teknik iki apik kanggo miwiti, nggunakake gambar dhasar standar bisa nyebabake karya sing ora aman kanthi gambar gedhe sing kebak kerentanan.

Kajaba iku, umume gambar ing Docker nggunakake Debian utawa Ubuntu kanggo gambar dhasar, lan nalika iki menehi kompatibilitas lan kustomisasi sing gampang (file Docker mung njupuk rong baris kode), gambar dhasar bisa nambah atusan megabyte beban tambahan menyang wadhah sampeyan. Contone, file node.js prasaja kanggo aplikasi Go "hello-world" kira-kira 700 megabyte, dene aplikasi sampeyan sing nyata mung ukurane sawetara megabyte.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Dadi kabeh beban kerja ekstra iki minangka sampah ruang digital lan papan ndhelik sing apik kanggo kerentanan keamanan lan bug. Dadi ayo goleki rong cara kanggo nyuda ukuran gambar wadhah.

Kapisan yaiku nggunakake gambar dhasar cilik, sing kapindho yaiku nggunakake Pola Pembangun. Nggunakake gambar dhasar sing luwih cilik bisa uga minangka cara paling gampang kanggo nyuda ukuran wadhah sampeyan. Paling kamungkinan, basa utawa tumpukan sing sampeyan gunakake nyedhiyakake gambar aplikasi asli sing luwih cilik tinimbang gambar standar. Ayo ndeleng wadhah node.js.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Kanthi gawan ing Docker, simpul: 8 ukuran gambar dhasar 670 MB, lan simpul: 8-ukuran gambar alpine mung 65 MB, yaiku 10 kaping luwih cilik. Kanthi nggunakake gambar dhasar Alpine sing luwih cilik, sampeyan bakal nyuda ukuran wadhah sampeyan kanthi signifikan. Alpine minangka distribusi Linux sing cilik lan entheng sing misuwur banget ing antarane pangguna Docker amarga kompatibel karo akeh aplikasi nalika tetep cilik. Ora kaya gambar "node" Docker standar, "node: alpine" mbusak akeh file lan program layanan, mung ninggalake sing cukup kanggo mbukak aplikasi sampeyan.

Kanggo pindhah menyang gambar dhasar sing luwih cilik, mung nganyari Dockerfile kanggo miwiti nggarap gambar dhasar anyar:

praktik paling apik Kubernetes. Nggawe wadhah cilik

Saiki, ora kaya gambar onbuild lawas, sampeyan kudu nyalin kode menyang wadhah lan nginstal dependensi. Ing Dockerfile anyar, wadhah kasebut diwiwiti kanthi gambar simpul: alpine, banjur nggawe direktori kanggo kode kasebut, nginstal dependensi nggunakake manajer paket NPM, lan pungkasane mbukak server.js.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Nganyari iki ngasilake wadhah sing ukurane 10 kaping luwih cilik. Yen basa pamrograman utawa tumpukan sampeyan ora duwe fungsi pangurang gambar dhasar, gunakake Alpine Linux. Uga bakal nyedhiyakake kemampuan kanggo ngatur isi wadhah kanthi lengkap. Nggunakake gambar dhasar cilik minangka cara sing apik kanggo nggawe wadhah cilik kanthi cepet. Nanging pangurangan sing luwih gedhe bisa ditindakake kanthi nggunakake Pola Pembangun.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Ing basa sing diinterpretasikake, kode sumber kasebut pisanan diterusake menyang juru basa banjur langsung dieksekusi. Ing basa kompilasi, kode sumber pisanan diowahi dadi kode kompilasi. Nanging, kompilasi asring nggunakake alat sing ora dibutuhake kanggo mbukak kode kasebut. Iki tegese sampeyan bisa mbusak alat kasebut saka wadhah pungkasan. Sampeyan bisa nggunakake Pola Builder kanggo iki.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Kode digawe ing wadhah pisanan lan disusun. Kode sing dikompilasi banjur dikemas menyang wadhah pungkasan tanpa kompiler lan alat sing dibutuhake kanggo ngumpulake kode kasebut. Ayo mbukak aplikasi Go liwat proses iki. Pisanan, kita bakal pindhah saka gambar onbuild menyang Alpine Linux.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Ing Dockerfile anyar, wadhah kasebut diwiwiti kanthi gambar golang:alpine. Banjur nggawe direktori kanggo kode, nyalin menyang kode sumber, mbangun kode sumber kasebut, lan mbukak aplikasi kasebut. Wadhah iki luwih cilik tinimbang wadhah onbuild, nanging isih ngemot kompiler lan alat Go liyane sing ora kita butuhake. Dadi ayo ekstrak program sing wis dikompilasi lan dilebokake ing wadhah dhewe.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Sampeyan bisa uga sok dong mirsani ana sing aneh ing file Docker iki: ngemot rong garis FROM. Bagean 4 baris pisanan katon padha karo Dockerfile sadurunge kajaba nggunakake tembung kunci AS kanggo menehi jeneng panggung iki. Bagean sabanjure nduweni garis FROM anyar kanggo miwiti gambar anyar, ing ngendi tinimbang gambar golang: alpine kita bakal nggunakake Raw alpine minangka gambar dhasar.

Raw Alpine Linux ora duwe sertifikat SSL sing diinstal, sing bakal nyebabake akeh panggilan API liwat HTTPS gagal, mula ayo nginstal sawetara sertifikat CA ROOT.

Saiki dadi bagian sing nyenengake: kanggo nyalin kode sing dikompilasi saka wadhah pisanan menyang wadhah liyane, sampeyan mung bisa nggunakake printah COPY sing ana ing baris 5 ing bagean kapindho. Iku mung bakal nyalin siji file aplikasi lan ora bakal mengaruhi alat Go. File Docker multi-tahap anyar bakal ngemot gambar wadhah sing ukurane mung 12 megabyte, dibandhingake karo gambar wadhah asli sing 700 megabyte, sing beda banget!
Dadi nggunakake gambar dhasar cilik lan Pola Pembangun minangka cara sing apik kanggo nggawe wadhah sing luwih cilik tanpa kerja keras.
Sampeyan bisa uga gumantung ing tumpukan aplikasi, ana cara tambahan kanggo nyuda gambar lan ukuran wadhah, nanging apa kontaner cilik pancen duwe keuntungan sing bisa diukur? Ayo goleki rong wilayah sing kontaner cilik banget efektif - kinerja lan keamanan.

Kanggo ngevaluasi peningkatan kinerja, nimbang durasi proses nggawe wadhah, nglebokake menyang registri (push), banjur njupuk saka ing kono (tarik). Sampeyan bisa ndeleng manawa wadhah sing luwih cilik duwe kauntungan sing beda tinimbang wadhah sing luwih gedhe.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Docker bakal cache lapisan supaya mbangun sakteruse bakal cepet banget. Nanging, akeh sistem CI digunakake kanggo mbangun lan test wadhah ora cache lapisan, supaya ana wektu irit penting. Nalika sampeyan bisa ndeleng, wektu kanggo mbangun wadhah gedhe, gumantung ing daya saka mesin, saka 34 kanggo 54 detik, lan nalika nggunakake wadhah suda nggunakake Pola Builder - saka 23 kanggo 28 detik. Kanggo operasi jenis iki, paningkatan produktivitas bakal 40-50%. Dadi mung mikir babagan kaping pirang-pirang sampeyan mbangun lan nyoba kode sampeyan.

Sawise wadhah dibangun, sampeyan kudu nyurung gambar kasebut (gambar wadhah push) menyang registri wadhah supaya sampeyan bisa nggunakake ing kluster Kubernetes. Aku nyaranake nggunakake Google Container Registry.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Kanthi Google Container Registry (GCR), sampeyan mung mbayar panyimpenan mentah lan jaringan, lan ora ana biaya manajemen wadhah tambahan. Iku pribadi, aman lan cepet banget. GCR nggunakake akeh trik kanggo nyepetake operasi narik. Kaya sing sampeyan ngerteni, nglebokake wadhah Gambar Docker Container nggunakake go:onbuild bakal njupuk saka 15 nganti 48 detik, gumantung saka kinerja komputer, lan operasi sing padha karo wadhah cilik bakal njupuk saka 14 nganti 16 detik, lan kanggo mesin sing kurang produktif. kauntungan ing kacepetan operasi mundhak 3 kaping. Kanggo mesin sing luwih gedhe, wektune kira-kira padha, amarga GCR nggunakake cache global kanggo database gambar sing dienggo bareng, tegese sampeyan ora perlu mbukak kabeh. Ing komputer kurang daya, CPU minangka bottleneck, saΓ©ngga kauntungan nggunakake wadhah cilik luwih akeh ing kene.

Yen sampeyan nggunakake GCR, aku banget nyaranake nggunakake Google Container Builder (GCB) minangka bagΓ©an saka sistem mbangun sampeyan.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Kaya sing sampeyan ngerteni, panggunaan kasebut ngidini sampeyan entuk asil sing luwih apik kanggo nyuda durasi operasi Build + Push tinimbang mesin sing produktif - ing kasus iki, proses mbangun lan ngirim wadhah menyang host digawe cepet nganti meh 2 kali. . Kajaba iku, sampeyan entuk 120 menit mbangun gratis saben dina, sing nyakup kabutuhan bangunan kontainer ing umume kasus.

Sabanjure teka metrik kinerja sing paling penting - kacepetan njupuk, utawa ngundhuh, Wadhah Tarik. Lan yen sampeyan ora Care akeh bab wektu ngginakaken ing operasi push, banjur dawa proses narik impact serius ing kinerja sistem sakabèhé. Contone, sampeyan duwe klompok telung kelenjar lan salah sijine gagal. Yen sampeyan nggunakake sistem manajemen kayata Google Kubernetes Engine, bakal kanthi otomatis ngganti simpul mati karo sing anyar. Nanging, simpul anyar iki bakal kosong lan sampeyan kudu nyeret kabeh kontaner supaya bisa digunakake. Yen operasi narik cukup suwe, kluster sampeyan bakal mlaku kanthi kinerja sing luwih murah ing kabeh wektu.

Ana akeh kasus sing bisa kedadeyan: nambahake simpul anyar menyang kluster, nganyarke simpul, utawa malah ngalih menyang wadhah anyar kanggo penyebaran. Mangkono, minimalake wektu ekstraksi narik dadi faktor kunci. Ora bisa dipungkiri manawa wadhah cilik download luwih cepet tinimbang sing gedhe. Yen sampeyan mbukak sawetara kontaner ing kluster Kubernetes, irit wektu bisa dadi signifikan.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Deleng ing comparison iki: operasi narik ing kontaner cilik njupuk 4-9 kaping wektu kurang, gumantung ing daya mesin, saka operasi padha nggunakake go: onbuild. Nggunakake gambar dhasar wadhah cilik sing dienggo bareng kanthi nyata nyepetake wektu lan kacepetan ing simpul Kubernetes anyar bisa disebarake lan online.

Ayo ndeleng masalah keamanan. Wadah sing luwih cilik dianggep luwih aman tinimbang sing luwih gedhe amarga nduweni permukaan serangan sing luwih cilik. Apa tenan? Salah sawijining fitur Google Container Registry sing paling migunani yaiku kemampuan kanggo mindai konten sampeyan kanthi otomatis kanggo kerentanan. Sawetara wulan kepungkur aku nggawe wadhah onbuild lan multistage, mula ayo ndeleng manawa ana kerentanan ing kana.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Asil apik tenan: mung 3 kerentanan medium sing dideteksi ing wadhah cilik, lan 16 kritis lan 376 kerentanan liyane ditemokake ing wadhah gedhe. Yen katon ing isi wadhah gedhe, kita bisa ndeleng sing paling masalah keamanan ora ana hubungane karo aplikasi, nanging ana hubungane karo program sing ora digunakake. Dadi yen wong ngomong babagan permukaan serangan sing gedhe, mula tegese.

praktik paling apik Kubernetes. Nggawe wadhah cilik

Takeaway cetha: gawe wadhah cilik amarga menehi kinerja nyata lan keuntungan keamanan kanggo sistem sampeyan.

praktik paling apik Kubernetes. Organisasi Kubernetes kanthi namespace

Sawetara iklan πŸ™‚

Matur nuwun kanggo tetep karo kita. Apa sampeyan seneng karo artikel kita? Pengin ndeleng konten sing luwih menarik? Ndhukung kita kanthi nggawe pesenan utawa menehi rekomendasi menyang kanca, cloud VPS kanggo pangembang saka $4.99, analog unik saka server level entri, sing diciptakake kanggo sampeyan: Bebener kabeh babagan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps saka $ 19 utawa carane nuduhake server? (kasedhiya karo RAID1 lan RAID10, munggah 24 intine lan nganti 40GB DDR4).

Dell R730xd 2 kaping luwih murah ing pusat data Equinix Tier IV ing Amsterdam? Mung kene 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV saka $199 ing Walanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - saka $99! Maca babagan Carane mbangun infrastruktur corp. kelas karo nggunakake Dell R730xd E5-2650 v4 server worth 9000 euro kanggo Penny?

Source: www.habr.com

Add a comment