Перейти к содержимому

Диагностика Ingress

Цель при инциденте — восстановить публичный сервис, не уничтожив состояние, которое помогает объяснить сбой. Ingress пересекает несколько зон ответственности: DNS, сеть, сертификат, конфигурацию nginx, политику Route, приватный транспорт и среду выполнения приложения. Одновременное изменение нескольких уровней обычно продлевает недоступность.

Назначьте одного владельца инцидента, зафиксируйте последнее заведомо исправное изменение и проверяйте путь снаружи внутрь. Восстановление завершено, когда внешний сервис снова работает, желаемое и сообщённое состояния Gateway совпадают, а неисправный уровень и безопасное действие по восстановлению зафиксированы достаточно точно, чтобы предотвратить повторение.

Проверяйте уровни в следующем порядке, чтобы не изменить исправную часть системы:

  1. DNS: разрешите имя хоста с внешнего клиента и убедитесь, что оно указывает на назначенную ноду Ingress.
  2. Сеть: проверьте доступность публичных портов 80/443 и правила межсетевого экрана хоста.
  3. TLS: проверьте имя хоста в сертификате, цепочку, срок действия и состояние распространения.
  4. Конфигурация nginx: убедитесь, что последняя ревизия применена и успешно прошла валидацию.
  5. Состояние Route: проверьте ожидаемые код и тело ответа, а также режим обслуживания.
  6. Целевая служба: проверьте приложение с ноды nginx или откройте состояние Secure Link.
  7. Журналы: сопоставьте записи доступа и ошибок nginx с журналами рабочей нагрузки и идентификаторами запросов.

Частые причины: Domain и Route размещены на разных нодах, после миграции во внешнем DNS остались старые записи, HTTP-01 выбран на ноде без публичного порта 80, для приложения WebSocket не включена передача WebSocket или выбран порт рабочей нагрузки, который фактически не опубликован и не подключён.

Симптом Наиболее вероятный уровень Первая проверка
Имя хоста не разрешается DNS Внешний запрос A/AAAA и размещение Domain
Тайм-аут соединения сеть Публичный адрес, межсетевой экран, порты 80/443, доступность ноды
Предупреждение о сертификате TLS Имя хоста в сертификате, цепочка, срок действия и назначенный Route
Немедленный 404 сопоставление Route Имя хоста, префикс пути, состояние включения, необработанная конфигурация
Управляемый 503 обслуживание или неисправная целевая служба Режим обслуживания и история состояния
502/504 транспорт к целевой службе Secure Link, целевой порт, состояние рабочей нагрузки, настройки тайм-аутов
WebSocket отключается передача протокола Настройка WebSocket, путь приложения, тайм-ауты прокси и чтения
Изменения не появляются применение или согласование Состояние Task, ревизия nginx, соединение ноды, ошибка валидации

Соберите свидетельства до изменения состояния

Заголовок раздела «Соберите свидетельства до изменения состояния»

Зафиксируйте неисправное имя хоста, путь, время, класс IP-адреса клиента, ожидаемый и фактический ответы, назначенную ноду, идентификатор Route, идентификатор последней Task и связанный идентификатор запроса. До повторной попытки сохраните ошибку валидации созданной конфигурации и ограниченный фрагмент журналов: последующие изменения могут стереть самые полезные свидетельства.

Сравните три представления:

  1. желаемое состояние Gateway на страницах Route и Domain;
  2. последнее подтверждённое состояние от ноды nginx;
  3. наблюдаемое снаружи поведение DNS, TLS и HTTP.

Расхождение между ними показывает ответственный уровень: состояние контура управления, применение на ноде или внешняя инфраструктура.

  • Исправляйте DNS только после подтверждения нужного размещения ноды.
  • Исправляйте назначение сертификата, не отключая TLS глобально.
  • Сначала устраните ошибку валидации конфигурации и только затем запускайте новое применение.
  • Используйте режим обслуживания, если приложение должно оставаться недоступным во время ремонта.
  • Повторяйте согласование только после восстановления зависимости, вызвавшей сбой.
  • Откатывайте приложение или конфигурацию Route, если доступна заведомо исправная ревизия.

Не удаляйте и не создавайте заново Domain, сертификат или Route первым действием. Это уничтожает историю связей и может вызвать второй сбой.

Выполните запрос с внешнего клиента, затем проверьте каноническое имя хоста, цепочку сертификата, код и тело ответа, перенаправления, WebSockets, историю состояния и журналы nginx. Закрывайте инцидент только после того, как публичное поведение и состояние Gateway совпали.

Откат должен отменять минимальное изменение, которое вызвало недоступность. Для DNS восстановите записанные адреса с учётом кэшей DNS-серверов. Для TLS верните прежнее корректное назначение сертификата, не отключая HTTPS. Для конфигурации nginx верните последние заведомо исправные управляемые настройки и дождитесь подтверждения. При регрессии приложения откатывайте владеющий Deployment или ревизию Compose, а не перестраивайте Route вокруг неработающего релиза.

Сбой Secure Link требует восстановить Relay, соединение нод или целевую среду выполнения; изменения DNS и сертификата его не исправят. При ошибке политики доступа верните прежний Access List или настройку доверенного прокси, а не открывайте порт рабочей нагрузки. На время ремонта используйте режим обслуживания: он сохраняет явное имя хоста и путь TLS, но не допускает случайный трафик к частично восстановленному приложению.

Если первая попытка восстановления не объяснила причину, до эскалации соберите ограниченный пакет данных:

  • идентификаторы Domain и Route, назначенную ноду Ingress и последнюю подтверждённую ревизию конфигурации;
  • внешние ответы DNS и сведения о TLS-сертификате, наблюдавшиеся во время инцидента;
  • историю состояния Route и точные путь (path), метод (method), статус (status) и время (timestamp) сбоя;
  • связанные записи доступа и ошибок nginx, а также операцию владеющей рабочей нагрузки или Secure Link;
  • версии нод и Relay, состояние соединения и последнее сообщение неуспешной Task;
  • последние заведомо исправные ревизии приложения, Route и DNS.

Удалите учётные данные, файлы cookie, заголовки авторизации, закрытые ключи и чувствительные параметры запроса. Задача пакета — сохранить причинно-следственную связь, не превращая запись инцидента в хранилище секретов.