Pinus, linux Alpine adhedhasar OSTree
Milih apa OS mlaku ing server sampeyan yaiku perkara sing nyenengake lan akrab. Penak tegese sampeyan pengin prekara sing ora bisa nyusahake, akrab tegese sampeyan luwih seneng ora sinau bab tambahan yen ora prelu.
Serverku yaiku kéwan ingonmula, aku ok menehi sawetara perintah kanthi manual, lan ora mbutuhake otomatisasi lengkap.
Sawise nyoba CoreOS setaun aku ganti dhewe sing wis disederhanakake distro adhedhasar alpine lan ostree.
Versi alpine iki njupuk isyarat flatcar lan atom-proyek lan mesthine bakal diinstal minangka sistem file root sing diwaca mung kanthi nganyari kanthi atom, yaiku, sukses utawa sistem kasebut bisa diganti karo negara sadurunge. Supaya bisa dadi sistem kudu paling ora rong gambar asli seko versi sistem file sing dirilis, kasedhiya ing panyimpenan.
Ing lingkungan apa sistem kasebut bakal mbukak? Aku target OVZ lan [KVM], nanging umume sampeyan bisa ngomong wadhah lan mesin virtual kanthi bedane utama yaiku kontainer ora mbukak kernel dhewe, khususe ora duwe proses boot, dheweke langsung mlebu init sistem (sing contone ing aDockerfile
iku bakal ditetepake deningCMD
utawaENTRYPOINT
pernyataan), sing tanggung jawab ngatur wit prcesses sing njaga kontainer tetep mlaku (kaya sesi normal, yen proses init mati, kontainer bakal entek). Uga kontainer ora bisa ngonfigurasi tombol sistem, lan bisa uga duwe watesan tambahan kanggo kapabilitas.
Kepiye gambar dibangun?
Ingprepare.sh
skrip ngatasi katergantungan, sing umume minangka paket kanggo nawakake alat kliwat umum kayacoreutils
, util-linux
, binutils
, keperluan kanggo operasi karo piranti blok kayatablkid
, sfdisk
, multipath-tools
lan sistem file nganggoxfsprogs
lane2fsprogs
. Ingsquashfs-tools
paket digunakake ing pungkasan kanggo ngompres sistem file root sing dibangun. Aglib
paket kompatibilitas uga diinstal kanthi gawan amarga alpine adhedhasarmusl
, paket kompatibilitas bisa digunakake kanthi nyediakake sawetara perpustakaan sing dibangun.
Wit-witan file kanggo VM lan kontainer dibangun masing-masingmake.sh
lanmake_ovz.sh
. Iki minangka gambaran langkah-langkah sing disederhanakake
atur versi sing bakal dibangun miturut tag repositori
gawe direktori kanggo wit anyar lan bersihake lingkungane
nggawe direktori target dhasar lan direktori sing dibutuhake dening ostree, kayasysroot
nggawe symlinks kanggo salaras karo standar hirarki filesystem
nyalin layanan khusus lan konfigurasi khusus
chroot persiyapan kanthi direktori sistem sing dipasang
bootstrap rootfs alpine kanthi paket dhasar
aplikasi konfigurasi paling sithik kanggo root root kayata kredensial, zona wektu, jeneng host.
layanan salinan kanggo miwiti dening init
atur konfigurasi boot kanthi gambar kernel sing ditemtokake
opsional nambah modul kernel khusus
nindakake reresik
nindakake ROOT[1] menyang repositori ostree
Kanggo kontainer, urutane padha, nanging konfigurasi diganti, amarga karo sistem ora boot saka a bootloader ostree duwe masalah verifikasi lingkungan, kita kudu ngetrapake sawetara solusi kanggo ngrampungake lan nyetel sawetara piranti sing biasane ditangani dening initramfs langkah Iki carane OVZ utawa LXC template dikonfigurasi.
Sawise duwe wit file sing setyabuild.sh
utawabuild-update.sh
ngurus produksi artefak sing bakal disebarake. Bedane skrip yaiku versi pembaruan diwiwiti saka repositori ostree sadurunge, lan uga ngasilake artefak delta sing bisa digunakake sistem sing mlaku kanthi conto kanggo nganyari. Iki minangka gambaran sing gampang saka langkah-langkah pambangunan
yen gawe anyar
nggawe partisi anyar ing gambar anyar sing dipasang minangka piranti loop
liya
pasang partisi sysroot lan boot saka build sadurunge
ngresiki penyebaran ostree sadurunge (peternakan link) ing build sing dipasang
nggawe wit sing dibangun kanthi anyar
verifikasi integritas lan checkum
nggawe delta anyar kanggo upgrade
nglakokake penyebaran ostree kanggo ngasilake konfigurasi boot
mbusak komitmen ostree lawas
verifikasi integritas pemisahan boot
ngilangi gambar build anyar sing dianyari
ngasilake pemeriksa gambar lan kompres (nganggosquashfs
kanggo kontaner)
Konfigurasi sekat ditrapake nganggo fiskisklayout.cfg
file sing nemtokake ukuran pemisahan, kita duwe siji partisi kanggo root (~430M
), pemisahan boot (~40M
) lan partisi pertukaran (~40M
). Kanthi kontainer kanthi mung ngliwati pemasangan build sadurunge liwat piranti loop, lan mung narik komitmen ostree anyar liwat repositori ostree sing lawas (diekstrak).
Apa sing aku bundel ing gambar iki (kajaba paket sing diinstal)?
A lib cilik ingfunctions.sh
kanggo tugas umum sing ditindakake ing cangkang
skrip upgrade adhedhasar ostree kanthi mekanisme ngunci adhedhasar toko KV
skrip ngawasi kanggo IO kanthi lokal (iomon
) lan jaringan (tcpmon
)
skrip persiyapan kanggo runtime kontainer liyane sakabubblewrap
: podman
, toolbox
Apa biyen lan saiki wis ora
sup
: Sup digunakake kanggo orkestra (masang wadhah) lan konfigurasi mesin host, nanging banjur aku ganti ora iso mangan amarga ana bug sing wis suwe ora bisa diatasi, mula ora milih sing bisa didol wiwit wiwitan amarga ora pengin katergantungan python diinstal ing saben server, pungkasane aku bisa ngatasi alpine sekunder chroot ing mesin host, dununge ing/opt/alp
apa aku nginstal piranti lunak tambahan sing kurang kritis. Nanging, saiki, aku bakal pindhah maneh saka sing ora bisa dideleng menyang pyinfra , amarga
yaiku python tanpa boilerplate (ansible duwe semuDSL
sing nyebabake nyeri sirah luwih akeh tinimbang sing ditanggulangi)
resep kasebut nganggo resep ssh polos, mula ora ana sarat katergantungan python ing host target
containerpilot
: Kasus panggunaan pilot kontainer yaiku ngatur katergantungan rumit ing antarane kontainer tanpa skrip cangkang ... mandheg entuk update saka bungah lan dilebokake ing mode pangopènan, aku uga ora seneng syarat memori lan panggunaan memori bakal terus saya suwe saya suwe. Aku ngalih menyang skrip shell sederhana karo konsul , Aku bisa ndeleng alternatif sing luwih pas yen skrip cangkang wiwit tuwuh saya gedhe. Solusi sing luwih abot kaya kubernetes, grombolan utawa wong nomad dibuwang saka gaweyan.
beegfs
: Aku biyen ngirim modul kernel sing dibutuhake beegfs nanging sawise sawetara wektu, bisa ngilangi kompatibilitas, lan kasunyatane ora ana sing didhukung kanthi bener sekring Modul sing digawe saiki, aku saiki ora mbukak [DFS] ing serverku, nanging kemungkinan wis siyap mbukak file-system kanggo plug in jaringan isih apik.
Kanggo nginstal gambar, sampeyan bisa ngunggah menyang panyedhiya hosting lan nginstal saka VNC, yen ana mesin virtual, nanging biasane ngrebut instalasi sing wis ana, amarga mesthi bisa uga, suwene aku wis nyoba skrip persiyapan karo versi distribusi linux, umume aku nggunakake debian-8 utawa ubuntu-14, durung nyoba tes liyane wiwit saiki aku mesthi wis sumadhiya. Langkah-langkah persiyapan ing ngisor iki
priksa manawa dhukungan https kanggo download
download versi busybox
nginstal farmasi link-busybox
nemtokake alamat ipv4 / ipv6 kanggo config jaringan
njamin kemampuan chroot
download gambar pinus lan ekstrak
yen VM
murup piranti target
pasang liwat piranti daur ulang
nulis konfigurasi jaringan lokal liwat kanggo di-flash rootfs
yen wadhah
salin layanan init (kanggo kontainer) liwat root mount point utama/sbin/init
yen VM
pemisahan kiwa liwat disk kanthi standar (xfs
) sekat
ngilangi
verifikasi integritas sekat
urip maneh
Aku digawe pinus 5 years from time of writing and I am still using it, and I see no reasons to switch to anything else. Alpine as a linux distro is great, simple, and I have never experienced breakage. I can easily deploy on ALAM server sing cenderung nawakake sumber daya sing paling murah, sejatine aku duwe kothak sing bisa digunakake64M
saka RAM, lan isih duwe kabeh fitur sing dibutuhake.
[1] | sistem file root |