Մինիմալիստական ​​Linux բաշխման Bottlerocket թողարկվել է կոնտեյներներ գործարկելու համար: Նրա մասին ամենակարևորը

Մինիմալիստական ​​Linux բաշխման Bottlerocket թողարկվել է կոնտեյներներ գործարկելու համար: Նրա մասին ամենակարևորը

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-ը 2020-ի մարտին. Նա անմիջապես խոստովանեց, որ սա առաջին «Linux կոնտեյներների համար» չէ՝ որպես ոգեշնչման աղբյուր նշելով CoreOS-ը, Rancher OS-ն և Project Atomic-ը: Մշակողները գրել են, որ օպերացիոն համակարգը «դասերի արդյունք է, որը մենք քաղել ենք Amazon-ի մասշտաբով արտադրական ծառայությունները երկար ժամանակ գործարկելուց, և վերջին վեց տարիների ընթացքում կոնտեյներներ գործարկելու մասին մեր ձեռք բերած փորձից»:

Ծայրահեղ մինիմալիզմ

Linux-ը զրկված է այն ամենից, ինչ անհրաժեշտ չէ կոնտեյներներ գործարկելու համար: Այս դիզայնը, ըստ ընկերության, նվազեցնում է հարձակման մակերեսը։

Սա նշանակում է, որ ավելի քիչ փաթեթներ են տեղադրվում բազային համակարգում, ինչը հեշտացնում է ՕՀ-ի պահպանումն ու թարմացումը, ինչպես նաև նվազեցնում է կախվածության պատճառով խնդիրների հավանականությունը՝ նվազեցնելով ռեսուրսների օգտագործումը: Հիմնականում այստեղ ամեն ինչ աշխատում է առանձին տարաների ներսում, և հիմքում ընկած համակարգը գործնականում մերկ է:

Amazon-ը նաև հեռացրել է բոլոր պատյաններն ու թարգմանիչները՝ վերացնելով դրանց օգտագործման կամ օգտատերերի կողմից արտոնությունները պատահաբար մեծացնելու վտանգը: Հանուն մինիմալիզմի և անվտանգության, բազային պատկերը չի ներառում հրամանի վահանակ, SSH սերվեր կամ Python-ի պես մեկնաբանվող լեզուներ: Ադմինիստրատորի գործիքները տեղադրվում են առանձին սպասարկման կոնտեյներով, որը լռելյայն անջատված է:

Համակարգը կառավարվում է երկու եղանակով՝ API-ի և նվագախմբի միջոցով:

Փաթեթների կառավարչի փոխարեն, որը թարմացնում է ծրագրակազմի առանձին մասերը, Bottlerocket-ը ներբեռնում է ամբողջական ֆայլային համակարգի պատկեր և վերագործարկում դրա մեջ: Եթե ​​բեռը ձախողվում է, այն ավտոմատ կերպով հետ է գլորվում, և աշխատանքի ծանրաբեռնվածության ձախողումը կարող է ձեռքով առաջացնել հետ վերադարձ (հրաման API-ի միջոցով):

Շրջանակ TUF (The Update Framework) ներբեռնում է պատկերի վրա հիմնված թարմացումներ այլընտրանքային կամ «ապամոնտաժված» միջնորմների համար: Համակարգին հատկացված է սկավառակի երկու բաժին, որոնցից մեկը պարունակում է ակտիվ համակարգը, իսկ թարմացումը պատճենվում է երկրորդին: Այս դեպքում արմատային բաժանումը տեղադրվում է միայն կարդալու ռեժիմով, իսկ բաժանումը /etc տեղադրված է ֆայլային համակարգի հետ RAM-ում tmpfs և վերագործարկումից հետո վերականգնում է սկզբնական վիճակը: Կազմաձևման ֆայլերի ուղղակի փոփոխություն /etc չի աջակցվում. կարգավորումները պահպանելու համար դուք պետք է օգտագործեք API կամ տեղափոխեք գործառույթը առանձին բեռնարկղերի մեջ:

Մինիմալիստական ​​Linux բաշխման Bottlerocket թողարկվել է կոնտեյներներ գործարկելու համար: Նրա մասին ամենակարևորը
API-ի թարմացման սխեմա

Безопасность

Կոնտեյներները ստեղծվում են Linux միջուկի ստանդարտ մեխանիզմներով՝ cgroups, namespaces և seccomp, և օգտագործվում են որպես հարկադիր մուտքի վերահսկման համակարգ, այսինքն՝ լրացուցիչ մեկուսացման համար։ SELinux- ը «իրականացման» ռեժիմում։

Լռելյայնորեն, կանոնները միացված են ռեսուրսները բեռնարկղերի և միջուկի միջև կիսելու համար: Երկուական ֆայլերը պաշտպանված են դրոշներով՝ թույլ չտալու համար օգտագործողներին կամ ծրագրերին դրանք կատարել: Եվ եթե որևէ մեկը հասնի ֆայլային համակարգին, Bottlerocket-ն առաջարկում է գործիք՝ ստուգելու և հետևելու կատարված ցանկացած փոփոխություն:

«Ստուգված բեռնման» ռեժիմն իրականացվում է «device-mapper-verity» ֆունկցիայի միջոցով (dm-verity), որը ստուգում է արմատային բաժանման ամբողջականությունը բեռնման ժամանակ: AWS-ը նկարագրում է dm-verity-ն որպես «Linux-ի միջուկի հատկություն, որն ապահովում է ամբողջականության ստուգումներ՝ կանխելու չարամիտ ծրագրերի գործարկումը ՕՀ-ում, ինչպես օրինակ՝ հիմնական համակարգի ծրագրակազմի վերագրանցումը»:

Համակարգում կա նաև զտիչ eGMP (ընդլայնված BPF, մշակվել է Ալեքսեյ Ստարովոյտովի կողմից), որը թույլ է տալիս միջուկի մոդուլները փոխարինել ավելի ապահով BPF ծրագրերով ցածր մակարդակի համակարգի գործառնությունների համար:

Կատարման մոդել
Օգտագործողի կողմից սահմանված է
Կազմում
Безопасность
Անհաջող ռեժիմ
Ռեսուրսների հասանելիություն

Օգտատեր
խնդիրը
այո
ցանկացած
օգտագործողի իրավունքները
ընդհատել կատարումը
համակարգային զանգ, անսարքություն

Kernel
խնդիրը
ոչ
ստատիկ
ոչ
միջուկի խուճապ
прямой

BPF
Событие
այո
JIT, CO-RE
ստուգում, JIT
սխալի հաղորդագրություն
սահմանափակ օգնականներ

Ինչպես է BPF-ն տարբերվում սովորական օգտագործողի կամ միջուկի մակարդակի կոդից աղբյուր

AWS-ն ասում է, որ Bottlerocket-ը «կիրառում է գործառնական մոդել, որն էլ ավելի է բարձրացնում անվտանգությունը՝ կանխելով վարչական արտոնություններով արտադրական սերվերների հետ կապերը» և «հարմար է մեծ բաշխված համակարգերի համար, որտեղ յուրաքանչյուր առանձին հյուրընկալողի նկատմամբ վերահսկողությունը սահմանափակ է»:

Համակարգի ադմինիստրատորների համար տրամադրվում է ադմինիստրատորի կոնտեյներ: Բայց AWS-ը չի կարծում, որ ադմինը հաճախ պետք է աշխատի Bottlerocket-ի ներսում. «Առանձին Bottlerocket օրինակ մուտք գործելու գործողությունը նախատեսված է հազվադեպ գործողությունների համար՝ առաջադեմ վրիպազերծում և անսարքությունների վերացում»: գրեք մշակողները։

Ժանգոտ լեզու

ՕՀ գործիքավորումը միջուկի վերևում հիմնականում գրված է Rust-ով: Այս լեզուն իր բնույթով է նվազեցնում է անապահով հիշողության հասանելիության հավանականությունըԻսկ վերացնում է թելերի միջև մրցավազքի պայմանները.

Դրոշները կիրառվում են լռելյայնորեն կառուցման ժամանակ --enable-default-pie и --enable-default-ssp գործարկվող ֆայլերի հասցեների տարածության պատահականացումն ակտիվացնելու համար (պաշտոնից անկախ գործարկվող, PIE) և կույտի գերհոսքից պաշտպանություն:

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-control-container, որը լռելյայն միացված է և կառավարվում է API-ի և AWS SSM գործակալի միջոցով:

Հետաքրքիր կլինի տեսնել, թե արդյոք Bottlerocket-ը դուրս կգա՝ հաշվի առնելով նախկինում որոշ նմանատիպ նախաձեռնությունների ձախողումը: Օրինակ, Vmware-ից PhotonOS-ը չպահանջված էր, և RedHat-ը գնեց CoreOS և փակեց նախագիծը, ով համարվում էր ոլորտում առաջամարտիկ։

Bottlerocket-ի ինտեգրումը AWS ծառայություններին այս համակարգը յուրահատուկ է դարձնում իր ձևով: Սա, թերեւս, հիմնական պատճառն է, որ որոշ օգտատերեր կարող են նախընտրել Bottlerocket-ը այլ բաշխումների փոխարեն, ինչպիսիք են CoreOS-ը կամ Alpine-ը: Համակարգն ի սկզբանե նախատեսված է աշխատել EKS-ի և ECS-ի հետ, բայց մենք կրկնում ենք, որ դա անհրաժեշտ չէ: Նախ, Bottlerocket-ը կարող է հավաքեք ինքներդ և օգտագործել այն, օրինակ, որպես հոսթինգ լուծում: Երկրորդ, EKS և ECS օգտվողները դեռևս կունենան իրենց ՕՀ-ն ընտրելու հնարավորություն:

Bottlerocket-ի սկզբնական կոդը հրապարակված է GitHub-ում Apache 2.0 լիցենզիայի ներքո: Մշակողները արդեն արձագանքել վրիպակների հաշվետվություններին և հնարավորությունների հարցումներին.

Գովազդի իրավունքների մասին

VDSina առաջարկություններ VDS օրական վճարումով. Հնարավոր է տեղադրել ցանկացած օպերացիոն համակարգ, այդ թվում՝ սեփական պատկերից։ Յուրաքանչյուր սերվեր միացված է 500 Մեգաբիթանոց ինտերնետ ալիքին և անվճար պաշտպանված է DDoS հարձակումներից:

Մինիմալիստական ​​Linux բաշխման Bottlerocket թողարկվել է կոնտեյներներ գործարկելու համար: Նրա մասին ամենակարևորը

Source: www.habr.com

Добавить комментарий