Я пытаюсь на лету исправить RouteRule от Istio, изменяя пропорцию трафика, которую получает каждая версия сервиса.Прямо сейчас, когда я запускаю
kubectl describe routerule my-rule
, я получаю описание:
Name: my-rule
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"config.istio.io/v1alpha2","kind":"RouteRule","metadata":{"annotations":{},"name":"my-rule","namespace":"default"},"spec":...
API Version: config.istio.io/v1alpha2
Kind: RouteRule
Metadata:
Cluster Name:
Creation Timestamp: 2018-05-25T16:21:59Z
Generation: 0
Resource Version: 154906
Self Link: /apis/config.istio.io/v1alpha2/namespaces/default/routerules/my-rule
UID: bfd78178-6037-11e8-8d5c-06f2e5b7e6b2
Spec:
Destination:
Name: MyApp
Match:
Request:
Headers:
Uri:
Prefix: /MyApp/
Rewrite:
Uri: /
Route:
Labels:
Version: v1
Weight: 10
Labels:
Version: v2
Weight: 90
Теперь я хочу изменить правило так, чтобы 90% трафика отправлялось на v1 и 10% на v2:
kubectl patch routerule my-rule --type='json' -p='[{"op":"replace", "path":"/spec/route", "value":[{"labels":{"version":"v1"}, "weight": "90"}, {"labels":{"version":"v2"}, "weight": "10"}]}]'
Когда я запускаю это, команда завершается успешно с routerule.config.istio.io "my-rule" patched
;и если я снова запускаю kubectl describe
в своем правиле, я могу убедиться, что оно имеет обновленные значения:
...
Route:
Labels:
Version: v1
Weight: 90
Labels:
Version: v2
Weight: 10
Однако на самом деле это не вступает в силу.Когда я попадаю в конечную точку, я все еще вижу, как применяются оригинальные правила (большая часть трафика отправляется в v2).Любые идеи относительно того, что может быть причиной этого?Нужно ли мне как-то сообщать Istio, что правило изменилось?