cert-manager webhook
Validating and mutating admission webhook for cert-manager. Apache-2.0. linux/amd64.
Pin this image by digest.
published Latest tag v1.21.2-tpio.1. Pin by digest. Usage is on this page.
Pin by digest
oci.thepeoples.io/hardened/cert-manager-webhook@sha256:5fcfc4c5665e62fc11ac8adaf1ab012e6e677e3fc662eabeae98327b53d4c277Pull:
podman pull oci.thepeoples.io/hardened/cert-manager-webhook@sha256:5fcfc4c5665e62fc11ac8adaf1ab012e6e677e3fc662eabeae98327b53d4c277Verify:
cosign verify --key https://thepeoples.io/keys/oci.thepeoples.io.pub --insecure-ignore-tlog oci.thepeoples.io/hardened/cert-manager-webhook@sha256:5fcfc4c5665e62fc11ac8adaf1ab012e6e677e3fc662eabeae98327b53d4c277Published 2026-10-11T05:12:35Z38.7 MiB compressed
Usage
TLS certificates come from the in-cluster ClusterIssuer private-ca, bootstrapped by a namespaced SelfSigned Issuer. This batch does not use Let's Encrypt or any external ACME endpoint. Metrics are on in the values below; comments mark the production settings.
Example, not validated on this page until a matching published digest is recorded.
Image pin overlay:
webhook:
image:
name: cert-manager-webhook
tag: "v1.21.2-tpio.1"
digest: "sha256:5fcfc4c5665e62fc11ac8adaf1ab012e6e677e3fc662eabeae98327b53d4c277"Production Helm values (metrics on, private CA only where TLS applies):
# Production-oriented Helm values for oci://quay.io/jetstack/charts/cert-manager v1.21.2.
# Image pins come from catalog/image-meta.json chart_values and the generated
# values-images overlay (imageRegistry/imageNamespace plus per-component digest).
# Issuers: SelfSigned bootstrap → ClusterIssuer private-ca
# (validate/manifests/private-ca.yaml). No external ACME.
# Turn Prometheus annotations off with prometheus.enabled: false.
# https://cert-manager.io/docs/installation/helm/
# https://cert-manager.io/docs/devops-tips/prometheus-metrics/
# https://cert-manager.io/docs/configuration/selfsigned/
# https://cert-manager.io/docs/configuration/ca/
# https://artifacthub.io/packages/helm/cert-manager/cert-manager/1.21.2
crds:
enabled: true
keep: true # keep CRDs on helm uninstall so Certificates are not GC'd by accident
# Controller replicas >1 need leader election (chart default in kube-system).
# https://cert-manager.io/docs/installation/best-practice/
replicaCount: 2
podDisruptionBudget:
enabled: true
minAvailable: 1
# Prometheus scrape annotations on the controller and webhook (chart default true).
# ServiceMonitor stays off unless Prometheus Operator CRDs are installed.
prometheus:
enabled: true # set false to skip prometheus.io annotations
servicemonitor:
enabled: false
podmonitor:
enabled: false
# Default security context from the chart; keep it explicit.
# https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
resources:
requests: {cpu: 50m, memory: 64Mi}
limits: {cpu: 250m, memory: 256Mi}
webhook:
replicaCount: 2
timeoutSeconds: 30
podDisruptionBudget:
enabled: true
minAvailable: 1
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
resources:
requests: {cpu: 50m, memory: 64Mi}
limits: {cpu: 250m, memory: 128Mi}
cainjector:
replicaCount: 2
podDisruptionBudget:
enabled: true
minAvailable: 1
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
resources:
requests: {cpu: 50m, memory: 64Mi}
limits: {cpu: 250m, memory: 128Mi}
# Chart ships acmesolver for HTTP-01 Challenges. This estate does not create
# ACME Issuers; the solver image is still pinned so the chart can render.
startupapicheck:
enabled: true
config:
apiVersion: controller.config.cert-manager.io/v1alpha1
kind: ControllerConfiguration
logging:
verbosity: 2
format: text # chart example; json is also valid for ControllerConfigurationIn-cluster issuer (SelfSigned bootstrap → ClusterIssuer private-ca):
# In-cluster private CA used by Traefik and Envoy TLS, and by the cert-manager
# Certificate check. A namespaced SelfSigned Issuer bootstraps CA certificate
# private-ca; ClusterIssuer private-ca then signs leaf certificates in any
# namespace (clusterResourceNamespace = cert-manager release namespace).
# No external ACME. Validation evidence must name issuerRef.name: private-ca.
# https://cert-manager.io/docs/configuration/selfsigned/
# https://cert-manager.io/docs/configuration/ca/
# https://cert-manager.io/docs/usage/certificate/
apiVersion: v1
kind: Namespace
metadata:
name: cert-manager
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-bootstrap
namespace: cert-manager
spec:
selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: private-ca
namespace: cert-manager
spec:
isCA: true
commonName: hardened-oci-private-ca
secretName: private-ca
privateKey:
algorithm: ECDSA
size: 256
issuerRef:
name: selfsigned-bootstrap
kind: Issuer
group: cert-manager.io
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: private-ca
spec:
ca:
secretName: private-ca
---
# Demo leaf for Traefik tlsStore.default.defaultCertificate and Envoy Gateway
# TLS. Issue a copy in the ingress namespace (or reference this Secret) so
# Traefik/Envoy can mount it. issuerRef.name is private-ca.
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: ingress-tls
namespace: cert-manager
spec:
secretName: ingress-tls
duration: 2160h # 90d
renewBefore: 360h # 15d
commonName: whoami.hardened.example
dnsNames:
- whoami.hardened.example
privateKey:
algorithm: ECDSA
size: 256
issuerRef:
name: private-ca
kind: ClusterIssuer
group: cert-manager.iohelm repo add jetstack https://charts.jetstack.io
helm upgrade --install cert-manager jetstack/cert-manager --version v1.21.2 \
--namespace cert-manager --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/cert-manager-webhook@sha256:5fcfc4c5665e62fc11ac8adaf1ab012e6e677e3fc662eabeae98327b53d4c277
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/cert-manager-webhook@sha256:5fcfc4c5665e62fc11ac8adaf1ab012e6e677e3fc662eabeae98327b53d4c277The 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. 38.7 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
v1.21.2-tpio.1 · worst-of Trivy and Grype at publish.v1.21.2-tpio.1 is at /oci/hardened/cert-manager-webhook/v1.21.2-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 CVE-2026-81870 go.opentelemetry.io/otel/sdk v1.44.0 LOW Yes: 1.45.0 grype GHSA-8wmf-6v46-5gfg go.opentelemetry.io/otel/sdk v1.44.0 LOW Yes: 1.45.0
This image is here as the Admission webhook. Used by cert-manager (admission). Depends on cert-manager cainjector (dependency). Arrow styles
Status: published. Platform: linux/amd64.
Available tags and scan history
v1.21.2-tpio.1
Digest:
oci.thepeoples.io/hardened/cert-manager-webhook@sha256:5fcfc4c5665e62fc11ac8adaf1ab012e6e677e3fc662eabeae98327b53d4c277Published 2026-10-11T05:12:35Z UTC.
Publication scan reports: Trivy / Grype / gate / OpenVEX
SPDX SBOM · OpenVEX: not present
Corresponding source available at /oci/hardened/cert-manager-webhook/v1.21.2-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-10T20:52:05Z | publish / pass | CRITICAL 0HIGH 0MEDIUM 0LOW 3 | CRITICAL 0HIGH 0MEDIUM 0LOW 3 | 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 0LOW 3Fixed-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 CVE-2026-81870 go.opentelemetry.io/otel/sdk v1.44.0 LOW Yes: 1.45.0 grype GHSA-8wmf-6v46-5gfg go.opentelemetry.io/otel/sdk v1.44.0 LOW Yes: 1.45.0
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).
Licence: Apache-2.0.
cert-manager is Apache-2.0. The distroless/static-debian13 base keeps its own licenses.