Канареечная стратегия выпуска нового приложения - PullRequest
0 голосов
/ 20 июня 2020

У меня есть приложение с некоторыми внутренними службами и сборкой интерфейса SPA в React.

Я хочу иметь канареечный выпуск с istio. Меня беспокоит, как управлять стратегией выпуска, в которой -

  1. я передаю трафик c определенного объема во внешний интерфейс
  2. Когда выполняется внутренний запрос из этого нового внешнего интерфейса трафик c должен быть передан новым внутренним службам.

Что будет лучшим подходом для этого?

1 Ответ

0 голосов
/ 22 июня 2020

Это подробно описано в документации istio под VirtualService.

Здесь также есть приятное простое объяснение и пример здесь :

Canary Deployments

Canary Deployments - это стратегия безопасного развертывания новой версии сервиса. С Istio вы можете использовать процентное соотношение трафик c разделение , чтобы направить небольшой объем трафика c в новую версию. Затем вы можете запустить канареечный анализ на v2 (например, проверить задержку и частоту ошибок) и, наконец, направить больше трафика c на новую версию, пока он не обслужит весь трафик c.

Diagram

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 документация .

Надеюсь, это поможет.

...