- Glasskube ถูกแนะนำว่าเป็น ตัวจัดการแพ็กเกจโอเพนซอร์ส สำหรับ Kubernetes ที่ทำให้การ deploy, update และ configuration เร็วกว่า 20 เท่า เมื่อเทียบกับเครื่องมืออย่าง Helm หรือ Kustomize
- ผู้ใช้สามารถ deploy แพ็กเกจได้ผ่าน UI ของ Glasskube, CLI หรือแนวทาง GitOps โดยได้รับแรงบันดาลใจจากความเรียบง่ายของ Homebrew และ npm
- ฟีเจอร์หลักรวมถึงการติดตั้งแพ็กเกจจาก UI โดยไม่ต้องค้นหา Helm repository, การกรอกค่า configuration แบบ type-safe, การ inject ค่าระหว่างแพ็กเกจ, การติดตั้งที่เข้าใจ dependency และ การอัปเดตที่ปลอดภัย ซึ่งผ่านการทดสอบล่วงหน้า
- แพ็กเกจ Glasskube ทั้งหมดถูกจัดการเป็น custom resource และจัดการผ่าน GitOps ได้ อีกทั้งยังรองรับหลาย repository และการ deploy private package
- ปัจจุบันรองรับ Kubernetes Dashboard, cert-manager, Ingress-NGINX Controller, Kube Prometheus Stack, Cloud Native PG และอื่น ๆ โดยเวอร์ชันเบต้าสามารถติดตั้งผ่าน Homebrew ได้
ปัญหาการจัดการแพ็กเกจ Kubernetes ที่ Glasskube ต้องการแก้
- Glasskube คือ ตัวจัดการแพ็กเกจโอเพนซอร์สสำหรับ Kubernetes
- ถูกแนะนำว่าทำให้การ deploy, update และ configuration แพ็กเกจบน Kubernetes เร็วกว่า 20 เท่า เมื่อเทียบกับเครื่องมืออย่าง Helm หรือ Kustomize
- ได้รับแรงบันดาลใจจากความเรียบง่ายของ Homebrew และ npm โดยผู้ใช้สามารถเลือกได้จากวิธีต่อไปนี้
- UI ของ Glasskube
- CLI ของ Glasskube
- deploy แพ็กเกจโดยตรงผ่าน GitOps
- ที่มาของการพัฒนาคือประสบการณ์ทำงานใน ecosystem ของ Kubernetes มากกว่า 5 ปี และพบความยากลำบากอย่างต่อเนื่องในการจัดการแพ็กเกจ, configuration และ deployment
- ในงานเดิม ต้องใช้เวลามากไปกับการสร้าง template และเขียนเอกสารสำหรับคำสั่งและแนวคิดที่เข้าใจยาก
- เครื่องมืออย่าง Homebrew, apt และ dnf ถูกใช้เป็นจุดเปรียบเทียบในการพัฒนา Glasskube เพราะใช้งานง่ายและมีปัญหาน้อย
ขั้นตอนการติดตั้งและตั้งค่า
- เวอร์ชันเบต้าสามารถติดตั้งได้ด้วย Homebrew
brew install glasskube/tap/glasskube
- ตัวเลือกการติดตั้งอื่น ๆ อยู่ใน installation guide
- หลังติดตั้ง CLI แล้ว ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง component ที่จำเป็นลงในคลัสเตอร์
glasskube bootstrap
- เมื่อ bootstrap คลัสเตอร์เสร็จแล้ว สามารถเริ่ม UI ของตัวจัดการแพ็กเกจได้
glasskube serve
- คำสั่งนี้จะเปิด
http://localhost:8580 ในเบราว์เซอร์เริ่มต้น และผู้ใช้สามารถสำรวจและติดตั้งแพ็กเกจที่มีให้ใช้งานได้
UI, configuration และฟีเจอร์จัดการ dependency
- UI ของ Glasskube รวมแพ็กเกจทั้งหมดไว้ในที่เดียว ทำให้ผู้ใช้ติดตั้งแพ็กเกจลงในคลัสเตอร์ได้โดยไม่ต้องค้นหา Helm repository แยกต่างหาก
- การตั้งค่าแพ็กเกจ สามารถกำหนดด้วย input แบบ type-safe ผ่าน UI หรือแบบสอบถามเชิงโต้ตอบใน CLI
- สามารถ inject ค่าจากแพ็กเกจอื่น, ConfigMap และ Secret ได้อย่างง่ายดาย
- นำเสนอแนวทางที่ไม่ต้องใช้ไฟล์
values.yaml ที่ไม่มี type และไม่มีเอกสารประกอบ
- การจัดการ dependency ทำให้แพ็กเกจ Glasskube สามารถถูกใช้งานและอ้างอิงจากแพ็กเกจอื่นหลายตัวได้
- แพ็กเกจ dependency จะถูกติดตั้งใน namespace ที่ถูกต้อง
- README อธิบายสิ่งนี้ในทำนองว่า “umbrella chart ควรทำงานแบบนี้มาตั้งแต่แรกแล้ว”
การอัปเดต, GitOps และการรองรับ repository
- การอัปเดตแพ็กเกจ สามารถ preview pending update ไปยังเวอร์ชันที่ต้องการ และดำเนินการได้ด้วยคลิกเดียวหรือคำสั่ง CLI
- การอัปเดตทั้งหมดผ่านการทดสอบล่วงหน้าด้วย test suite ของ Glasskube
- สามารถฝาก feedback และคอมเมนต์เกี่ยวกับแพ็กเกจได้ที่ GitHub discussions หรือภายใน UI ของ Glasskube
- การผสานรวม GitOps อิงกับแนวทางที่จัดการแพ็กเกจ Glasskube ทั้งหมดเป็น custom resource
- การผสานรวม Renovate กำลังอยู่ระหว่างดำเนินการ โดย issue ที่เกี่ยวข้องอยู่ที่ renovatebot/renovate#29322
- สามารถใช้หลาย repository และ private package ได้
- ใช้สำหรับ deploy แพ็กเกจ service ภายในบริษัทได้
- นำเสนอสถานการณ์ที่ช่วยให้นักพัฒนาตั้งค่า service ภายในให้เป็นเวอร์ชันล่าสุดได้อย่างง่ายดาย
สถาปัตยกรรมการติดตั้งแพ็กเกจ
- flow ของ
glasskube install [package] เป็นโครงสร้างที่ UI หรือ CLI ใช้ทั้ง package repository และ Kubernetes API ผ่าน Client
- UI เชื่อมต่อกับ Client ผ่าน local server
http://localhost:8580
- CLI เชื่อมต่อกับ Client ผ่าน cobra CLI
- Client จะตรวจสอบ Package Repo ก่อนเพื่อ ตรวจสอบความถูกต้องของแพ็กเกจ
- หลังตรวจสอบแล้ว จะสร้าง custom resource ชื่อ
Package ใน Kubernetes API
- ภายในคลัสเตอร์
PackageController และ PackageInfoController จะทำการ reconcile
PackageController reconcile Package และสร้าง PackageInfo หากจำเป็น
PackageInfoController อัปเดต package manifest จาก package repository
- manifest ที่อัปเดตแล้วจะสะท้อนอยู่ใน
PackageInfo
- จากนั้น
PackageController จะ deploy แพ็กเกจไปยัง Kubernetes
- Kubernetes จะส่งสถานะแพ็กเกจกลับไปยัง Client
แพ็กเกจที่รองรับและข้อมูลโปรเจกต์
- Glasskube รองรับแพ็กเกจหลายรายการแล้ว
- ดูรายชื่อแพ็กเกจที่รองรับและมีแผนรองรับทั้งหมดได้ที่ glasskube.dev/packages
- โปรเจกต์ที่เกี่ยวข้องคือ Glasskube Apps Operator
glasskube/operator
- สามารถแจ้งปัญหา, บั๊ก และคำขอฟีเจอร์ได้ผ่าน Discord หรือ GitHub issue
- Glasskube เผยแพร่ภายใต้ สัญญาอนุญาต Apache 2.0
ยังไม่มีความคิดเห็น