Postmortem: Docker-afbeelding niet gevonden
Incidentrapport voor de Logto-serviceonderbreking op 2023-12-17 door verlies van productie Docker-afbeelding.
Samenvatting
We hebben op 2023-12-17 een serviceonderbreking ervaren door het verlies van de Logto-productie Docker-afbeelding.
- Incidenttijd: 2023-12-17 03:56:00 UTC
- Duur van het incident: 18 minuten
- Service-impact: Logto cloudservice en Logto kernservice waren niet beschikbaar tijdens het incident.
- Impactniveau: Kritiek
- Hoofdoorzaak: Logto-productie Docker-afbeelding werd per ongeluk verwijderd. Afbeelding kon niet worden opgehaald uit GitHub Container Registry.
Tijdlijn
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. |
Incidentanalyse
Wat er gebeurde
Logto-serviceproductieafbeeldingen werden verwijderd door onze geautomatiseerde GitHub-afbeeldingretentie workflow. De cloudservice kon de afbeelding niet ophalen uit GitHub Container Registry en werd onbeschikbaar.
Waarom het gebeurde
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.
Impact
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.
Oplossing
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.
Lessen geleerd
- Publiceer nooit een workflow zonder zorgvuldige beoordeling en testen in de productieomgeving.
- Voer elke bronverwijderingsopdracht uit als een proefrun voordat je het uitvoert.
- Zorg altijd voor een back-upplan voor de productieomgeving.
- Definieer zorgvuldig een nieuw afbeeldingsretentiebeleid.
Corrigerende en preventieve maatregelen
- β Stop onmiddellijk de geautomatiseerde GitHub-afbeeldingretentie workflow.