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