Для повторных попыток (Retry) для запросов можно использовать модуль istio. Перед настройкой убедитесь, что модуль включен в кластере.

Чтобы настроить Retry для запросов, используйте ресурс VirtualService от istio.io.

По умолчанию, при возникновении ошибок, все запросы (включая POST-запросы) выполняются повторно до трех раз.

Пример:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - route:
    - destination:
        host: ratings.prod.svc.cluster.local
    retries:
      attempts: 3
      perTryTimeout: 2s
      retryOn: gateway-error,connect-failure,refused-stream

Ресурс VirtualService

При необходимости ознакомьтесь с документацией VirtualService.

Использование VirtualService опционально, классические сервисы продолжают работать, если их функционала достаточно. С помощью этого ресурса можно настроить маршрутизацию запросов:

  • Аргументы для принятия решения о маршруте:
    • host;
    • uri;
    • weight (вес).
  • Параметры итоговых направлений:
    • новый host;
    • новый uri;
    • если host определен с помощью DestinationRule можно направлять запросы на subset’ы;
    • таймаут и настройки retry (повторных попыток).

Для корректной работы destination в Istio необходимо его указать. Если вы используете внешний API, укажите его с помощью ServiceEntry.