Расширенные возможности VirtualService и DestinationRule

Настройка Request Timeout и Retry Policy

Примером будет являться istio-integration-consumer, для которого мы настроим Request Timeout и Retry Policy, т.к. в большинстве случаев необходимо указывать максимально допустимое время ответа на конкретный запрос к сервису, чтобы исключать длительные запросы при нештатном поведении приложения, а также возможность повторного запроса.
VirtualService.yml type=yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: istio-integration-consumer-external
spec:
  exportTo:
    - .
  gateways:
    - ingress-gateway
  hosts:
    - host
  http:
    - match:
        - uri:
            prefix: /api/istio-integration/consumer
      name: istio-integration-consumer-stable
      route:
        - destination:
            host: istio-integration-consumer
            port:
              number: 8090
          retries:
            attempts: 2
            perTryTimeout: 5s
          timeout: 10s

Настройка Circuit Breaking и Load Balancing

DestinationRule.yml type=yaml
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: istio-integration-consumer
spec:
  host: istio-integration-consumer
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        http1MaxPendingRequests: 100
        maxRequestsPerConnection: 10
    outlierDetection:
      consecutive5xxErrors: 5
      interval: 1m
      baseEjectionTime: 5m
    loadBalancer:
      simple: ROUND_ROBIN

Mirroring

Istio позволяет достаточно просто и удобно направить production-трафик на тестируемые сервисы, избегая негативных последствий для основной системы. Также важно отметить, что эти запросы отражаются как “fire and forget”, что означает, что ответы отбрасываются.
VirtualService.yml type=yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: istio-integration-consumer-external
spec:
  exportTo:
    - .
  gateways:
    - ingress-gateway
  hosts:
    - host
  http:
    - match:
        - uri:
            prefix: /api/istio-integration/consumer
      name: istio-integration-consumer-stable
      route:
        - destination:
            host: istio-integration-consumer
            subset: v1
            port:
              number: 8090
          retries:
            attempts: 2
            perTryTimeout: 5s
          timeout: 10s
          mirror:
            host: istio-integration-consumer
            subset: v2
Предыдущий раздел
Поддержка разных версий сервиса
Следующий раздел
Настройка исходящего трафика
Была ли страница полезной?