
Amazon konpainia azken argitalpenari buruz — edukiontziak exekutatzeko eta eraginkortasunez kudeatzeko banaketa espezializatua.
Bottlerocket (bide batez, etxeko ke-hautsez elikatzen diren suziri txikien izena) ez da lehenengo edukiontzi-sistema eragilea, baina litekeena da AWS zerbitzuekin duen integrazio lehenetsiari esker oso hedatuta egotea. Sistema Amazon hodeirako diseinatuta dagoen arren, bere kode irekiak edonon eraikitzeko aukera ematen du: zerbitzari batean lokalean, Raspberry Pi batean, edozein hodei lehiakidetan eta baita edukiontzirik gabeko ingurune batean ere.
Hau ordezko guztiz merezi du Red Hatek lurperatu zuen CoreOS banaketarentzat.
Izan ere, Amazon Web Services dibisioak badu dagoeneko Amazon Linux, duela gutxi bere bigarren bertsioan sartu dena: helburu orokorreko banaketa bat da, Docker edukiontzi batean edo hiperbisoreekin exekutatu daitekeena Linux KVM, Microsoft Hyper-V eta VMware ESXi. AWS hodeian exekutatzeko optimizatuta zegoen, baina Bottlerocket kaleratu zenetik, guztiei gomendatzen zaie seguruagoa, modernoagoa eta baliabide gutxiago kontsumitzen dituen sistema berri batera eguneratzea.
AWS-ek Bottlerocket iragarri du Berehala onartu zuen ez zela lehenengoa.Linux edukiontzietarako", CoreOS, Rancher OS eta Project Atomic aipatuz inspirazio gisa. Garatzaileek idatzi zuten sistema eragilea "Amazonen denbora luzez ekoizpen-zerbitzuak eskala handian exekutatzen ikasi ditugun lezioen eta azken sei urteetan edukiontziak nola exekutatu buruz lortu dugun esperientziaren emaitza" dela.
Minimalismo muturrekoa
Linux Edukiontziak exekutatzeko beharrezkoa ez den guztia kenduta, diseinu honek, enpresaren arabera, eraso-azalera murrizten du.
Horrek esan nahi du oinarrizko sisteman pakete gutxiago instalatzen direla, sistema eragilearen mantentze-lanak eta eguneraketak erraztuz, mendekotasun arazoen probabilitatea murriztuz eta baliabideen erabilera murriztuz. Funtsean, dena edukiontzi bereizietan exekutatzen da, eta oinarrizko sistema ia hutsa da.
Amazonek shell eta interprete guztiak ere kendu zituen, erabiltzaileek nahi gabe pribilegioak eskalatzeko edo haien erabilera arriskua ezabatuz. Minimalismoaren eta segurtasunaren mesedetan, oinarrizko irudiak ez du komando shell bat, SSH zerbitzari bat eta Python bezalako interpretatutako hizkuntzarik. Administratzaile tresnak zerbitzu-edukiontzi bereizi batera eraman dira, eta hau lehenespenez desgaituta dago.
Sistema bi modutara kudea daiteke: APIaren bidez eta orkestrazioaren bidez.
Software zati indibidualak eguneratzen dituen pakete kudeatzaile baten ordez, Bottlerocket-ek fitxategi sistemaren irudi osoa deskargatzen du eta bertan berrabiarazten du. Deskargak huts egiten badu, automatikoki atzera egiten du, eta lan-kargaren akats batek eskuzko atzera egitea eragin dezake (API komando baten bidez).
Esparrua (Eguneratze Esparruak) irudietan oinarritutako eguneraketak deskargatzen ditu partizio alternatiboetara edo "muntatu gabekoetara". Bi disko partizio esleitzen dira sistemarentzat, batek sistema aktiboa dauka, eta bigarrenak eguneratzea kopiatzen du. Erroko partizioa irakurtzeko soilik moduan muntatzen da, eta partizioa /etc memoria barruko fitxategi-sistemarekin muntatuta eta berrabiarazi ondoren jatorrizko egoera berreskuratzen du. Konfigurazio fitxategien zuzeneko aldaketa /etc Ez da onartzen: Ezarpenak gordetzeko, APIa erabili edo funtzionalitatea edukiontzi bereizietara eraman beharko zenuke.

API eguneratze eskema
Безопасность
Edukiontziak kernel mekanismo estandarrak erabiliz sortzen dira. Linux — cgroup-ak, izen-espazioak eta seccomp, eta sarbide-kontrol derrigorrezko sistema gisa, hau da, isolamendu gehigarrirako, erabiltzen da "betearazte" moduan.
Berez, edukiontzien eta nukleoaren arteko baliabideak bereizteko politikak gaituta daude. Fitxategi bitarrak banderekin babestuta daude erabiltzaileek edo programek exekutatzea eragozteko. Eta norbaitek fitxategi-sistemara sartzen bada, Bottlerocket-ek egindako aldaketak egiaztatzeko eta jarraitzeko tresna bat eskaintzen du.
"Egiaztatutako abioa" modua device-mapper-verity funtzioaren bidez ezartzen da (), abiaraztean erroko partizioaren osotasuna egiaztatzen duena. AWS-k dm-verity "kernel funtzio" gisa deskribatzen du Linux, osotasun-egiaztapena eskaintzen duena malwarea sistema eragilean exekutatzea saihesteko, hala nola sistemaren software nagusia gainidaztea.
Sisteman iragazki bat ere badago. (BPF luzatua, ), eta horri esker, kernel moduluak BPF programa seguruagoekin ordezkatu daitezke maila baxuko sistemaren eragiketetarako.
Exekuzio eredua
Erabiltzaileak definitutakoa
konpilazio
Безопасность
Istripu modua
Baliabideetarako sarbidea
Erabiltzailea
zeregina
Bai
edozein
erabiltzaileen eskubideak
exekuzio eten
sistema-deia, akatsa
Core
zeregina
нет
estatikoa
нет
kernel panikoa
zuzen
BPF
gertaera
Bai
JIT, CO-RE
egiaztapena, JIT
errore-mezua
laguntzaile mugatuak
BPF eta ohiko erabiltzaile-mailako edo kernel kodearen arteko aldea hau da:
AWS-ek adierazi zuen Bottlerocket-ek "segurtasuna areagotzen duen funtzionamendu-eredu bat hartzen duela, administrazio-pribilegioak dituzten ekoizpen-zerbitzarietara konexioak saihestuz" eta "ostalari bakoitzaren gaineko kontrola mugatua den sistema banatu handietarako egokia" dela.
Administratzaile-edukiontzi bat eskaintzen zaie sistema-administratzaileei. Hala ere, AWS-k ez du espero administratzaileek maiz Bottlerocket-en barruan lan egin behar izatea: "Bottlerocket instantzia bereizi batean saioa hastea eragiketa gutxitan egiteko da, hala nola arazketa aurreratua eta arazoak konpontzea". garatzaileak.
Herdoil hizkuntza
Kernelaren gainean dagoen sistema eragilearen tresna-katea batez ere Rust-en idatzita dago, berez hizkuntza bat dena. Eta .
Banderak lehenespenez aplikatzen dira muntaketan zehar --enable-default-pie и --enable-default-ssp fitxategi exekutagarrien helbide-espazioaren ausazko aukeraketa gaitzeko (, PIE) eta pila-gainezketaren aurkako babesa.
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++z gain, pakete batzuk Go-n idatzita daude.
AWS zerbitzuekin integrazioa
Bottlerocket antzeko edukiontzi-sistema eragileetatik bereizten duena da Amazonek AWS-n exekutatzeko eta beste AWS zerbitzuekin integratzeko optimizatu duela.
Kubernetes edukiontzi orkestratzaile ezagunena da, beraz, AWS-k bere Enterprise Kubernetes Service (EKS) zerbitzuarekin integratu du. Orkestrazio tresnak kudeaketa edukiontzi bereizi batean eskaintzen dira. , lehenespenez gaituta dagoena eta APIaren eta AWS SSM agentearen bidez kudeatzen dena.
Interesgarria izango da ikustea ea Bottlerocket-ek aurrera egiten duen, iraganean antzeko ekimen batzuek porrot egin baitute. Adibidez, VMware-ren PhotonOS ez zen ezaguna izan, eta RedHat-ek CoreOS erosi zuen eta , arlo honetako aitzindaritzat hartzen zena.
Bottlerocket-en AWS zerbitzuekin integrazioak bere erara berezi egiten du. Hori da, agian, erabiltzaile batzuek Bottlerocket nahiago izatearen arrazoi nagusia beste banaketa batzuk baino, hala nola CoreOS edo Alpine. Sistema hasieratik diseinatuta dago EKS eta ECS-ekin funtzionatzeko, baina, berriro ere, ez da beharrezkoa. Lehenik eta behin, Bottlerocket-ek... eta erabilia, adibidez, ostatatutako soluzio gisa. Bigarrenik, EKS eta ECS erabiltzaileek sistema eragileen aukera izango dute oraindik.
Bottlerocket-en iturburu-kodea GitHub-en argitaratu da Apache 2.0 lizentziapean. Garatzaileek dagoeneko egin dute .
Publizitatearen Eskubideei buruz
VDSina eskaintza Edozein sistema eragile instala dezakezu, zure iruditik barne. Zerbitzari bakoitza 500 Mbps-ko internet konexio batera konektatuta dago eta doan babestuta dago DDoS erasoetatik!
Iturria: www.habr.com
