
Amazoni ettevõte lõppversiooni kohta — spetsialiseeritud distributsioon konteinerite käivitamiseks ja tõhusaks haldamiseks.
Bottlerocket (muide, seda nime kasutatakse väikeste koduste rakettide jaoks, mis töötavad suitsupulberel) ei ole esimene konteinerite opsüsteem, kuid on suure tõenäosusega laialdaselt levinud tänu vaikimisi integratsioonile AWS teenustega. Kuigi süsteem on suunatud Amazon'i pilvele, võimaldab avatud lähtekood selle koguda igal pool: kohapeal serveris, Raspberry Pi-l, igas konkurentsivõimelises pilves ning isegi konteineriteta keskkondades.
See on täiendav väärikas alternatiiv CoreOS distributsioonile, mille likvideeris Red Hat.
Tegelikult on Amazon Web Services divisionil juba olemas Amazon Linux, mis hiljuti ilmus teises versioonis: see on universaalne distributsioon, mida saab käivitada Docker konteineris või Linux KVM, Microsoft Hyper-V ja VMware ESXi hüperviisoritega. See on optimeeritud AWS pilves töötamiseks, kuid Bottlerocketi turuletoomisega soovitatakse kõigil uue süsteemi versioonile üle minna, mis on turvalisem, kaasaegsem ja tarbib vähem ressursse.
AWS kuulutas Bottlerocketi välja . Ta tunnustas kohe, et see ei ole esimene «Linux konteineritele», tuues inspiratsiooniallikatena välja CoreOS, Rancher OS ja Project Atomic. Arendajad kirjutasid, et operatsioonisüsteem on «tulemuseks õpitust, mille oleme saanud pikka aega tootmistöödega Amazonis, ja kogemustest, mida oleme viimase kuue aasta jooksul omandanud konteinerite käitamise osas».
Ekstreenne minimalism
Linux on puhastatud kõigest, mis ei ole konteinerite käitamiseks vajalik. Selline disain vähendab, ettevõtte sõnul rünnakupinda.
See tähendab, et baissüsteemi installitakse vähem pakette, mis lihtsustab operatsioonisüsteemi hooldust ja uuendamist ning vähendab probleemide tekkimise tõenäosust sõltuvuste tõttu, samuti vähendab ressursikasutust. Põhimõtteliselt töötab siin kõik eraldi konteinerite sees, samas kui baissüsteem on peaaegu tühi.
Amazon on eemaldanud kõik kestad ja tõlgendajad, välistades nende kasutamise või kasutajate juhusliku privileegide suurendamise riski. Minimaalsuse ja turvalisuse huvides ei sisalda põhifaili keel, SSH-server ega interpreteeritavad keeled nagu Python. Administratiivsed tööriistad on viidud eraldi teeninduskonteinerisse, mis on vaikimisi keelatud.
Süsteemi haldamiseks on ette nähtud kaks viisi: API kaudu ja orkestreerimise kaudu.
Pakkemoodulite haldamise asemel, mis uuendab tarkvara üksikuid komponente, laadib Bottlerocket täieliku failisüsteemi pildi ja taaskäivitub sellesse. Käivitamishäda korral tagurdatakse see automaatselt ja töökoormuse ebaõnnestumine võib käivitada tagasipöördumise käsitsi (API kaudu käsk).
Raamistik (The Update Framework) laadib uuendusi piltide põhjal alternatiivsetesse või "lahtiühendatud" osakondadesse. Süsteemile on ette nähtud kaks kettaosa, millest üks sisaldab aktiivset süsteemi ja teisele kopeeritakse uuendus. Selle käigus mountitakse juurdeteek ainult lugemisrežiimis, samas kui osa /etc mountitakse RAM-i failisüsteemi pildina. ja taastab algse oleku pärast taaskäivitamist. Konfiguratsioonifailide otse muutmine ei /etc ole toetatud: seadete säilitamiseks tuleks kasutada API-d või funktsionaalsust viia eraldi konteineritesse.

API kaudu uuendamise skeem
Ohutus
Konteinerid luuakse Linuxi ega osade mehhanismide abil — cgroups, nimespordid ja seccomp, ning sundkontrollimiseks kasutatakse täiendava isoleerimise süsteemi režiimis "enforcing".
Vaikimisi on lubatud poliitikad ressursside jagamiseks konteinerite ja tuuma vahel. Binaarfailid on kaitstud lipukestega, et kasutajad või programmid ei saaks neid käivitada. Ja kui keegi pääseb faili süsteemi, pakub Bottlerocket tööriista muudatuste kontrollimiseks ja jälgimiseks.
Kontrollitud käivitamise režiim on rakendatud funktsiooni device-mapper-verity abil (), mis kontrollib juurepartitsiooni terviklikkust käivitamise ajal. AWS kirjeldab dm-verity't kui "Linuxi tuuma funktsiooni, mis tagab terviklikkuse kontrollimise, et takistada pahavara käivitamist opsüsteemis, näiteks põhisisene tarkvara üle kirjutamist".
Samuti on süsteemis olemas filter (laiendatud BPF, ), mis võimaldab asendada tuumamooduleid ohutumate BPF-programmidega madala taseme süsteemitoimingute jaoks.
Täideviimise mudel
Kasutaja määrab
Kompileerimine
Ohutus
Vearežiim
Ressurssidele juurdepääs
Kasutaja
ülesanne
jah
iga
kasutaja õigused
täitmise katkestamine
süsteemikõne, fault
Tuuma
ülesanne
ei
staatiline
ei
tuuma panic
otse
BPF
sündmus
jah
JIT, CO-RE
verifitseerimine, JIT
veateade
piiratud abid
BPF erineb tavalisest kasutaja- või tuumataseme koodist,
AWS on teatanud, et Bottlerocket "rakendab tegevusmudelit, mis suurendab veelgi turvalisust, takistades juurdepääsu tootmisserveritele administraATORi õigustega" ning "sobib suurte jaotatud süsteemide jaoks, kus iga eraldi hosti üle kontroll piiratud."
Süsteemiadministraatorite jaoks on ette nähtud administraatori konteiner. Kuid AWS ei arva, et administraator peab sageli Bottlerocketi sees töötama: "Sisenemine eraldi Bottlerocketi instantsi on mõeldud haruldaste toimingute jaoks: põhjalikuks tõrkeotsinguks ja veaotsinguks," — arendajad.
Rust keel
Kernelil töötav OS-i tööriist on peamiselt kirjutatud Rustis. See keel vähendab loomulikult , samuti .
Vaikimisi koostamisel rakendatakse lippusid --enable-default-pie ja --enable-default-ssp et lubada täitmisfailide aadressi ruumi randomiseerimist (, PIE) ja virna ülevoolu kaitset.
C/C++ paketina lisatakse täiendavad lipud -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS ja -fstack-clash-protection.
Lisaks Rustile ja C/C++-le on mõned paketid kirjutatud Go keeles.
AWS teenustega integreerimine
Erinevus sarnaste konteinerite operatsioonisüsteemide seas on see, et Amazon on optimeerinud Bottlerocketi AWS-is töötamiseks ja teiste AWS teenustega integreerimiseks.
Kõige populaarsem konteinerite orkestreerija on Kubernetes, mistõttu AWS rakendab integratsiooni omaenda Enterprise Kubernetes Service (EKS) teenusega. Orkestreerimistööriistad toimivad eraldi juhtimiskonteineris , mis on vaikimisi sisse lülitatud ja mida haldab API ja AWS SSM Agent.
Huvitav on vaadata, kas Bottlerocket tõuseb üles, arvestades, et mõned sarnased algatused on minevikus ebaõnnestunud. Näiteks osutus VMware'i PhotonOS nõudlusele vastavaks, ja RedHat ostis CoreOS-i ja , mis peeti antud valdkonnas pioneeriks.
Bottlerocketi integreerimine AWS-i teenustega teeb sellest süsteemist omamoodi ainulaadse. Võib-olla on see peamine põhjus, miks mõned kasutajad võivad eelistada Bottlerocketit teistele distributsioonidele, nagu CoreOS või Alpine. Süsteem on algselt projekteeritud EKS-i ja ECS-i jaoks, kuid kordame, et see ei ole tingimata vajalik. Esiteks, Bottlerocketit saab kasutada näiteks hosted-lahendusena. Teiseks, EKS-i ja ECS-i kasutajad säilitavad endiselt võimaluse OS-i valimiseks.
Bottlerocketi algkood on avaldatud GitHubis Apache 2.0 litsentsi all. Arendajad reageerivad juba .
Reklaami õigustes
VDSina pakub . Saate installida mis tahes operatsioonisüsteemi, sealhulgas oma pildi. Iga server on ühendatud 500 megabiti internetikanaliga ja on tasuta kaitstud DDoS-rünnakute eest!
Allikas: habr.com
