k8s-image-builder เผชิญข้อจำกัดจาก Red Hat Family แม้จะมีเทคโนโลยี Container-to-VM ที่น่าสนใจ

ทีมชุมชน BigGo
k8s-image-builder เผชิญข้อจำกัดจาก Red Hat Family แม้จะมีเทคโนโลยี Container-to-VM ที่น่าสนใจ

โปรเจกต์ k8s-image-builder มอบอนาคตที่น่าตื่นเต้นที่นักพัฒนาสามารถแปลง container images ให้เป็น virtual machines ที่สามารถ boot ได้โดยตรงภายใน Kubernetes clusters เครื่องมือนี้มีเป้าหมายเพื่อเชื่อมช่องว่างระหว่างแอปพลิเคชันแบบ containerized กับโครงสร้างพื้นฐาน VM แบบดั้งเดิม โดยเสนอการสร้าง image อัตโนมัติจาก Dockerfiles หรือการกำหนดค่า Kustomize ในสภาพแวดล้อม CI/CD

รูปแบบอิมเมจที่รองรับ

  • QCOW2 (รูปแบบเวอร์ชวลไลเซชันเริ่มต้น)
  • RAW disk images
  • SquashFS (ระบบไฟล์แบบบีบอัดอ่านอย่างเดียว)
  • Directory archives
  • OCI container images

ข้อจำกัดของ Red Hat Family ทำให้ชุมชนเกิดความกังวล

แม้จะมีเป้าหมายที่ทะเยอทะยาน แต่โปรเจกต์นี้ในปัจจุบันเผชิญกับข้อจำกัดสำคัญที่ได้รับความสนใจจากชุมชนนักพัฒนา เครื่องมือนี้รองรับเฉพาะระบบปฏิบัติการตระกูล Red Hat เท่านั้น รวมถึง Fedora, CentOS Stream และ RHEL ข้อจำกัดนี้เกิดจากการเรียกใช้ package manager DNF แบบ hardcoded ภายในการดำเนินการปัจจุบัน ซึ่งทำให้ Debian-based และ Linux distributions อื่นๆ ไม่สามารถใช้ในกระบวนการ build ได้

สมาชิกในชุมชนได้แสดงความไม่พอใจต่อข้อจำกัดนี้ โดยตั้งคำถามว่าทำไมเครื่องมือสำหรับ deploy OS จึงถูกจำกัดให้ใช้กับ package managers เฉพาะ ในขณะที่ระบบปฏิบัติการโดยพื้นฐานแล้วคือชุดของไฟล์ที่ควรทำงานได้โดยไม่คำนึงว่า packages จะถูกติดตั้งผ่าน RPM หรือ DEB formats

ข้อจำกัดการรองรับระบบปฏิบัติการในปัจจุบัน

  • รองรับ: เฉพาะตระกูล Red Hat เท่านั้น ( Fedora , CentOS Stream , RHEL )
  • ไม่รองรับ: Debian , Ubuntu , SUSE , Arch Linux และดิสทริบิวชันอื่นๆ
  • สาเหตุหลัก: การเรียกใช้ตัวจัดการแพ็กเกจ DNF แบบฮาร์ดโค้ดในการดำเนินการ

วิธีแก้ไขทางเลือกและการแก้ปัญหาชั่วคราว

การอภิปรายได้เน้นย้ำถึงแนวทางทางเลือกหลายวิธีสำหรับการบรรลุฟังก์ชันการทำงานที่คล้ายกัน ผู้ใช้ NixOS ได้ชี้ให้เห็นความสามารถที่มีอยู่แล้วในการสร้าง VM images โดยใช้คำสั่งง่ายๆ ในขณะที่คนอื่นๆ ได้กล่าวถึงเครื่องมือ GUI เช่น bootc extension ของ Podman Desktop สำหรับการทดลองแนวคิด OS-as-container-image ได้ง่ายขึ้น

โปรเจกต์เช่น Bazzite ได้นำแนวทาง OS as a Container image มาใช้แล้วโดยใช้เทคโนโลยี bootc ซึ่งแสดงให้เห็นถึงศักยภาพของระเบียบวิธีนี้เมื่อได้รับการดำเนินการอย่างเหมาะสมในแต่ละ Linux distributions

การดำเนินการทางเทคนิคและกรณีการใช้งาน

k8s-image-builder รองรับรูปแบบ output หลายแบบรวมถึง QCOW2, RAW disk images และ SquashFS filesystems มันรวมเข้ากับ cloud providers เช่น AWS สำหรับการสร้าง AMI อัตโนมัติ และรวมถึงฟีเจอร์สำหรับการจัดการผู้ใช้แบบกำหนดเอง การกำหนดค่า filesystem และการแก้ไข kernel parameter

สำหรับสภาพแวดล้อม virtualization เช่น ESXi แนวทางนี้อาจช่วยลดความซับซ้อนของ workflow แบบ Packer-based แบบดั้งเดิมที่ต้องการการโต้ตอบกับไฟล์ ISO บนโครงสร้างพื้นฐาน virtualization อย่างไรก็ตาม ข้อจำกัดปัจจุบันของ Red Hat ป้องกันไม่ให้หลายองค์กรสามารถนำแนวทางที่เรียบง่ายนี้มาใช้ได้

สถาปัตยกรรมของโปรเจกต์อนุญาตให้มีการปรับแต่งอย่างกว้างขวางผ่านไฟล์การกำหนดค่า JSON โดยรองรับทุกอย่างตั้งแต่การสร้างบัญชีผู้ใช้ไปจนถึงการแบ่งพาร์ติชัน filesystem และการกำหนดค่า proxy ความยืดหยุ่นนี้ทำให้มันน่าสนใจเป็นพิเศษสำหรับองค์กรที่ต้องการมาตรฐานกระบวนการ VM provisioning ของตน

ฟีเจอร์การรวมระบบคลาวด์

  • การสร้าง AWS AMI พร้อมการอัปโหลดอัตโนมัติ
  • การรวมระบบ S3 bucket สำหรับการจัดเก็บอิมเมจ
  • รองรับการเข้ารหัส KMS
  • การจัดการข้อมูลรับรองผ่าน environment variable
  • รองรับการ build แบบหลายสถาปัตยกรรม ( AMD64 เป็นค่าเริ่มต้น)

แนวโน้มในอนาคต

แม้ว่า k8s-image-builder จะเป็นตัวแทนของแนวทางที่นวัตกรรมสำหรับการสร้าง VM image แต่ข้อจำกัดปัจจุบันของมันเน้นย้ำถึงความท้าทายในการสร้างเครื่องมือที่ใช้ได้จริงอย่างแท้จริงในระบบนิเวศ Linux ที่หลากหลาย ข้อเสนอแนะของชุมชนแสดงให้เห็นถึงความต้องการที่แข็งแกร่งสำหรับการรองรับ distribution ที่กว้างขึ้น ซึ่งสามารถขยายการนำไปใช้ของเครื่องมือได้อย่างมีนัยสำคัญหากได้รับการแก้ไขในรุ่นต่อๆ ไป

รากฐานของโปรเจกต์ดูเหมือนจะแข็งแกร่ง พร้อมด้วยเอกสารที่ครอบคลุมและความสามารถในการรวมเข้าด้วยกันที่สามารถตอบสนองความต้องการขององค์กรได้ดีเมื่อข้อจำกัดของ distribution ได้รับการแก้ไข

อ้างอิง: k8s-image-builder