// Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 package krusty_test import ( "testing" kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" ) func TestNamePrefixSuffixPatch(t *testing.T) { th := kusttest_test.MakeHarness(t) th.WriteK("bottom", `configMapGenerator: - name: bottom literals: - KEY=value `) th.WriteK("left-service", `resources: - deployment.yaml `) th.WriteF("left-service/deployment.yaml", `apiVersion: apps/v1 kind: Deployment metadata: name: left-deploy labels: app.kubernetes.io/name: left-deploy spec: selector: matchLabels: app.kubernetes.io/name: left-pod template: metadata: labels: app.kubernetes.io/name: left-pod spec: containers: - image: left-image:v1.0 name: service `) th.WriteK("right-service", `resources: - deployment.yaml `) th.WriteF("right-service/deployment.yaml", `apiVersion: apps/v1 kind: Deployment metadata: name: right-deploy labels: app.kubernetes.io/name: right-deploy spec: selector: matchLabels: app.kubernetes.io/name: right-pod template: metadata: labels: app.kubernetes.io/name: right-pod spec: containers: - image: right-image:v1.0 name: service `) th.WriteK("top", `resources: - ./left - ./right `) th.WriteK("top/left", `resources: - ../../left-service - ./bottom patches: - target: kind: Deployment name: left-deploy patch: |- apiVersion: apps/v1 kind: Deployment metadata: name: ignored-by-kustomize spec: template: spec: containers: - name: service env: - name: MAPPED_CONFIG_ITEM valueFrom: configMapKeyRef: name: left-bottom key: KEY `) th.WriteK("top/left/bottom", `namePrefix: left- resources: - ../../../bottom `) th.WriteK("top/right", `resources: - ../../right-service - ./bottom patches: - target: kind: Deployment name: right-deploy patch: |- apiVersion: apps/v1 kind: Deployment metadata: name: ignored-by-kustomize spec: template: spec: containers: - name: service env: - name: MAPPED_CONFIG_ITEM valueFrom: configMapKeyRef: name: right-bottom key: KEY `) th.WriteK("top/right/bottom", `namePrefix: right- resources: - ../../../bottom `) m := th.Run("top", th.MakeDefaultOptions()) // Desired behaviour: configMapKeyRef should reference ConfigMap names. th.AssertActualEqualsExpected(m, `apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: left-deploy name: left-deploy spec: selector: matchLabels: app.kubernetes.io/name: left-pod template: metadata: labels: app.kubernetes.io/name: left-pod spec: containers: - env: - name: MAPPED_CONFIG_ITEM valueFrom: configMapKeyRef: key: KEY name: left-bottom image: left-image:v1.0 name: service --- apiVersion: v1 data: KEY: value kind: ConfigMap metadata: name: left-bottom-9f2t6f5h6d --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: right-deploy name: right-deploy spec: selector: matchLabels: app.kubernetes.io/name: right-pod template: metadata: labels: app.kubernetes.io/name: right-pod spec: containers: - env: - name: MAPPED_CONFIG_ITEM valueFrom: configMapKeyRef: key: KEY name: right-bottom image: right-image:v1.0 name: service --- apiVersion: v1 data: KEY: value kind: ConfigMap metadata: name: right-bottom-9f2t6f5h6d `) }