Рубрики
Uncategorized

Как установить правило маршрутизации между двумя версиями того же приложения в ISTIO?

С ISTIO много инструментов доступны, чтобы помочь нам легко установить правила маршрутизации. И сегодня мы будем … помечены DevOps, ISTIO, SRE.

С ISTIO много инструментов доступны, чтобы помочь нам легко установить правила маршрутизации. И сегодня мы будем использовать их, чтобы установить правило маршрутизации, чтобы иметь возможность использовать две версии одного и того же приложения.

Сначала нам нужно иметь возможность отличить как версию приложения.

Отличные услуги

Если оба версии приложения имеет определенную услугу, чтобы выставить его, все в порядке, мы можем пойти дальше.

Та же услуга

В противном случае, если они используют тот же сервис, нам нужно добавить что-то, чтобы иметь возможность отличить их.

Здесь мы будем использовать Правило назначения Отказ С этим мы скажем, что для нашего сервиса (здесь определено в элементе хоста) У нас есть несколько подгрупп (подсети) Отказ

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-api
spec:
  host: my-api.default.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

В этом примере у нас есть 2 подгруппы:

  • V1 С всеми стручками My-API с этикеткой версия: V1.
  • v2 С всеми стручками My-API с этикеткой версия: V2.

Теперь, когда мы можем различить наши версии, мы можем определить правило маршрутизации с помощью Virtualservice Отказ

Уваживание

Во-первых, мы можем создать правило для перенаправления трафика в зависимости от URI.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-api
  namespace: default
spec:
  hosts:
    - my-api.default.svc.cluster.local
  http:
    - match:
        - uri:
            prefix: "/v1"
      route:
        - destination:
            host: my-api.default.svc.cluster.local
            subnet: v1
    - route:
        - destination:
            host: my-api.default.svc.cluster.local
            subnet: v2

В этом примере, если URI начинается с «/v1», трафик перенаправляется в подсеть V1 Отказ В противном случае он идет к v2 Отказ

ВАЖНЫЙ: Значения подсети здесь должны совпадать с именами подсетей, определенных в Peritionrule.

Заголовок

Затем мы можем обновить VirtualService, чтобы изменить условие и вместо этого использовать заголовок.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-api
  namespace: default
spec:
  hosts:
    - my-api.default.svc.cluster.local
  http:
    - match:
        - headers:
            version:
              exact: V1
      route:
        - destination:
            host: my-api.default.svc.cluster.local
            subnet: v1
    - route:
        - destination:
            host: my-api.default.svc.cluster.local
            subnet: v2

С этими маленькими изменениями мы можем перенаправить трафик к V1 подсеть только с заголовком.

Если вы хотите пойти дальше, все ссылки здесь, чтобы увидеть все варианты, доступные как:

  • Используйте точный URI
  • Используйте Regex для URI
  • Используйте Regex для заголовка
  • Добавьте некоторые попытки

Я надеюсь, что вам понравилось, и это будет полезно! 🍺

Оригинал: «https://dev.to/adaendra/how-to-set-a-routing-rule-between-two-versions-of-the-same-app-in-istio-3ekf»