#kubernetes
Вопрос:
Я пытаюсь развернуть свое приложение 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:
Исходя из этой ошибки, я могу, по крайней мере, сузить ее до моего развертывания.файл 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. Я считаю, что это проблема с форматированием, однако, куда бы я ни посмотрел, форматирование выглядит правильным.
Комментарии:
1. ваш
volumes
блок должен быть нижеenvFrom
первого — последний является частью вашего контейнера И того, что сказал @berk-soysal.
Ответ №1:
Похоже, это проблема с отступами:
- name: FILE_SYSTEM_ID
valueFrom:
configMapKeyRef:
должно быть
- name: FILE_SYSTEM_ID
valueFrom:
configMapKeyRef: