【问题标题】:Invalid Kubernetes YAML Spec. mapping values are not allowed here无效的 Kubernetes YAML 规范。此处不允许映射值
【发布时间】:2021-07-07 03:41:39
【问题描述】:

我正在尝试部署我的 Kubernetes 应用,但它不断抛出错误:

Exception while processing templates/deployment.yaml
ERROR   2021-06-17 14:57:05    Invalid Kubernetes YAML Spec. mapping values are not allowed here
ERROR   2021-06-17 14:57:05     in 'string', line 27, column 24:
ERROR   2021-06-17 14:57:05                      valueFrom:

从这个错误中,我至少可以将其缩小到我的 deployment.yaml 文件。对于“valueFrom”错误,我可以将其跟踪到“env:”部分。从那里我认为这是一个格式问题。

部署.yaml

{{- if .Values.env.config}}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{.Values.name}}
data:
{{.Values.env.config | toYaml | indent 2}}
---
{{- end}}

{{- if .Values.env.secrets}}
apiVersion: v1
kind: Secret
metadata:
  name: {{.Values.name}}
stringData:
{{.Values.env.secrets | toYaml | indent 2}}
---
{{- end}}

{{- if .Values.dockercfg}}
apiVersion: v1
kind: Secret
metadata:
  name: {{.Values.name}}-dockercfg
  annotations:
    harness.io/skip-versioning: true
data:
  .dockercfg: {{.Values.dockercfg}}
type: kubernetes.io/dockercfg
---
{{- end}}

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{.Values.name}}-deployment
spec:
  replicas: {{int .Values.replicas}}
  selector:
    matchLabels:
      app: {{.Values.name}}
  template:
    metadata:
      labels:
        app: {{.Values.name}}
        tags.datadoghq.com/env: {{.Values.environment_name}}
        tags.datadoghq.com/service: {{.Values.name}}
        tags.datadoghq.com/version: "{{.Values.version}}"
    spec:
      {{- if .Values.dockercfg}}
      imagePullSecrets:
      - name: {{.Values.name}}-dockercfg
      {{- end}}
      serviceAccountName: {{.Values.name}}-service-account
      containers:
      - name: {{.Values.name}}
        image: {{.Values.image}}
        env:
          - name: FILE_SYSTEM_ID
              valueFrom:
                configMapKeyRef:
                  name: efs-provisioner
                  key: file.system.id
          - name: AWS_REGION
              valueFrom:
                configMapKeyRef:
                  name: efs-provisioner
                  key: aws.region
          - name: PROVISIONER_NAME
              valueFrom:
                configMapKeyRef:
                  name: efs-provisioner
                  key: provisioner.name
          - name: DD_AGENT_HOST
            valueFrom:
              fieldRef:
                fieldPath: status.hostIP
          volumeMounts:
            - name: pv-volume
              mountPath: /usr/local/share/mapserver
      volumes:
        - name: pv-volume
          nfs:
            server: {{.Values.EFS_ID}}.efs.{{.Values.AWS_REGION}}.amazonaws.com
            path: /
        {{- if or .Values.env.config .Values.env.secrets}}
        envFrom:
        {{- if .Values.env.config}}
        - configMapRef:
            name: {{.Values.name}}
        {{- end}}
        {{- if .Values.env.secrets}}
        - secretRef:
            name: {{.Values.name}}
        {{- end}}
        {{- end}}

我不熟悉使用 Kubernetes 和 YAML。我认为这是一个格式问题,但是无论我在哪里看,格式看起来都是正确的。

【问题讨论】:

  • 你的 volumes 块应该低于 envFrom 一个 - 后者是你的容器的一部分以及 @berk-soysal 所说的。

标签: kubernetes


【解决方案1】:

看起来这是一个缩进问题:

- name: FILE_SYSTEM_ID
    valueFrom:
      configMapKeyRef:

应该是

- name: FILE_SYSTEM_ID
  valueFrom:
    configMapKeyRef:

【讨论】:

    猜你喜欢
    • 2019-12-09
    • 2019-10-27
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2014-12-13
    • 2019-08-16
    • 2012-06-13
    相关资源
    最近更新 更多