เมื่อเร็ว ๆ นี้ ประกาศเปิดตัวแล้ว ของการแจกจ่าย Linux เวอร์ชันใหม่ "Bottlerocket 1.7.0"ที่พัฒนาขึ้นโดยมีส่วนร่วมของ Amazon เพื่อเรียกใช้คอนเทนเนอร์แบบแยกส่วนอย่างมีประสิทธิภาพและปลอดภัย
สำหรับผู้ที่เพิ่งเริ่มใช้ Bottlerocket คุณควรรู้ว่านี่คือการแจกจ่ายที่ให้อิมเมจระบบที่แบ่งแยกไม่ได้ที่เป็นปัจจุบันโดยอัตโนมัติ ซึ่งรวมถึงเคอร์เนล Linux และสภาพแวดล้อมระบบขั้นต่ำที่มีเฉพาะส่วนประกอบที่จำเป็นในการรันคอนเทนเนอร์
เกี่ยวกับ Bottlerocket
สภาพแวดล้อม ใช้ตัวจัดการระบบ systemd, ไลบรารี Glibc, เครื่องมือบิลด์ Buildroot, บูตโหลดเดอร์ GRUB, รันไทม์แซนด์บ็อกซ์คอนเทนเนอร์, แพลตฟอร์มการจัดการคอนเทนเนอร์ Kubernetes, ตัวตรวจสอบสิทธิ์ aws-iam และตัวแทน Amazon ECS
เครื่องมือจัดการคอนเทนเนอร์มาในคอนเทนเนอร์การจัดการแยกต่างหากที่เปิดใช้งานโดยค่าเริ่มต้นและจัดการผ่านตัวแทน AWS SSM และ API อิมเมจฐานไม่มีเชลล์คำสั่ง เซิร์ฟเวอร์ SSH และภาษาที่แปลแล้ว (เช่น Python หรือ Perl): เครื่องมือการดูแลระบบและการแก้ไขข้อบกพร่องจะถูกย้ายไปยังคอนเทนเนอร์บริการแยกต่างหาก ซึ่งถูกปิดใช้งานโดยค่าเริ่มต้น
ความแตกต่างที่สำคัญจากการแจกแจงที่คล้ายกัน เช่น Fedora CoreOS, CentOS / Red Hat Atomic Host เป็นจุดเน้นหลักในการให้ความปลอดภัยสูงสุด ในบริบทของการเสริมสร้างการป้องกันระบบจากภัยคุกคามที่อาจเกิดขึ้น ซึ่งทำให้การใช้ประโยชน์จากช่องโหว่ในส่วนประกอบของระบบปฏิบัติการมีความซับซ้อน และเพิ่มการแยกคอนเทนเนอร์
คอนเทนเนอร์ถูกสร้างขึ้นโดยใช้กลไกเคอร์เนลปกติของ Linux: cgroups, เนมสเปซ และ seccomp สำหรับการแยกเพิ่มเติม การแจกจ่ายใช้ SELinux ในโหมด "แอปพลิเคชัน"
พาร์ติชั่นรูทถูกเมาท์แบบอ่านอย่างเดียว และพาร์ติชันที่มีคอนฟิกูเรชัน /etc ถูกเมาท์ใน tmpfs และกู้คืนเป็นสถานะดั้งเดิมหลังจากรีบูต ไม่รองรับการแก้ไขไฟล์โดยตรงในไดเร็กทอรี /etc เช่น /etc/resolv.conf และ /etc/containerd/config.toml หากต้องการบันทึกการกำหนดค่าอย่างถาวร คุณต้องใช้ API หรือย้ายฟังก์ชันการทำงานไปยังคอนเทนเนอร์แยกต่างหาก
สำหรับการตรวจสอบความถูกต้องเชิงเข้ารหัสของความสมบูรณ์ของพาร์ติชันรูท จะใช้โมดูล dm-verity และหากตรวจพบความพยายามที่จะแก้ไขข้อมูลที่ระดับอุปกรณ์บล็อก ระบบจะรีบูต
ส่วนประกอบของระบบส่วนใหญ่เขียนด้วยภาษาสนิม ซึ่งจัดเตรียมเครื่องมือที่ปลอดภัยสำหรับหน่วยความจำเพื่อป้องกันช่องโหว่ที่เกิดจากการระบุพื้นที่หน่วยความจำหลังจากที่ปล่อยว่างแล้ว การยกเลิกการอ้างอิงตัวชี้ null และบัฟเฟอร์โอเวอร์โฟลว์
เมื่อทำการคอมไพล์ โหมดคอมไพล์ "–enable-default-pie" และ "–enable-default-ssp" จะถูกใช้โดยค่าเริ่มต้นเพื่อเปิดใช้งานการสุ่มพื้นที่ปฏิบัติการ (PIE) และการป้องกันสแต็กโอเวอร์โฟลว์ผ่านการแทนที่แท็ก canary
มีอะไรใหม่ใน Bottlerocket 1.7.0
ในการแจกจ่ายเวอร์ชันใหม่ที่นำเสนอนี้ หนึ่งในการเปลี่ยนแปลงที่โดดเด่นก็คือ เมื่อติดตั้งแพ็คเกจ RPM จะมีให้เพื่อสร้างรายการโปรแกรมในรูปแบบ JSON และติดตั้งกับโฮสต์คอนเทนเนอร์เป็นไฟล์ /var/lib/bottlerocket/inventory/application.json เพื่อรับข้อมูลเกี่ยวกับแพ็คเกจที่มี
จุดเด่นใน Bottlerocket 1.7.0 คือ อัปเดตคอนเทนเนอร์ "ผู้ดูแลระบบ" และ "ควบคุม"รวมถึงเวอร์ชันของแพ็คเกจและการอ้างอิงสำหรับ Go และ Rust
อีกด้านหนึ่งไฮไลท์ แพ็คเกจเวอร์ชันอัปเดตพร้อมโปรแกรมบุคคลที่สาม ยังแก้ไขปัญหาการกำหนดค่า tmpfilesd สำหรับ kmod-5.10-nvidia และเมื่อติดตั้งเวอร์ชันการพึ่งพา tuftool จะถูกเชื่อมโยง
สุดท้ายสำหรับผู้ที่เป็น สนใจเรียนรู้เพิ่มเติม เกี่ยวกับการแจกจ่ายนี้ คุณควรรู้ว่าชุดเครื่องมือและส่วนประกอบการควบคุมการแจกจ่ายนั้นเขียนด้วยภาษา Rust และเผยแพร่ภายใต้ลิขสิทธิ์ MIT และ Apache 2.0
จรวดขวด รองรับการรันคลัสเตอร์ Amazon ECS, VMware และ AWS EKS Kubernetes เช่นเดียวกับการสร้างบิลด์และรุ่นแบบกำหนดเองที่เปิดใช้งานการประสานกันและเครื่องมือรันไทม์ที่แตกต่างกันสำหรับคอนเทนเนอร์
สามารถตรวจสอบรายละเอียด, ในลิงค์ต่อไปนี้.