feat: dynamic target implementation for external secrets sources #5470
feat: dynamic target implementation for external secrets sources #5470Skarlso merged 33 commits intoexternal-secrets:mainfrom
Conversation
pkg/controllers/externalsecret/externalsecret_controller_watch_test.go
Outdated
Show resolved
Hide resolved
1da7aa5 to
d26410c
Compare
pkg/controllers/externalsecret/externalsecret_controller_manifest.go
Outdated
Show resolved
Hide resolved
pkg/controllers/externalsecret/externalsecret_controller_manifest.go
Outdated
Show resolved
Hide resolved
pkg/controllers/externalsecret/externalsecret_controller_manifest.go
Outdated
Show resolved
Hide resolved
09ae0bf to
a7e96ed
Compare
|
Two problems:
|
pkg/controllers/externalsecret/externalsecret_controller_manifest.go
Outdated
Show resolved
Hide resolved
config/crds/bases/external-secrets.io_clusterexternalsecrets.yaml
Outdated
Show resolved
Hide resolved
| // ManifestTarget defines a custom Kubernetes resource type to be created | ||
| // instead of a Secret. This allows ExternalSecret to create ConfigMaps, | ||
| // Custom Resources, or any other Kubernetes resource type. | ||
| type ManifestTarget struct { |
There was a problem hiding this comment.
nit: This should be called reference in alignment with existing k8s reference concepts, so ManifestReference
|
|
||
| // watchTracker tracks which GroupVersionKinds we're currently watching | ||
| // for non-Secret targets to enable drift detection. | ||
| watchTracker WatchTracker |
There was a problem hiding this comment.
we have to be very careful here on implications as discussed in community call. please make sure this watchtracker is properly regulated
There was a problem hiding this comment.
I'm thinking how to do this nicely. :)
pkg/controllers/externalsecret/externalsecret_controller_manifest.go
Outdated
Show resolved
Hide resolved
pkg/controllers/externalsecret/externalsecret_controller_manifest.go
Outdated
Show resolved
Hide resolved
pkg/controllers/externalsecret/externalsecret_controller_manifest.go
Outdated
Show resolved
Hide resolved
| secret.Data = make(map[string][]byte) | ||
| labels[k] = string(val) | ||
| obj.SetLabels(labels) | ||
| case "data": |
There was a problem hiding this comment.
what if someone sets string data on a configmap? whats the behavior?
There was a problem hiding this comment.
It will probably fail horribly. :D :D I have to check that as well. :) I assume ( hopefully ) the api would throw back an error that spec ( or any other field ) is not allowed on the given object.
575d088 to
aa078e5
Compare
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
… objects Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
… tracking objects Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com> On-behalf-of: Gergely Brautigam <gergely.brautigam@sap.com>
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com> On-behalf-of: Gergely Brautigam <gergely.brautigam@sap.com>
…leGenericTarget Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
5cd445d to
606f8ae
Compare
|
/ok-to-test sha=606f8aec71698a0546710ad6321a3eca2eac814a |
Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
606f8ae to
86ceaec
Compare
|
/ok-to-test sha=86ceaecee942dba44ef84aaa3947d0417dedfb87 |
|
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [external-secrets](https://github.com/external-secrets/external-secrets) | major | `0.20.4` -> `1.0.0` | --- ### Release Notes <details> <summary>external-secrets/external-secrets (external-secrets)</summary> ### [`v1.0.0`](https://github.com/external-secrets/external-secrets/releases/tag/v1.0.0) [Compare Source](external-secrets/external-secrets@v0.20.4...v1.0.0) Image: `ghcr.io/external-secrets/external-secrets:v1.0.0` Image: `ghcr.io/external-secrets/external-secrets:v1.0.0-ubi` Image: `ghcr.io/external-secrets/external-secrets:v1.0.0-ubi-boringssl` <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### General - chore: release helm chart for v0.20.4 by [@​Skarlso](https://github.com/Skarlso) in [#​5502](external-secrets/external-secrets#5502) - chore(actions): fix security alerts for github actions by [@​Skarlso](https://github.com/Skarlso) in [#​5504](external-secrets/external-secrets#5504) - chore(release): fix incorrect shas from security alert pinning by [@​jakobmoellerdev](https://github.com/jakobmoellerdev) in [#​5512](external-secrets/external-secrets#5512) - chore: update dependencies by [@​eso-service-account-app](https://github.com/eso-service-account-app)\[bot] in [#​5519](external-secrets/external-secrets#5519) - fix: upgrade go version by [@​Skarlso](https://github.com/Skarlso) in [#​5529](external-secrets/external-secrets#5529) - fix(charts): normalize certificate duration default value by [@​aslafy-z](https://github.com/aslafy-z) in [#​5497](external-secrets/external-secrets#5497) - chore(revive-linter): add revive linter configuration by [@​Lumexralph](https://github.com/Lumexralph) in [#​5515](external-secrets/external-secrets#5515) - feat: go module separation by [@​moolen](https://github.com/moolen) in [#​5498](external-secrets/external-secrets#5498) - fix: update deps script to reflect new go mod structure by [@​moolen](https://github.com/moolen) in [#​5532](external-secrets/external-secrets#5532) - fix: lint by [@​gusfcarvalho](https://github.com/gusfcarvalho) in [#​5536](external-secrets/external-secrets#5536) - feat: dynamic target implementation for external secrets sources by [@​Skarlso](https://github.com/Skarlso) in [#​5470](external-secrets/external-secrets#5470) - fix: codeql should not rebuild the world on every run by [@​Skarlso](https://github.com/Skarlso) in [#​5540](external-secrets/external-secrets#5540) - fix(onepassword): Reduce API usage by [@​sondrelg](https://github.com/sondrelg) in [#​5410](external-secrets/external-secrets#5410) - feat(esoctl): adds bootstrap generator commands by [@​gusfcarvalho](https://github.com/gusfcarvalho) in [#​5539](external-secrets/external-secrets#5539) - fix: adds missing externalsecret\_type validation on generatorRef by [@​gusfcarvalho](https://github.com/gusfcarvalho) in [#​5547](external-secrets/external-secrets#5547) - chore(docs): fix the generic resource doc using the incorrect switch by [@​Skarlso](https://github.com/Skarlso) in [#​5548](external-secrets/external-secrets#5548) - docs(adopters): add Topicus.Education to adopters list by [@​sboschman](https://github.com/sboschman) in [#​5551](external-secrets/external-secrets#5551) - fix(build): use more portable bash by [@​tiagolobocastro](https://github.com/tiagolobocastro) in [#​5537](external-secrets/external-secrets#5537) ##### Dependencies - chore(deps): bump alpine from `4bcff63` to `4b7ce07` in /hack/api-docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5507](external-secrets/external-secrets#5507) - chore(deps): bump golang from 1.25.2 to 1.25.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5506](external-secrets/external-secrets#5506) - chore(deps): bump golang from `aee43c3` to `aee43c3` by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5516](external-secrets/external-secrets#5516) - chore(deps): bump golang from 1.25.2-bookworm to 1.25.3-bookworm in /e2e by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5505](external-secrets/external-secrets#5505) - chore(deps): bump anchore/sbom-action from 0.20.8 to 0.20.9 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5508](external-secrets/external-secrets#5508) - chore(deps): bump hashicorp/setup-terraform from [`c529327`](external-secrets/external-secrets@c529327) to [`982f6f0`](external-secrets/external-secrets@982f6f0) by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5510](external-secrets/external-secrets#5510) - chore(deps): bump actions/github-script from 7.0.1 to 8.0.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5513](external-secrets/external-secrets#5513) - chore(deps): bump github/codeql-action from 4.30.9 to 4.31.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5514](external-secrets/external-secrets#5514) - chore(deps): bump actions/cache from 4.2.4 to 4.3.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5511](external-secrets/external-secrets#5511) - chore(deps): bump regex from 2025.9.18 to 2025.10.23 in /hack/api-docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5509](external-secrets/external-secrets#5509) - chore(deps): bump mkdocs-macros-plugin from 1.4.0 to 1.4.1 in /hack/api-docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5518](external-secrets/external-secrets#5518) - chore(deps): bump termcolor from 3.1.0 to 3.2.0 in /hack/api-docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5517](external-secrets/external-secrets#5517) - chore(deps): bump github/codeql-action from 4.31.0 to 4.31.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5531](external-secrets/external-secrets#5531) - chore(deps): bump mkdocs-material from 9.6.22 to 9.6.23 in /hack/api-docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​5533](external-secrets/external-secrets#5533) #### New Contributors - [@​sondrelg](https://github.com/sondrelg) made their first contribution in [#​5410](external-secrets/external-secrets#5410) - [@​tiagolobocastro](https://github.com/tiagolobocastro) made their first contribution in [#​5537](external-secrets/external-secrets#5537) **Full Changelog**: <external-secrets/external-secrets@v0.20.4...v1.0.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4wLjEiLCJ1cGRhdGVkSW5WZXIiOiI0Mi4wLjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImNoYXJ0Il19--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/1985 Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net> Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>



Problem Statement
This is an implementation of syncing to a custom resource https://github.com/external-secrets/external-secrets/blob/main/design/012-sync-to-custom-resource.md.
The following changes have been applied to the external secret controller and the external secret object:
Related Issue
Proposed Changes
How do you like to solve the issue and why?
Format
Please ensure that your PR follows the following format for the title:
Where
scopeis optionally one of:Checklist
git commit --signoffmake testmake reviewable