Skip to content

labels with includeTemplates get applied to StatefulSet volumeClaimTemplates #5389

Closed as not planned
@hameno

Description

@hameno

What happened?

Trying to set datadog version labels on pods of a statefulset using

labels:
  - includeSelectors: false
    includeTemplates: true
    pairs:
      tags.datadoghq.com/version: r1
      app.kubernetes.io/version: r1

causes the labels to also be applied to volumeClaimTemplates which cannot be modified after initial creation and thus preventing updates.

What did you expect to happen?

volumeClaimTemplates should not be modified

How can we reproduce it (as minimally and precisely as possible)?

labels:
  - includeSelectors: false
    includeTemplates: true
    pairs:
      tags.datadoghq.com/version: r1
      app.kubernetes.io/version: r1
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: test
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name:test
  serviceName: test-headless
  replicas: 3
  template:
    metadata:
      name: test
      labels:
        app.kubernetes.io/name: test
    spec:
      containers:
        - name: pod
          image: test:r1
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /usr/src/app/data/usercontent
              name: userdata
      restartPolicy: Always
  volumeClaimTemplates:
    - metadata:
        name: userdata
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: gp3
        resources:
          requests:
            storage: 10Gi

Expected output

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: test
  labels:
      tags.datadoghq.com/version: r1
      app.kubernetes.io/version: r1
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name:test
  serviceName: test-headless
  replicas: 3
  template:
    metadata:
      name: test
      labels:
        app.kubernetes.io/name: test
        tags.datadoghq.com/version: r1
        app.kubernetes.io/version: r1
    spec:
      containers:
        - name: pod
          image: test:r1
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /usr/src/app/data/usercontent
              name: userdata
      restartPolicy: Always
  volumeClaimTemplates:
    - metadata:
        name: userdata
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: gp3
        resources:
          requests:
            storage: 10Gi

Actual output

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: test
  labels:
      tags.datadoghq.com/version: r1
      app.kubernetes.io/version: r1
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name:test
  serviceName: test-headless
  replicas: 3
  template:
    metadata:
      name: test
      labels:
        app.kubernetes.io/name: test
        tags.datadoghq.com/version: r1
        app.kubernetes.io/version: r1
    spec:
      containers:
        - name: pod
          image: test:r1
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /usr/src/app/data/usercontent
              name: userdata
      restartPolicy: Always
  volumeClaimTemplates:
    - metadata:
        name: userdata
        labels:
          tags.datadoghq.com/version: r1
          app.kubernetes.io/version: r1
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: gp3
        resources:
          requests:
            storage: 10Gi

Kustomize version

5.1.1

Operating system

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.needs-triageIndicates an issue or PR lacks a `triage/foo` label and requires one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions