Deutsch
  • nachbesprechung
  • cloud-dienst
  • vorfall

Nachbesprechung: Docker-Image nicht gefunden

Vorfallsbericht für den Ausfall des Logto-Dienstes am 17.12.2023 aufgrund des Verlusts des Produktions-Docker-Images.

Simeng
Simeng
Developer

Zusammenfassung

Wir haben am 17.12.2023 einen Diensteseitigen Ausfall erlebt, da das Logto-Produktions-Docker-Image verloren ging.

  • Vorfallszeit: 2023-12-17 03:56:00 UTC
  • Dauer des Vorfalls: 18 Minuten
  • Dienstauswirkung: Logto-Cloud-Dienst und Logto-Kerndienst waren während des Vorfalls nicht verfügbar.
  • Auswirkungsgrad: Kritisch
  • Ursache: Logto-Produktions-Docker-Image wurde versehentlich gelöscht. Fehler beim Abrufen des Images aus dem GitHub Container Registry.

Zeitachse

ZeitEreignis
Früher 2023-12-17 (genaue Uhrzeit unbekannt)Logto automatisierter GitHub-Image-Rückhalteprozess wurde ausgeführt. logto und logto-cloud Produktionsimages wurden versehentlich gelöscht.
2023-12-17 03:56:00 UTCLogto-Cloud-Dienst und Logto-Kerndienst wurden nicht verfügbar. Vorfall wurde von unserem Überwachungssystem erkannt.
2023-12-17 04:03:00 UTCVorfall wurde von unserem Bereitschaftsingenieur anerkannt.
2023-12-17 04:10:00 UTCNeue Bereitstellung des Logto-Cloud-Dienstes und Logto-Kerndienstes wurde mit dem neuesten Image ausgelöst.
2023-12-17 04:15:00 UTCLogto-Cloud-Dienst und Logto-Kerndienst wurden wieder verfügbar. Vorfall wurde automatisch gelöst.

Vorfallsanalyse

Was passiert ist

Logto-Produktionsimages wurden durch unseren automatisierten GitHub-Image-Rückhalteprozess gelöscht. Der Cloud-Dienst konnte das Image nicht aus dem GitHub Container Registry abrufen und wurde nicht verfügbar.

Diensteprotokoll

Warum es passiert ist

Der automatisierte GitHub-Image-Rückhalteprozess hat die Produktionsimages versehentlich gelöscht. Der Workflow war so konzipiert, dass alle nicht gekennzeichneten alten Images, die älter als 3 Tage sind, gelöscht werden.

Wir haben die Produktionsimages mit dem Tag prod versehen, um sie als Produktionsimages zu identifizieren. Jedes Mal, wenn eine Produktionsbereitstellung ausgelöst wird, wird ein neues Image mit dem Tag prod erstellt und in das GitHub Container Registry hochgeladen. Der prod Tag wird von dem alten Image entfernt, sobald das neue Image erfolgreich erstellt und hochgeladen wurde. Das alte Image wird dadurch nicht gekennzeichnet und vom automatisierten GitHub-Image-Rückhalteprozess gelöscht.

Logto-Dienst-Images wurden so aufgebaut, dass sie mehrere Architekturen unterstützen. Das Image wurde mit buildx gebaut und mit dem --platform Flag in das GitHub Container Registry hochgeladen. Alle Tags wurden auf die Hauptmanifest-Liste angewendet. Der prod Tag wurde ebenfalls auf die Hauptmanifest-Liste angewendet. Alle Teil-Images, die unter der Multi-Arch-Manifest-Liste aufgelistet sind, bleiben unmarkiert.

Aufgrund eines Mangels an sorgfältiger Überprüfung der Tag- und Manifestlistenstruktur des Docker-Images haben wir einfach den automatisierten GitHub-Image-Rückhalteprozess so konfiguriert, dass alle unmarkierten Images gelöscht werden. Der Workflow löschte alle Teil-Images, die unter der Multi-Arch-Manifest-Liste aufgeführt sind.

Auswirkung

Dieser Vorfall führte dazu, dass der Logto-Cloud-Dienst und der Logto-Kerndienst etwa 18 Minuten lang nicht verfügbar waren. Endbenutzer konnten sich nicht bei Logto anmelden und nicht auf ihre Clientanwendungen zugreifen. Das Logto-Cloud-Admin-Portal war während des Vorfalls ebenfalls nicht verfügbar.

Lösung

Wir haben den automatisierten GitHub-Image-Rückhalteprozess gestoppt und ein neues Image mit dem Tag prod in das GitHub Container Registry hochgeladen. Das neue Image wurde erfolgreich vom Logto-Cloud-Dienst und dem Logto-Kerndienst abgerufen. Der Dienst wurde wieder verfügbar.

Lektionen gelernt

  • Niemals einen Workflow ohne sorgfältige Überprüfung und Tests in der Produktionsumgebung veröffentlichen.
  • Jede Ressourcenlöschungsaufgabe im Vorfeld simulieren, bevor sie ausgeführt wird.
  • Immer einen Backup-Plan für die Produktionsumgebung haben.
  • Sorgfältig eine neue Image-Rückhaltepolitik definieren.

Korrektive und präventive Maßnahmen

  • ✅ Sofortiger Stopp des automatisierten GitHub-Image-Rückhalteprozesses.