-
Notifications
You must be signed in to change notification settings - Fork 2.2k
feat: Add certificate issuance time and duration metrics #7612
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Add certificate issuance time and duration metrics #7612
Conversation
Signed-off-by: Fred Heinecke <fred.heinecke@yahoo.com>
Hi @solidDoWant. Thanks for your PR. I'm waiting for a cert-manager member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Hiya @solidDoWant, thanks for contributing! One potential issue is that issuers can potentially ignore the desired duration from the spec and issue whatever duration they want, an accurate duration metric would have to use the NotBefore and NotAfter values from the certificate status which is populated from the issued certificate itself. |
/ok-to-test |
Hi @ThatsMrTalbot. Yea, that crossed my mind after I filed the PR. IMO because of this the "duration" field is somewhat poorly named, and a more apt name would be something like "requestedDuration". But this cannot really be changed without a v2 of the resource, so I digress. I think this should probably be removed, and only the new issuance metric added. What do you think? If a status field was ever added with the actually issued duration, then the |
You could calculate it based on the NotBefore and NotAfter values in the status, but equally you could do the same calculation in PromQL by subtracting one metric from the other. I think providing NotBefore and NotAfter in metric form is probably enough for most people to build dashboards, especially since they can calculate the duration themselves in PromQL pretty easily. |
Signed-off-by: Fred Heinecke <fred.heinecke@yahoo.com>
Signed-off-by: Fred Heinecke <fred.heinecke@yahoo.com>
08a6373
to
3d05c09
Compare
Sorry for the delay, I was traveling. We discussed this in todays standup and agreed that a better name for the metric would be |
@ThatsMrTalbot I've updated this as requested. Should I rename |
I think the existing I am not against duplicating it into |
…tamp_seconds/ Signed-off-by: Fred Heinecke <fred.heinecke@yahoo.com> Signed-off-by: solidDoWant <fred.heinecke@yahoo.com>
9d4caf5
to
cb59c52
Compare
Signed-off-by: solidDoWant <fred.heinecke@yahoo.com>
Signed-off-by: solidDoWant <fred.heinecke@yahoo.com>
@ThatsMrTalbot I've added a corresponding |
This all looks good, happy to approve /lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ThatsMrTalbot The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
📢 A new pre-release is available which contains this fix or feature: Please test and report back. |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [cert-manager](https://cert-manager.io) ([source](https://github.com/cert-manager/cert-manager)) | minor | `v1.14.7` -> `v1.18.1` | --- ### Release Notes <details> <summary>cert-manager/cert-manager (cert-manager)</summary> ### [`v1.18.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.18.1) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.18.0...v1.18.1) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. We have added a new feature gate `ACMEHTTP01IngressPathTypeExact`, to allow `ingress-nginx` users to turn off the new default Ingress `PathType: Exact` behavior, in ACME HTTP01 Ingress challenge solvers. This change fixes the following issue: [#​7791](https://github.com/cert-manager/cert-manager/issues/7791) We have increased the ACME challenge authorization timeout to two minutes, which we hope will fix a timeout error (`error waiting for authorization`), which has been reported by multiple users, since the release of cert-manager `v1.16.0`. This change should fix the following issues: [#​7337](https://github.com/cert-manager/cert-manager/issues/7337), [#​7444](https://github.com/cert-manager/cert-manager/issues/7444), and [#​7685](https://github.com/cert-manager/cert-manager/issues/7685). > ℹ️ Be sure to review all new features and changes below, and read the [full release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.18) carefully before upgrading. Changes since `v1.18.0`: ##### Feature - Added a new feature gate `ACMEHTTP01IngressPathTypeExact`, to allow `ingress-nginx` users to turn off the new default Ingress `PathType: Exact` behavior, in ACME HTTP01 Ingress challenge solvers. ([`#7810`](https://github.com/cert-manager/cert-manager/pull/7810), [@​sspreitzer](https://github.com/sspreitzer)) ##### Bug or Regression - ACME: Increased challenge authorization timeout to 2 minutes to fix `error waiting for authorization`. ([`#7801`](https://github.com/cert-manager/cert-manager/pull/7801), [@​hjoshi123](https://github.com/hjoshi123)) ##### Other (Cleanup or Flake) - Use the latest version of ingress-nginx in E2E tests to ensure compatibility ([`#7807`](https://github.com/cert-manager/cert-manager/pull/7807), [@​wallrj](https://github.com/wallrj)) ### [`v1.18.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.18.0) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.3...v1.18.0) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. cert-manager 1.18 introduces several new features and breaking changes. Highlights include support for ACME certificate profiles, a new default for `Certificate.Spec.PrivateKey.RotationPolicy` now set to `Always` (breaking change), and the default `Certificate.Spec.RevisionHistoryLimit` now set to `1` (potentially breaking). > ℹ️ Be sure to review all new features and changes below, and read the [full release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.18) carefully before upgrading. ##### Known Issues - ACME HTTP01 challenge paths are rejected by the ingress-nginx validating webhook ([#​7791](https://github.com/cert-manager/cert-manager/issues/7791)) Changes since `v1.17.2`: ##### Feature - Add config to the Vault issuer to allow the server-name to be specified when validating the certificates the Vault server presents. ([#​7663](https://github.com/cert-manager/cert-manager/issues/7663), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot)) - Added `app.kubernetes.io/managed-by: cert-manager` label to the created Let's Encrypt account keys ([#​7577](https://github.com/cert-manager/cert-manager/issues/7577), [@​terinjokes](https://github.com/terinjokes)) - Added certificate issuance and expiration time metrics (`certmanager_certificate_not_before_timestamp_seconds`, `certmanager_certificate_not_after_timestamp_seconds`). ([#​7612](https://github.com/cert-manager/cert-manager/issues/7612), [@​solidDoWant](https://github.com/solidDoWant)) - Added ingress-shim option: `--extra-certificate-annotations`, which sets a list of annotation keys to be copied from Ingress-like to resulting Certificate object ([#​7083](https://github.com/cert-manager/cert-manager/issues/7083), [@​k0da](https://github.com/k0da)) - Added the `iss` short name for the cert-manager `Issuer` resource. ([#​7373](https://github.com/cert-manager/cert-manager/issues/7373), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Added the `ciss` short name for the cert-manager `ClusterIssuer` resource ([#​7373](https://github.com/cert-manager/cert-manager/issues/7373), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Adds the `global.rbac.disableHTTPChallengesRole` helm value to disable HTTP-01 ACME challenges. This allows cert-manager to drop its permission to create pods, improving security when HTTP-01 challenges are not required. ([#​7666](https://github.com/cert-manager/cert-manager/issues/7666), [@​ali-hamza-noor](https://github.com/ali-hamza-noor)) - Allow customizing signature algorithm ([#​7591](https://github.com/cert-manager/cert-manager/issues/7591), [@​tareksha](https://github.com/tareksha)) - Cache the full DNS response and handle TTL expiration in `FindZoneByFqdn` ([#​7596](https://github.com/cert-manager/cert-manager/issues/7596), [@​ThatsIvan](https://github.com/ThatsIvan)) - Cert-manager now uses a local fork of the golang.org/x/crypto/acme package ([#​7752](https://github.com/cert-manager/cert-manager/issues/7752), [@​wallrj](https://github.com/wallrj)) - Add support for [ACME profiles extension](https://datatracker.ietf.org/doc/draft-aaron-acme-profiles/). ([#​7777](https://github.com/cert-manager/cert-manager/issues/7777), [@​wallrj](https://github.com/wallrj)) - Promote the `UseDomainQualifiedFinalizer` feature to GA. ([#​7735](https://github.com/cert-manager/cert-manager/issues/7735), [@​jsoref](https://github.com/jsoref)) - Switched service/servicemon definitions to use port names instead of numbers. ([#​7727](https://github.com/cert-manager/cert-manager/issues/7727), [@​jcpunk](https://github.com/jcpunk)) - The default value of `Certificate.Spec.PrivateKey.RotationPolicy` changed from `Never` to `Always`. ([#​7723](https://github.com/cert-manager/cert-manager/issues/7723), [@​wallrj](https://github.com/wallrj)) - Potentially breaking: Set the default revisionHistoryLimit to 1 for the CertificateRequest revisions ([#​7758](https://github.com/cert-manager/cert-manager/issues/7758), [@​ali-hamza-noor](https://github.com/ali-hamza-noor)) ##### Documentation - Fix some comments ([#​7620](https://github.com/cert-manager/cert-manager/issues/7620), [@​teslaedison](https://github.com/teslaedison)) ##### Bug or Regression - Bump `go-jose` dependency to address `CVE-2025-27144`. ([#​7606](https://github.com/cert-manager/cert-manager/issues/7606), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Bump `golang.org/x/oauth2` to patch `CVE-2025-22868`. ([#​7638](https://github.com/cert-manager/cert-manager/issues/7638), [@​NicholasBlaskey](https://github.com/NicholasBlaskey)) - Bump `golang.org/x/crypto` to patch `GHSA-hcg3-q754-cr77`. ([#​7638](https://github.com/cert-manager/cert-manager/issues/7638), [@​NicholasBlaskey](https://github.com/NicholasBlaskey)) - Bump `github.com/golang-jwt/jwt` to patch `GHSA-mh63-6h87-95cp`. ([#​7638](https://github.com/cert-manager/cert-manager/issues/7638), [@​NicholasBlaskey](https://github.com/NicholasBlaskey)) - Change of the Kubernetes Ingress pathType from `ImplementationSpecific` to `Exact` for a reliable handling of ingress controllers and enhanced security. ([#​7767](https://github.com/cert-manager/cert-manager/issues/7767), [@​sspreitzer](https://github.com/sspreitzer)) - Fix AWS Route53 error detection for not-found errors during deletion of DNS records. ([#​7690](https://github.com/cert-manager/cert-manager/issues/7690), [@​wallrj](https://github.com/wallrj)) - Fix behavior when running with `--namespace=<namespace>`: limit the scope of cert-manager to a single namespace and disable cluster-scoped controllers. ([#​7678](https://github.com/cert-manager/cert-manager/issues/7678), [@​tsaarni](https://github.com/tsaarni)) - Fix handling of certificates with IP addresses in the `commonName` field; IP addresses are no longer added to the DNS `subjectAlternativeName` list and are instead added to the `ipAddresses` field as expected. ([#​7081](https://github.com/cert-manager/cert-manager/issues/7081), [@​johnjcool](https://github.com/johnjcool)) - Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API ([#​7549](https://github.com/cert-manager/cert-manager/issues/7549), [@​LukeCarrier](https://github.com/LukeCarrier)) - Fixed the `certmanager_certificate_renewal_timestamp_seconds` metric help text indicating that the metric is relative to expiration time, rather than Unix epoch time. ([#​7609](https://github.com/cert-manager/cert-manager/issues/7609), [@​solidDoWant](https://github.com/solidDoWant)) - Fixing the service account template to incorporate boolean values for the annotations. ([#​7698](https://github.com/cert-manager/cert-manager/issues/7698), [@​ali-hamza-noor](https://github.com/ali-hamza-noor)) - Quote nodeSelector values in Helm Chart ([#​7579](https://github.com/cert-manager/cert-manager/issues/7579), [@​tobiasbp](https://github.com/tobiasbp)) - Skip Gateway TLS listeners in `Passthrough` mode. ([#​6986](https://github.com/cert-manager/cert-manager/issues/6986), [@​vehagn](https://github.com/vehagn)) - Upgrade `golang.org/x/net` fixing `CVE-2025-22870`. ([#​7619](https://github.com/cert-manager/cert-manager/issues/7619), [@​dependabot](https://github.com/dependabot)\[bot]) ##### Other (Cleanup or Flake) - ACME E2E Tests: Upgraded Pebble to v2.7.0 and modified the ACME tests to match latest Pebble behaviour. ([#​7771](https://github.com/cert-manager/cert-manager/issues/7771), [@​wallrj](https://github.com/wallrj)) - Patch the `third_party/forked/acme` package with support for the ACME profiles extension. ([#​7776](https://github.com/cert-manager/cert-manager/issues/7776), [@​wallrj](https://github.com/wallrj)) - Promote the `AdditionalCertificateOutputFormats` feature to GA, making additional formats always enabled. ([#​7744](https://github.com/cert-manager/cert-manager/issues/7744), [@​erikgb](https://github.com/erikgb)) - Remove deprecated feature gate `ValidateCAA`. Setting this feature gate is now a no-op which does nothing but print a warning log line ([#​7553](https://github.com/cert-manager/cert-manager/issues/7553), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Update kind images to include the Kubernetes 1.33 node image ([#​7787](https://github.com/cert-manager/cert-manager/issues/7787), [@​cert-manager-bot](https://github.com/cert-manager-bot)) - Upgrade Go to `v1.24.4` ([#​7785](https://github.com/cert-manager/cert-manager/issues/7785), [@​wallrj](https://github.com/wallrj)) - Use slices.Contains to simplify code ([#​7753](https://github.com/cert-manager/cert-manager/issues/7753), [@​cuinix](https://github.com/cuinix)) ### [`v1.17.3`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.3) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.2...v1.17.3) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This patch release addresses several vulnerabilities reported by the Trivy security scanner. It is built with the latest version of Go 1.23. We have increased the ACME challenge authorization timeout to two minutes, which we hope will fix a timeout error (`error waiting for authorization`), which has been reported by multiple users, in: [#​7337](https://github.com/cert-manager/cert-manager/issues/7337), [#​7444](https://github.com/cert-manager/cert-manager/issues/7444), and [#​7685](https://github.com/cert-manager/cert-manager/issues/7685). > ℹ️ Be sure to review all new features and changes below, and read the [full release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.17) carefully before upgrading. Changes since `v1.17.2`: ##### Bug or Regression - Bump Go to 1.23.10 to fix GO-2025-3749, GO-2025-3750, and GO-2025-3751 ([#​7799](https://github.com/cert-manager/cert-manager/issues/7799), [@​wallrj](https://github.com/wallrj)) - ACME: Increased challenge authorization timeout to 2 minutes to fix error `waiting for authorization` ([#​7798](https://github.com/cert-manager/cert-manager/issues/7798), [@​hjoshi123](https://github.com/hjoshi123)) ##### Other (Cleanup or Flake) - Use the latest version of ingress-nginx in E2E tests to ensure compatibility ([#​7808](https://github.com/cert-manager/cert-manager/issues/7808), [@​wallrj](https://github.com/wallrj)) ### [`v1.17.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.2) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.1...v1.17.2) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This patch release addresses several vulnerabilities reported by the Trivy security scanner. It is built with the latest version of Go 1.23 and includes various dependency updates. > 📖 Read the full [cert-manager 1.17 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.17), before installing or upgrading. #### Changes since `v1.17.1` ##### Bug or Regression - Bump Go to `v1.23.8` to fix `CVE-2025-22871` ([#​7701](https://github.com/cert-manager/cert-manager/pull/7701), [`@wallrj`](https://github.com/wallrj)) - Bump `go-jose` dependency to address `CVE-2025-27144` ([#​7603](https://github.com/cert-manager/cert-manager/pull/7603), [`@SgtCoDFish`](https://github.com/SgtCoDFish)) - Bump `golang.org/x/net` to address `CVE-2025-22870` reported by Trivy ([#​7622](https://github.com/cert-manager/cert-manager/pull/7622), [`@SgtCoDFish`](https://github.com/SgtCoDFish)) - Bump `golang.org/x/net` to fix `CVE-2025-22872` ([#​7703](https://github.com/cert-manager/cert-manager/pull/7703), [`@wallrj`](https://github.com/wallrj)) - Bump `golang.org/x/oauth2` to patch `CVE-2025-22868` ([#​7692](https://github.com/cert-manager/cert-manager/pull/7692), [`@lentzi90`](https://github.com/lentzi90)) - Bump `golang.org/x/crypto` to patch `GHSA-hcg3-q754-cr77` ([#​7692](https://github.com/cert-manager/cert-manager/pull/7692), [`@lentzi90`](https://github.com/lentzi90)) - Bump `github.com/golang-jwt/jwt` to patch `GHSA-mh63-6h87-95cp` ([#​7692](https://github.com/cert-manager/cert-manager/pull/7692), [`@lentzi90`](https://github.com/lentzi90)) ### [`v1.17.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.1) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.17.0...v1.17.1) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This release is primarily intended to address [a breaking change in Cloudflare's API](https://github.com/cert-manager/cert-manager/issues/7540) which impacted ACME DNS-01 challenges using Cloudflare. Many thanks to the community members who reported this issue! #### Changes by Kind ##### Bug or Regression - ❗ Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API ([#​7565](https://github.com/cert-manager/cert-manager/issues/7565), [@​LukeCarrier](https://github.com/LukeCarrier)) - Bump go to 1.23.6 to address CVE-2025-22866 reported by Trivy ([#​7563](https://github.com/cert-manager/cert-manager/issues/7563), [@​SgtCoDFish](https://github.com/SgtCoDFish) ### [`v1.17.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.17.0) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.5...v1.17.0) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. v1.17.0 is a feature release with several improvements, including: - A helpful compliance change to RSA signatures on certificates - An easier way to specify passwords for [PKCS#12](https://github.com/PKCS/cert-manager/issues/12) and JKS keystores - A few feature flag promotions (and a deprecation) - Dependency bumps and other smaller improvements #### Major Themes ##### RSA Certificate Compliance The United States Department of Defense published [a memo](https://dl.dod.cyber.mil/wp-content/uploads/pki-pke/pdf/unclass-memo_dodcryptoalgorithms.pdf) in 2022 which introduced some requirements on the kinds of cryptography they require to be supported in software they use. In effect, the memo requires that software be able to support larger RSA keys (3072-bit and 4096-bit) and hashing algorithms (SHA-384 at a minimum). cert-manager supported large RSA keys long before the memo was published, but a quirk in implementation meant that cert-manager always used SHA-256 when signing with RSA. In v1.17.0, cert-manager will choose a hash algorithm based on the RSA key length: 3072-bit keys will use SHA-384, and 4096-bit keys will use SHA-512. This matches similar behavior already present for ECDSA signatures. Our expectation is that this change will have minimal impact beyond a slight increase to security and better compliance; we're not aware of Kubernetes based environments which support RSA 2048 with SHA-256 but fail with RSA 4096 and SHA-512. However, if you're using larger RSA keys, you should be aware of the change. ##### Easier Keystore Passwords for [PKCS#12](https://github.com/PKCS/cert-manager/issues/12) and JKS Specifying passwords on [PKCS#12](https://github.com/PKCS/cert-manager/issues/12) and JKS keystores is supported in cert-manager for compatibility reasons with software which expects or requires passwords to be set; however, these passwords are [not relevant to security](https://cert-manager.io/docs/faq/#why-are-passwords-on-jks-or-pkcs12-files-not-helpful) and never have been in cert-manager. The initial implementation of the `keystores` feature required these "passwords" to be stored in a Kubernetes secret, which would then be read by cert-manager when creating the keystore after a certificate was issued. This is cumbersome, especially when many passwords are set to default values such as `changeit` or `password`. In cert-manager v1.17, it's now possible to set a keystore password using a literal string value inside the `Certificate` resource itself, making this process much easier with no change to security. For example: ```yaml apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: my-cert-password spec: secretName: my-cert-password issuerRef: name: my-issuer kind: ClusterIssuer keystores: jks: create: true password: "abc123" pkcs12: create: true password: "password" dnsNames: - example.com ``` The new `password` field is mutually exclusive with the `passwordSecretRef` field, so be sure to only set one. ##### Feature Flag Promotions / Deprecations cert-manager's feature flags allow for easier testing and adoption of new features with a reduced risk of breaking changes. In cert-manager v1.17, two feature gates have been promoted to "beta", and as such are now enabled by default in all installations: - `NameConstraints`, allowing users to specify the name constraints extension which can be helpful when creating CA certificates for private PKI - `UseDomainQualifiedFinalizer`, which stops a Kubernetes warning from being printed in logs In addition, we added a new feature gate: `CAInjectorMerging`, which intelligently combines certificates used by the [`CAInjector`](../../concepts/ca-injector.md) component, making it safer to use when issuing certificates are rotated. If you're making heavy use of the CA injector, you should consider enabling this feature gate. Finally, we deprecated the `ValidateCAA` feature gate which will be removed entirely in cert-manager v1.18.0. This feature gate aimed to validate the `CAA` DNS record during ACME issuance, but has seen low adoption and limited testing since its introduction back in 2019. ##### Other Changes There are many other PRs which were merged in this release cycle and we'd encourage you to read the release notes below. One PR that's worth highlighting is a change to add more structured logging information to certain log lines. If you were previously filtering logs using `grep` or similar tools (which is highly discouraged!) be aware that some log lines have changed format. #### Community As always, we'd like to thank all of the community members who helped in this release cycle, including all below who merged a PR and anyone that helped by commenting on issues, testing, or getting involved in cert-manager meetings. We're lucky to have you involved. A special thanks to: - [@​hawksight](https://github.com/hawksight) - [@​aidy](https://github.com/aidy) - [@​bashlion](https://github.com/bashlion) - [@​7ing](https://github.com/7ing) - [@​fadecore](https://github.com/fadecore) - [@​schedin](https://github.com/schedin) - [@​jkroepke](https://github.com/jkroepke) - [@​sdarwin](https://github.com/sdarwin) for their contributions, comments and support! Also, thanks to the cert-manager maintainer team for their help in this release: - [@​inteon](https://github.com/inteon) - [@​erikgb](https://github.com/erikgb) - [@​SgtCoDFish](https://github.com/SgtCoDFish) - [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot) - [@​munnerz](https://github.com/munnerz) - [@​maelvls](https://github.com/maelvls) And finally, thanks to the cert-manager steering committee for their feedback in this release cycle: - [@​FlorianLiebhart](https://github.com/FlorianLiebhart) - [@​ssyno](https://github.com/ssyno) - [@​ianarsenault](https://github.com/ianarsenault) - [@​TrilokGeer](https://github.com/TrilokGeer) #### Changes by Kind ##### Feature - Potentially BREAKING: The CA and SelfSigned issuers now use SHA-512 when signing with RSA keys 4096 bits and above, and SHA-384 when signing with RSA keys 3072 bits and above. If you were previously using a larger RSA key as a CA, be sure to check that your systems support the new hash algorithms. ([#​7368](https://github.com/cert-manager/cert-manager/issues/7368), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Add CAInjectorMerging feature gate to the ca-injector, enabling this will change the behaviour of the ca-injector to merge in new CA certificates instead of outright replacing the existing one. ([#​7469](https://github.com/cert-manager/cert-manager/issues/7469), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot)) - Added image pull secrets to deployments when service accounts aren't created ([#​7411](https://github.com/cert-manager/cert-manager/issues/7411), [@​TheHenrick](https://github.com/TheHenrick)) - Added the ability to customize client ID when using username/password authentication for Venafi client ([#​7484](https://github.com/cert-manager/cert-manager/issues/7484), [@​ilyesAj](https://github.com/ilyesAj)) - Helm: New value `webhook.extraEnv` allows you to set custom environment variables in the webhook Pod. Helm: New value `cainjector.extraEnv` allows you to set custom environment variables in the cainjector Pod. Helm: New value `startupapicheck.extraEnv` allows you to set custom environment variables in the startupapicheck Pod. ([#​7317](https://github.com/cert-manager/cert-manager/issues/7317), [@​wallrj](https://github.com/wallrj)) - Increase the amount of PEM data `pki.DecodeX509CertificateSetBytes` is able to parse, to enable reading larger TLS trust bundles ([#​7464](https://github.com/cert-manager/cert-manager/issues/7464), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - New configuration option tenantID for the AzureDNS provider when using managed identities with service principals. This enhancement allows users to specify the tenant ID when using managed identities, offering better flexibility in multi-tenant environments. ([#​7376](https://github.com/cert-manager/cert-manager/issues/7376), [@​jochenrichter](https://github.com/jochenrichter)) - Promote the `UseDomainQualifiedFinalizer` feature to Beta. ([#​7488](https://github.com/cert-manager/cert-manager/issues/7488), [@​jsoref](https://github.com/jsoref)) - Allow JKS/PKCS12 keystore passwords to be set as literal values in Certificate resources, mutually exclusive with the existing passwordSecretRef field ([#​6657](https://github.com/cert-manager/cert-manager/issues/6657), [@​rquinio1A](https://github.com/rquinio1A)) - Allow templating ServiceAccount annotations by running the built-in Helm `tpl` function on keys and values, to aid with workload identity configuration ([#​7501](https://github.com/cert-manager/cert-manager/issues/7501), [@​fcrespofastly](https://github.com/fcrespofastly)) - Promote CA NameConstraints feature gate to Beta (enabled by default) ([#​7494](https://github.com/cert-manager/cert-manager/issues/7494), [@​tanujd11](https://github.com/tanujd11)) ##### Documentation - Add example for IPv6 in `--dns01-recursive-nameservers` ([#​7367](https://github.com/cert-manager/cert-manager/issues/7367), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Updated the chart documentation to show `enableGatewayAPI` in the config example. ([#​7354](https://github.com/cert-manager/cert-manager/issues/7354), [@​puerco](https://github.com/puerco)) ##### Bug or Regression - BUGFIX: A change in v1.16.0 caused cert-manager's ACME ClusterIssuer to look in the wrong namespace for resources required for the issuance (eg. credential Secrets). This is now fixed in v1.16.1+ and v1.17.0+ ([#​7339](https://github.com/cert-manager/cert-manager/issues/7339), [@​inteon](https://github.com/inteon)) - BUGFIX: Helm will now accept percentages for the `podDisruptionBudget.minAvailable` and `podDisruptionBudget.maxAvailable` values. ([#​7343](https://github.com/cert-manager/cert-manager/issues/7343), [@​inteon](https://github.com/inteon)) - Fix ACME HTTP-01 solver for IPv6 endpoints ([#​7391](https://github.com/cert-manager/cert-manager/issues/7391), [@​Peac36](https://github.com/Peac36)) - Fix the behavior of `renewBeforePercentage` to comply with its spec ([#​7421](https://github.com/cert-manager/cert-manager/issues/7421), [@​adam-sroka](https://github.com/adam-sroka)) - Helm: allow `enabled` to be set as a value to toggle cert-manager as a dependency. ([#​7350](https://github.com/cert-manager/cert-manager/issues/7350), [@​inteon](https://github.com/inteon)) - SECURITY (low risk): Limit maximum allowed PEM size to prevent potential DoS in cert-manager controller from attacker-controlled PEM. See [GHSA-r4pg-vg54-wxx4](https://github.com/cert-manager/cert-manager/security/advisories/GHSA-r4pg-vg54-wxx4) ([#​7400](https://github.com/cert-manager/cert-manager/issues/7400), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - The Certificate object will no longer create CertificateRequest or Secret objects while being deleted ([#​7361](https://github.com/cert-manager/cert-manager/issues/7361), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot)) - The issuer will now more quickly retry when its linked Secret is updated to fix an issue that caused a high back-off timeout. ([#​7455](https://github.com/cert-manager/cert-manager/issues/7455), [@​inteon](https://github.com/inteon)) - Upgrades Venafi vCert library fixing a bug which caused the RSA 3072 bit key size for TPP certificate enrollment to not work. ([#​7498](https://github.com/cert-manager/cert-manager/issues/7498), [@​inteon](https://github.com/inteon)) ##### Other (Cleanup or Flake) - ⚠️ Potentially BREAKING: Log messages that were not structured have now been replaced with structured logs. If you were matching on specific log strings, this could break your setup. ([#​7461](https://github.com/cert-manager/cert-manager/issues/7461), [@​inteon](https://github.com/inteon)) - DEPRECATION: The `ValidateCAA` feature gate is now deprecated, with removal scheduled for cert-manager 1.18. In 1.17, enabling this feature gate will print a warning. ([#​7491](https://github.com/cert-manager/cert-manager/issues/7491), [@​jsoref](https://github.com/jsoref)) - Remove `Neither --kubeconfig nor --master was specified` warning message when the controller and the webhook services boot ([#​7457](https://github.com/cert-manager/cert-manager/issues/7457), [@​Peac36](https://github.com/Peac36)) - Move 'live' DNS tests into a separate package to contain test flakiness and improve developer UX ([#​7530](https://github.com/cert-manager/cert-manager/issues/7530), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ### [`v1.16.5`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.5) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.4...v1.16.5) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This patch release addresses several vulnerabilities reported by the Trivy security scanner. It is built with the latest version of Go 1.23 and includes various dependency updates. > 📖 Read the full [cert-manager 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16), before installing or upgrading. #### Changes since `v1.16.4`: ##### Bug or Regression - Bump Go to `v1.23.8` to fix `CVE-2025-22871` ([#​7706](https://github.com/cert-manager/cert-manager/pull/7706), [`@wallrj`](https://github.com/wallrj)) - Bump `github.com/golang-jwt/jwt/v5` to `v5.2.2` to fix `CVE-2025-30204` ([#​7708](https://github.com/cert-manager/cert-manager/pull/7708), [`@wallrj`](https://github.com/wallrj)) - Bump `golang.org/x/net` to fix `CVE-2025-22872` ([#​7707](https://github.com/cert-manager/cert-manager/pull/7707), [`@wallrj`](https://github.com/wallrj)) - Bump `go-jose` dependency to address `CVE-2025-27144` ([#​7602](https://github.com/cert-manager/cert-manager/pull/7602), [`@SgtCoDFish`](https://github.com/SgtCoDFish)) - Bump `golang.org/x/net` to address `CVE-2025-22870` reported by Trivy ([#​7623](https://github.com/cert-manager/cert-manager/pull/7623), [`@SgtCoDFish`](https://github.com/SgtCoDFish)) ### [`v1.16.4`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.4) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.3...v1.16.4) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This release is primarily intended to address [a breaking change in Cloudflare's API](https://github.com/cert-manager/cert-manager/issues/7540) which impacted ACME DNS-01 challenges using Cloudflare. Many thanks to the community members who reported this issue! #### Changes by Kind ##### Bug or Regression - ❗ Fix issuing of certificates via DNS01 challenges on Cloudflare after a breaking change to the Cloudflare API ([#​7566](https://github.com/cert-manager/cert-manager/issues/7566), [@​LukeCarrier](https://github.com/LukeCarrier)) - Bump go to 1.23.6 to address CVE-2025-22866 reported by Trivy ([#​7562](https://github.com/cert-manager/cert-manager/issues/7562), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Update go to 1.23.5 ([#​7533](https://github.com/cert-manager/cert-manager/issues/7533), [@​tareksha](https://github.com/tareksha)) ### [`v1.16.3`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.3) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.2...v1.16.3) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. v1.16.3 is a patch release mainly focused around bumping dependencies to address reported CVEs: CVE-2024-45337 and CVE-2024-45338. We don't believe that cert-manager is actually vulnerable; this release is instead intended to satisfy vulnerability scanners. It also includes a bug fix to the new `renewBeforePercentage` field. If you were using `renewBeforePercentage`, see PR [#​7421](https://github.com/cert-manager/cert-manager/issues/7421) for more information. #### Changes ##### Bug - Bump `golang.org/x/net` and `golang.org/x/crypto` to address CVE-2024-45337 and CVE-2024-45338 ([#​7485](https://github.com/cert-manager/cert-manager/issues/7485), [@​erikgb](https://github.com/erikgb)) - Fix the behaviour of `renewBeforePercentage` to comply with its spec ([#​7441](https://github.com/cert-manager/cert-manager/issues/7441), [@​cert-manager-bot](https://github.com/cert-manager-bot)) ##### Other - Bump go to 1.23.4 ([#​7489](https://github.com/cert-manager/cert-manager/issues/7489), [@​erikgb](https://github.com/erikgb)) - Bump base images to latest available ([#​7508](https://github.com/cert-manager/cert-manager/issues/7508), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ### [`v1.16.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.2) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.1...v1.16.2) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This patch release of cert-manager 1.16 makes [several changes](https://github.com/cert-manager/cert-manager/pull/7401) to how PEM input is validated, adding maximum sizes appropriate to the type of PEM data which is being parsed. This is to prevent an unacceptable slow-down in parsing specially crafted PEM data. The issue was found by Google's OSS-Fuzz project. The issue is low severity; to exploit the PEM issue would require privileged access which would likely allow Denial-of-Service through other methods. Note also that since most PEM data parsed by cert-manager comes from `ConfigMap` or `Secret` resources which have a max size limit of approximately 1MB, it's difficult to force cert-manager to parse large amounts of PEM data. Further information is available in https://github.com/cert-manager/cert-manager/security/advisories/GHSA-r4pg-vg54-wxx4 In addition, the version of Go used to build cert-manager 1.16 was updated along with the base images. #### Changes by Kind ##### Bug or Regression - Set a maximum size for PEM inputs which cert-manager will accept to remove possibility of taking a long time to process an input ([#​7401](https://github.com/cert-manager/cert-manager/issues/7401), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ##### Other (Cleanup or Flake) - Bump go to 1.23.3 and bump base images to latest available ([#​7431](https://github.com/cert-manager/cert-manager/issues/7431), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ### [`v1.16.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.1) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.16.0...v1.16.1) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. The cert-manager 1.16 release includes: new Helm chart features, more Prometheus metrics, memory optimizations, and various improvements and bug fixes for the ACME issuer and Venafi Issuer. 📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) before upgrading. #### 📜Changes since `v1.16.0` ##### Bug or Regression - BUGFIX: Helm schema validation: the new schema validation was too strict for the "global" section. Since the global section is shared across all charts and sub-charts, we must also allow unknown fields. ([#​7348](https://github.com/cert-manager/cert-manager/pull/7348), [`@inteon`](https://github.com/inteon)) - BUGFIX: Helm will now accept percentages for the `podDisruptionBudget.minAvailable` and `podDisruptionBudget.maxAvailable` values. ([#​7345](https://github.com/cert-manager/cert-manager/pull/7345), [`@inteon`](https://github.com/inteon)) - Helm: allow `enabled` to be set as a value to toggle cert-manager as a dependency. ([#​7356](https://github.com/cert-manager/cert-manager/pull/7356), [`@inteon`](https://github.com/inteon)) - BUGFIX: A change in `v1.16.0` caused cert-manager's ACME ClusterIssuer to look in the wrong namespace for resources required for the issuance (e.g. credential Secrets). This is now fixed in `v1.16.1`. ([#​7342](https://github.com/cert-manager/cert-manager/pull/7342), [`@inteon`](https://github.com/inteon)) ### [`v1.16.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.16.0) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.5...v1.16.0) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. The cert-manager 1.16 release includes: new Helm chart features, more Prometheus metrics, memory optimizations, and various improvements and bug fixes for the ACME issuer and Venafi Issuer. 📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) at cert-manager.io. #### ⚠️ Known issues 1. [Helm Chart: JSON schema prevents the chart being used as a sub-chart on Rancher RKE](https://github.com/cert-manager/cert-manager/issues/7329). 2. [ACME DNS01 **ClusterIssuer** fail while loading credentials from Secret resources](https://github.com/cert-manager/cert-manager/issues/7331). #### ❗ Breaking changes 1. Helm schema validation may reject your existing Helm values files if they contain typos or unrecognized fields. 2. Venafi Issuer may fail to renew certificates if the requested duration conflicts with the CA’s minimum or maximum policy settings in Venafi. 3. Venafi Issuer may fail to renew Certificates if the issuer has been configured for TPP with username-password authentication. 📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) at cert-manager.io. #### 📜 Changes since v1.15.0 📖 Read the [complete 1.16 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.16) at cert-manager.io. ##### Feature - Add `SecretRef` support for Venafi TPP issuer CA Bundle ([#​7036](https://github.com/cert-manager/cert-manager/pull/7036), [`@sankalp-at-gh`](https://github.com/sankalp-at-gh)) - Add `renewBeforePercentage` alternative to `renewBefore` ([#​6987](https://github.com/cert-manager/cert-manager/pull/6987), [`@cbroglie`](https://github.com/cbroglie)) - Add a metrics server to the cainjector ([#​7194](https://github.com/cert-manager/cert-manager/pull/7194), [`@wallrj`](https://github.com/wallrj)) - Add a metrics server to the webhook ([#​7182](https://github.com/cert-manager/cert-manager/pull/7182), [`@wallrj`](https://github.com/wallrj)) - Add client certificate auth method for Vault issuer ([#​4330](https://github.com/cert-manager/cert-manager/pull/4330), [`@joshmue`](https://github.com/joshmue)) - Add process and go runtime metrics for controller ([#​6966](https://github.com/cert-manager/cert-manager/pull/6966), [`@mindw`](https://github.com/mindw)) - Added `app.kubernetes.io/managed-by: cert-manager` label to the cert-manager-webhook-ca Secret ([#​7154](https://github.com/cert-manager/cert-manager/pull/7154), [`@jrcichra`](https://github.com/jrcichra)) - Allow the user to specify a Pod template when using GatewayAPI HTTP01 solver, this mirrors the behavior when using the Ingress HTTP01 solver. ([#​7211](https://github.com/cert-manager/cert-manager/pull/7211), [`@ThatsMrTalbot`](https://github.com/ThatsMrTalbot)) - Create token request RBAC for the cert-manager ServiceAccount by default ([#​7213](https://github.com/cert-manager/cert-manager/pull/7213), [`@Jasper-Ben`](https://github.com/Jasper-Ben)) - Feature: Append cert-manager user-agent string to all AWS API requests, including IMDS and STS requests. ([#​7295](https://github.com/cert-manager/cert-manager/pull/7295), [`@wallrj`](https://github.com/wallrj)) - Feature: Log AWS SDK warnings and API requests at cert-manager debug level to help debug AWS Route53 problems in the field. ([#​7292](https://github.com/cert-manager/cert-manager/pull/7292), [`@wallrj`](https://github.com/wallrj)) - Feature: The Route53 DNS solver of the ACME Issuer will now use regional STS endpoints computed from the region that is supplied in the Issuer spec or in the `AWS_REGION` environment variable. Feature: The Route53 DNS solver of the ACME Issuer now uses the "ambient" region (`AWS_REGION` or `AWS_DEFAULT_REGION`) if `issuer.spec.acme.solvers.dns01.route53.region` is empty; regardless of the flags `--issuer-ambient-credentials` and `--cluster-issuer-ambient-credentials`. ([#​7299](https://github.com/cert-manager/cert-manager/pull/7299), [`@wallrj`](https://github.com/wallrj)) - Helm: adds JSON schema validation for the Helm values. ([#​7069](https://github.com/cert-manager/cert-manager/pull/7069), [`@inteon`](https://github.com/inteon)) - If the `--controllers` flag only specifies disabled controllers, the default controllers are now enabled implicitly. Added `disableAutoApproval` and `approveSignerNames` Helm chart options. ([#​7049](https://github.com/cert-manager/cert-manager/pull/7049), [`@inteon`](https://github.com/inteon)) - Make it easier to configure cert-manager using Helm by defaulting `config.apiVersion` and `config.kind` within the Helm chart. ([#​7126](https://github.com/cert-manager/cert-manager/pull/7126), [`@ThatsMrTalbot`](https://github.com/ThatsMrTalbot)) - Now passes down specified duration to Venafi client instead of using the CA default only. ([#​7104](https://github.com/cert-manager/cert-manager/pull/7104), [`@Guitarkalle`](https://github.com/Guitarkalle)) - Reduce the memory usage of `cainjector`, by only caching the metadata of Secret resources. Reduce the load on the K8S API server when `cainjector` starts up, by only listing the metadata of Secret resources. ([#​7161](https://github.com/cert-manager/cert-manager/pull/7161), [`@wallrj`](https://github.com/wallrj)) - The Route53 DNS01 solver of the ACME Issuer can now detect the AWS region from the `AWS_REGION` and `AWS_DEFAULT_REGION` environment variables, which is set by the IAM for Service Accounts (IRSA) webhook and by the Pod Identity webhook. The `issuer.spec.acme.solvers.dns01.route53.region` field is now optional. The API documentation of the `region` field has been updated to explain when and how the region value is used. ([#​7287](https://github.com/cert-manager/cert-manager/pull/7287), [`@wallrj`](https://github.com/wallrj)) - Venafi TPP issuer can now be used with a username & password combination with OAuth. Fixes [#​4653](https://github.com/cert-manager/cert-manager/issues/4653). Breaking: cert-manager will no longer use the API Key authentication method which was deprecated in 20.2 and since removed in 24.1 of TPP. ([#​7084](https://github.com/cert-manager/cert-manager/pull/7084), [`@hawksight`](https://github.com/hawksight)) - You can now configure the pod security context of HTTP-01 solver pods. ([#​5373](https://github.com/cert-manager/cert-manager/pull/5373), [`@aidy`](https://github.com/aidy)) - Helm: New value `webhook.extraEnv`, allows you to set custom environment variables in the webhook Pod. Helm: New value `cainjector.extraEnv`, allows you to set custom environment variables in the cainjector Pod. Helm: New value `startupapicheck.extraEnv`, allows you to set custom environment variables in the startupapicheck Pod. ([#​7319](https://github.com/cert-manager/cert-manager/pull/7319), [`@wallrj`](https://github.com/wallrj)) ##### Bug or Regression - Adds support (behind a flag) to use a domain qualified finalizer. If the feature is enabled (which is not by default), it should prevent Kubernetes from reporting: `metadata.finalizers: "finalizer.acme.cert-manager.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers` ([#​7273](https://github.com/cert-manager/cert-manager/pull/7273), [`@jsoref`](https://github.com/jsoref)) - BUGFIX Route53: explicitly set the `aws-global` STS region which is now required by the `github.com/aws/aws-sdk-go-v2` library. ([#​7108](https://github.com/cert-manager/cert-manager/pull/7108), [`@inteon`](https://github.com/inteon)) - BUGFIX: fix issue that caused Vault issuer to not retry signing when an error was encountered. ([#​7105](https://github.com/cert-manager/cert-manager/pull/7105), [`@inteon`](https://github.com/inteon)) - BUGFIX: the dynamic certificate source used by the webhook TLS server failed to detect a root CA approaching expiration, due to a calculation error. This will cause the webhook TLS server to fail renewing its CA certificate. Please upgrade before the expiration of this CA certificate is reached. ([#​7230](https://github.com/cert-manager/cert-manager/pull/7230), [`@inteon`](https://github.com/inteon)) - Bugfix: Prevent aggressive Route53 retries caused by IRSA authentication failures by removing the Amazon Request ID from errors wrapped by the default credential cache. ([#​7291](https://github.com/cert-manager/cert-manager/pull/7291), [`@wallrj`](https://github.com/wallrj)) - Bugfix: Prevent aggressive Route53 retries caused by STS authentication failures by removing the Amazon Request ID from STS errors. ([#​7259](https://github.com/cert-manager/cert-manager/pull/7259), [`@wallrj`](https://github.com/wallrj)) - Bump `grpc-go` to fix `GHSA-xr7q-jx4m-x55m` ([#​7164](https://github.com/cert-manager/cert-manager/pull/7164), [`@SgtCoDFish`](https://github.com/SgtCoDFish)) - Bump the `go-retryablehttp` dependency to fix `CVE-2024-6104` ([#​7125](https://github.com/cert-manager/cert-manager/pull/7125), [`@SgtCoDFish`](https://github.com/SgtCoDFish)) - Fix Azure DNS causing panics whenever authentication error happens ([#​7177](https://github.com/cert-manager/cert-manager/pull/7177), [`@eplightning`](https://github.com/eplightning)) - Fix incorrect indentation of `endpointAdditionalProperties` in the `PodMonitor` template of the Helm chart ([#​7190](https://github.com/cert-manager/cert-manager/pull/7190), [`@wallrj`](https://github.com/wallrj)) - Fixes ACME HTTP01 challenge behavior when using Gateway API to prevent unbounded creation of HTTPRoute resources ([#​7178](https://github.com/cert-manager/cert-manager/pull/7178), [`@miguelvr`](https://github.com/miguelvr)) - Handle errors arising from challenges missing from the ACME server ([#​7202](https://github.com/cert-manager/cert-manager/pull/7202), [`@bdols`](https://github.com/bdols)) - Helm BUGFIX: the cainjector ConfigMap was not mounted in the cainjector deployment. ([#​7052](https://github.com/cert-manager/cert-manager/pull/7052), [`@inteon`](https://github.com/inteon)) - Improve the startupapicheck: validate that the validating and mutating webhooks are doing their job. ([#​7057](https://github.com/cert-manager/cert-manager/pull/7057), [`@inteon`](https://github.com/inteon)) - The `KeyUsages` X.509 extension is no longer added when there are no key usages set (in accordance to RFC 5280 Section 4.2.1.3) ([#​7250](https://github.com/cert-manager/cert-manager/pull/7250), [`@inteon`](https://github.com/inteon)) - Update `github.com/Azure/azure-sdk-for-go/sdk/azidentity` to address `CVE-2024-35255` ([#​7087](https://github.com/cert-manager/cert-manager/pull/7087), [`@dependabot[bot]`](https://github.com/apps/dependabot)) ##### Other (Cleanup or Flake) - Old API versions were removed from the codebase. Removed: (acme.)cert-manager.io/v1alpha2 (acme.)cert-manager.io/v1alpha3 (acme.)cert-manager.io/v1beta1 ([#​7278](https://github.com/cert-manager/cert-manager/pull/7278), [`@inteon`](https://github.com/inteon)) - Upgrading to client-go `v0.31.0` removes a lot of noisy `reflector.go: unable to sync list result: internal error: cannot cast object DeletedFinalStateUnknown` errors from logs. ([#​7237](https://github.com/cert-manager/cert-manager/pull/7237), [`@inteon`](https://github.com/inteon)) - Bump Go to `v1.23.2` ([#​7324](https://github.com/cert-manager/cert-manager/pull/7324), [`@cert-manager-bot`](https://github.com/cert-manager-bot)) ### [`v1.15.5`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.5) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.4...v1.15.5) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. cert-manager v1.15.5 contains simple dependency bumps to address reported CVEs (CVE-2024-45337 and CVE-2024-45338). We don't believe that cert-manager is actually vulnerable; this release is instead intended to satisfy vulnerability scanners. #### Changes ##### Bug or Regression - Bump golang.org/x/net to address CVE-2024-45337 and CVE-2024-45338 ([#​7496](https://github.com/cert-manager/cert-manager/issues/7496), [@​wallrj](https://github.com/wallrj)) ##### Other (Cleanup or Flake) - Bump to go 1.22.10 ([#​7507](https://github.com/cert-manager/cert-manager/issues/7507), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ### [`v1.15.4`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.4) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.3...v1.15.4) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. This patch release of cert-manager 1.15 makes [several changes](https://github.com/cert-manager/cert-manager/pull/7403) to how PEM input is validated, adding maximum sizes appropriate to the type of PEM data which is being parsed. This is to prevent an unacceptable slow-down in parsing specially crafted PEM data. The issue was found by Google's OSS-Fuzz project. The issue is low severity; to exploit the PEM issue would require privileged access which would likely allow Denial-of-Service through other methods. Note also that since most PEM data parsed by cert-manager comes from `ConfigMap` or `Secret` resources which have a max size limit of approximately 1MB, it's difficult to force cert-manager to parse large amounts of PEM data. Further information is available in https://github.com/cert-manager/cert-manager/security/advisories/GHSA-r4pg-vg54-wxx4 In addition, the version of Go used to build cert-manager 1.15 was updated along with the base images, and a Route53 bug fix was backported. #### Changes by Kind ##### Bug or Regression - Bugfix: Prevent aggressive Route53 retries caused by STS authentication failures by removing the Amazon Request ID from STS errors. ([#​7261](https://github.com/cert-manager/cert-manager/pull/7261), [@​cert-manager-bot](https://github.com/cert-manager-bot)) - Set a maximum size for PEM inputs which cert-manager will accept to remove possibility of taking a long time to process an input ([#​7402](https://github.com/cert-manager/cert-manager/pull/7402), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ##### Other (Cleanup or Flake) - Bump go to 1.22.9 ([#​7424](https://github.com/cert-manager/cert-manager/pull/7424), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Upgrade Go to 1.22.8, the latest available patch release ([#​7406](https://github.com/cert-manager/cert-manager/pull/7406), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ### [`v1.15.3`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.3) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.2...v1.15.3) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. **🔗 [See v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) for more information about cert-manager 1.15 and read-before-upgrade info.** #### 📜 Changes since [`v1.15.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.2) ##### Bug or Regression - BUGFIX: the dynamic certificate source used by the webhook TLS server failed to detect a root CA approaching expiration, due to a calculation error. This will cause the webhook TLS server to fail renewing its CA certificate. Please upgrade before the expiration of this CA certificate is reached. ([#​7232](https://github.com/cert-manager/cert-manager/issues/7232), [@​cert-manager-bot](https://github.com/cert-manager-bot)) ### [`v1.15.2`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.2) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.1...v1.15.2) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. **🔗 [See v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) for more information about cert-manager 1.15 and read-before-upgrade info.** #### 📜 Changes since [`v1.15.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.1) ##### Bug or Regression - BUGFIX `route53`: explicitly set the `aws-global` STS region which is now required by the `github.com/aws/aws-sdk-go-v2` library. ([#​7189](https://github.com/cert-manager/cert-manager/pull/7189), [`@cert-manager-bot`](https://github.com/cert-manager-bot)) - Bump `grpc-go` to fix `GHSA-xr7q-jx4m-x55m` ([#​7167](https://github.com/cert-manager/cert-manager/pull/7167), [`@SgtCoDFish`](https://github.com/SgtCoDFish)) - Fix Azure DNS causing panics whenever authentication error happens ([#​7188](https://github.com/cert-manager/cert-manager/pull/7188), [`@cert-manager-bot`](https://github.com/cert-manager-bot)) - Fix incorrect value and indentation of `endpointAdditionalProperties` in the `PodMonitor` template of the Helm chart ([#​7191](https://github.com/cert-manager/cert-manager/pull/7191), [`@inteon`](https://github.com/inteon)) - Fixes ACME HTTP01 challenge behavior when using Gateway API to prevent unbounded creation of `HTTPRoute` resources ([#​7186](https://github.com/cert-manager/cert-manager/pull/7186), [`@cert-manager-bot`](https://github.com/cert-manager-bot)) - Upgrade `golang` from `1.22.3` to `1.22.5` ([#​7165](https://github.com/cert-manager/cert-manager/pull/7165), [`@github-actions`](https://github.com/github-actions)) ### [`v1.15.1`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.1) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.15.0...v1.15.1) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. **🔗 [See v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) for more information about cert-manager 1.15 and read-before-upgrade info.** #### 📜 Changes since [v1.15.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) ##### Bug or Regression - BUGFIX: fix issue that caused Vault issuer to not retry signing when an error was encountered. ([#​7111](https://github.com/cert-manager/cert-manager/issues/7111), [@​inteon](https://github.com/inteon)) ##### Other (Cleanup or Flake) - Update github.com/Azure/azure-sdk-for-go/sdk/azidentity to address CVE-2024-35255 ([#​7092](https://github.com/cert-manager/cert-manager/issues/7092), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot)) - Bump the go-retryablehttp dependency to fix CVE-2024-6104 ([#​7130](https://github.com/cert-manager/cert-manager/issues/7130), [@​SgtCoDFish](https://github.com/SgtCoDFish)) ### [`v1.15.0`](https://github.com/cert-manager/cert-manager/releases/tag/v1.15.0) [Compare Source](https://github.com/cert-manager/cert-manager/compare/v1.14.7...v1.15.0) cert-manager is the easiest way to automatically manage certificates in Kubernetes and OpenShift clusters. cert-manager 1.15 promotes several features to beta, including GatewayAPI support (`ExperimentalGatewayAPISupport`), the ability to provide a subject in the Certificate that will be used literally in the CertificateSigningRequest (`LiteralCertificateSubject`) and the outputting of additional certificate formats (`AdditionalCertificateOutputFormats`). > \[!NOTE] > > The `cmctl` binary have been moved to https://github.com/cert-manager/cmctl/releases. > For the startupapicheck Job you should update references to point at `quay.io/jetstack/cert-manager-startupapicheck` > \[!NOTE] > > From this release, the Helm chart will no longer uninstall the CRDs when the chart is uninstalled. If you want the CRDs to be removed on uninstall use `crds.keep=false` when installing the Helm chart. #### Community Thanks again to all open-source contributors with commits in this release, including: [@​Pionerd](https://github.com/Pionerd), [@​SgtCoDFish](https://github.com/SgtCoDFish), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot), [@​andrey-dubnik](https://github.com/andrey-dubnik), [@​bwaldrep](https://github.com/bwaldrep), [@​eplightning](https://github.com/eplightning), [@​erikgb](https://github.com/erikgb), [@​findnature](https://github.com/findnature), [@​gplessis](https://github.com/gplessis), [@​import-shiburin](https://github.com/import-shiburin), [@​inteon](https://github.com/inteon), [@​jkroepke](https://github.com/jkroepke), [@​lunarwhite](https://github.com/lunarwhite), [@​mangeshhambarde](https://github.com/mangeshhambarde), [@​pwhitehead-splunk](https://github.com/pwhitehead-splunk) & [@​rodrigorfk](https://github.com/rodrigorfk), [@​wallrj](https://github.com/wallrj). Thanks also to the following cert-manager maintainers for their contributions during this release: [@​SgtCoDFish](https://github.com/SgtCoDFish), [@​SpectralHiss](https://github.com/SpectralHiss), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot), [@​hawksight](https://github.com/hawksight), [@​inteon](https://github.com/inteon), [@​maelvls](https://github.com/maelvls) & [@​wallrj](https://github.com/wallrj). Equally thanks to everyone who provided feedback, helped users and raised issues on GitHub and Slack and joined our meetings! Thanks also to the CNCF, which provides resources and support, and to the AWS open source team for being good community members and for their maintenance of the PrivateCA Issuer. In addition, massive thanks to Venafi for contributing developer time and resources towards the continued maintenance of cert-manager projects. #### Changes by Kind ##### Feature - GatewayAPI support has graduated to Beta. Add the `--enable-gateway-api` flag to enable the integration. ([#​6961](https://github.com/cert-manager/cert-manager/issues/6961), [@​ThatsMrTalbot](https://github.com/ThatsMrTalbot)) - Add support to specify a custom key alias in a JKS Keystore ([#​6807](https://github.com/cert-manager/cert-manager/issues/6807), [@​bwaldrep](https://github.com/bwaldrep)) - Add the ability to communicate with Vault via mTLS when strict client certificates is enabled at Vault server side ([#​6614](https://github.com/cert-manager/cert-manager/issues/6614), [@​rodrigorfk](https://github.com/rodrigorfk)) - Added option to provide additional audiences in the service account auth section for vault ([#​6718](https://github.com/cert-manager/cert-manager/issues/6718), [@​andrey-dubnik](https://github.com/andrey-dubnik)) - Venafi Issuer now sends a cert-manager HTTP User-Agent header in all Venafi Rest API requests. For example: `cert-manager-certificaterequests-issuer-venafi/v1.15.0+(linux/amd64)+cert-manager/ef068a59008f6ed919b98a7177921ddc9e297200`. ([#​6865](https://github.com/cert-manager/cert-manager/issues/6865), [@​wallrj](https://github.com/wallrj)) - Add hint to validation error message to help users of external issuers more easily fix the issue if they specify a Kind but forget the Group ([#​6913](https://github.com/cert-manager/cert-manager/issues/6913), [@​SgtCoDFish](https://github.com/SgtCoDFish)) - Add support for numeric OID types in LiteralSubject. Eg. "1.2.3.4=String Value" ([#​6775](https://github.com/cert-manager/cert-manager/issues/6775), [@​inteon](https://github.com/inteon)) - Promote the `LiteralCertificateSubject` feature to Beta. ([#​7030](https://github.com/cert-manager/cert-manager/issues/7030), [@​inteon](https://github.com/inteon)) - Promoted the AdditionalCertificateOutputFormats feature gate to Beta (enabled by default). ([#​6970](https://github.com/cert-manager/cert-manager/issues/6970), [@​erikgb](https://github.com/erikgb)) - The Helm chart now allows you to supply `extraObjects`; a list of yaml manifests which will helm will install and uninstall with the cert-manager manifests. ([#​6424](https://github.com/cert-manager/cert-manager/issues/6424), [@​gplessis](https://github.com/gplessis)) - Update the Route53 provider to support fetching credentials using AssumeRoleWithWebIdentity ([#​6878](https://github.com/cert-manager/cert-manager/issues/6878), [@​pwhitehead-splunk](https://github.com/pwhitehead-splunk)) - Helm can now add optional hostAliases to cert-manager Pod to allow the DNS self-check to pass in custom scenarios. ([#​6456](https://github.com/cert-manager/cert-manager/issues/6456), [@​Pionerd](https://github.com/Pionerd)) - Added a new Ingress annotation for copying specific Ingress annotations to Certificate's secretTemplate ([#​6839](https://github.com/cert-manager/cert-manager/issues/6839), [@​mangeshhambarde](https://github.com/mangeshhambarde)) - Added option to define additional token audiences for the Vault Kubernetes auth ([#​6744](https://github.com/cert-manager/cert-manager/issues/6744), [@​andrey-dubnik](https://github.com/andrey-dubnik)) - Allow `cert-manager.io/allow-direct-injection` in annotations ([#​6801](https://github.com/cert-manager/cert-manager/issues/6801), [@​jkroepke](https://github.com/jkroepke)) ##### Design - Remove repetitive words ([#​6949](https://github.com/cert-manager/cert-manager/issues/6949), [@​findnature](https://github.com/findnature)) ##### Bug or Regression - BUGFIX: Fixes issue with JSON-logging, where only a subset of the log messages were output as JSON. ([#​6779](https://github.com/cert-manager/cert-manager/issues/6779), [@​inteon](https://github.com/inteon)) - BUGFIX: JKS and PKCS12 stores now contain the full set of CAs specified by an issuer ([#​6806](https://github.com/cert-manager/cert-manager/issues/6806), [@​bwaldrep](https://github.com/bwaldrep)) - BUGFIX: cainjector leaderelection flag/config option defaults are missing ([#​6816](https://github.com/cert-manager/cert-manager/issues/6816), [@​inteon](https://github.com/inteon)) - BUGFIX: cert-manager issuers incorrectly copied the critical flag from the CSR instead of re-calculating that field themselves. ([#​6724](https://github.com/cert-manager/cert-manager/issues/6724), [@​inteon](https://github.com/inteon)) - Breaking Change: Fixed unintended certificate chain is used if `preferredChain` is configured. ([#​6755](https://github.com/cert-manager/cert-manager/issues/6755), [@​import-shiburin](https://github.com/import-shiburin)) - Bugfix: LiteralSubjects with a #= value can result in memory issues due to faulty BER parser (github.com/go-asn1-ber/asn1-ber). ([#​6770](https://github.com/cert-manager/cert-manager/issues/6770), [@​inteon](https://github.com/inteon)) - …
Pull Request Motivation
Currently, there are no metrics exposed for certificates that show information about when a certificate was issued. This makes it difficult to determine how long it will be until a certificate expires, relative to how long it was issued for. This is important for monitoring of renewals, as alerts and dashboards based around absolute threshold (e.g. an alert when a certificate is 2 weeks from expiring) are largely useless when using a mix of short lived and long lived certificates. This mix of short and long lived certificates is somewhat common, where root CAs may be issued for years, intermediary CAs issued for months, and leaf certs issued for days or hours.
To address this, this PR adds a
certmanager_certificate_not_before_timestamp_seconds
metric, who's value is the timestamp before which the certificate is invalid, expressed as a Unix Epoch Time. To keep naming consistent, acertmanager_certificate_not_after_timestamp_seconds
metric has been added that is identical to thecertmanager_certificate_expiration_timestamp_seconds
metric.Here's an example of what can be done with this metric + the existing ones:

Kind
/kind feature
Release Note