Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

replacement in base kustomization missing custom nameSuffix #5618

Open
pberndt opened this issue Mar 19, 2024 · 1 comment
Open

replacement in base kustomization missing custom nameSuffix #5618

pberndt opened this issue Mar 19, 2024 · 1 comment
Labels
kind/bug Categorizes issue or PR as related to a bug. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one.

Comments

@pberndt
Copy link

pberndt commented Mar 19, 2024

What happened?

When applying a custom nameSuffix to a base kustomization that is using replacements, some of the replacement values will be missing the nameSuffix.

What did you expect to happen?

I expected the replacements to consistently reflect the applied nameSuffix. Instead, in some cases they contain the suffix and in other cases they reference non-existent resources (without the suffix).

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

.
├── base
│   ├── 1-pv.yaml
│   ├── 2-pvc.yaml
│   └── kustomization.yaml
└── custom
    └── kustomization.yaml
# base/1-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: tekton-cnb-pv  # will receive a custom suffix "-foo"
spec:
  storageClassName: ""
  claimRef:
    name: will-be-replaced  # => tekton-cnb-pvc (missing suffix!)
# base/2-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: tekton-cnb-pvc  # will receive a custom suffix "-foo"
spec:
  storageClassName: ""
  volumeName: will-be-replaced # => tekton-cnb-pv-foo (works as expected)
# base/kustomization.yaml
resources:
  - 1-pv.yaml
  - 2-pvc.yaml
replacements:
  - source:
      kind: PersistentVolume
      fieldPath: metadata.name
    targets:
      - select:
          kind: PersistentVolumeClaim
        fieldPaths:
          - spec.volumeName
  - source:
      kind: PersistentVolumeClaim
      fieldPath: metadata.name
    targets:
      - select:
          kind: PersistentVolume
        fieldPaths:
          - spec.claimRef.name
# custom/kustomization.yaml
resources:
  - ../base
nameSuffix: -foo

Then invoke

kustomize build custom

Expected output

apiVersion: v1
kind: PersistentVolume
metadata:
  name: tekton-cnb-pv-foo
spec:
  claimRef:
    name: tekton-cnb-pvc-foo
  storageClassName: ""
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: tekton-cnb-pvc-foo
spec:
  storageClassName: ""
  volumeName: tekton-cnb-pv-foo

(nameSuffix applied consistently)

Actual output

apiVersion: v1
kind: PersistentVolume
metadata:
  name: tekton-cnb-pv-foo
spec:
  claimRef:
    name: tekton-cnb-pvc
  storageClassName: ""
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: tekton-cnb-pvc-foo
spec:
  storageClassName: ""
  volumeName: tekton-cnb-pv-foo

(nameSuffix missing from PV's claimRef)

Kustomize version

v5.3.0

Operating system

Linux

@pberndt pberndt added the kind/bug Categorizes issue or PR as related to a bug. label Mar 19, 2024
@k8s-ci-robot
Copy link
Contributor

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. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label Mar 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Categorizes issue or PR as related to a bug. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one.
Projects
None yet
Development

No branches or pull requests

2 participants