• 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น