jhax
jhax

Reputation: 82

k8s `selector` does not match template `labels`

I am pulling my hair out here. I deployed my template, deleted it, and then I go to deploy it again without any changes and am getting the following error:

The Deployment "blog" is invalid: spec.template.metadata.labels: Invalid value: map[string]string(nil): selector does not match template labels

My deployment yaml is below and as you can see the metadata and selector labels are both web, so I have no idea what the error is trying to tell me:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: blog
  labels:
    app: web
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
  replicas: 1
  template:
    spec:
      containers:
      - env:
        image: test_blog:latest
        imagePullPolicy: Always
        name: blog
        ports:
        - containerPort: 8080

Upvotes: 1

Views: 2555

Answers (1)

Tarum
Tarum

Reputation: 993

You have two template block. I think thats the problem. Try this.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: blog
  labels:
    app: web
spec:
  selector:
    matchLabels:
      app: web
  replicas: 1
  template:
    metadata:
      labels:
         app: web
    spec:
      containers:
      - env:
        image: test_blog:latest
        imagePullPolicy: Always
        name: blog
        ports:
        - containerPort: 8080

Upvotes: 3

Related Questions