Amazon- ը
Bottlerocket-ը (ի դեպ, փոքր տնական սև փոշի հրթիռների անվանումը) կոնտեյներների համար առաջին ՕՀ-ն չէ, բայց հավանական է, որ այն լայն տարածում կստանա AWS ծառայությունների հետ լռելյայն ինտեգրման շնորհիվ: Չնայած համակարգը կենտրոնացած է Amazon ամպի վրա, բաց կոդով կոդը թույլ է տալիս այն կառուցել ցանկացած վայրում՝ տեղական սերվերի վրա, Raspberry Pi-ի վրա, ցանկացած մրցակցող ամպի վրա և նույնիսկ առանց կոնտեյների միջավայրում:
Սա լիովին արժանի փոխարինում է CoreOS բաշխմանը, որը թաղել է Red Hat-ը:
Փաստորեն, Amazon Web Services ստորաբաժանումն արդեն ունի Amazon Linux, որը վերջերս դուրս եկավ իր երկրորդ տարբերակով. դա ընդհանուր նշանակության բաշխում է, որը կարող է գործարկվել Docker կոնտեյներով կամ Linux KVM-ով, Microsoft Hyper-V-ով և VMware-ով: ESXi հիպերվիզորներ. Այն օպտիմիզացված էր AWS ամպի վրա աշխատելու համար, բայց Bottlerocket-ի թողարկմամբ բոլորին խրախուսվում է թարմացնել նոր համակարգի, որն ավելի ապահով է, ժամանակակից և օգտագործում է ավելի քիչ ռեսուրսներ:
AWS-ը հայտարարեց Bottlerocket-ը
Ծայրահեղ մինիմալիզմ
Linux-ը զրկված է այն ամենից, ինչ անհրաժեշտ չէ կոնտեյներներ գործարկելու համար: Այս դիզայնը, ըստ ընկերության, նվազեցնում է հարձակման մակերեսը։
Սա նշանակում է, որ ավելի քիչ փաթեթներ են տեղադրվում բազային համակարգում, ինչը հեշտացնում է ՕՀ-ի պահպանումն ու թարմացումը, ինչպես նաև նվազեցնում է կախվածության պատճառով խնդիրների հավանականությունը՝ նվազեցնելով ռեսուրսների օգտագործումը: Հիմնականում այստեղ ամեն ինչ աշխատում է առանձին տարաների ներսում, և հիմքում ընկած համակարգը գործնականում մերկ է:
Amazon-ը նաև հեռացրել է բոլոր պատյաններն ու թարգմանիչները՝ վերացնելով դրանց օգտագործման կամ օգտատերերի կողմից արտոնությունները պատահաբար մեծացնելու վտանգը: Հանուն մինիմալիզմի և անվտանգության, բազային պատկերը չի ներառում հրամանի վահանակ, SSH սերվեր կամ Python-ի պես մեկնաբանվող լեզուներ: Ադմինիստրատորի գործիքները տեղադրվում են առանձին սպասարկման կոնտեյներով, որը լռելյայն անջատված է:
Համակարգը կառավարվում է երկու եղանակով՝ API-ի և նվագախմբի միջոցով:
Փաթեթների կառավարչի փոխարեն, որը թարմացնում է ծրագրակազմի առանձին մասերը, Bottlerocket-ը ներբեռնում է ամբողջական ֆայլային համակարգի պատկեր և վերագործարկում դրա մեջ: Եթե բեռը ձախողվում է, այն ավտոմատ կերպով հետ է գլորվում, և աշխատանքի ծանրաբեռնվածության ձախողումը կարող է ձեռքով առաջացնել հետ վերադարձ (հրաման API-ի միջոցով):
Շրջանակ /etc
տեղադրված է ֆայլային համակարգի հետ RAM-ում /etc
չի աջակցվում. կարգավորումները պահպանելու համար դուք պետք է օգտագործեք API կամ տեղափոխեք գործառույթը առանձին բեռնարկղերի մեջ:
API-ի թարմացման սխեմա
Безопасность
Կոնտեյներները ստեղծվում են Linux միջուկի ստանդարտ մեխանիզմներով՝ cgroups, namespaces և seccomp, և օգտագործվում են որպես հարկադիր մուտքի վերահսկման համակարգ, այսինքն՝ լրացուցիչ մեկուսացման համար։
Լռելյայնորեն, կանոնները միացված են ռեսուրսները բեռնարկղերի և միջուկի միջև կիսելու համար: Երկուական ֆայլերը պաշտպանված են դրոշներով՝ թույլ չտալու համար օգտագործողներին կամ ծրագրերին դրանք կատարել: Եվ եթե որևէ մեկը հասնի ֆայլային համակարգին, Bottlerocket-ն առաջարկում է գործիք՝ ստուգելու և հետևելու կատարված ցանկացած փոփոխություն:
«Ստուգված բեռնման» ռեժիմն իրականացվում է «device-mapper-verity» ֆունկցիայի միջոցով (
Համակարգում կա նաև զտիչ
Կատարման մոդել
Օգտագործողի կողմից սահմանված է
Կազմում
Безопасность
Անհաջող ռեժիմ
Ռեսուրսների հասանելիություն
Օգտատեր
խնդիրը
այո
ցանկացած
օգտագործողի իրավունքները
ընդհատել կատարումը
համակարգային զանգ, անսարքություն
Kernel
խնդիրը
ոչ
ստատիկ
ոչ
միջուկի խուճապ
прямой
BPF
Событие
այո
JIT, CO-RE
ստուգում, JIT
սխալի հաղորդագրություն
սահմանափակ օգնականներ
Ինչպես է BPF-ն տարբերվում սովորական օգտագործողի կամ միջուկի մակարդակի կոդից
AWS-ն ասում է, որ Bottlerocket-ը «կիրառում է գործառնական մոդել, որն էլ ավելի է բարձրացնում անվտանգությունը՝ կանխելով վարչական արտոնություններով արտադրական սերվերների հետ կապերը» և «հարմար է մեծ բաշխված համակարգերի համար, որտեղ յուրաքանչյուր առանձին հյուրընկալողի նկատմամբ վերահսկողությունը սահմանափակ է»:
Համակարգի ադմինիստրատորների համար տրամադրվում է ադմինիստրատորի կոնտեյներ: Բայց AWS-ը չի կարծում, որ ադմինը հաճախ պետք է աշխատի Bottlerocket-ի ներսում. «Առանձին Bottlerocket օրինակ մուտք գործելու գործողությունը նախատեսված է հազվադեպ գործողությունների համար՝ առաջադեմ վրիպազերծում և անսարքությունների վերացում»:
Ժանգոտ լեզու
ՕՀ գործիքավորումը միջուկի վերևում հիմնականում գրված է Rust-ով: Այս լեզուն իր բնույթով է
Դրոշները կիրառվում են լռելյայնորեն կառուցման ժամանակ --enable-default-pie
и --enable-default-ssp
գործարկվող ֆայլերի հասցեների տարածության պատահականացումն ակտիվացնելու համար (
C/C++ փաթեթների համար ներառված են լրացուցիչ դրոշներ -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
Բացի Rust-ից և C/C++-ից, որոշ փաթեթներ գրված են Go-ում։
Ինտեգրում AWS ծառայությունների հետ
Նմանատիպ կոնտեյներային օպերացիոն համակարգերից տարբերությունն այն է, որ Amazon-ը օպտիմիզացրել է Bottlerocket-ը AWS-ով աշխատելու և այլ AWS ծառայությունների հետ ինտեգրվելու համար:
Ամենահայտնի կոնտեյներային նվագախումբը Kubernetes-ն է, ուստի AWS-ը ներդրել է ինտեգրում իր սեփական Enterprise Kubernetes ծառայության (EKS) հետ: Նվագախմբի գործիքները գալիս են առանձին հսկիչ կոնտեյներով
Հետաքրքիր կլինի տեսնել, թե արդյոք Bottlerocket-ը դուրս կգա՝ հաշվի առնելով նախկինում որոշ նմանատիպ նախաձեռնությունների ձախողումը: Օրինակ, Vmware-ից PhotonOS-ը չպահանջված էր, և RedHat-ը գնեց CoreOS և
Bottlerocket-ի ինտեգրումը AWS ծառայություններին այս համակարգը յուրահատուկ է դարձնում իր ձևով: Սա, թերեւս, հիմնական պատճառն է, որ որոշ օգտատերեր կարող են նախընտրել Bottlerocket-ը այլ բաշխումների փոխարեն, ինչպիսիք են CoreOS-ը կամ Alpine-ը: Համակարգն ի սկզբանե նախատեսված է աշխատել EKS-ի և ECS-ի հետ, բայց մենք կրկնում ենք, որ դա անհրաժեշտ չէ: Նախ, Bottlerocket-ը կարող է
Bottlerocket-ի սկզբնական կոդը հրապարակված է GitHub-ում Apache 2.0 լիցենզիայի ներքո: Մշակողները արդեն
Գովազդի իրավունքների մասին
VDSina առաջարկություններ
Source: www.habr.com