Replacement not working with overlay configmap values

Viewed 10

I'm trying to replace the configMapGenerator env values by creating an overlay. The expected overlay values show up in the configmap, but not in the ExternalSecret trough the replacements. I have the following base/kustomization.yaml where I'm doing some replacements:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- ex-secret.yaml

configMapGenerator:
- name: test
  envs:
    - env.properties

replacements:
- source:
    name: test
    kind: ConfigMap
    fieldPath: data.KEY
  targets:
    - select:
        kind: ExternalSecret
        name: prime-manager
      fieldPaths:
        - "spec.data.[secretKey=PRIME_MANAGER_CONSOLE_DB_password].remoteRef.key"
- source:
    name: test
    kind: ConfigMap
    fieldPath: data.KEY2
  targets:
    - select:
        kind: ExternalSecret
        name: prime-manager
      fieldPaths:
        - "spec.data.[secretKey=PRIME_MANAGER_WEB_DB_password].remoteRef.key"
- source:
    name: test
    kind: ConfigMap
    fieldPath: data.KEY3
  targets:
    - select:
        kind: ExternalSecret
        name: prime-manager
      fieldPaths:
        - "spec.data.[secretKey=PRIME_MANAGER_PARAMS_admin_password].remoteRef.key"

The base/env.properties file in the base contains the following properties and values:

KEY=test
KEY2=test2
KEY3=test3

base/ex-secret.yaml file for reproduce:

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: prime-manager
  labels:
    app.kubernetes.io/name: prime-manager
spec:
  refreshInterval: 1h
  secretStoreRef:
    kind: ClusterSecretStore
    name: keyvault-secret-store

  data:
  - secretKey: PRIME_MANAGER_CONSOLE_DB_password
    remoteRef:
      key: prime-manager-console-postgres-password-staging
  - secretKey: PRIME_MANAGER_WEB_DB_password
    remoteRef:
      key: prime-manager-web-postgres-password-staging
  - secretKey: PRIME_MANAGER_PARAMS_admin_password
    remoteRef:
      key: prime-manager-ferrontest-admin-password-staging

Now I have created an overlay overlay/kustomization.yaml to overwrite the values like

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- ../base

configMapGenerator:
- name: test
  behavior: replace
  envs:
    - env.properties

overlay/env.properties:

KEY=testen
KEY2=testen2
KEY3=testen3

File tree:

C:.
├───base
│       env.properties
│       ex-secret.yaml
│       kustomization.yaml
│
└───overlay
        env.properties
        kustomization.yaml

Expected output

I would expect testen, testen2 and testen3 to show up in the ExternalSecret output.

apiVersion: v1
data:
  KEY: testen
  KEY2: testen2
  KEY3: testen3
kind: ConfigMap
metadata:
  name: test-hbtgc5f7dm
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  labels:
    app.kubernetes.io/name: prime-manager
  name: prime-manager
spec:
  data:
  - remoteRef:
      key: testen
    secretKey: PRIME_MANAGER_CONSOLE_DB_password
  - remoteRef:
      key: testen2
    secretKey: PRIME_MANAGER_WEB_DB_password
  - remoteRef:
      key: testen3
    secretKey: PRIME_MANAGER_PARAMS_admin_password
  refreshInterval: 1h
  secretStoreRef:
    kind: ClusterSecretStore
    name: keyvault-secret-store

Actual output

But I'm still getting the base values in the ExternalSecret output.

apiVersion: v1
data:
  KEY: testen
  KEY2: testen2
  KEY3: testen3
kind: ConfigMap
metadata:
  name: test-hbtgc5f7dm
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  labels:
    app.kubernetes.io/name: prime-manager
  name: prime-manager
spec:
  data:
  - remoteRef:
      key: test
    secretKey: PRIME_MANAGER_CONSOLE_DB_password
  - remoteRef:
      key: test2
    secretKey: PRIME_MANAGER_WEB_DB_password
  - remoteRef:
      key: test3
    secretKey: PRIME_MANAGER_PARAMS_admin_password
  refreshInterval: 1h
  secretStoreRef:
    kind: ClusterSecretStore
    name: keyvault-secret-store

Kustomize version

v4.5.7

Platform

Windows

0 Answers
Related