Skip to content
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(helm): update cert-manager (v1.16.3 → v1.17.0) #3392

Merged
merged 1 commit into from
Feb 3, 2025

Conversation

bot-blake[bot]
Copy link
Contributor

@bot-blake bot-blake bot commented Feb 3, 2025

This PR contains the following updates:

Package Update Change
cert-manager (source) minor v1.16.3 -> v1.17.0

Release Notes

cert-manager/cert-manager (cert-manager)

v1.17.0

Compare Source

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 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 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 and JKS

Specifying passwords on PKCS#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 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:

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 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:

for their contributions, comments and support!

Also, thanks to the cert-manager maintainer team for their help in this release:

And finally, thanks to the cert-manager steering committee for their feedback in this release cycle:

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, @​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, @​ThatsMrTalbot)
  • Added image pull secrets to deployments when service accounts aren't created (#​7411, @​TheHenrick)
  • Added the ability to customize client ID when using username/password authentication for Venafi client (#​7484, @​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, @​wallrj)
  • Increase the amount of PEM data pki.DecodeX509CertificateSetBytes is able to parse, to enable reading larger TLS trust bundles (#​7464, @​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, @​jochenrichter)
  • Promote the UseDomainQualifiedFinalizer feature to Beta. (#​7488, @​jsoref)
  • Allow JKS/PKCS12 keystore passwords to be set as literal values in Certificate resources, mutually exclusive with the existing passwordSecretRef field (#​6657, @​rquinio1A)
  • Allow templating ServiceAccount annotations by running the built-in Helm tpl function on keys and values, to aid with workload identity configuration (#​7501, @​fcrespofastly)
  • Promote CA NameConstraints feature gate to Beta (enabled by default) (#​7494, @​tanujd11)
Documentation
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, @​inteon)
  • BUGFIX: Helm will now accept percentages for the podDisruptionBudget.minAvailable and podDisruptionBudget.maxAvailable values. (#​7343, @​inteon)
  • Fix ACME HTTP-01 solver for IPv6 endpoints (#​7391, @​Peac36)
  • Fix the behavior of renewBeforePercentage to comply with its spec (#​7421, @​adam-sroka)
  • Helm: allow enabled to be set as a value to toggle cert-manager as a dependency. (#​7350, @​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 (#​7400, @​SgtCoDFish)
  • The Certificate object will no longer create CertificateRequest or Secret objects while being deleted (#​7361, @​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, @​inteon)
  • Upgrades Venafi vCert library fixing a bug which caused the RSA 3072 bit key size for TPP certificate enrollment to not work. (#​7498, @​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, @​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, @​jsoref)
  • Remove Neither --kubeconfig nor --master was specified warning message when the controller and the webhook services boot (#​7457, @​Peac36)
  • Move 'live' DNS tests into a separate package to contain test flakiness and improve developer UX (#​7530, @​SgtCoDFish)

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Signed-off-by: bot-blake[bot] <129223303+bot-blake[bot]@users.noreply.github.com>
@bot-blake bot-blake bot requested a review from buroa as a code owner February 3, 2025 18:07
@bot-blake bot-blake bot assigned buroa Feb 3, 2025
@bot-blake bot-blake bot added the area/kubernetes Changes made in the kubernetes directory label Feb 3, 2025
@bot-blake
Copy link
Contributor Author

bot-blake bot commented Feb 3, 2025

--- HelmRelease: cert-manager/cert-manager Deployment: cert-manager/cert-manager-cainjector

+++ HelmRelease: cert-manager/cert-manager Deployment: cert-manager/cert-manager-cainjector

@@ -31,13 +31,13 @@

       securityContext:
         runAsNonRoot: true
         seccompProfile:
           type: RuntimeDefault
       containers:
       - name: cert-manager-cainjector
-        image: quay.io/jetstack/cert-manager-cainjector:v1.16.3
+        image: quay.io/jetstack/cert-manager-cainjector:v1.17.0
         imagePullPolicy: IfNotPresent
         args:
         - --v=2
         - --leader-election-namespace=kube-system
         ports:
         - containerPort: 9402
--- HelmRelease: cert-manager/cert-manager Deployment: cert-manager/cert-manager

+++ HelmRelease: cert-manager/cert-manager Deployment: cert-manager/cert-manager

@@ -31,19 +31,19 @@

       securityContext:
         runAsNonRoot: true
         seccompProfile:
           type: RuntimeDefault
       containers:
       - name: cert-manager-controller
-        image: quay.io/jetstack/cert-manager-controller:v1.16.3
+        image: quay.io/jetstack/cert-manager-controller:v1.17.0
         imagePullPolicy: IfNotPresent
         args:
         - --v=2
         - --cluster-resource-namespace=$(POD_NAMESPACE)
         - --leader-election-namespace=kube-system
-        - --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.16.3
+        - --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.17.0
         - --max-concurrent-challenges=60
         - --dns01-recursive-nameservers-only=true
         - --dns01-recursive-nameservers=https://1.1.1.1:443/dns-query,https://1.0.0.1:443/dns-query
         ports:
         - containerPort: 9402
           name: http-metrics
--- HelmRelease: cert-manager/cert-manager Deployment: cert-manager/cert-manager-webhook

+++ HelmRelease: cert-manager/cert-manager Deployment: cert-manager/cert-manager-webhook

@@ -31,13 +31,13 @@

       securityContext:
         runAsNonRoot: true
         seccompProfile:
           type: RuntimeDefault
       containers:
       - name: cert-manager-webhook
-        image: quay.io/jetstack/cert-manager-webhook:v1.16.3
+        image: quay.io/jetstack/cert-manager-webhook:v1.17.0
         imagePullPolicy: IfNotPresent
         args:
         - --v=2
         - --secure-port=10250
         - --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)
         - --dynamic-serving-ca-secret-name=cert-manager-webhook-ca
--- HelmRelease: cert-manager/cert-manager Job: cert-manager/cert-manager-startupapicheck

+++ HelmRelease: cert-manager/cert-manager Job: cert-manager/cert-manager-startupapicheck

@@ -31,13 +31,13 @@

       securityContext:
         runAsNonRoot: true
         seccompProfile:
           type: RuntimeDefault
       containers:
       - name: cert-manager-startupapicheck
-        image: quay.io/jetstack/cert-manager-startupapicheck:v1.16.3
+        image: quay.io/jetstack/cert-manager-startupapicheck:v1.17.0
         imagePullPolicy: IfNotPresent
         args:
         - check
         - api
         - --wait=1m
         - -v

@bot-blake
Copy link
Contributor Author

bot-blake bot commented Feb 3, 2025

--- kubernetes/apps/cert-manager/cert-manager/app Kustomization: cert-manager/cert-manager HelmRelease: cert-manager/cert-manager

+++ kubernetes/apps/cert-manager/cert-manager/app Kustomization: cert-manager/cert-manager HelmRelease: cert-manager/cert-manager

@@ -13,13 +13,13 @@

     spec:
       chart: cert-manager
       sourceRef:
         kind: HelmRepository
         name: jetstack
         namespace: flux-system
-      version: v1.16.3
+      version: v1.17.0
   install:
     remediation:
       retries: 3
   interval: 30m
   upgrade:
     cleanupOnFail: true

@buroa buroa merged commit 56186c2 into master Feb 3, 2025
13 checks passed
@buroa buroa deleted the renovate/cert-manager-1.x branch February 3, 2025 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/kubernetes Changes made in the kubernetes directory renovate/helm type/minor
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant