Postmortem: Docker-afbeelding niet gevonden
Incidentrapport voor de Logto-serviceonderbreking op 2023-12-17 door verlies van productie Docker-afbeelding.
Incidentrapport voor de Logto-serviceonderbreking op 2023-12-17 door verlies van productie Docker-afbeelding.
We hebben op 2023-12-17 een serviceonderbreking ervaren door het verlies van de Logto-productie Docker-afbeelding.
| Tijd | Gebeurtenis |
|---|---|
| Vroeg 2023-12-17 (Specifieke tijd onbekend) | Logto geautomatiseerde GitHub-afbeeldingretentie workflow werd uitgevoerd. logto en logto-cloud productie-afbeeldingen werden per ongeluk verwijderd. |
| 2023-12-17 03:56:00 UTC | Logto cloudservice en Logto kernservice werden onbeschikbaar. Incident gedetecteerd door ons monitoringssysteem. |
| 2023-12-17 04:03:00 UTC | Incident erkend door onze dienstdoende ingenieur. |
| 2023-12-17 04:10:00 UTC | Nieuwe uitrol van Logto cloudservice en Logto kernservice gestart met de nieuwste afbeelding. |
| 2023-12-17 04:15:00 UTC | Logto cloudservice en Logto kernservice werden beschikbaar. Incident automatisch opgelost. |
Logto-serviceproductieafbeeldingen werden verwijderd door onze geautomatiseerde GitHub-afbeeldingretentie workflow. De cloudservice kon de afbeelding niet ophalen uit GitHub Container Registry en werd onbeschikbaar.

De geautomatiseerde GitHub-afbeeldingretentie workflow verwijderde de productieafbeeldingen per ongeluk. De workflow was ontworpen om alle niet-gelabelde oude afbeeldingen te verwijderen die ouder zijn dan 3 dagen.
We tagden de productieafbeeldingen met prod tag om ze als productieafbeeldingen te identificeren. Telkens als er een productie-uitrol wordt gestart, wordt een nieuwe afbeelding met prod tag gebouwd en naar GitHub Container Registry gepusht. De prod tag wordt van de oude afbeelding verwijderd nadat de nieuwe afbeelding succesvol is gebouwd en gepusht. De oude afbeelding wordt niet-gelabeld en wordt verwijderd door de geautomatiseerde GitHub-afbeeldingretentie workflow.
Logto-serviceafbeelding werd gebouwd om meerdere architecturen te ondersteunen. De afbeelding werd gebouwd met buildx en gepusht naar GitHub Container Registry met --platform vlag. Alle tags werden toegepast op de rootmanifestlijst. De prod tag werd ook toegepast op de rootmanifestlijst. Alle sub-afbeeldingen vermeld onder de multi-arch manifestlijst bleven niet-gelabeld.
Gebrek aan zorgvuldige beoordeling van de tag- en manifestlijststructuur van de Docker-afbeelding, hebben we simpelweg de geautomatiseerde GitHub-afbeeldingretentie workflow geconfigureerd om alle niet-gelabelde afbeeldingen te verwijderen. De workflow verwijderde alle sub-afbeeldingen vermeld onder de multi-arch manifestlijst.
Dit incident veroorzaakte dat Logto cloudservice en Logto kernservice ongeveer 18 minuten onbeschikbaar waren. Eindgebruikers konden niet inloggen op Logto en toegang krijgen tot hun clientapplicaties. Logto cloudbeheerportaal was ook onbeschikbaar tijdens het incident.
We hebben de geautomatiseerde GitHub-afbeeldingretentie workflow gestopt en een nieuwe afbeelding met prod tag naar GitHub Container Registry gedeployed. De nieuwe afbeelding werd succesvol opgehaald door Logto cloudservice en Logto kernservice. De service werd weer beschikbaar.