Не удалось установить цикл управления диапазоном в виртуальной службе Istio HTTP Retry
Описание ошибки
Я могу легко работать над добавлением нескольких мест назначения для канареечного развертывания, но когда я пытаюсь добавить повторную попытку, это не удается с пользовательской диаграммой Helm. Поскольку я не могу перебрать его.
Это проблема, потому что Retry привязана к каждому пункту назначения в соответствии с тем, что все должно повторяться.
Пожалуйста, найдите шаблон диаграммы руля ниже.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: {{ .Values.virtualservice.name }}
namespace: {{ .Values.namespace }}
spec:
hosts:
- {{ .Values.virtualservice.hosts }}
gateways:
- {{ .Values.virtualservice.gateways }}
http:
- route:
{{- range $key, $value := .Values.destination }}
- destination:
host: {{ $value.host }}
subset: {{ $value.subset }}
weight: {{ $value.weight }}
retries:
attempts: {{ $value.retries.attempts }}
perTryTimeout: {{ $value.retries.perTryTimeout }}
retryOn: {{ $value.retries.retryOn }}
timeout: {{ $value.retries.timeout }}
{{- end }}
Журнал ошибок
$ helm install asm-helm ./asm-svc-helm-chart -f values.yaml --dry-run
Error: INSTALLATION FAILED: YAML parse error on asmvrtsvc/templates/retry-svc.yaml: error converting YAML to JSON: yaml: line 21: did not find expected key
Версия
$ kubectl version --short
Client Version: v1.24.0
Kustomize Version: v4.5.4
Server Version: v1.22.12-gke.300
$ helm version
v3.9.4+gdbc6d8e
Добавлен пример для справки
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 75
retries:
attempts: 3
perTryTimeout: 2s
- destination:
host: reviews
subset: v2
weight: 25
retries:
attempts: 3
perTryTimeout: 2s
1 ответ
Согласно схеме виртуальной службы, поле маршрута в виртуальной службе может иметь одинretries
поле.
Таким образом, цикл должен включатьdestination
как массив.
*: https://istio.io/latest/docs/reference/config/networking/virtual-service/