【发布时间】:2019-01-19 18:52:48
【问题描述】:
我在 helm 中有这种模板文件:
apiVersion:networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: {{.Values.app.name}}-global-route
namespace: {{.Release.Namespace}}
spec:
hosts:
- "{{.Values.app.name}}-global.{{.Release.Namespace}}.svc.cluster.local"
gateways:
- {{.Values.app.name}}-gateway
- mesh
http:
# 1st priority, to route specific end-user to canary service
- route:
- destination:
host: "{{.Values.app.name}}-global.{{.Release.Namespace}}.svc.cluster.local"
subset: canary
match: {{.Values.infra.trafficRoute.canaryCondition}}
我想公开 values.yaml,如下所示:
# default values supplied for templates/* files
app:
name: java-maven-app
infra:
trafficRoute:
canaryCondition:
- headers:
end-user:
exact: apratama
key:
exact: agung
所以,基本上我想要实现的是让最终用户(使用我的掌舵图的人)自定义金丝雀条件。条件本身取决于 istio 的 match 数据结构(可以是嵌套和复杂值)。
我在上面尝试了helm upgrade --install 命令,但不知何故我得到了这个错误:
Error: UPGRADE FAILED: YAML parse error on java-maven-app-infra/templates/global-service.yaml: error converting YAML to JSON: yaml: line 17: found unexpected ':'
make: *** [deploy-infra] Error 1
但是,当我注释掉这一行时:
match: {{.Values.infra.trafficRoute.canaryCondition}}
它可以正常工作。
有什么建议吗?
【问题讨论】:
标签: kubernetes-helm