将YAML转换为JSON时出错:找不到预期的密钥

时间:2019-11-14 16:53:01

标签: kubernetes yaml kubernetes-helm

我刚刚创建了一个新的Helm图表,但是当我运行helm install --dry-run --debug时,我得到了:

错误:multi-camera-tracking / templates / multi-camera-tracking.yaml上的YAML解析错误:将YAML转换为JSON时发生错误:yaml:第30行:找不到预期的键

这是我的Yaml文件:

---
# apiVersion: apps/v1beta1
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: multi-camera-tracking
  annotations:
    Process: multi-camera-tracking
  labels:
    io.kompose.service: multi-camera-tracking
spec:
  serviceName: multi-camera-tracking
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: multi-camera-tracking
  podManagementPolicy: "Parallel"
  template:
    metadata:
      labels:
        io.kompose.service: multi-camera-tracking
    spec:
      containers:
      - name: multi-camera-tracking
        env:
        - name: MCT_PUB_PORT
          value: {{ .Values.MCT_PUB_PORT | quote }}
        - name: SCT_IP_ADDR_CSV
          value: {{ .Values.SCT_IP_ADDR_CSV | quote }}
        - name: SCT_PUB_PORT_CSV
          value: {{ .Values.SCT_PUB_PORT1 | quote }}, {{ .Values.SCT_PUB_PORT2 | quote }}
        image: {{ .Values.image_multi_camera_tracking }}
        #name: multi-camera-tracking
        ports:
        - containerPort: {{ .Values.MCT_PUB_PORT }}
        resources:
          requests:
            cpu: 0.1
            memory: 250Mi
          limits:
            cpu: 4
            memory: 10Gi
        readinessProbe:
          exec:
            command:
            - ls
            - /tmp
          initialDelaySeconds: 5
          periodSeconds: 60
      restartPolicy: Always
      #imagePullSecrets:
      #- name: wwssecret
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    Process: multi-camera-tracking
  creationTimestamp: null
  labels:
    io.kompose.service: multi-camera-tracking
  name: multi-camera-tracking
spec:
  ports:
  - name: "MCT_PUB_PORT"
    port: {{ .Values.MCT_PUB_PORT }}
    targetPort: {{ .Values.MCT_PUB_PORT }}
  selector:
    io.kompose.service: multi-camera-tracking
status:
  loadBalancer: {}

奇怪的是,我还创建了多个其他舵图,它们都与此非常相似,但是这一舵不起作用并产生错误。

4 个答案:

答案 0 :(得分:2)

就我而言,我已经写了

name: { { template "cp-kafka.fullname" . } }-jaas-configmap

由于那个错误。

正确的是

name: {{ template "cp-kafka.fullname" . }}-jaas-configmap

区别在于大括号之间的空格。

答案 1 :(得分:1)

我怀疑这是问题所在,第30行中的键后面的值;它包含一个,,这使其成为无效值。

{{ .Values.SCT_PUB_PORT1 | quote }}, {{ .Values.SCT_PUB_PORT2 | quote }}

答案 2 :(得分:1)

我找到了它不起作用的原因。首先,可以使用逗号分隔的值,但有问题的部分是引号。

这是错误的语法:

value: {{ .Values.SCT_PUB_PORT1 | quote }}, {{ .Values.SCT_PUB_PORT2 | quote }}

这是正确的:

value: {{ .Values.SCT_PUB_PORT1 }}, {{ .Values.SCT_PUB_PORT2 }}

答案 3 :(得分:0)

调试此问题的一种方法是进行空运行并渲染模板,以查看引起问题的原因是什么。

helm install [Chart] [flags] --dry-run --debug

这将使您看到哪些键的缩进不正确,因为此问题有时是由错误的缩进引起的。