Հրապարակվել է Linux բաշխման Bottlerocket 1.8.0 թողարկումը, որը մշակվել է Amazon-ի մասնակցությամբ՝ մեկուսացված բեռնարկղերի արդյունավետ և անվտանգ գործարկման համար: Բաշխման գործիքները և կառավարման բաղադրիչները գրված են Rust-ով և տարածվում են MIT և Apache 2.0 լիցենզիաների ներքո: Այն աջակցում է Bottlerocket-ի գործարկումը Amazon ECS, VMware և AWS EKS Kubernetes կլաստերների վրա, ինչպես նաև ստեղծում է հատուկ կառուցվածքներ և հրատարակություններ, որոնք թույլ են տալիս օգտագործել տարբեր նվագախմբային և գործարկման գործիքներ կոնտեյներների համար:
Բաշխումն ապահովում է ատոմային և ավտոմատ կերպով թարմացվող անբաժանելի համակարգի պատկեր, որը ներառում է Linux միջուկը և նվազագույն համակարգի միջավայրը, ներառյալ միայն այն բաղադրիչները, որոնք անհրաժեշտ են կոնտեյներներ գործարկելու համար: Շրջակա միջավայրը ներառում է systemd համակարգի կառավարիչը, Glibc գրադարանը, Buildroot build գործիքը, GRUB boot loader-ը, չար ցանցի կոնֆիգուրատորը, մեկուսացված բեռնարկղերի կոնտեյներների գործարկման ժամանակը, Kubernetes կոնտեյներների նվագախմբային հարթակը, aws-iam-authenticator-ը և Amazon-ը: ECS գործակալ.
Կոնտեյներների նվագախմբի գործիքները գալիս են առանձին կառավարման կոնտեյներով, որը միացված է լռելյայնորեն և կառավարվում է API-ի և AWS SSM գործակալի միջոցով: Հիմնական պատկերում բացակայում է հրամանի վահանակը, SSH սերվերը և մեկնաբանվող լեզուներ (օրինակ՝ ոչ Python կամ Perl) - վարչական գործիքները և վրիպազերծման գործիքները տեղադրվում են առանձին սպասարկման կոնտեյներով, որը լռելյայն անջատված է:
Հիմնական տարբերությունը նմանատիպ բաշխումներից, ինչպիսիք են Fedora CoreOS-ը, CentOS/Red Hat Atomic Host-ը, հիմնական ուշադրությունն է առավելագույն անվտանգության ապահովման վրա՝ հնարավոր սպառնալիքներից համակարգի պաշտպանության ամրապնդման համատեքստում, ինչը դժվարացնում է ՕՀ բաղադրիչների խոցելիության օգտագործումը և կոնտեյների մեկուսացման ավելացումը: . Կոնտեյներները ստեղծվում են Linux միջուկի ստանդարտ մեխանիզմների միջոցով՝ cgroups, namespaces և seccomp: Լրացուցիչ մեկուսացման համար բաշխումն օգտագործում է SELinux «պարտադրման» ռեժիմում:
Արմատային միջնորմը տեղադրվում է միայն կարդալու համար, իսկ /etc կարգավորումների բաժինը տեղադրվում է tmpfs-ով և վերագործարկումից հետո վերականգնվում է իր սկզբնական վիճակին: /etc գրացուցակի ֆայլերի ուղղակի փոփոխությունները, ինչպիսիք են /etc/resolv.conf և /etc/containerd/config.toml, չեն աջակցվում. կարգավորումները մշտապես պահպանելու համար դուք պետք է օգտագործեք API-ն կամ տեղափոխեք գործառույթը առանձին բեռնարկղերում: dm-verity մոդուլն օգտագործվում է արմատային բաժանման ամբողջականությունը գաղտնագրորեն ստուգելու համար, և եթե հայտնաբերվում է տվյալների բլոկ սարքի մակարդակում փոփոխելու փորձ, համակարգը վերագործարկում է:
Համակարգի բաղադրիչներից շատերը գրված են 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» դրոշները լրացուցիչ են: միացված է - պաշտպանություն»:
Նոր թողարկումում.
- Վարչական և հսկիչ բեռնարկղերի պարունակությունը թարմացվել է:
- Մեկուսացված բեռնարկղերի գործարկման ժամանակը թարմացվել է կոնտեյներների 1.6.x ճյուղին:
- Ապահովում է, որ բեռնարկղերի աշխատանքը համակարգող ֆոնային գործընթացները վերսկսվեն վկայականների պահեստում փոփոխություններից հետո:
- Հնարավոր է սահմանել միջուկի բեռնման պարամետրերը Boot Configuration բաժնի միջոցով:
- Միացված է դատարկ բլոկների անտեսումը արմատային բաժանման ամբողջականությունը վերահսկելիս՝ օգտագործելով dm-verity:
- Ապահովված է հոսթների անունները ստատիկ կերպով կապելու հնարավորությունը /etc/hosts-ում:
- Ապահովված է ցանցի կոնֆիգուրացիա ստեղծելու հնարավորություն՝ օգտագործելով netdog կոմունալ ծրագիրը (ավելացվել էgenere-net-config հրամանը):
- Առաջարկվել են Kubernetes 1.23-ի աջակցությամբ բաշխման նոր տարբերակներ: Kubernetes-ում pod-ների գործարկման ժամանակը կրճատվել է՝ անջատելով configMapAndSecretChangeDetectionStrategy ռեժիմը: Ավելացվեց kubelet-ի նոր կարգավորումներ՝ մատակարար-id և podPidsLimit:
- Առաջարկվել է «aws-ecs-1-nvidia» բաշխիչ փաթեթի նոր տարբերակը Amazon Elastic Container Service (Amazon ECS) համար, որը մատակարարվում է NVIDIA-ի դրայվերներով:
- Ավելացված է աջակցություն Microchip Smart Storage-ի և MegaRAID SAS պահեստավորման սարքերի համար: Ընդլայնվել է Broadcom չիպերի վրա Ethernet քարտերի աջակցությունը:
- Թարմացված փաթեթի տարբերակները և կախվածությունները Go և Rust լեզուների համար, ինչպես նաև երրորդ կողմի ծրագրերով փաթեթների տարբերակները: Bottlerocket SDK-ն թարմացվել է 0.26.0 տարբերակին:
Source: opennet.ru