Kubernetes 如何从values.yaml引用整个结构,而不是逐个指定?

Kubernetes 如何从values.yaml引用整个结构,而不是逐个指定?,kubernetes,yaml,kubernetes-helm,Kubernetes,Yaml,Kubernetes Helm,我正试图使用如下所示的helm命令在minikube的本地虚拟框中部署helm图表 我指的是直接来自deployment.yaml中values.yam的livenessProbe、readinessProbe配置,如下所示。然而,遵循这种方法会产生下面指定的错误,如果我将其更改为独立引用每个属性值,我会看到图表正在安装,pod将成功部署 livenessProbe: - {{ .Values.monitorConfig.liveness }} readi

我正试图使用如下所示的helm命令在minikube的本地虚拟框中部署helm图表

我指的是直接来自deployment.yaml中values.yam的livenessProbe、readinessProbe配置,如下所示。然而,遵循这种方法会产生下面指定的错误,如果我将其更改为独立引用每个属性值,我会看到图表正在安装,pod将成功部署

      livenessProbe:
        - {{ .Values.monitorConfig.liveness }}
      readinessProbe:
        - {{ .Values.monitorConfig.readiness }}
有人能告诉我可以做些什么来避免错误以及为什么吗???

多谢各位

掌舵司令部 helm安装-调试-n pspk./pkg/helm/my服务/

错误 错误:发布pspk失败:无法在版本“v1beta1”中部署 作为部署处理:v1beta1.Deployment.Spec: v1beta1.DeploymentSpec.Template:v1.PodTemplateSpec.Spec: v1.PodSpec.Containers:[]v1.Container:v1.Container.LivenessProbe: readObjectStart:预期为{或n,但发现[,在#10字节中发现错误 关于……| ssProbe“:[“映射[failu |……,更大的上下文 …|“imagePullPolicy”:“IfNotPresent”,“livenessProbe”:[“map[failureThreshold:3 httpGet:map[路径:/greeting |

部署.yaml 价值观
您需要做两件事才能使其正确工作:将值显式序列化为YAML,并使缩进正确

livenessProbe:
  - {{ .Values.monitorConfig.liveness | toYaml | indent 8 | trim }}
默认序列化将是Go native dump格式,它不是YAML,并导致奇怪的
映射[FailureReshold:1]
输出;
toYaml
解决了这一问题。
indent 8
将空格放在结果块中每行的前面(您需要调整“8”).
trim
删除前导空格和尾随空格。(
toYaml
是特定于Helm的,没有很好的文档记录;其他两个函数来自支持库。)

您应该使用

helm template -n pspk ./pkg/helm/my-service/

如果它看起来不是有效的YAML,请进一步调整它。

您需要做两件事使其正确工作:将值显式序列化为YAML,并使缩进正确。这看起来像

livenessProbe:
  - {{ .Values.monitorConfig.liveness | toYaml | indent 8 | trim }}
默认序列化将是Go native dump格式,它不是YAML,并导致奇怪的
映射[FailureReshold:1]
输出;
toYaml
解决了这一问题。
indent 8
将空格放在结果块中每行的前面(您需要调整“8”).
trim
删除前导空格和尾随空格。(
toYaml
是特定于Helm的,没有很好的文档记录;其他两个函数来自支持库。)

您应该使用

helm template -n pspk ./pkg/helm/my-service/
如果它看起来不是有效的YAML,请进一步调整它。

在YAML中:

livenessProbe:
  - {{ .Values.monitorConfig.liveness }}
readinessProbe:
  - {{ .Values.monitorConfig.readiness }}
将值插入序列项。YAML中的序列项以
-
开头。但是,
livenessProbe
的内容应为YAML映射。错误消息很差,但会告诉您出现了什么问题:

应为{或n,但找到[

{
启动YAML映射(在流样式中),
[
启动YAML序列(在流样式中)。该消息告诉您,YAML映射的开始是预期的,但找到了YAML序列的开始。请注意,由于您使用的是块样式,因此在这里实际上没有使用
{
[

因此,要修复它,只需删除
-
,这样插入的映射(如
values.yaml
中所示)就是
livenessProbe
的直接值,并且不包含在序列中:

livenessProbe:
  {{ .Values.monitorConfig.liveness }}
readinessProbe:
  {{ .Values.monitorConfig.readiness }}
在您的YAML中:

livenessProbe:
  - {{ .Values.monitorConfig.liveness }}
readinessProbe:
  - {{ .Values.monitorConfig.readiness }}
将值插入序列项。YAML中的序列项以
-
开头。但是,
livenessProbe
的内容应为YAML映射。错误消息很差,但会告诉您出现了什么问题:

应为{或n,但找到[

{
启动YAML映射(在流样式中),
[
启动YAML序列(在流样式中)。该消息告诉您,YAML映射的开始是预期的,但找到了YAML序列的开始。请注意,由于您使用的是块样式,因此在这里实际上没有使用
{
[

因此,要修复它,只需删除
-
,这样插入的映射(如
values.yaml
中所示)就是
livenessProbe
的直接值,并且不包含在序列中:

livenessProbe:
  {{ .Values.monitorConfig.liveness }}
readinessProbe:
  {{ .Values.monitorConfig.readiness }}

感谢社区的回答/评论,以及, 它可以组合为:

          {{- if .Values.monitorConfig.liveness }}
          livenessProbe: 
{{ toYaml .Values.monitorConfig.liveness | indent 12 }}
          {{- end }} 

这将提供更大的灵活性。

感谢社区的回答/评论和, 它可以组合为:

          {{- if .Values.monitorConfig.liveness }}
          livenessProbe: 
{{ toYaml .Values.monitorConfig.liveness | indent 12 }}
          {{- end }} 

这将提供更大的灵活性。

仍然会收到相同的错误,更改为{{.Values.monitorConfig.liveness}}错误:发布pspk失败:版本“v1beta1”中的部署不能作为部署处理:v1beta1.Deployment.Spec:v1beta1.DeploymentSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.Containers:[]v1.Container:v1.Container.LivenessProbe:readObjectStart:expect{或n,但已找到,“…| ssProbe的#10字节中发现错误”:“map[failur |…,更大的上下文…”“imagePullPolicy”:“IfNotPresent”,“LivenessProbe”:“map[failureThreshold:3 httpGet:map[路径:/greeting |…您可能需要将此与David的答案结合起来。仍然会收到相同的错误,更改为{{.Values.monitorConfig.liveness}错误:发布pspk失败:在版本“v1beta1”中部署“无法作为部署处理:v1beta1.Deployment.Spec:v1beta1.DeploymentSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.Containers:[]v1.Container:v1.Container.LivenessProbe:readObjectStart:expect{或n,但已找到),在| ssProbe的#10字节中发现错误:”“映射[failur |,更大的上下文…”imagePullPolicy:“IfNotPresent”,”livenessProbe:“map[failureThreshold:3 httpGet:map[path:/greeting |……您可能需要将此与David的答案结合起来。不带“-”的缩进12对我有效。谢谢。livenessProbe: