无法在没有引号的情况下呈现 helm 模板
Not able to render the helm template without quotes
helm模板的渲染方法我几乎都用过了。但是现在我没有想法并寻求帮助:
values.yaml:
rollout:
namespace: xyz
project: default
baseDomain: "stage.danger.zone"
clusterDomain: cluster.local
manifest.yaml
apps:
certmanager:
source:
repoURL: 'https://artifactory.intern.example.io/artifactory/helm'
targetRevision: 0.0.6
chart: abc
helm:
releaseName: abc
values:
global:
imagePullSecrets:
- name: artifactory
baseDomain: "{{ .Values.rollout.baseDomain }}"
当我尝试在我的 main.yaml 文件中使用以下命令渲染模板时,将产生最终结果:
values: {{- tpl (toYaml $appValue.values | indent 6) $ }}
预期结果:
baseDomain:stage.danger.zone
(不带引号)
我得到的是:
基础域:'stage.danger.zone'
如果我尝试从 baseDomain: "{{ .Values.rollout.baseDomain }}"
中删除双引号,我会收到以下错误:
[debug] error converting YAML to JSON: yaml: invalid map key: map[interface {}]interface {}{".Values.baseDomain":interface {}(nil)}
有什么帮助或想法可以实现同样的目标吗?
这是 YAML 的预期行为。
一个肮脏和糟糕的黑客是
values: {{- tpl (toYaml $appValue.values | fromYaml | toYaml | indent 6) $ }}
然后你将看不到单引号。
但是,即使您的值中有 '
个单引号,这也完全不是问题。您可以包含此变量,例如如下所示:
hosts:
- host: some-gateway.{{ .Values.rollout.baseDomain }}
serviceName: gateway
servicePort: 8080
path: /
然后它会显示不带 '
单引号的变量值。
示例渲染输出:
hosts:
- host: some-gateway.stage.danger.zone
path: /
serviceName: gateway
servicePort: 8080
helm模板的渲染方法我几乎都用过了。但是现在我没有想法并寻求帮助:
values.yaml:
rollout:
namespace: xyz
project: default
baseDomain: "stage.danger.zone"
clusterDomain: cluster.local
manifest.yaml
apps:
certmanager:
source:
repoURL: 'https://artifactory.intern.example.io/artifactory/helm'
targetRevision: 0.0.6
chart: abc
helm:
releaseName: abc
values:
global:
imagePullSecrets:
- name: artifactory
baseDomain: "{{ .Values.rollout.baseDomain }}"
当我尝试在我的 main.yaml 文件中使用以下命令渲染模板时,将产生最终结果:
values: {{- tpl (toYaml $appValue.values | indent 6) $ }}
预期结果:
baseDomain:stage.danger.zone
(不带引号)
我得到的是:
基础域:'stage.danger.zone'
如果我尝试从 baseDomain: "{{ .Values.rollout.baseDomain }}"
中删除双引号,我会收到以下错误:
[debug] error converting YAML to JSON: yaml: invalid map key: map[interface {}]interface {}{".Values.baseDomain":interface {}(nil)}
有什么帮助或想法可以实现同样的目标吗?
这是 YAML 的预期行为。
一个肮脏和糟糕的黑客是
values: {{- tpl (toYaml $appValue.values | fromYaml | toYaml | indent 6) $ }}
然后你将看不到单引号。
但是,即使您的值中有 '
个单引号,这也完全不是问题。您可以包含此变量,例如如下所示:
hosts:
- host: some-gateway.{{ .Values.rollout.baseDomain }}
serviceName: gateway
servicePort: 8080
path: /
然后它会显示不带 '
单引号的变量值。
示例渲染输出:
hosts:
- host: some-gateway.stage.danger.zone
path: /
serviceName: gateway
servicePort: 8080