External Secrets Operator
Syncs Kubernetes Secrets from external backends. Apache-2.0. linux/amd64.
Pin this image by digest.
published Latest tag v2.12.0-tpio.1. Pin by digest. Usage is on this page.
Pin by digest
oci.thepeoples.io/hardened/external-secrets@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cfPull:
podman pull oci.thepeoples.io/hardened/external-secrets@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cfVerify:
cosign verify --key https://thepeoples.io/keys/oci.thepeoples.io.pub --insecure-ignore-tlog oci.thepeoples.io/hardened/external-secrets@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cfPublished 2026-10-11T06:23:15Z151.0 MiB compressed
Usage
Metrics are on in the values below; comments mark the production settings. One image covers the controller, webhook and cert-controller chart roles.
Example, not validated on this page until a matching published digest is recorded.
Image pin overlay:
image:
repository: oci.thepeoples.io/hardened/external-secrets
tag: "v2.12.0-tpio.1@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cf"
webhook:
image:
repository: oci.thepeoples.io/hardened/external-secrets
tag: "v2.12.0-tpio.1@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cf"
certController:
image:
repository: oci.thepeoples.io/hardened/external-secrets
tag: "v2.12.0-tpio.1@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cf"Production Helm values (metrics on, private CA only where TLS applies):
# Production-oriented Helm values for charts.external-secrets.io/external-secrets 2.12.0.
# One hardened image covers three chart roles (controller, webhook, cert-controller).
# Image pins come from catalog/image-meta.json chart_values and the generated
# values-images overlay. CRDs install with the chart.
# Example backend: Kubernetes provider in validate/manifests/eso-k8s-provider.yaml.
# Turn a metrics Service off with metrics.service.enabled / webhook.metrics.service.enabled
# / certController.metrics.service.enabled set to false.
# https://external-secrets.io/v2.12.0/introduction/getting-started/
# https://external-secrets.io/v2.12.0/api/metrics/
# https://external-secrets.io/v2.12.0/provider/kubernetes/
# https://artifacthub.io/packages/helm/external-secrets-operator/external-secrets/2.12.0
installCRDs: true
replicaCount: 2
leaderElect: true # required when replicaCount > 1
podDisruptionBudget:
enabled: true
minAvailable: 1
log:
level: info
timeEncoding: epoch
# Dedicated metrics Services (not ServiceMonitor) so Prometheus and other
# scrapers can hit /metrics without Operator CRDs.
# https://external-secrets.io/v2.12.0/api/metrics/
metrics:
service:
enabled: true # set false to skip the controller metrics Service
port: 8080
serviceMonitor:
enabled: false # set true only when Prometheus Operator CRDs are installed
securityContext:
enabled: true
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
# https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
resources:
requests: {cpu: 50m, memory: 64Mi}
limits: {cpu: 250m, memory: 256Mi}
webhook:
create: true
replicaCount: 2
failurePolicy: Fail
podDisruptionBudget:
enabled: true
minAvailable: 1
metrics:
service:
enabled: true # set false to skip the webhook metrics Service
port: 8080
securityContext:
enabled: true
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
resources:
requests: {cpu: 50m, memory: 64Mi}
limits: {cpu: 250m, memory: 128Mi}
certController:
create: true
replicaCount: 1
metrics:
service:
enabled: true # set false to skip the cert-controller metrics Service
port: 8080
securityContext:
enabled: true
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
resources:
requests: {cpu: 50m, memory: 64Mi}
limits: {cpu: 250m, memory: 128Mi}
bitwarden-sdk-server:
enabled: false # not this batchhelm repo add external-secrets https://charts.external-secrets.io
helm upgrade --install external-secrets external-secrets/external-secrets --version 2.12.0 \
--namespace external-secrets --create-namespace -f values-hardened.yamlVerify the latest published digest
cosign verify --key https://thepeoples.io/keys/oci.thepeoples.io.pub --insecure-ignore-tlog oci.thepeoples.io/hardened/external-secrets@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cf
cosign verify-attestation --key https://thepeoples.io/keys/oci.thepeoples.io.pub --insecure-ignore-tlog --type https://thepeoples.io/attestations/hardened-gate/v1 oci.thepeoples.io/hardened/external-secrets@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cfThe report views show the predicate types and commands for SPDX, scanner and optional OpenVEX attestations. Inspect the verified predicates as well as the signature. Publish and rescan reports for each tag. Gate is 0 CRITICAL / 0 HIGH from Trivy and Grype. MEDIUM/LOW are listed; they do not block publish. Remaining-CVE tables live here. 151.0 MiB · Publication scan reports: Trivy · Grype · gate · Scan index Corresponding source for MEDIUM/LOW are best-effort and non-blocking. Remaining counts: Fixed-version availability does not guarantee a compatible fix. Counts retain scanner gate semantics; the list deduplicates identical package/version records. Different scanner IDs can describe the same advisory.Evidence
v2.12.0-tpio.1 · worst-of Trivy and Grype at publish.v2.12.0-tpio.1 is at /oci/hardened/external-secrets/v2.12.0-tpio.1/source/.Scanner CVE / ID Package Installed Severity Fixed version available trivy CVE-2026-81870 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 LOW Yes: 1.45.0 grype GHSA-8wmf-6v46-5gfg go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 LOW Yes: 1.45.0 trivy CVE-2026-81870 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 LOW Yes: 1.45.0 grype GHSA-8wmf-6v46-5gfg go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 LOW Yes: 1.45.0 trivy GHSA-gcjh-h69q-9w9g github.com/google/cel-go v0.27.0 MEDIUM Yes: 0.29.0 trivy CVE-2026-2303 go.mongodb.org/mongo-driver v1.17.6 MEDIUM Yes: 1.17.7
This image is here as the Secret sync operator. Used by External Secrets Operator (controller), External Secrets Operator (webhook), External Secrets Operator (cert-controller). Arrow styles
Status: published. Platform: linux/amd64.
Available tags and scan history
v2.12.0-tpio.1
Digest:
oci.thepeoples.io/hardened/external-secrets@sha256:f29c67bcff4c6796df8991dcb8d0e1d69e6f0769dbadc688139260aff559d0cfPublished 2026-10-11T06:23:15Z UTC.
This tag used the first-publish cooldown break-glass (first publish; PhreeStyle override 2026-10-10 20:11 CT).
Publication scan reports: Trivy / Grype / gate / OpenVEX
SPDX SBOM · OpenVEX: not present
Corresponding source available at /oci/hardened/external-secrets/v2.12.0-tpio.1/source/, including exact upstream archives, SHA-256 sums, packaging, rebuild recipe and recorded changes.
| Scanned (UTC) | Kind / gate | Trivy | Grype | Scanner DB versions/dates |
|---|---|---|---|---|
| 2026-10-10T21:11:22Z | publish / pass | CRITICAL 0HIGH 0MEDIUM 2LOW 2 | CRITICAL 0HIGH 0MEDIUM 0LOW 2 | Trivy 0.73.0 / DB {"DownloadedAt": "2026-10-10T20:21:17.504299339Z", "NextUpdate": "2026-10-11T18:59:50.889010572Z", "UpdatedAt": "2026-10-10T18:59:50.889010923Z", "Version": 2} / 2026-10-10T18:59:50.889010923Z; Grype 0.120.1 / schema v6.1.10 / 2026-10-10T06:30:01Z |
MEDIUM/LOW are best-effort and non-blocking. Remaining counts:
MEDIUM 2LOW 2Fixed-version availability does not guarantee a compatible fix.Remaining MEDIUM/LOW findings (6 distinct scanner/package/version records; 6 with fixed versions available)
Scanner CVE / ID Package Installed Severity Fixed version available trivy CVE-2026-81870 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 LOW Yes: 1.45.0 grype GHSA-8wmf-6v46-5gfg go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 LOW Yes: 1.45.0 trivy CVE-2026-81870 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 LOW Yes: 1.45.0 grype GHSA-8wmf-6v46-5gfg go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 LOW Yes: 1.45.0 trivy GHSA-gcjh-h69q-9w9g github.com/google/cel-go v0.27.0 MEDIUM Yes: 0.29.0 trivy CVE-2026-2303 go.mongodb.org/mongo-driver v1.17.6 MEDIUM Yes: 1.17.7
Counts retain scanner gate semantics; the list deduplicates identical package/version records. Different scanner IDs can describe the same advisory.
Rebuild and licence
Same upstream digest (ladder c); distroless/static-debian13 has no apk/apt. Go-binary findings wait for ladder (b). One image covers three chart roles.
Licence: Apache-2.0.
External Secrets Operator is Apache-2.0. The distroless/static-debian13 base keeps its own licenses.