我正在尝试将一些jetty变量从fluxcd HelmRelease注入到heom图表中,但是yaml或fluxcd引用一个变量而不是将值视为字符串。
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: test12
spec:
releaseName: test12
chart:
spec:
chart: test12
version: "1.0.0"
sourceRef:
kind: test
name: test
namespace: sources
interval: 1m
remediation:
retries: 2
timeout: 10m
values:
properties:
- nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-http-redirect-to-https.xml,${jetty.etc}/jetty-requestlog.xml
- nexus-context-path=/
在应用上述文件时看到以下错误
var substitution failed for 'nexus': YAMLToJSON: variable substitution failed: missing closing brace
我尝试对 nexus-args 使用双引号和单引号,但没有多大帮助
如何让 yaml 或 Flux 将
${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-http-redirect-to-https.xml,${jetty.etc}/jetty-requestlog.xml
视为字符串而不是变量引用
来自助焊剂文档
如果要避免 ConfigMap 或容器命令中嵌入的脚本中进行 var 替换,则必须使用格式
而不是$var
。如果您想保留大括号,可以使用${var}
它将打印出$${var}
。${var}
所以你的 HelmRelease yaml 应该如下所示
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: test12
spec:
releaseName: test12
chart:
spec:
chart: test12
version: "1.0.0"
sourceRef:
kind: test
name: test
namespace: sources
interval: 1m
remediation:
retries: 2
timeout: 10m
values:
properties:
- nexus-args=$${jetty.etc}/jetty.xml,$${jetty.etc}/jetty-http.xml,$${jetty.etc}/jetty-https.xml,$${jetty.etc}/jetty-http-redirect-to-https.xml,$${jetty.etc}/jetty-requestlog.xml
- nexus-context-path=/