Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 在有条件的情况下安装舵图时出错_Kubernetes_Kubernetes Helm - Fatal编程技术网

Kubernetes 在有条件的情况下安装舵图时出错

Kubernetes 在有条件的情况下安装舵图时出错,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我需要使用helm chart在不同的名称空间上部署三个不同的证书。 我在同一个文件中为每个证书创建一个模板,并在每个证书上添加if条件,以便仅删除我在helm install命令中作为参数传递的所需证书, 我的秘密。yaml看起来像这样: {{- if eq .Values.val "paris_turf_support" }} {{- range .Values.namespaces.paris_turf_support }} {{- $ns := . -}} apiVersion: v1

我需要使用helm chart在不同的名称空间上部署三个不同的证书。 我在同一个文件中为每个证书创建一个模板,并在每个证书上添加if条件,以便仅删除我在helm install命令中作为参数传递的所需证书, 我的秘密。yaml看起来像这样:

{{- if eq .Values.val "paris_turf_support" }}
{{- range .Values.namespaces.paris_turf_support }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
name: "tls-paris-turf.support"
namespace: {{ $ns }}
data:
    tls.crt: {{ $.Files.Get "tls-paris-turf.support.crt" | b64enc }}
    tls.key: {{ $.Files.Get "tls-paris-turf.support.key" | b64enc }}
{{- end }}

{{ else if eq .Values.val "geny_sports" }}
{{- range .Values.namespaces.geny_sports }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
    name: "tls-geny-sports.com"
    namespace: {{ $ns }}
data:
    tls.crt: {{ $.Files.Get "tls-geny-sports.com.crt" | b64enc }}
    tls.key: {{ $.Files.Get "tls-geny-sports.com.key" | b64enc }}
{{- end }}

{{ else if eq .Values.val "paris_turf_com" }}
{{- range .Values.namespaces.paris_turf_com }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
    name: "tls-paris-turf.com"
    namespace: {{ $ns }}
data:
    tls.crt: {{ $.Files.Get "tls-paris-turf.com.crt" | b64enc }}
    tls.key: {{ $.Files.Get "tls-paris-turf.com.key" | b64enc }}
{{- end }}
{{- end }}
当我运行此命令安装舵图时:
helm install secret rel./secret--values=./secret/values/dev.yaml--namespace=secret--set val=“paris\u turf\u com”

我得到这个错误: 错误:secret/templates/secret上的YAML解析错误。YAML:将YAML转换为JSON时出错:YAML:第9行:此上下文中不允许映射值


需要您的帮助请

最后我解决了问题,这是我的秘密。yaml:

{{- if eq .Values.val "paris_turf_support" }}
{{- range .Values.namespaces.paris_turf_support }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-paris-turf.support
  namespace: {{ $ns }}
data:
  tls.crt: {{ $.Files.Get "tls-paris-turf.support.crt" | b64enc }}
  tls.key: {{ $.Files.Get "tls-paris-turf.support.key" | b64enc }}
---
{{- end }}
{{ else if eq .Values.val "geny_sports" }}
{{- range .Values.namespaces.geny_sports }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-geny-sports.com
  namespace: {{ $ns }}
data:
  tls.crt: {{ $.Files.Get "tls-geny-sports.com.crt" | b64enc }}
  tls.key: {{ $.Files.Get "tls-geny-sports.com.key" | b64enc }}
---
{{- end }}
{{ else if eq .Values.val "paris_turf_com" }}
{{- range .Values.namespaces.paris_turf_com }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-paris-turf.com
  namespace: {{ $ns }}
data:
  tls.crt: {{ $.Files.Get "tls-paris-turf.com.crt" | b64enc }}
  tls.key: {{ $.Files.Get "tls-paris-turf.com.key" | b64enc }}
---
{{- end }}
{{- end }}

在此上下文中不允许映射值
表示
.yaml
中存在错误,使其无效

有很多在线工具可以用来验证yaml的语法,例如

在您的特定用例中,错误表明第9行存在问题。查看您的配置,我们可以看到您在第9行和第10行中缺少缩进。它应该是这样的:

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-paris-turf.support
  namespace: {{ $ns }}
此外,您不需要使用双引号(
)来命名机密。正如您已经注意到的,您应该在
{-end}
前面使用
--
一行


我希望它能有所帮助。

我现在正在处理您的用例,但在此期间,您可以检查一件事<在此上下文中不允许使用代码>映射值表示
yaml
无效。示例中的第9行和第10行缺少缩进。请改正。如果这还不够,我们将深入挖掘。谢谢@OhHiMark我修复了凹痕,但我仍然有相同的问题完全相同的错误消息?我也会删除那里的
(引号)。是的,这是完全相同的错误,我也尝试删除了“”,但仍然有相同的消息,所以基本上我给你的提示加上添加
--
?@OhHiMark yes:)在这种情况下,你至少应该根据我提供的信息发布一个社区wiki答案。或者通过评论确认它解决了您的问题,这样我就可以发布一个带有解释的答案,这样社区的其他人不仅可以看到解决方案,还可以理解其背后的原因。