I am trying to start a deployment but I am getting this error
error: error validating "httpd-basic-deployment.yaml": error validating data: ValidationError(Deployment.spec.template.spec.containers): invalid type for io.k8s.api.core.v1.PodSpec.containers: got "map", expected "array"; if you choose to ignore these errors, turn validation off with --validate=false
of the below pod definition file:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ebay-app
spec:
selector:
matchLabels:
environment: dev
app: ebay
replicas: 1
template:
metadata:
labels:
environment: dev
app: ebay
spec:
volumes:
- name: volume
hostPath:
path: /mnt/data
containers:
name: container1-nginx
image: nginx
volumeMounts:
name: volume
mountPath: /var/nginx-data
name: container2-tomcat
image: tomcat
nodeSelector:
boardType: x86vm
I tried listing the cotnainers again:
volumes:
- name: volume
hostPath:
path: /mnt/data
containers:
- name: container1-nginx
image: nginx
volumeMounts:
name: volume
mountPath: /var/nginx-data
- name: container2-tomcat
image: tomcat
nodeSelector:
boardType: x86vm
that results in different error
error: error validating "httpd-basic-deployment.yaml": error validating data: ValidationError(Deployment.spec.template.spec.containers[0].volumeMounts): invalid type for io.k8s.api.core.v1.Container.volumeMounts: got "map", expected "array"; if you choose to ignore these errors, turn validation off with --validate=false
what am i doing wrong ?
VolumeMounts should also have -
. It indicates start of an array. Change it as shown below.
volumeMounts:
- name: volume
mountPath: /var/nginx-data
Have a look at this example yaml to create pod that has two containers and shares same volume. In this example, its clear where to use -
symbol and where not.