Amazon konpainia
Bottlerocket (bide batez, etxeko hauts beltz suziri txikiei ematen zaien izena) ez da ontzientzako lehen OSa, baina litekeena da AWS zerbitzuekin lehenetsitako integrazioari esker hedatzea. Sistema Amazon hodeian zentratuta badago ere, iturburu irekiko kodeari esker edonon eraiki daiteke: lokalean zerbitzari batean, Raspberry Pi batean, lehiakideen edozein hodeian eta baita edukiontzirik gabeko ingurune batean ere.
Red Hat-ek lurperatu zuen CoreOS banaketaren ordezko guztiz duina da.
Izan ere, Amazon Web Services dibisioak dagoeneko badu Amazon Linux, duela gutxi bigarren bertsioan atera dena: erabilera orokorreko banaketa bat da, Docker edukiontzian edo Linux KVM, Microsoft Hyper-V eta VMware-rekin exekutatu daitekeena. ESXi hipervisoreak. AWS hodeian exekutatzeko optimizatu zen, baina Bottlerocket kaleratuta, denak seguruago, modernoago eta baliabide gutxiago erabiltzen dituen sistema berri batera eguneratzera animatzen dira.
AWSk Bottlerocket iragarri zuen
Muturreko minimalismoa
Linux-ek edukiontziak exekutatzeko behar ez den guztia kentzen du. Diseinu honek, konpainiaren arabera, eraso-azalera murrizten du.
Horrek esan nahi du oinarrizko sisteman pakete gutxiago instalatzen direla, eta horrek OSa mantentzea eta eguneratzea errazten du, eta menpekotasunen ondoriozko arazoak izateko probabilitatea murrizten du, baliabideen erabilera murriztuz. Funtsean, hemen dena ontzi bereizietan funtzionatzen du, eta azpiko sistema ia hutsik dago.
Amazonek shell eta interprete guztiak ere kendu ditu, horiek erabiltzeko edo erabiltzaileek ustekabean pribilegioak handitzeko arriskua ezabatuz. Minimalismoaren eta segurtasunaren mesedetan, oinarrizko irudiak ez du komando-shell bat, SSH zerbitzari bat edo Python bezalako interpretatutako hizkuntzarik. Administratzaile-tresnak aparteko zerbitzu-edukiontzi batean jartzen dira, lehenespenez desgaituta dagoena.
Sistema bi modutara kudeatzen da: APIaren eta orkestrazioaren bidez.
Software piezak eguneratzen dituen pakete-kudeatzaile baten ordez, Bottlerocket-ek fitxategi-sistemaren irudi osoa deskargatzen du eta bertan berrabiarazten du. Karga batek huts egiten badu, automatikoki atzera egiten du, eta lan-kargaren hutsegite batek eskuz atzera bota dezake (API bidezko komandoa).
Esparrua /etc
RAM fitxategi-sistemarekin muntatua /etc
ez da onartzen: ezarpenak gordetzeko APIa erabili behar duzu edo funtzionalitatea edukiontzi ezberdinetara eraman.
API eguneratzeko eskema
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
Edukiontziak Linux kernelaren mekanismo estandarren bidez sortzen dira - cgroups, namespaces eta seccomp, eta behartutako sarbide-kontrol-sistema gisa erabiltzen dira, hau da, isolamendu gehigarrirako.
Lehenespenez, politikak gaituta daude edukiontzien eta nukleoaren artean baliabideak partekatzeko. Binarioak banderarekin babestuta daude erabiltzaileek edo programak exekutatu ez ditzaten. Eta fitxategi-sistemara iristen bada, Bottlerocket-ek egindako aldaketak egiaztatzeko eta jarraitzeko tresna eskaintzen du.
"Egiaztatutako abioa" modua device-mapper-verity funtzioaren bidez inplementatzen da (
Iragazki bat ere badago sisteman
Exekuzio eredua
Erabiltzaileak definituta
konpilazio
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
Huts modua
Baliabideetarako sarbidea
Erabiltzailea
zeregina
Bai
edozein
erabiltzaile-eskubideak
exekuzioa eten
sistema deia, akatsa
Core
zeregina
Π½Π΅Ρ
estatikoa
Π½Π΅Ρ
kernel izua
zuzen
BPF
gertaera
Bai
JIT, CO-RE
egiaztapena, JIT
errore-mezua
laguntzaile mugatuak
Nola desberdintzen den BPF erabiltzaile arruntaren edo nukleo-mailako kodearekin
AWS-k esan zuen Bottlerocket-ek "segurtasuna are gehiago hobetzen duen eredu operatibo bat erabiltzen duela, administrazio-pribilegioak dituzten ekoizpen-zerbitzarietarako konexioak eragotziz" eta "banakako sistema handietarako egokia da, non ostalari bakoitzaren kontrola mugatua den".
Administratzaile-edukiontzi bat eskaintzen zaie sistema-administratzaileei. Baina AWS-k ez du uste administratzaile batek sarritan lan egin behar duenik Bottlerocket-en barruan: "Bottlerocket-en instantzia bereizi batean saioa hasteko ekintza maiz gutxiko eragiketetarako pentsatuta dago: arazketa aurreratua eta arazoak konpontzeko".
Herdoila hizkuntza
Nukleoaren gainean OS tresneria gehienbat Rust-en idatzita dago. Hizkuntza hau bere izaeraz da
Eraikitzerakoan banderak lehenespenez aplikatzen dira --enable-default-pie
ΠΈ --enable-default-ssp
fitxategi exekutagarrien helbide-espazioen aleatorizazioa gaitzeko (
C/C++ paketeetarako, bandera gehigarriak sartzen dira -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
ΠΈ -fstack-clash-protection
.
Rust eta C/C++ gain, pakete batzuk Go-n idatzita daude.
AWS zerbitzuekin integratzea
Antzeko edukiontzien sistema eragileekiko aldea da Amazonek Bottlerocket optimizatu duela AWS-n exekutatzeko eta AWS zerbitzuekin integratzeko.
Edukiontzi-orkestratzaile ezagunena Kubernetes da, beraz, AWS-k bere Enterprise Kubernetes Zerbitzuarekin (EKS) integrazioa sartu du. Orkestrazio tresnak kontrol-edukiontzi bereizi batean datoz
Interesgarria izango da ikustea Bottlerocket-ek airea hartzen duen, iraganean antzeko ekimen batzuen porrota ikusita. Esaterako, Vmware-ren PhotonOS ez zen erreklamatu eta RedHatek CoreOS eta erosi zituen.
Bottlerocket-en AWS zerbitzuetan integratzeak sistema hau bakarra egiten du bere erara. Hau da beharbada erabiltzaile batzuek Bottlerocket nahiago izan dezaketen arrazoi nagusia CoreOS edo Alpine bezalako beste distro batzuen aldean. Sistema hasieran EKS eta ECSekin lan egiteko diseinatuta dago, baina hori ez dela beharrezkoa errepikatzen dugu. Lehenik eta behin, Bottlerocket daiteke
Bottlerocket iturburu-kodea GitHub-en argitaratzen da Apache 2.0 lizentziarekin. Garatzaileek dagoeneko egin dute
Publizitatearen Eskubideei buruz
VDSina eskaintza
Iturria: www.habr.com