certforge-issuer is the cert-manager external issuer controller that bridges Kubernetes CertificateRequest objects to the CertForge API. It runs as a Deployment in your cluster and watches for CertificateRequest resources directed at CertForgeIssuer or CertForgeClusterIssuer objects.
For installation and quick-start usage, see the cert-manager Integration guide.

Version compatibility
Always use the latest patch release. Run
helm search repo certforge-issuer --versions to list available releases.
Helm chart values
Install or upgrade withhelm upgrade --install:
Full values reference
CRD reference
CertForgeIssuer
Namespaced resource. Issues certificates only forCertificateRequest objects in the same namespace.
Exactly one of authSecretRef or workloadIdentity must be set.
CertForgeClusterIssuer
Cluster-scoped resource. Issues certificates forCertificateRequest objects in any namespace. When using Secret-based auth, the Secret must be in the certforge-system namespace (or secretNamespace if overridden).
Authentication
Secret-based (default)
The controller reads a long-lived API token from a Kubernetes Secret. Create the token under Settings → API Keys in the CertForge dashboard (needsread and enroll scopes).
CertForgeIssuer (namespaced), create the Secret in the issuer’s namespace:
Workload Identity (recommended for production)
Workload Identity lets the controller authenticate using a short-lived projected ServiceAccount token instead of a long-lived API key. The kubelet writes and rotates the token automatically — no Kubernetes Secret is required. How it works:- The Helm chart adds a projected
serviceAccountTokenvolume to the controller pod. - The kubelet writes a signed OIDC JWT to
/var/run/secrets/certforge/token, bound to the configured audience. - The controller re-reads this file on every API call — token rotation is fully transparent.
- CertForge validates the JWT against the cluster’s OIDC JWKS endpoint and grants the permissions configured in the matching Workload Identity Provider.
Step 2 — Configure a Workload Identity Provider in CertForge:
Go to Settings → Workload Identity → Add Provider:
Step 3 — Install or upgrade with workload identity enabled:
authSecretRef):
- Add the Workload Identity Provider in CertForge (Step 2 above).
- Upgrade the Helm chart with
workloadIdentity.enabled=trueandtokenSecret.create=false. - Update the issuer spec to use
workloadIdentityinstead ofauthSecretRef. - Once
Ready=Trueis confirmed, delete the old Secret.
RBAC
The controller’s service account is granted the following permissions by the Helm chart:
No cluster-wide Secret read access is granted.
Security hardening
NetworkPolicy
Restrict the controller pod to only the traffic it actually needs. Enable withnetworkPolicy.enabled=true in your values. Requires a CNI with NetworkPolicy support (Calico, Cilium, etc.).
When enabled, the policy allows:
Prometheus metrics
Enable aServiceMonitor for Prometheus Operator integration:
:8080/metrics.
Controller logs
The controller writes structured JSON logs:Upgrading
v0.1.x → v0.2.x
authSecretRef is now an optional pointer field (previously required). Existing authSecretRef-based issuers continue to work without changes. The new workloadIdentity field is the alternative.
High availability
certforge-system.
Uninstall
CertificateRequest objects or Kubernetes Secrets containing issued certificates — those remain intact.