Kubernetes Operator เป็นวิธีการปรับใช้แอปพลิเคชันที่ขยายความสามารถของ Kubernetes เพื่อจัดการ workload ที่ซับซ้อนและมีสถานะ (stateful) มากขึ้น ตัวอย่าง workload เหล่านี้รวมถึงฐานข้อมูล ระบบกระจายที่ใช้กลไก quorum และแอปพลิเคชันที่ไม่สามารถกำหนดค่าใหม่ในขั้นตอนเดียวได้ แม้กับ workload ที่ไม่มีสถานะ (stateless) Operators ก็ช่วยกำหนดนิยาม "แอปพลิเคชัน" บน Kubernetes ให้สม่ำเสมอ
เพื่อบรรลุทั้งหมดนี้ Kubernetes Operators เข้ารหัสแนวทางปฏิบัติที่ดีที่สุดและขั้นตอนปฏิบัติการสะสมเข้าเป็นซอฟต์แวร์ที่รันบน Kubernetes สิ่งที่เคยจัดการโดยสคริปต์และ site reliability engineers (SRE) นอกคลัสเตอร์ ตอนนี้ถูกควบคุมโดยส่วนขยาย Kubernetes แบบกำหนดเองที่รันบนคลัสเตอร์พร้อม workload ที่จัดการ ความสามารถของ Operators บางอย่างคือ การติดตั้งและอัปเดตที่ซับซ้อน เหตุการณ์วงจรชีวิต เช่น backup, restore, failover หรือ failback และการขยายขนาดขับเคลื่อนด้วยเมตริก
ในขณะที่การพัฒนา Kubernetes ส่วนใหญ่เน้นที่แอปพลิเคชัน stateless, front-end, API-centric Operators ช่วยนำส่วนที่เหลือของสแต็กเข้าสู่สภาพแวดล้อมได้เช่นกัน นี่ทำให้การกำหนดค่าและการจัดการง่ายขึ้นเมื่อ Kubernetes กลายเป็นมุมสำคัญของความเคลื่อนย้ายสำหรับแผนก IT และวิศวกรรม นอกจากนี้ Operators รองรับ uptime สูงขึ้น และแรงงานปฏิบัติการลดลงด้วยการแก้ไขการเบี่ยงเบนของการกำหนดค่า (configuration drift) อัตโนมัติ สามารถบรรลุได้ด้วยกลไกขยายของ Kubernetes เองที่ทำให้วิธีนี้เป็น platform-independent และขับเคลื่อนโดยชุมชน Kubernetes
Kubernetes Operators ทำงานอย่างไร
Operators เชื่อมต่อกับ Kubernetes master API และเฝ้าระวังเหตุการณ์ที่เกี่ยวข้อง พวกเขาทำหน้าที่เป็น Kubernetes controllers แบบกำหนดเอง นำประเภทออบเจกต์ของตนเองเข้าสู่คลัสเตอร์ที่เปรียบเทียบ desired state กับ actual state ตลอดเวลา Desired state ประกาศใน YAML และแสดงโดยผู้ใช้ที่สร้าง Kubernetes objects
Operator เฝ้าระวัง Custom Resource Definitions หรือเหตุการณ์เหล่านี้ และเริ่มรันลูปของมันทุกครั้งที่ออบเจกต์เหล่านี้ปรากฏ ถูกอัปเดต หรือถูกลบ Operators รันเป็น Kubernetes Pods บนคลัสเตอร์
Operators ติดตั้งโดยผู้ดูแลคลัสเตอร์ แต่สร้างขึ้นเพื่อช่วยผู้ใช้ปลายทาง วิธีที่ Operators รวมกับ Kubernetes ช่วยให้ผู้ใช้ยังคงใช้เครื่องมือ kubectl และจัดการซอฟต์แวร์ที่ซับซ้อนได้เหมือนกับทรัพยากร Kubernetes built-in ที่ primitive กว่า