Nederlands
  • postmortem
  • cloud-service
  • incident

Postmortem: Docker-afbeelding niet gevonden

Incidentrapport voor de Logto-serviceonderbreking op 2023-12-17 door verlies van productie Docker-afbeelding.

Simeng
Simeng
Developer

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

TijdGebeurtenis
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 UTCLogto cloudservice en Logto kernservice werden onbeschikbaar. Incident gedetecteerd door ons monitoringssysteem.
2023-12-17 04:03:00 UTCIncident erkend door onze dienstdoende ingenieur.
2023-12-17 04:10:00 UTCNieuwe uitrol van Logto cloudservice en Logto kernservice gestart met de nieuwste afbeelding.
2023-12-17 04:15:00 UTCLogto 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.

Service Log

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.