Repository: external-secrets/external-secrets (go)

Issue:
Add IBM Power (ppc64le) support
We'd like to see support for IBM Power (ppc64le architecture) added to ESO.
Other than https://github.com/external-secrets/external-secrets/blob/477945777d8cc969ed54854f34bef1c134fb748a/.github/workflows/ci.yml#L148 would there be more locations to add such support for? Do you think anything else is needed?

Pull request description:
Update ci.yml with ppc64le arch support
## Problem Statement

Adding support for ppc64le arch.

## Related Issue

Fixes #3499 

## Proposed Changes

Add ppc64le arch to build script.

## Checklist

- [x] I have read the [contribution guidelines](https://external-secrets.io/latest/contributing/process/#submitting-a-pull-request)
- [x] All commits are signed with `git commit --signoff`
- [ ] My changes have reasonable test coverage
- [ ] All tests pass with `make test`
- [x] I ensured my PR is ready for review with `make reviewable`


Patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d2c2969b1..7a1463a71 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -145,18 +145,18 @@ jobs:
         include:
         - dockerfile: "Dockerfile"
           build-args: "CGO_ENABLED=0"
-          build-arch: "amd64 arm64 s390x"
-          build-platform: "linux/amd64,linux/arm64,linux/s390x"
+          build-arch: "amd64 arm64 s390x ppc64le"
+          build-platform: "linux/amd64,linux/arm64,linux/s390x,linux/ppc64le"
           tag-suffix: "" # distroless
         - dockerfile: "Dockerfile.ubi"
           build-args: "CGO_ENABLED=0"
-          build-arch: "amd64 arm64"
-          build-platform: "linux/amd64,linux/arm64"
+          build-arch: "amd64 arm64 ppc64le"
+          build-platform: "linux/amd64,linux/arm64,linux/ppc64le"
           tag-suffix: "-ubi"
         - dockerfile: "Dockerfile.ubi"
           build-args: "CGO_ENABLED=0 GOEXPERIMENT=boringcrypto"
-          build-arch: "amd64"
-          build-platform: "linux/amd64"
+          build-arch: "amd64 ppc64le"
+          build-platform: "linux/amd64,linux/ppc64le"
           tag-suffix: "-ubi-boringssl"
     with:
       dockerfile: ${{ matrix.dockerfile }}
diff --git a/docs/guides/templating-v1.md b/docs/guides/templating-v1.md
index 914762318..82e3d5908 100644
--- a/docs/guides/templating-v1.md
+++ b/docs/guides/templating-v1.md
@@ -5,7 +5,9 @@
     Templating Engine v1 is **deprecated** and will be removed in the future. Please migrate to engine v2 and take a look at our [upgrade guide](templating.md#migrating-from-v1) for changes.
 
 
-With External Secrets Operator you can transform the data from the external secret provider before it is stored as `Kind=Secret`. You can do this with the `Spec.Target.Template`. Each data value is interpreted as a [golang template](https://golang.org/pkg/text/template/).
+With External Secrets Operator you can transform the data from the external secret provider before it is stored as `Kind=Secret`. You can do this with the `Spec.Target.Template`.
+
+Each data value is interpreted as a [Go template](https://golang.org/pkg/text/template/). Please note that referencing a non-existing key in the template will raise an error, instead of being suppressed.
 
 ## Examples
 
diff --git a/docs/guides/templating.md b/docs/guides/templating.md
index 069f2c5d3..da9854766 100644
--- a/docs/guides/templating.md
+++ b/docs/guides/templating.md
@@ -1,6 +1,8 @@
 # Advanced Templating v2
 
-With External Secrets Operator you can transform the data from the external secret provider before it is stored as `Kind=Secret`. You can do this with the `Spec.Target.Template`. Each data value is interpreted as a [golang template](https://golang.org/pkg/text/template/).
+With External Secrets Operator you can transform the data from the external secret provider before it is stored as `Kind=Secret`. You can do this with the `Spec.Target.Template`.
+
+Each data value is interpreted as a [Go template](https://golang.org/pkg/text/template/). Please note that referencing a non-existing key in the template will raise an error, instead of being suppressed.
 
 !!! note
 
diff --git a/pkg/template/v1/template.go b/pkg/template/v1/template.go
index 28b90d930..59c17b6a2 100644
--- a/pkg/template/v1/template.go
+++ b/pkg/template/v1/template.go
@@ -89,6 +89,7 @@ func Execute(tpl, data map[string][]byte, _ esapi.TemplateScope, _ esapi.Templat
 
 func execute(k, val string, data map[string][]byte) ([]byte, error) {
 	t, err := tpl.New(k).
+		Option("missingkey=error").
 		Funcs(tplFuncs).
 		Parse(val)
 	if err != nil {
diff --git a/pkg/template/v2/template.go b/pkg/template/v2/template.go
index e7684e618..d0eea9956 100644
--- a/pkg/template/v2/template.go
+++ b/pkg/template/v2/template.go
@@ -139,6 +139,7 @@ func execute(k, val string, data map[string][]byte) ([]byte, error) {
 	}
 
 	t, err := tpl.New(k).
+		Option("missingkey=error").
 		Funcs(tplFuncs).
 		Parse(val)
 	if err != nil {


Test patch:
diff --git a/pkg/template/v1/template_test.go b/pkg/template/v1/template_test.go
index 2d5c645c8..0a1aa41a1 100644
--- a/pkg/template/v1/template_test.go
+++ b/pkg/template/v1/template_test.go
@@ -293,6 +293,14 @@ func TestExecute(t *testing.T) {
 			data:   map[string][]byte{},
 			expErr: "unable to parse template",
 		},
+		{
+			name: "unknown key error",
+			tpl: map[string][]byte{
+				"key": []byte(`{{ .unknown }}`),
+			},
+			data:   map[string][]byte{},
+			expErr: "unable to execute template at key key",
+		},
 		{
 			name: "jwk rsa pub pem",
 			tpl: map[string][]byte{
diff --git a/pkg/template/v2/template_test.go b/pkg/template/v2/template_test.go
index ac9fadd62..7a15c83d7 100644
--- a/pkg/template/v2/template_test.go
+++ b/pkg/template/v2/template_test.go
@@ -369,6 +369,14 @@ func TestExecute(t *testing.T) {
 			data:   map[string][]byte{},
 			expErr: "unable to parse template",
 		},
+		{
+			name: "unknown key error",
+			tpl: map[string][]byte{
+				"key": []byte(`{{ .unknown }}`),
+			},
+			data:   map[string][]byte{},
+			expErr: "unable to execute template at key key",
+		},
 		{
 			name: "jwk rsa pub pem",
 			tpl: map[string][]byte{