Skip to content

Create release workable-2.10.0 - #68

Open
mkousteris wants to merge 8 commits into
workable-2.10.0from
create-workable-2.10.0
Open

Create release workable-2.10.0#68
mkousteris wants to merge 8 commits into
workable-2.10.0from
create-workable-2.10.0

Conversation

@mkousteris

@mkousteris mkousteris commented Sep 14, 2026

Copy link
Copy Markdown

SRE-7669

What

Upgrades external-secrets from 1.3.1 to 2.10.0 by replaying the Workable fork commits on top of upstream v2.10.0, plus CI workflow hardening to fix the zizmor findings.

Workable fork changes (replayed from workable-1.3.1)

  • Vault symlink support (providers/v1/vault/symlink.go): applied cleanly
  • Workable CI workflow (publishes the image to GAR on workable-* tags), CODEOWNERS, Makefile tweaks: conflicts resolved, keeping Workable behaviour and upstream 2.10.0 action pins
  • lint job: golangci-lint version set explicitly to v2.12.2 (upstream removed GOLANGCI_VERSION), matching hack/tools/go.mod
  • Dockerfile.standalone: -tags ${PROVIDER} re-applied on top of upstream's golang:1.27.0-alpine builder
  • Dropped Pin setup-envtest install to release-0.20: 2.10.0 installs setup-envtest from the pinned hack/tools/go.mod
  • zizmor fixes: setup-go cache disabled in lint (cache-poisoning), docker/build-push-actionv7.3.0 (old pin was v6.9.0 labelled v6.9.1), image tag passed via env in push steps (template-injection)

Main upstream changes (v1.3.1 → v2.10.0)

Breaking / upgrade notes

  • Removed unmaintained Alibaba and Device42 providers (v2.0.0)
  • Templating: sprig removed and getHostByName dropped from template functions (v2.3.0). Review templates using sprig functions
  • Webhook rejects service-account-token targets with the SA-name annotation, and bootstrap.kubernetes.io/token targets (v2.4.1)
  • metadataPolicy, conversionStrategy, decodingStrategy are no longer server-side defaulted. Empty means Default (v2.9.0), so expect Flux diffs to disappear
  • Chart: startupProbe.useReadinessProbePort / startupProbe.port removed. RBAC tightened (serviceaccounts/token, scoped RBAC defaults, cert-controller scope). webhook.failurePolicy now also applies to SecretStore webhooks
  • Chart OCI artifact changed (v2.2.0). Only affects Flux OCIRepository users (needs layerSelector), not GitRepository sources
  • CRDs: v1 served, v1beta1 still not served (same as 1.3.1)
  • Upstream Chart.yaml at the v2.10.0 tag still reads version: 2.9.0 / appVersion: v2.9.0

Providers

  • Vault: token cache promoted out of experimental (vault.enableTokenCache, default false), VaultRole for TLS cert auth, VaultDynamicSecret parameters from spec, more KV v2 custom metadata, fix for secret data leaking in json.Unmarshal errors
  • OpenBao: new dedicated provider (kubernetes, userPass, appRole auth, namespaces)
  • AWS: Certificate Manager provider, replicationLocations, no IMDS fallback with explicit credentials, credentials redacted in logs
  • GCP Secret Manager: projectID auto-detection, WIF service account impersonation, workload identity token expiry preserved
  • Kubernetes: system CA fallback, SecretExists. PushSecret now replaces the whole remote secret
  • 1Password SDK: native item IDs, GetAllSecrets, environments
  • Infisical, Akeyless, Conjur (cert auth, PushSecret): assorted features and fixes
  • New providers: Nebius MysteryBox, OVH, BeyondTrust WorkloadCredentials. New generator: GitLab deploy token

Core / controller

  • Missing metrics added, caching fixes. Controller-runtime priority queue disabled
  • Cross-namespace PushSecret with ClusterSecretStore, store UID cache fix, reconcile feedback loop prevented
  • objectMeta/ownerReferences propagation to targets, source null byte policy
  • --leader-election-id and configurable lease timings for HA
  • Opt-in metrics endpoint authn/authz and HTTPS (--metrics-auth, --metrics-secure, default off)
  • ExternalSecret SyncWindows, CreateOrMerge creation policy, SecretStore refreshInterval as a duration
  • Reconcile errors surfaced in status conditions, TLS security profile applied to deployments

Build/CI (upstream)

  • Go 1.25.51.26.6 (go.mod). Standalone image builder is golang:1.27.0-alpine
  • Runtime image still gcr.io/distroless/static (digest bump)
  • Signing/publishing reworked, all dependencies pinned, multiple dependency CVE fixes

Full upstream changelog: external-secrets/external-secrets@v1.3.1...v2.10.0

Nikolaos Stamatopoulos and others added 7 commits September 14, 2026 14:28
Aikido flagged actions/checkout leaving GITHUB_TOKEN in git config,
readable by later steps. None of the jobs push commits, and unit-tests'
git fetch works unauthenticated since the repo is public, so the token
doesn't need to persist for any checkout in this workflow.

#66 (comment)
go build -o external-secrets main.go had no -tags flag. Since v1.x,
every provider registration lives behind a Go build constraint
(pkg/register/<name>.go: //go:build <name> || all_providers, see
AGENTS.md), so a bare go build compiles an empty pkg/register and
zero providers register at runtime. Every ClusterSecretStore/SecretStore
then fails reconciliation with:

  could not get provider client: failed to find registered store
  backend for type: vault, name: <store>

Same root cause, same error shape as external-secrets#5807
(webhook provider, `make run` dev build), fixed there for the Makefile/
Tiltfile default in external-secrets#5851 - but that
fix never touched Dockerfile.standalone, which still builds with no
tags at all.

Adds ARG PROVIDER=all_providers (matching the Makefile's own default)
and passes it through as -tags, so a plain `docker build -f
Dockerfile.standalone .` keeps working out of the box, while
`--build-arg PROVIDER=vault` (or any other provider name) still lets
you build a slimmer binary.
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Comment thread .github/workflows/ci.yml Fixed
Address zizmor code-scanning alerts raised on the workable-2.10.0 release PR:

- lint job: disable actions/setup-go cache (cache-poisoning). The workflow
  publishes images on workable-* tag pushes, so runtime caches must not be
  restored into jobs gating a release.
- Build image: bump docker/build-push-action to v7.3.0. The previous pin
  (4f58ea79) was actually v6.9.0 but labelled v6.9.1 (ref-version-mismatch).
  v7 breaking changes (Node 24 runtime, removed build-summary envs) do not
  affect the inputs used here.
- Push steps: pass the image tag via an IMAGE_TAG env var and reference
  shell variables instead of expanding ${{ }} expressions inside run:
  (template-injection).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants