• การชันสูตรเหตุขัดข้อง
  • บริการคลาวด์
  • เหตุการณ์

การชันสูตรเหตุขัดข้อง: ไม่พบภาพ Docker

รายงานเหตุการณ์สำหรับการที่บริการ Logto หยุดทำงานเมื่อวันที่ 2023-12-17 เนื่องจากการสูญเสียภาพ Docker ที่ใช้ในการผลิต

Simeng
Simeng
Developer

สรุป

เราได้ประสบปัญหาการให้บริการหยุดทำงานเมื่อวันที่ 2023-12-17 เนื่องจากการสูญเสียภาพ Docker ที่ใช้ในการผลิตของ Logto

  • เวลาที่เกิดเหตุ: 2023-12-17 03:56:00 UTC
  • ระยะเวลาเหตุการณ์: 18 นาที
  • ผลกระทบต่อบริการ: บริการคลาวด์ของ Logto และบริการหลักของ Logto ไม่สามารถใช้งานได้ในช่วงเกิดเหตุ
  • ระดับผลกระทบ: ร้ายแรง
  • สาเหตุหลัก: ภาพ Docker ที่ใช้ในการผลิตของ Logto ถูกลบโดยความผิดพลาด ไม่สามารถดึงภาพจาก GitHub Container Registry ได้

ไทม์ไลน์

เวลาเหตุการณ์
ต้นวันที่ 2023-12-17 (ไม่ทราบเวลาแน่ชัด)การทำงานอัตโนมัติของ GitHub ที่เก็บรักษาภาพ logto และ logto-cloud ถูกลบโดยความผิดพลาด
2023-12-17 03:56:00 UTCบริการคลาวด์ของ Logto และบริการหลักของ Logto ไม่สามารถใช้งานได้ ตรวจพบเหตุการณ์โดยระบบตรวจสอบของเรา
2023-12-17 04:03:00 UTCวิศวกรที่อยู่เวรรับทราบเหตุการณ์
2023-12-17 04:10:00 UTCมีการปรับใช้ใหม่สำหรับบริการคลาวด์ของ Logto และบริการหลักของ Logto ด้วยภาพล่าสุด
2023-12-17 04:15:00 UTCบริการคลาวด์ของ Logto และบริการหลักของ Logto กลับมาใช้งานได้ เหตุการณ์ยุติโดยอัตโนมัติ

การวิเคราะห์เหตุการณ์

สิ่งที่เกิดขึ้น

ภาพที่ใช้ในการผลิตบริการ Logto ถูกลบโดยการทำงานอัตโนมัติของ GitHub สำหรับการเก็บรักษาภาพ บริการคลาวด์ไม่สามารถดึงภาพจาก GitHub Container Registry ได้และไม่สามารถใช้งานได้

การบันท�ึกบริการ

ทำไมถึงเกิดขึ้น

การทำงานอัตโนมัติของ GitHub ที่เก็บรักษาภาพ ได้ลบภาพที่ใช้ในการผลิตออกโดยความผิดพลาด การทำงานถูกออกแบบมาเพื่อลบภาพที่ไม่มีการติดแท็กทั้งหมดที่เก่ากว่า 3 วัน

เราได้ติดแท็กภาพที่ใช้ในการผลิตด้วยแท็ก prod เพื่อระบุว่าเป็นภาพที่ใช้ในการผลิต ทุกครั้งที่มีการทำการปรับใช้สำหรับการผลิต จะมีการสร้างภาพใหม่พร้อมกับแท็ก prod และผลักดันไปที่ GitHub Container Registry หลังจากสร้างและผลักดันภาพใหม่สำเร็จ แท็ก prod จะถูกนำออกจากภาพเก่า ภาพเก่าจะไม่มีการติดแท็กและจะถูกลบโดยการทำงานอัตโนมัติของ GitHub ที่เก็บรักษาภาพ

ภาพบริการ Logto ถูกสร้างขึ้นเพื่อรองรับหลายสถาปัตยกรรม ภาพถูกสร้างด้วย buildx และผลักดันไปที่ GitHub Container Registry พร้อมกับธง --platform ทุกแท็กถูกนำไปใช้กับรายการแม่แบบราก แท็ก prod ก็ถูกนำไปใช้กับรายการแม่แบบรากเช่นเดียวกัน ภาพย่อยทั้งหมดที่อยู่ภายใต้รายการแม่แบบหลายสถาปัตยกรรมจะไม่มีการติดแท็ก

เนื่องจากขาดการตรวจสอบอย่างรอบคอบในโครงสร้างแท็กและรายการแม่แบบของภาพ Docker เราจึงได้ตั้งค่าการทำงานอัตโนมัติของ GitHub เพื่อเก็บรักษาภาพในการลบภาพที่ไม่มีการติดแท็กทั้งหมด การทำงานได้ลบภาพย่อยทั้งหมดที่อยู่ภายใต้รายการแม่แบบหลายสถาปัตยกรรม

ผลกระทบ

เหตุการณ์นี้ทำให้บริการคลาวด์ของ Logto และบริการหลักของ Logto ไม่สามารถใช้งานได้ประมาณ 18 นาที ผู้ใช้ปลายทางไม่สามารถเข้าสู่ระบบ Logto และเข้าถึงแอปพลิเคชันลูกค้าของพวกเขาได้ พอร์ทัลผู้ดูแลระบบ Logto คลาวด์ก็ไม่สามารถใช้งานได้ในช่วงเกิดเหตุ

การแก้ไข

เราได้หยุดการทำงานอัตโนมัติของ GitHub สำหรับการเก็บรักษาภาพและปรับใช้ภาพใหม่พร้อมกับแท็ก prod ไปที่ GitHub Container Registry ภาพใหม่ถูกดึงไปยังบริการคลาวด์ของ Logto และบริการหลักของ Logto สำเร็จ บริการกลับมาใช้งานได้อีกครั้ง

บทเรียนที่ได้เรียนรู้

  • ไม่ควรเผยแพร่การทำงานโดยไม่มีการตรวจสอบและทดสอบอย่างละเอียดในสภาพแวดล้อมการผลิต
  • ทดสอบการลบทรัพยากรใด ๆ อย่างครบถ้วนก่อนที่จะทำการรัน
  • ควรมีแผนสำรองสำหรับสภาพแวดล้อมการผลิตเสมอ
  • กำหนดนโยบายการเก็บภาพใหม่อย่างระมัดระวัง

มาตรการแก้ไขและป้องกัน

  • ✅ หยุดการทำงานอัตโนมัติของ GitHub สำหรับการเก็บรักษาภาพทันที