Анализ: Docker образ не найден
Отчет о происшествии, связанный с отключением сервиса Logto 2023-12-17 из-за утраты Docker образа для производства.
Отчет о происшествии, связанный с отключением сервиса Logto 2023-12-17 из-за утраты Docker образа для производства.
Мы столкнулись с отключением сервиса 2023-12-17 из-за утраты Docker образа для производства Logto.
| Время | Событие |
|---|---|
| Раннее время 2023-12-17 (точное время неизвестно) | Автоматизированный процесс удержания изображений GitHub для Logto выполнялся. Образы для производства 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, чтобы идентифицировать их как производственные. Когда инициируется новое развертывание, создается и отправляется в GitHub Container Registry новый образ с меткой prod. Метка prod удаляется со старого образа после успешного создания и отправки нового. Старый образ становится не промаркированным и будет удален автоматизированным процессом удержания изображений GitHub.
Образ сервиса Logto был построен для поддержки нескольких архитектур. Он был создан с использованием buildx и отправлен в GitHub Container Registry с флагом --platform. Все метки были применены к корневому списку манифестов. Метка prod также была применена к корневому списку манифестов. Все под-изображения, перечисленные в списке манифестов для нескольких архитектур, остаются не промаркированными.
Из-за отсутствия внимательного рассмотрения структуры меток и списка манифестов Docker образов, мы просто настроили автоматизированный процесс удержания изображений GitHub для удаления всех не промаркированных изображений. Процесс удалил все под-изображения, перечисленные в списке манифестов для нескольких архитектур.
Этот инцидент сделал облачный сервис Logto и основной сервис Logto недоступными примерно на 18 минут. Конечные пользователи не могли войти в Logto и получить доступ к своим клиентским приложениям. Портал администратора облака Logto также был недоступен во время инцидента.
Мы остановили автоматизированный процесс удержания изображений GitHub и развернули новый образ с меткой prod в GitHub Container Registry. Новый образ был успешно получен облачным сервисом Logto и основным сервисом Logto. Сервис снова стал доступен.