Reputation: 31
I hope people can help to point out where is the issue from my deployment file, when i deploy i get error below Thanks for your help
"Deployment.apps "my-app" is invalid: [spec.template.spec.containers[0].volumeMounts[0].name: Not found: "audioSources", spec.template.spec.containers[0].volumeMounts[1].name: Not found: "authors", spec.template.spec.containers[0].volumeMounts[2].name: Not found: "covers"]"
here is my deployment file
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- image: myname/myimage
name: my-app
ports:
- containerPort: 3000
volumeMounts:
- name: audioSources
mountPath: /usr/share/nginx/html/audioSources
- name: authors
mountPath: /usr/share/nginx/html/authors
- name: covers
mountPath: /usr/share/nginx/html/covers
volumes:
- name: audioSources
hostPath:
path: /home/websites/audioSources
- name: authors
hostPath:
path: /home/websites/authors
- name: covers
hostPath:
path: /home/websites/covers
Upvotes: 0
Views: 656
Reputation: 30198
Looks like it's due to the indentation error in your YAML file
Volume should be under the spec section
Example YAML i am using
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: hello-app
name: hello-app
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: hello-app
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: hello-app
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /etc/cert/
name: foo
- mountPath: /etc/nginx/conf.d
name: nginxconf
readOnly: true
- image: gcr.io/google-samples/hello-app:1.0
imagePullPolicy: IfNotPresent
name: hello-app
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 256
name: nginxthroughpass
optional: false
name: nginxconf
- name: foo
secret:
defaultMode: 420
items:
- key: tls.crt
path: tls.crt
- key: tls.key
path: tls.key
secretName: nginx-prod
Upvotes: 2
Reputation: 18411
Here is a fixed deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- image: myname/myimage
name: my-app
ports:
- containerPort: 3000
volumeMounts:
- name: audio-sources
mountPath: /usr/share/nginx/html/audioSources
- name: authors
mountPath: /usr/share/nginx/html/authors
- name: covers
mountPath: /usr/share/nginx/html/covers
volumes:
- name: audio-sources
hostPath:
path: /home/websites/audioSources
- name: authors
hostPath:
path: /home/websites/authors
- name: covers
hostPath:
path: /home/websites/covers
spec
,same level as containers
.audioSource
is changed to audio-source
.Upvotes: 2