ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~13 นาที

Operators และ CRD — ต่อขยาย K8s เอง

สอน K8s ให้รู้จัก resource ใหม่ และดูแลมันอัตโนมัติ

เปรียบเทียบให้เห็นภาพ

CRD เหมือนสอนคำศัพท์ใหม่ให้ K8s (เช่นคำว่า Database) · Operator เหมือนจ้างผู้เชี่ยวชาญประจำที่รู้วิธีดูแลของชนิดนั้น (backup, failover, upgrade ฐานข้อมูลให้เอง) — เอา know-how ของ admin มาใส่ในโค้ด

CustomResourceDefinition (CRD) ให้เรานิยาม resource ชนิดใหม่นอกเหนือจาก Pod/Deployment · Operator คือ controller ที่เฝ้า resource ชนิดนั้นแล้ว reconcile ให้เป็นไปตาม desired state — ขยายแนวคิด "desired vs current" ของ K8s ไปสู่แอปซับซ้อน

ตัวอย่างจริง: ติดตั้ง Prometheus Operator แล้วสร้าง resource ServiceMonitor · หรือ database operator ที่คุณสร้าง PostgresCluster object แล้วมันจัดการ replica/backup ให้เองทั้งหมด

สรุป Key Takeaways

  • CRD = นิยาม resource ชนิดใหม่ให้ K8s รู้จัก
  • Operator = controller ที่ดูแล resource นั้นตามหลัก desired vs current (know-how เป็นโค้ด)
  • ระบบนิเวศ K8s ส่วนใหญ่สร้างบน CRD+Operator — เริ่มจาก "ใช้" ก่อน "เขียน"
อ่านจบแล้วอย่าลืมทำเครื่องหมาย