snowdrop-zen / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
1 stars 0 forks source link

quarkus-kubernetes: wrong kubernetes resource get generated when using an existing resource #364

Closed snowdrop-bot closed 3 years ago

snowdrop-bot commented 3 years ago

Describe the bug

I've tried to configure the generated kubernetes resources using an existing resource as described in deploying-to-kubernetes guide but I noticed that it is required to provide some empty objects to get a proper generated resources.

As example, assuming I want to use the following resource:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
    spec:
      containers:
        - env:
            - name: MY_NS
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace

Then the generated resource has a spec like:

spec:
  replicas: 1
  template:
    metadata:
      labels:
        app.kubernetes.io/version: latest
        app.kubernetes.io/name: my-app

which lacks the mandatory selector section.

if I amend the existing resource and I add some empty sections, like:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
  template:
    metadata:
      annotations:
      labels:
    containers:
      - env:
          - name: MY_NS
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace

then the generated result is like:

spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/version: latest
      app.kubernetes.io/name: my-app
  template:
    metadata:
      annotations:
        prometheus.io/port: "8080"
        prometheus.io/scheme: http
        app.quarkus.io/commit-id: ...
        app.quarkus.io/vcs-url: ...
        app.quarkus.io/build-timestamp: 2021-06-23 - 07:41:56 +0000
        prometheus.io/scrape: "true"
        prometheus.io/path: /q/metrics
      labels:
        app.kubernetes.io/version: latest
        app.kubernetes.io/name: my-app

Expected behavior

It should not be needed to set empty sections to get a proper generated resource

Actual behavior

The generated resource is incorrect if empty fields are omitted


https://github.com/quarkusio/quarkus/issues/18095


$upstream:18095$