Kustomize: Update internal references that are going to be changes using namePrefix or nameSuffix

kustomize nameReference object reference

2 min read | by Jordi Prats

When using namePrefix or nameSuffix to change the names of the resources we are deplying using Kustomize, we need to make sure the cross object references get updated as well.

For example, if we have a SecretStore like this one:

apiVersion: external-secrets.io/v1beta1 kind: SecretStore metadata:  name: testvault-backend  annotations:  argocd.argoproj.io/sync-wave: "1" spec:  provider:  vault:  server: "http://testvault.testvault.svc.cluster.local:80"  path: "secret"  version: "v2"  auth:  tokenSecretRef:  name: "vault-token"  key: "token" 

We'll need to make sure that the spec.secretStoreRef still points to that object after updating it's name with namePrefix and nameSuffix:

apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata:  name: eso-demo  annotations:  argocd.argoproj.io/sync-wave: "2" spec:  refreshInterval: "15s"  secretStoreRef:  name: testvault-backend  kind: SecretStore  data:  - secretKey: demo  remoteRef:  key: secret/demo  property: test 

To do so we'll need to add a configurations entry to our kustomization.yaml like follows:

configurations: - nameReference.yaml 

The nameReference.yaml file will contain the references that needs updating. With the following configuration we are going to tell Kustomize to update the field spec.secretStoreRef.name from the ExternalSecret with the updated name for the SecretStore object.

nameReference:  - kind: SecretStore  fieldSpecs:  - kind: ExternalSecret  path: spec/secretStoreRef/name 

When we have multiple objects, we just need to make sure that the initial objects are pointing to the right one: Kustomize is going to take it from here to update references.


Posted on 05/01/2023

Categories