Error When Creating "Deployment. Yaml": Deployment in Version "V1" Cannot Be Handled as a Deployment

I am new to DevOps. I wrote a deployment.yaml file for a Kubernetes cluster I just created on Digital Oceans. Creating the deployment keeps bringing up errors that I can't decode for now. This is just a test deployment in preparation for the migration of my company's web apps to kubernetes.

I tried editing the content of the deployment to look like conventional examples I've found. I can't even get this simple example to work. You may find the deployment.yaml content below.

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: testit-01-deployment
spec:
  replicas: 4
  #number of replicas generated
  selector:
    #assigns labels to the pods for future selection
    matchLabels:
      app: testit
      version: v01
  template:
    metadata:
      Labels:
        app: testit
        version: v01
    spec:
      containers:
        -name: testit-container
        image: teejayfamo/testit
        ports:
          -containerPort: 80

I ran this line on cmd in the folder container:

kubectl apply -f deployment.yaml --validate=false

Error from server (BadRequest): error when creating "deployment.yaml": Deployment in version "v1" cannot be handled as a Deployment: v1.Deployment.Spec: v1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: decode slice: expect [ or n, but found {, error found in #10 byte of ...|tainers":{"-name":"t|..., bigger context ...|:"testit","version":"v01"}},"spec":{"containers":{"-name":"testit-container","image":"teejayfamo/tes|...

I couldn't even get any information on this from my search. I can't just get the deployment created. Pls, who understands and can put me through?

1

4 Answers

Since this is the top result of the search, I thought I should add another case when this can occur. In my case, it was coming because there was no double quote on numeric env. var. Log did provide a subtle hint, but it was not very helpful.

Log

..., bigger context ...|c-server-service"},{"name":"SERVER_PORT","value":80}]

Env variable - the value of SERVER_PORT needs to be in double quote.

env:
  - name: SERVER_HOST
    value: grpc-server-service
  - name: SERVER_PORT
    value: "80"

Kubernetes issue for reference.

6

There are syntax errors in your yaml file.

This should work.

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: testit-01-deployment
spec:
  replicas: 4
  #number of replicas generated
  selector:
    #assigns labels to the pods for future selection
    matchLabels:
      app: testit
      version: v01
  template:
    metadata:
      labels:
        app: testit
        version: v01
    spec:
      containers:
      - name: testit-container
        image: teejayfamo/testit
        ports:
        - containerPort: 80

The problem was:

  • Labels should be labels
  • The syntax of - name: and - containerPort were not formatted properly in spec.containers section.

Hope this helps.

3

In short -> Syntax Error

The mistake I was doing:

ports:
  -containerPort: 8081

the above snippet causing the following error:

Error from server (BadRequest): error when creating ".\\deployment.yml": Deployment in version "v1" cannot be handled as a Deployment: json: cannot unmarshal object into Go struct field Container.spec.template.spec.containers.ports of type []v1.ContainerPort

And this is how I corrected:

ports:
  - containerPort: 8081

so the difference was -containerPort (wrong one) and - containerPort (correct one).

Just to add, in my case, I turned up this result, but ultimately, the problem I had was that I had defined the same environment variable twice

Example:

...
env:
 - name: FOO
   value: "bar"
 - name: FOO
   value: "bar"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Sophia Al-Mansoor

Sophia Al-Mansoor

Global Business & E-Commerce Reporter

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.

Share this article
Twitter Facebook Pinterest