Chuyển đến nội dung chính
Quay lại danh sách bài viết

ConfigMap แยกค่าตั้งค่าแอปออกจากอิมเมจคอนเทนเนอร์

ConfigMap เก็บค่าตั้งค่าที่ไม่ใช่ความลับและส่งให้ Pod ผ่าน environment variable หรือไฟล์ อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ

ConfigMap แยกค่าตั้งค่าแอปออกจากอิมเมจคอนเทนเนอร์

ConfigMap เก็บค่าตั้งค่าที่ไม่ใช่ความลับและส่งให้ Pod ผ่าน environment variable หรือไฟล์ เหมาะกับค่าที่ต่างกันระหว่างทดสอบและ production เช่น endpoint หรือ feature flag ที่ไม่ใช่ข้อมูลลับ บทความนี้สรุปแนวคิดจากเอกสารทางการของ Kubernetes และจุดที่ควรตรวจเมื่อนำไปใช้จริง

ภาพรวม

Kubernetes ใช้ตัวควบคุมปรับสถานะคลัสเตอร์ให้ตรงกับค่าที่ประกาศไว้ การเข้าใจ resource และความสัมพันธ์ระหว่าง Pod, Service กับ Node ช่วยให้ออกแบบระบบที่ฟื้นตัวได้

หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: ConfigMap เก็บค่าตั้งค่าที่ไม่ใช่ความลับและส่งให้ Pod ผ่าน environment variable หรือไฟล์ จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ

หลักการทำงาน

ผู้ดูแลสร้าง ConfigMap แยกจากอิมเมจ แล้วให้ workload อ้างอิงคีย์หรือ mount เป็น volume ตามรูปแบบที่แอปรองรับ

ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม

เหมาะกับงานแบบไหน

เหมาะกับค่าที่ต่างกันระหว่างทดสอบและ production เช่น endpoint หรือ feature flag ที่ไม่ใช่ข้อมูลลับ

ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง

ขั้นตอนนำไปใช้

  1. ตรวจ resource และ namespace ที่จะเปลี่ยน พร้อมดู workload ที่พึ่งพากัน
  2. ทดลอง manifest แล้วดู event, rollout และสถานะ Pod
  3. กำหนดวิธีย้อน manifest และตรวจข้อมูลที่ต้องคงอยู่

เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน

ข้อควรระวัง

อย่าเก็บรหัสผ่านหรือ token ใน ConfigMap และตรวจว่าแอปรับค่าที่เปลี่ยนใหม่โดยไม่ต้อง restart หรือไม่

แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ

สรุป

ConfigMap เก็บค่าตั้งค่าที่ไม่ใช่ความลับและส่งให้ Pod ผ่าน environment variable หรือไฟล์ เหมาะกับค่าที่ต่างกันระหว่างทดสอบและ production เช่น endpoint หรือ feature flag ที่ไม่ใช่ข้อมูลลับ ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่

อ่านเพิ่มเติม: เอกสารทางการของ Kubernetes

Chia sẻ bài viết:
Xem thêm bài viết