我正在尝试提取从values.yaml
中的_helper.tpl
获得的某个字符串。基本上,我正在尝试从localhost
mongodb://localhost:30010
在我的_helper.tpl
{{- define "myservice.mongodbcache.bindip" -}}
{{- regexFind "\/\.(.*):" ( .Values.myservice.cachedb.uri | toString ) -}}
{{- end -}}
我的values.yml
文件
myservice:
cachedb:
uri: "mongodb://localhost:30010"
在我的configmap
中,我想通过以下方式使用
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-myservice-configmap
namespace: {{ .Release.Namespace }}
data:
myservice.mongodbcache.bind.ip: {{ template "myservice.mongodbcache.bindip" }}
但是,当我尝试空运行时,我不断收到此错误
Error: parse error in "tree-helm/templates/_helpers.tpl": template: tree-helm/templates/_helpers.tpl:35: invalid syntax
第35行是regexFind
答案 0 :(得分:0)
要从URL获取主机,您需要使用Lookahead and Lookbehind。请参阅example
不幸的是,您不能用掌舵人编写这种类型的正则表达式。您将收到以下错误:
Error: rendering template failed: regexp: Compile(`(?<=://)(.*?)(?=:)`): error parsing regexp: invalid or unsupported Perl syntax: `(?<`
在Helm模板中,最好使用 include 而不是 template ,以便可以更好地处理YAML文档的输出格式。
使用 include ,您可以通过以下方式获取主机名或ip:
configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-myservice-configmap
namespace: {{ .Release.Namespace }}
data:
myservice.mongodbcache.bind.ip: {{- include "myservice.mongodbcache.bindip" . -}}
_helpers.tpl
{{- define "myservice.mongodbcache.bindip" -}}
{{- $match := .Values.myservice.cachedb.uri | toString | regexFind "//.*:" -}}
{{- $match | trimAll ":" | trimAll "/" -}}
{{- end -}}
矿石甚至可以全部排成一行。
结果
$ helm install --debug --dry-run .
....
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: billowing-boxer-myservice-configmap
namespace: default
data:
myservice.mongodbcache.bind.ip:localhost
答案 1 :(得分:-1)