kubernetes-sigs / kustomize

Customization of kubernetes YAML configurations
Apache License 2.0
10.7k stars 2.22k forks source link

Better syntax for ordered operations #5723

Open TheSpiritXIII opened 1 week ago

TheSpiritXIII commented 1 week ago

Eschewed features

What would you like to have added?

I want to apply transformers in order with a better UX.

Why is this needed?

For example, let's say I use labels to set all resources labels, but I want a few to be different. I want to use patches to modify the different labels, but sadly patches runs before labels.

It would be great if Kustomize supported some sort of operations field which let you list otherwise global fixed operations:

# These get applied in order.
operations:
- labels:
  - pairs:
      addonmanager.kubernetes.io/mode: Reconcile
- patchesStrategicMerge:
  - patch.yaml

Can you accomplish the motivating task without this feature, and if so, how?

I've been using transformers to accomplish this:

transformers
- |-
  apiVersion: builtin
  kind: LabelTransformer
  metadata:
    name: addonmanager
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
  fieldSpecs:
  - path: metadata/labels
    create: true
- |-
  apiVersion: builtin
  kind: PatchStrategicMergeTransformer
  metadata:
    name: labels
  paths:
  - patch.yaml

However, there's some downsides:

What other solutions have you considered?

N/A

Anything else we should know?

No response

Feature ownership

k8s-ci-robot commented 1 week ago

This issue is currently awaiting triage.

SIG CLI takes a lead on issue triage for this repo, but any Kubernetes member can accept issues by applying the triage/accepted label.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.