ã¢ããŸã³ç€Ÿ
Bottlerocket (ã¡ãªã¿ã«ãå°åã®èªå®¶è£œé»è²ç«è¬ãã±ããã«ä»ããããåå) ã¯ãã³ã³ããçšã®æåã® OS ã§ã¯ãããŸããããAWS ã®ãµãŒãã¹ãšããã©ã«ãã§çµ±åãããŠãããããæ®åããå¯èœæ§ããããŸãã ãã®ã·ã¹ãã 㯠Amazon ã¯ã©ãŠãã«çŠç¹ãåœãŠãŠããŸããããªãŒãã³ ãœãŒã¹ ã³ãŒãã«ããããµãŒããŒäžãRaspberry Pi äžã競åããã¯ã©ãŠãäžãããã«ã¯ã³ã³ããã¬ã¹ç°å¢ãªã©ãã©ãã«ã§ãæ§ç¯ã§ããŸãã
ããã¯ãRed Hat ãåã蟌ãã CoreOS ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®å®å
šã«äŸ¡å€ã®ãã代æ¿åã§ãã
å®éãã¢ããŸã³ ãŠã§ã ãµãŒãã¹éšéã«ã¯ãã§ã« Amazon Linux ããããæè¿ãã®ç¬¬ XNUMX ããŒãžã§ã³ããªãªãŒã¹ãããŸãããããã¯ãDocker ã³ã³ããå
ã§ããŸã㯠Linux KVMãMicrosoft Hyper-Vãããã³ VMware ã§å®è¡ã§ããæ±çšãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ãã ESXi ãã€ããŒãã€ã¶ãŒã ãã㯠AWS ã¯ã©ãŠãäžã§å®è¡ããããã«æé©åãããŠããŸããããBottlerocket ã®ãªãªãŒã¹ã«ãããããå®å
šã§ææ°ã§äœ¿çšãªãœãŒã¹ã®å°ãªãæ°ããã·ã¹ãã ã«ã¢ããã°ã¬ãŒãããããšãå
šå¡ã«æšå¥šãããŠããŸãã
AWSãããã«ãã±ãããçºè¡š
極端ãªããããªãºã
Linux ã§ã¯ãã³ã³ãããŒã®å®è¡ã«å¿ èŠã§ãªããã®ã¯ãã¹ãŠåãé€ãããŠããŸãã å瀟ã«ããã°ããã®èšèšã«ããæ»æ察象é åãæžå°ããŸãã
ããã¯ãããŒã¹ ã·ã¹ãã ã«ã€ã³ã¹ããŒã«ãããããã±ãŒãžãå°ãªããªããããOS ã®ä¿å®ãšæŽæ°ã容æã«ãªãã ãã§ãªããäŸåé¢ä¿ã«ããåé¡ã®å¯èœæ§ãæžãããªãœãŒã¹ã®äœ¿çšéãåæžãããããšãæå³ããŸãã åºæ¬çã«ãããã§ã®ãã¹ãŠã¯åå¥ã®ã³ã³ããå ã§åäœããåºç€ãšãªãã·ã¹ãã ã¯å®è³ªçã«è£žã§ãã
Amazon ã¯ãŸãããã¹ãŠã®ã·ã§ã«ãšã€ã³ã¿ãŒããªã¿ãŒãåé€ãããããã䜿çšããããããŠãŒã¶ãŒã誀ã£ãŠæš©éãææ Œããããããªã¹ã¯ãæé€ããŸããã ããããªãºã ãšã»ãã¥ãªãã£ã®ãããåºæ¬ã€ã¡ãŒãžã«ã¯ã³ãã³ã ã·ã§ã«ãSSH ãµãŒããŒããŸã㯠Python ãªã©ã®ã€ã³ã¿ãŒããªã¿èšèªã¯å«ãŸããŠããŸããã 管çè ããŒã«ã¯å¥ã®ãµãŒãã¹ ã³ã³ããã«é 眮ãããŸãããããã©ã«ãã§ã¯ç¡å¹ã«ãªã£ãŠããŸãã
ã·ã¹ãã ã¯ãAPI ãšãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã® XNUMX ã€ã®æ¹æ³ã§ç®¡çãããŸãã
åã ã®ãœãããŠã§ã¢ãæŽæ°ããããã±ãŒãž ãããŒãžã£ãŒã®ä»£ããã«ãBottlerocket ã¯å®å šãªãã¡ã€ã« ã·ã¹ãã ã€ã¡ãŒãžãããŠã³ããŒããããã®ã€ã¡ãŒãžã§åèµ·åããŸãã ããŒãã倱æãããšèªåçã«ããŒã«ããã¯ãããã¯ãŒââã¯ããŒãã®å€±æã«ããæåã§ããŒã«ããã¯ãããªã¬ãŒã§ããŸã (API çµç±ã®ã³ãã³ã)ã
ãã¬ãŒã ã¯ãŒã¯ /etc
ãã¡ã€ã«ã·ã¹ãã ãšãšãã«RAMã«ããŠã³ãããã /etc
ãµããŒããããŠããŸãã: èšå®ãä¿åããã«ã¯ãAPI ã䜿çšããããæ©èœãå¥ã®ã³ã³ãããŒã«ç§»åããå¿
èŠããããŸãã
APIæŽæ°ã¹ããŒã
ã»ãã¥ãªãã£
ã³ã³ããã¯ãLinux ã«ãŒãã«ã®æšæºã¡ã«ããºã (cgroupãåå空éãseccomp) ã«ãã£ãŠäœæããã匷å¶ã¢ã¯ã»ã¹å¶åŸ¡ã·ã¹ãã ãšããŠãã€ãŸãè¿œå ã®åé¢ã®ããã«äœ¿çšãããŸãã
ããã©ã«ãã§ã¯ãã³ã³ãããšã«ãŒãã«éã§ãªãœãŒã¹ãå ±æããããªã·ãŒãæå¹ã«ãªã£ãŠããŸãã ãã€ããªã¯ããŠãŒã¶ãŒãŸãã¯ããã°ã©ã ãå®è¡ã§ããªãããã«ãã©ã°ã§ä¿è·ãããŠããŸãã ãããŠããã¡ã€ã« ã·ã¹ãã ã«ã¢ã¯ã»ã¹ã§ããå ŽåãBottlerocket ã¯å ããããå€æŽã確èªããã³è¿œè·¡ããããŒã«ãæäŸããŸãã
ãæ€èšŒæžã¿ããŒããã¢ãŒãã¯ãdevice-mapper-verity é¢æ° (
ã·ã¹ãã ã«ã¯ãã£ã«ã¿ãŒããããŸã
å®è¡ã¢ãã«
ãŠãŒã¶ãŒå®çŸ©ã®
ç·šé
ã»ãã¥ãªãã£
æ
éã¢ãŒã
ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹
ãŠãŒã¶ãŒ
ãã£ã¬ã³ãž
ã¯ã
ä»»æã®
ãŠãŒã¶ãŒã®æš©å©
å®è¡ã®äžæ
ã·ã¹ãã ã³ãŒã«ãé害
ã³ã¢
ãã£ã¬ã³ãž
ããŒ
éç
ããŒ
ã«ãŒãã«ãããã¯
ã¹ãã¬ãŒã
BPF
ÑПбÑÑОе
ã¯ã
ãžãããã³ã¢ã¬
æ€èšŒãJIT
ãšã©ãŒã¡ãã»ãŒãž
éããããã«ããŒ
BPF ãšéåžžã®ãŠãŒã¶ãŒ ã¬ãã«ãŸãã¯ã«ãŒãã« ã¬ãã«ã®ã³ãŒãã®éã
AWSã¯ãBottlerocketã¯ã管çè æš©éã«ããéçšãµãŒããŒãžã®æ¥ç¶ãé²ãããšã§ã»ãã¥ãªãã£ãããã«åŒ·åããéçšã¢ãã«ãæ¡çšãããŠããããåã ã®ãã¹ãã®å¶åŸ¡ãå¶éãããŠãã倧èŠæš¡ãªåæ£ã·ã¹ãã ã«é©ããŠããããšè¿°ã¹ãã
管çè
ã³ã³ããã¯ã·ã¹ãã 管çè
åãã«æäŸãããŸãã ããã AWS ã¯ã管çè
ã Bottlerocket å
ã§äœæ¥ããå¿
èŠãé »ç¹ã«ãããšã¯èããŠããŸããããå¥ã® Bottlerocket ã€ã³ã¹ã¿ã³ã¹ã«ãã°ã€ã³ãããšããè¡çºã¯ãé«åºŠãªãããã°ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãªã©ãé »åºŠã®äœãæäœãç®çãšããŠããŸããã
Rustèšèª
ã«ãŒãã«äžã® OS ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã¯ãã»ãšãã©ã 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 ã AWS äžã§å®è¡ããä»ã® AWS ãµãŒãã¹ãšçµ±åã§ããããã« Bottlerocket ãæé©åããŠããããšã§ãã
æã人æ°ã®ããã³ã³ãã ãªãŒã±ã¹ãã¬ãŒã¿ãŒã¯ Kubernetes ã§ãããããAWS ã¯ç¬èªã® Enterprise Kubernetes Service (EKS) ãšã®çµ±åãå°å
¥ããŸããã ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ ããŒã«ã¯å¥ã®ã³ã³ãããŒã« ã³ã³ãããŒã«å«ãŸããŠããŸã
éå»ã«åæ§ã®åãçµã¿ãããã€ã倱æããããšãèãããšãBottlerocket ãè»éã«ä¹ããã©ããã¯èå³æ·±ããšããã§ãã ããšãã°ãVmware ã® PhotonOS ã¯è«æ±ãããŠããªãããšãå€æããRedHat 㯠CoreOS ãš
Bottlerocket ã AWS ãµãŒãã¹ã«çµ±åããããšã§ããã®ã·ã¹ãã ã¯ç¬èªã®æ¹æ³ã§ãŠããŒã¯ãªãã®ã«ãªããŸãã ããããããããäžéšã®ãŠãŒã¶ãŒã CoreOS ã Alpine ãªã©ã®ä»ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ããã Bottlerocket ã奜ãäž»ãªçç±ã§ãã ãã®ã·ã¹ãã ã¯åœåãEKS ããã³ ECS ãšé£æºããŠåäœããããã«èšèšãããŠããŸãããããã¯å¿
é ã§ã¯ãªãããšãç¹°ãè¿ããŸãã ãŸããããã«ãã±ãã猶
Bottlerocket ã®ãœãŒã¹ ã³ãŒãã¯ãApache 2.0 ã©ã€ã»ã³ã¹ã«åºã¥ã㊠GitHub ã§å
¬éãããŠããŸãã éçºè
ã¯ãã§ã«
åºåã®æš©å©ã«ã€ããŠ
VDSina æäŸ
åºæïŒ habr.com