{% raw %} # define your template in a config map apiVersion: v1 kind: ConfigMap metadata: name: grafana-config-tpl data: config.yaml: | datasources: - name: Graphite type: graphite access: proxy url: "{{ .uri }}" password: "{{ .password }}" user: "{{ .user }}" templated: | # key and value templated my-application-{{ .user}}: {{ .password | b64enc }} # conditional keys {{- if hasPrefix "oci://" .uri }} enableOCI: true {{- else }} enableOCI: false {{- end }} # Fixed values application-type: grafana annotations: | #dynamic timestamp generation last-synced-for-user/{{ .user }}: {{ now }} --- apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: my-template-example spec: # ... target: name: secret-to-be-created template: engineVersion: v2 templateFrom: - target: Data configMap: # name of the configmap to pull in name: grafana-config-tpl # here you define the keys that should be used as template items: - key: config.yaml templateAs: Values - key: templated templateAs: KeysAndValues - target: Annotations configMap: # name of the configmap to pull in name: grafana-config-tpl # here you define the keys that should be used as template items: - key: annotations templateAs: KeysAndValues data: - secretKey: user remoteRef: key: /grafana/user - secretKey: password remoteRef: key: /grafana/password - secretKey: uri remoteRef: key: /grafana/uri {% endraw %}