YAMLToJSON:变量替换失败:缺少右大括号

问题描述 投票:0回答:1

我正在尝试将一些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
视为字符串而不是变量引用

yaml kubernetes-helm nexus3 fluxcd
1个回答
0
投票

来自助焊剂文档

如果要避免 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=/
© www.soinside.com 2019 - 2024. All rights reserved.