Это подробно описано в документации istio под VirtualService
.
Здесь также есть приятное простое объяснение и пример здесь :
Canary Deployments
Canary Deployments - это стратегия безопасного развертывания новой версии сервиса. С Istio вы можете использовать процентное соотношение трафик c разделение , чтобы направить небольшой объем трафика c в новую версию. Затем вы можете запустить канареечный анализ на v2 (например, проверить задержку и частоту ошибок) и, наконец, направить больше трафика c на новую версию, пока он не обслужит весь трафик c.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: helloworld
spec:
hosts:
- helloworld
http:
- route:
- destination:
host: helloworld
subset: v1
weight: 90
- destination:
host: helloworld
subset: v2
weight: 10
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: helloworld
spec:
host: helloworld
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
UPDATE:
Session affinity aka sticky session can be added with DestinationRule
using hashed based loadbalancing according to istio документация .
Надеюсь, это поможет.