blob: be1388d79a7d103e4bf6922223ff02de56cb4eaa [file] [log] [blame]
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001# +docs:section=Global
2
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04003# Default values for cert-manager.
4# This is a YAML-formatted file.
5# Declare variables to be passed into your templates.
6global:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04007 # Reference to one or more secrets to be used when pulling images.
8 # For more information, see [Pull an Image from a Private Registry](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/).
9 #
10 # For example:
11 # imagePullSecrets:
12 # - name: "image-pull-secret"
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040013 imagePullSecrets: []
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040014
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040015 # Global node selector
16 #
17 # The nodeSelector on Pods tells Kubernetes to schedule Pods on the nodes with
18 # matching labels.
19 # For more information, see [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).
20 #
21 # If a component-specific nodeSelector is also set, it will be merged and take precedence.
22 # +docs:property
23 nodeSelector: {}
24
25 # Labels to apply to all resources.
26 # These labels are also applied to dynamically-created ACME HTTP01 solver resources
27 # (pods, services, ingresses, or Gateway API HTTPRoutes).
28 # The following ACME identity label keys are reserved and will be
29 # silently ignored on dynamically-created resources: acme.cert-manager.io/http-domain,
30 # acme.cert-manager.io/http-token, acme.cert-manager.io/http01-solver.
31 # For per-Issuer-specific labels, use the HTTP01 ingress solver podTemplate and
32 # ingressTemplate fields for pod/ingress resources, or the gatewayHTTPRoute
33 # solver labels field for Gateway API HTTPRoute resources.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040034 commonLabels: {}
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040035
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040036 # The number of old ReplicaSets to retain to allow rollback (if not set, the default Kubernetes value is set to 10).
37 # +docs:property
38 # revisionHistoryLimit: 1
39
40 # The optional priority class to be used for the cert-manager pods.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040041 priorityClassName: ""
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040042
43 # Set all pods to run in a user namespace without host access.
44 # Experimental: may be removed once the Kubernetes User Namespaces feature is GA.
45 #
46 # Requirements:
47 # - Kubernetes ≥ 1.33, or
48 # - Kubernetes 1.27–1.32 with UserNamespacesSupport feature gate enabled.
49 #
50 # Set to false to run pods in a user namespace without host access.
51 #
52 # See [limitations](https://kubernetes.io/docs/concepts/workloads/pods/user-namespaces/#limitations) for details.
53 # +docs:property
54 # hostUsers: false
55
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040056 rbac:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040057 # Create required ClusterRoles and ClusterRoleBindings for cert-manager.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040058 create: true
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040059 # Aggregate ClusterRoles to Kubernetes default user-facing roles. For more information, see [User-facing roles](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles)
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040060 aggregateClusterRoles: true
61
62 podSecurityPolicy:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040063 # Create PodSecurityPolicy for cert-manager.
64 #
65 # Note that PodSecurityPolicy was deprecated in Kubernetes 1.21 and removed in Kubernetes 1.25.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040066 enabled: false
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040067 # Configure the PodSecurityPolicy to use AppArmor.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040068 useAppArmor: true
69
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040070 # Set the verbosity of cert-manager. A range of 0 - 6, with 6 being the most verbose.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040071 logLevel: 2
72
73 leaderElection:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040074 # Override the namespace used for the leader election lease.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040075 namespace: "kube-system"
76
77 # The duration that non-leader candidates will wait after observing a
78 # leadership renewal until attempting to acquire leadership of a led but
79 # unrenewed leader slot. This is effectively the maximum duration that a
80 # leader can be stopped before it is replaced by another candidate.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040081 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040082 # leaseDuration: 60s
83
84 # The interval between attempts by the acting master to renew a leadership
85 # slot before it stops leading. This must be less than or equal to the
86 # lease duration.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040087 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040088 # renewDeadline: 40s
89
90 # The duration the clients should wait between attempting acquisition and
91 # renewal of a leadership.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040092 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +040093 # retryPeriod: 15s
94
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +040095 # A Kubernetes Runtime Class to apply to ACME HTTP01 solver pods, if required. For more information, see [Runtime Class](https://kubernetes.io/docs/concepts/containers/).
96 #
97 # For example:
98 # runtimeClassName: gvisor
99 # +docs:property
100 runtimeClassName: ""
101
102# This option is equivalent to setting crds.enabled=true and crds.keep=true.
103# Deprecated: use crds.enabled and crds.keep instead.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400104installCRDs: false
105
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400106crds:
107 # This option decides if the CRDs should be installed
108 # as part of the Helm installation.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400109 enabled: false
110
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400111 # This option makes it so that the "helm.sh/resource-policy": keep
112 # annotation is added to the CRD. This will prevent Helm from uninstalling
113 # the CRD when the Helm release is uninstalled.
114 # WARNING: when the CRDs are removed, all cert-manager custom resources
115 # (Certificates, Issuers, ...) will be removed too by the garbage collector.
116 keep: true
117
118# +docs:section=Controller
119
120# The number of replicas of the cert-manager controller to run.
121#
122# The default is 1, but in production set this to 2 or 3 to provide high
123# availability.
124#
125# If `replicas > 1`, consider setting `podDisruptionBudget.enabled=true`.
126#
127# Note that cert-manager uses leader election to ensure that there can
128# only be a single instance active at a time.
129replicaCount: 1
130
131# Deployment update strategy for the cert-manager controller deployment.
132# For more information, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy).
133#
134# For example:
135# strategy:
136# type: RollingUpdate
137# rollingUpdate:
138# maxSurge: 0
139# maxUnavailable: 1
140strategy: {}
141
142podDisruptionBudget:
143 # Enable or disable the PodDisruptionBudget resource.
144 #
145 # This prevents downtime during voluntary disruptions such as during a Node upgrade.
146 # For example, the PodDisruptionBudget will block `kubectl drain`
147 # if it is used on the Node where the only remaining cert-manager
148 # Pod is currently running.
149 enabled: false
150
151 # This configures the minimum available pods for disruptions. It can either be set to
152 # an integer (e.g., 1) or a percentage value (e.g., 25%).
153 # It cannot be used if `maxUnavailable` is set.
154 # +docs:property
155 # +docs:type=unknown
156 # minAvailable: 1
157
158 # This configures the maximum unavailable pods for disruptions. It can either be set to
159 # an integer (e.g., 1) or a percentage value (e.g., 25%).
160 # it cannot be used if `minAvailable` is set.
161 # +docs:property
162 # +docs:type=unknown
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400163 # maxUnavailable: 1
164
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400165 # This configures how to act with unhealthy pods during eviction
166 # Note that this requires Kubernetes 1.31 or `PDBUnhealthyPodEvictionPolicy` feature gate enabled for
167 # the cluster to work.
168 # +docs:property
169 # +docs:type=string
170 # unhealthyPodEvictionPolicy: AlwaysAllow
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400171
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400172# A comma-separated list of feature gates that should be enabled on the
173# controller pod.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400174featureGates: ""
175
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400176# The maximum number of challenges that can be scheduled as 'processing' at once.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400177maxConcurrentChallenges: 60
178
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400179# The container registry used for all cert-manager images by default.
180# This can include path prefixes (e.g. `artifactory.example.com/docker`).
181# +docs:property
182imageRegistry: quay.io
183
184# The repository namespace used for all cert-manager images by default.
185# Examples:
186# - jetstack
187# - cert-manager
188# +docs:property
189imageNamespace: jetstack
190
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400191image:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400192 # Deprecated: per-component registry prefix.
193 #
194 # If set, this value is *prepended* to the image repository that the chart would otherwise render.
195 # This applies both when `image.repository` is set and when the repository is computed from
196 # `imageRegistry` + `imageNamespace` + `image.name`.
197 #
198 # This can produce "double registry" style references such as `legacy.example.io/quay.io/jetstack/...`.
199 # Prefer using the global `imageRegistry`/`imageNamespace` values.
200 # +docs:property
201 # registry: ""
202
203 # The image name for the cert-manager controller.
204 # This is used (together with `imageRegistry` and `imageNamespace`) to construct the full image reference.
205 # +docs:property
206 name: cert-manager-controller
207
208 # Full repository override (takes precedence over `imageRegistry`, `imageNamespace`, and `image.name`).
209 # Example: quay.io/jetstack/cert-manager-controller
210 # +docs:property
211 repository: ""
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400212
213 # Override the image tag to deploy by setting this variable.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400214 # If no value is set, the chart's appVersion is used.
215 # +docs:property
216 # tag: vX.Y.Z
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400217
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400218 # Setting a digest pins the image. If a tag is also set, the rendered reference will include
219 # both ("image:tag@digest"), though only the digest will be used for pulling.
220 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400221 # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400222
223 # Kubernetes imagePullPolicy on Deployment.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400224 pullPolicy: IfNotPresent
225
226# Override the namespace used to store DNS provider credentials etc. for ClusterIssuer
227# resources. By default, the same namespace as cert-manager is deployed within is
228# used. This namespace will not be automatically created by the Helm chart.
229clusterResourceNamespace: ""
230
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400231# This namespace allows you to define where the services are installed into.
232# If not set then they use the namespace of the release.
233# This is helpful when installing cert manager as a chart dependency (sub chart).
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400234namespace: ""
235
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400236# Override the "cert-manager.fullname" value. This value is used as part of
237# most of the names of the resources created by this Helm chart.
238# +docs:property
239# fullnameOverride: "my-cert-manager"
240
241# Override the "cert-manager.name" value, which is used to annotate some of
242# the resources that are created by this Chart (using "app.kubernetes.io/name").
243# NOTE: There are some inconsistencies in the Helm chart when it comes to
244# these annotations (some resources use, e.g., "cainjector.name" which resolves
245# to the value "cainjector").
246# +docs:property
247# nameOverride: "my-cert-manager"
248
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400249serviceAccount:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400250 # Specifies whether a service account should be created.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400251 create: true
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400252
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400253 # The name of the service account to use.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400254 # If not set and create is true, a name is generated using the fullname template.
255 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400256 # name: ""
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400257
258 # Optional additional annotations to add to the controller's Service Account. Templates are allowed for both keys and values.
259 # Example using templating:
260 # annotations:
261 # "{{ .Chart.Name }}-helm-chart/version": "{{ .Chart.Version }}"
262 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400263 # annotations: {}
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400264
265 # Optional additional labels to add to the controller's Service Account.
266 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400267 # labels: {}
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400268
269 # Automount API credentials for a Service Account.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400270 automountServiceAccountToken: true
271
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400272# Automounting API credentials for a particular pod.
273# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400274# automountServiceAccountToken: true
275
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400276# When this flag is enabled, secrets will be automatically removed when the certificate resource is deleted.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400277enableCertificateOwnerRef: false
278
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400279# This property is used to configure options for the controller pod.
280# This allows setting options that would usually be provided using flags.
281#
282# If `apiVersion` and `kind` are unspecified they default to the current latest
283# version (currently `controller.config.cert-manager.io/v1alpha1`). You can pin
284# the version by specifying the `apiVersion` yourself.
285#
286# For example:
287# config:
288# apiVersion: controller.config.cert-manager.io/v1alpha1
289# kind: ControllerConfiguration
290# logging:
291# verbosity: 2
292# format: text
293# leaderElectionConfig:
294# namespace: kube-system
295# kubernetesAPIQPS: 9000
296# kubernetesAPIBurst: 9000
297# numberOfConcurrentWorkers: 200
298# gatewayAPI:
299# enable: true
300# # Feature gates as of v1.20.0. Listed with their default values.
301# # See https://cert-manager.io/docs/cli/controller/
302# featureGates:
303# AllAlpha: false # ALPHA - default=false
304# AllBeta: false # BETA - default=false
305# ACMEHTTP01IngressPathTypeExact: true # BETA - default=true
306# ExperimentalCertificateSigningRequestControllers: false # ALPHA - default=false
307# ExperimentalGatewayAPISupport: true # BETA - default=true
308# LiteralCertificateSubject: true # BETA - default=true
309# NameConstraints: true # BETA - default=true
310# OtherNames: true # BETA - default=true
311# SecretsFilteredCaching: true # BETA - default=true
312# ServerSideApply: false # ALPHA - default=false
313# StableCertificateRequestName: true # BETA - default=true
314# UseCertificateRequestBasicConstraints: false # ALPHA - default=false
315# # Configure the metrics server for TLS
316# # See https://cert-manager.io/docs/devops-tips/prometheus-metrics/#tls
317# metricsTLSConfig:
318# dynamic:
319# secretNamespace: "cert-manager"
320# secretName: "cert-manager-metrics-ca"
321# dnsNames:
322# - cert-manager-metrics
323# # Configure PEM size limits for certificate validation
324# # Useful for certificates with many DNS names (e.g., Istio gateways with 100+ DNS names)
325# pemSizeLimitsConfig:
326# maxCertificateSize: 36500 # Maximum size in bytes for individual certificates (default: 36500)
327# maxPrivateKeySize: 13000 # Maximum size in bytes for private keys (default: 13000)
328# maxChainLength: 95000 # Maximum size in bytes for certificate chains (default: 95000)
329# maxBundleSize: 330000 # Maximum size in bytes for certificate bundles (default: 330000)
330# # Configure certificate request backoff durations
331# certificateRequestMinimumBackoffDuration: 1h
332# certificateRequestMaximumBackoffDuration: 32h
333config: {}
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400334
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400335# Setting Nameservers for DNS01 Self Check.
336# For more information, see the [cert-manager documentation](https://cert-manager.io/docs/configuration/acme/dns01/#setting-nameservers-for-dns01-self-check).
337
338# A comma-separated string with the host and port of the recursive nameservers cert-manager should query.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400339dns01RecursiveNameservers: ""
340
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400341# Forces cert-manager to use only the recursive nameservers for verification.
342# Enabling this option could cause the DNS01 self check to take longer owing to caching performed by the recursive nameservers.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400343dns01RecursiveNameserversOnly: false
344
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400345# Option to disable cert-manager's build-in auto-approver. The auto-approver
346# approves all CertificateRequests that reference issuers matching the 'approveSignerNames'
347# option. This 'disableAutoApproval' option is useful when you want to make all approval decisions
348# using a different approver (like approver-policy - https://github.com/cert-manager/approver-policy).
349disableAutoApproval: false
350
351# List of signer names that cert-manager will approve by default. CertificateRequests
352# referencing these signer names will be auto-approved by cert-manager. Defaults to just
353# approving the cert-manager.io Issuer and ClusterIssuer issuers. When set to an empty
354# array, ALL issuers will be auto-approved by cert-manager. To disable the auto-approval,
355# because, e.g., you are using approver-policy, you can enable 'disableAutoApproval'.
356# ref: https://cert-manager.io/docs/concepts/certificaterequest/#approval
357# +docs:property
358approveSignerNames:
359- issuers.cert-manager.io/*
360- clusterissuers.cert-manager.io/*
361
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400362# Additional command line flags to pass to cert-manager controller binary.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400363# To see all available flags run `docker run quay.io/jetstack/cert-manager-controller:<version> --help`.
364#
365# Use this flag to enable or disable arbitrary controllers. For example, to disable the CertificateRequests approver.
366#
367# For example:
368# extraArgs:
369# - --controllers=*,-certificaterequests-approver
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400370extraArgs: []
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400371
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400372# Extra containers to add to the pod spec in the deployment of the cert-manager controller.
373# For example, to deploy the [aws_signing_helper](https://github.com/aws/rolesanywhere-credential-helper) (replacing the ARNs as relevant):
374#
375# extraEnv:
376# - name: AWS_EC2_METADATA_SERVICE_ENDPOINT
377# - value: http://127.0.0.1:9911
378# extraContainers:
379# - name: rolesanywhere-credential-helper
380# image: public.ecr.aws/rolesanywhere/credential-helper:latest
381# command: [aws_signing_helper]
382# args:
383# - serve
384# - --private-key
385# - /etc/cert/tls.key
386# - --certificate
387# - /etc/cert/tls.crt
388# - --role-arn
389# - $ROLE_ARN
390# - --profile-arn
391# - $PROFILE_ARN
392# - --trust-anchor-arn
393# - $TRUST_ANCHOR_ARN
394# volumeMounts:
395# - name: cert
396# mountPath: /etc/cert/
397# readOnly: true
398# volumes:
399# - name: cert
400# secret:
401# secretName: cert
402extraContainers: []
403
404# Additional environment variables to pass to cert-manager controller binary.
405# For example:
406# extraEnv:
407# - name: SOME_VAR
408# value: 'some value'
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400409extraEnv: []
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400410
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400411# Resources to provide to the cert-manager controller pod.
412#
413# For example:
414# requests:
415# cpu: 10m
416# memory: 32Mi
417#
418# For more information, see [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400419resources: {}
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400420
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400421# Pod Security Context.
422# For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
423# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400424securityContext:
425 runAsNonRoot: true
426 seccompProfile:
427 type: RuntimeDefault
428
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400429# Container Security Context to be set on the controller component container.
430# For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
431# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400432containerSecurityContext:
433 allowPrivilegeEscalation: false
434 capabilities:
435 drop:
436 - ALL
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400437 readOnlyRootFilesystem: true
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400438
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400439# Additional volumes to add to the cert-manager controller pod.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400440volumes: []
441
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400442# Additional volume mounts to add to the cert-manager controller container.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400443volumeMounts: []
444
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400445# Optional additional annotations to add to the controller Deployment.
446# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400447# deploymentAnnotations: {}
448
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400449# Optional additional annotations to add to the controller Pods.
450# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400451# podAnnotations: {}
452
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400453# Optional additional labels to add to the controller Pods.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400454podLabels: {}
455
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400456# Optional annotations to add to the controller Service.
457# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400458# serviceAnnotations: {}
459
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400460# Optional additional labels to add to the controller Service.
461# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400462# serviceLabels: {}
463
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400464# Optionally set the IP family policy for the controller Service to configure dual-stack; see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services).
465# +docs:property
466# serviceIPFamilyPolicy: ""
467
468# Optionally set the IP families for the controller Service that should be supported, in the order in which they should be applied to ClusterIP. Can be IPv4 and/or IPv6.
469# +docs:property
470# serviceIPFamilies: []
471
472# Optional DNS settings. These are useful if you have a public and private DNS zone for
473# the same domain on Route 53. The following is an example of ensuring
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400474# cert-manager can access an ingress or DNS TXT records at all times.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400475# Note that this requires Kubernetes 1.10 or `CustomPodDNS` feature gate enabled for
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400476# the cluster to work.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400477
478# Pod DNS policy.
479# For more information, see [Pod's DNS Policy](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy).
480# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400481# podDnsPolicy: "None"
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400482
483# Pod DNS configuration. The podDnsConfig field is optional and can work with any podDnsPolicy
484# settings. However, when a Pod's dnsPolicy is set to "None", the dnsConfig field has to be specified.
485# For more information, see [Pod's DNS Config](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config).
486# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400487# podDnsConfig:
488# nameservers:
489# - "1.1.1.1"
490# - "8.8.8.8"
491
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400492# Optional hostAliases for cert-manager-controller pods. May be useful when performing ACME DNS-01 self checks.
493hostAliases: []
494# - ip: 127.0.0.1
495# hostnames:
496# - foo.local
497# - bar.local
498# - ip: 10.1.2.3
499# hostnames:
500# - foo.remote
501# - bar.remote
502
503# The nodeSelector on Pods tells Kubernetes to schedule Pods on the nodes with
504# matching labels.
505# For more information, see [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).
506#
507# This default ensures that Pods are only scheduled to Linux nodes.
508# It prevents Pods being scheduled to Windows nodes in a mixed OS cluster.
509# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400510nodeSelector:
511 kubernetes.io/os: linux
512
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400513# Enables default network policies for cert-manager.
514# This provides a way for you to restrict network traffic
515# between cert-manager components and other pods.
516# For more information, see [Network Policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/)
517# NOTE: an incorrect networkPolicy will cause traffic to be dropped
518networkPolicy:
519 # Create network policies for cert-manager.
520 enabled: false
521
522 # Ingress rule for the cert-manager network policy.
523 # By default all pods are allowed access to:
524 # http-metrics and http-healthz ports
525 # +docs:property
526 ingress:
527 - ports:
528 - port: http-metrics
529 protocol: TCP
530 - port: http-healthz
531 protocol: TCP
532
533
534 # Egress rule for the cert-manager network policy. By default, it allows all
535 # outbound traffic to ports 80 and 443, as well as DNS ports.
536 # +docs:property
537 egress:
538 - ports:
539 - port: 80
540 protocol: TCP
541 - port: 443
542 protocol: TCP
543 - port: 53
544 protocol: TCP
545 - port: 53
546 protocol: UDP
547 # On OpenShift and OKD, the Kubernetes API server listens on.
548 # port 6443.
549 - port: 6443
550 protocol: TCP
551
552# +docs:ignore
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400553ingressShim: {}
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400554
555 # Optional default issuer to use for ingress resources.
556 # +docs:property=ingressShim.defaultIssuerName
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400557 # defaultIssuerName: ""
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400558
559 # Optional default issuer kind to use for ingress resources.
560 # +docs:property=ingressShim.defaultIssuerKind
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400561 # defaultIssuerKind: ""
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400562
563 # Optional default issuer group to use for ingress resources.
564 # +docs:property=ingressShim.defaultIssuerGroup
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400565 # defaultIssuerGroup: ""
566
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400567# Use these variables to configure the HTTP_PROXY environment variables.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400568
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400569# Configures the HTTP_PROXY environment variable where a HTTP proxy is required.
570# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400571# http_proxy: "http://proxy:8080"
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400572
573# Configures the HTTPS_PROXY environment variable where a HTTP proxy is required.
574# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400575# https_proxy: "https://proxy:8080"
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400576
577# Configures the NO_PROXY environment variable where a HTTP proxy is required,
578# but certain domains should be excluded.
579# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400580# no_proxy: 127.0.0.1,localhost
581
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400582# A Kubernetes Affinity, if required. For more information, see [Affinity v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#affinity-v1-core).
583#
584# For example:
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400585# affinity:
586# nodeAffinity:
587# requiredDuringSchedulingIgnoredDuringExecution:
588# nodeSelectorTerms:
589# - matchExpressions:
590# - key: foo.bar.com/role
591# operator: In
592# values:
593# - master
594affinity: {}
595
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400596# A Kubernetes Runtime Class to apply to ACME HTTP01 solver pods, if required. For more information, see [Runtime Class](https://kubernetes.io/docs/concepts/containers/).
597#
598# For example:
599# runtimeClassName: gvisor
600# +docs:property
601runtimeClassName: ""
602
603# A list of Kubernetes Tolerations, if required. For more information, see [Toleration v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#toleration-v1-core).
604#
605# For example:
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400606# tolerations:
607# - key: foo.bar.com/role
608# operator: Equal
609# value: master
610# effect: NoSchedule
611tolerations: []
612
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400613# A list of Kubernetes TopologySpreadConstraints, if required. For more information, see [Topology spread constraint v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#topologyspreadconstraint-v1-core
614#
615# For example:
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400616# topologySpreadConstraints:
617# - maxSkew: 2
618# topologyKey: topology.kubernetes.io/zone
619# whenUnsatisfiable: ScheduleAnyway
620# labelSelector:
621# matchLabels:
622# app.kubernetes.io/instance: cert-manager
623# app.kubernetes.io/component: controller
624topologySpreadConstraints: []
625
626# LivenessProbe settings for the controller container of the controller Pod.
627#
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400628# This is enabled by default, in order to enable the clock-skew liveness probe that
629# restarts the controller in case of a skew between the system clock and the monotonic clock.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400630# LivenessProbe durations and thresholds are based on those used for the Kubernetes
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400631# controller-manager. For more information see the following on the
632# [Kubernetes GitHub repository](https://github.com/kubernetes/kubernetes/blob/806b30170c61a38fedd54cc9ede4cd6275a1ad3b/cmd/kubeadm/app/util/staticpod/utils.go#L241-L245)
633# +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400634livenessProbe:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400635 enabled: true
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400636 initialDelaySeconds: 10
637 periodSeconds: 10
638 timeoutSeconds: 15
639 successThreshold: 1
640 failureThreshold: 8
641
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400642# enableServiceLinks indicates whether information about services should be
643# injected into the pod's environment variables, matching the syntax of Docker
644# links.
645enableServiceLinks: false
646
647# +docs:section=Prometheus
648
649prometheus:
650 # Enable Prometheus monitoring for the cert-manager controller and webhook.
651 # If you use the Prometheus Operator, set prometheus.podmonitor.enabled or
652 # prometheus.servicemonitor.enabled, to create a PodMonitor or a
653 # ServiceMonitor resource.
654 # Otherwise, 'prometheus.io' annotations are added to the cert-manager and
655 # cert-manager-webhook Deployments.
656 # Note that you cannot enable both PodMonitor and ServiceMonitor as they are
657 # mutually exclusive. Enabling both will result in an error.
658 enabled: true
659
660 servicemonitor:
661 # Create a ServiceMonitor to add cert-manager to Prometheus.
662 enabled: false
663
664 # The namespace that the service monitor should live in, defaults
665 # to the cert-manager namespace.
666 # +docs:property
667 # namespace: cert-manager
668
669 # Specifies the `prometheus` label on the created ServiceMonitor. This is
670 # used when different Prometheus instances have label selectors matching
671 # different ServiceMonitors.
672 prometheusInstance: default
673
674 # The interval to scrape metrics.
675 interval: 60s
676
677 # The timeout before a metrics scrape fails.
678 scrapeTimeout: 30s
679
680 # Additional labels to add to the ServiceMonitor.
681 labels: {}
682
683 # Additional annotations to add to the ServiceMonitor.
684 annotations: {}
685
686 # Keep labels from scraped data, overriding server-side labels.
687 honorLabels: false
688
689 # EndpointAdditionalProperties allows setting additional properties on the
690 # endpoint such as relabelings, metricRelabelings etc.
691 #
692 # For example:
693 # endpointAdditionalProperties:
694 # relabelings:
695 # - action: replace
696 # sourceLabels:
697 # - __meta_kubernetes_pod_node_name
698 # targetLabel: instance
699 #
700 # +docs:property
701 endpointAdditionalProperties: {}
702
703 # Note that you cannot enable both PodMonitor and ServiceMonitor as they are mutually exclusive. Enabling both will result in an error.
704 podmonitor:
705 # Create a PodMonitor to add cert-manager to Prometheus.
706 enabled: false
707
708 # The namespace that the pod monitor should live in, defaults
709 # to the cert-manager namespace.
710 # +docs:property
711 # namespace: cert-manager
712
713 # Specifies the `prometheus` label on the created PodMonitor. This is
714 # used when different Prometheus instances have label selectors matching
715 # different PodMonitors.
716 prometheusInstance: default
717
718 # The interval to scrape metrics.
719 interval: 60s
720
721 # The timeout before a metrics scrape fails.
722 scrapeTimeout: 30s
723
724 # Additional labels to add to the PodMonitor.
725 labels: {}
726
727 # Additional annotations to add to the PodMonitor.
728 annotations: {}
729
730 # Keep labels from scraped data, overriding server-side labels.
731 honorLabels: false
732
733 # EndpointAdditionalProperties allows setting additional properties on the
734 # endpoint such as relabelings, metricRelabelings etc.
735 #
736 # For example:
737 # endpointAdditionalProperties:
738 # relabelings:
739 # - action: replace
740 # sourceLabels:
741 # - __meta_kubernetes_pod_node_name
742 # targetLabel: instance
743 # # Configure the PodMonitor for TLS connections
744 # # See https://cert-manager.io/docs/devops-tips/prometheus-metrics/#tls
745 # scheme: https
746 # tlsConfig:
747 # serverName: cert-manager-metrics
748 # ca:
749 # secret:
750 # name: cert-manager-metrics-ca
751 # key: "tls.crt"
752 #
753 # +docs:property
754 endpointAdditionalProperties: {}
755
756# +docs:section=Webhook
757
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400758webhook:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400759 # Number of replicas of the cert-manager webhook to run.
760 #
761 # The default is 1, but in production set this to 2 or 3 to provide high
762 # availability.
763 #
764 # If `replicas > 1`, consider setting `webhook.podDisruptionBudget.enabled=true`.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400765 replicaCount: 1
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400766
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400767 # The number of seconds the API server should wait for the webhook to respond before treating the call as a failure.
768 # The value must be between 1 and 30 seconds. For more information, see
769 # [Validating webhook configuration v1](https://kubernetes.io/docs/reference/kubernetes-api/extend-resources/validating-webhook-configuration-v1/).
770 #
771 # The default is set to the maximum value of 30 seconds as
772 # users sometimes report that the connection between the K8S API server and
773 # the cert-manager webhook server times out.
774 # If *this* timeout is reached, the error message will be "context deadline exceeded",
775 # which doesn't help the user diagnose what phase of the HTTPS connection timed out.
776 # For example, it could be during DNS resolution, TCP connection, TLS
777 # negotiation, HTTP negotiation, or slow HTTP response from the webhook
778 # server.
779 # By setting this timeout to its maximum value the underlying timeout error
780 # message has more chance of being returned to the end user.
781 timeoutSeconds: 30
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400782
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400783 # This is used to configure options for the webhook pod.
784 # This allows setting options that would usually be provided using flags.
785 #
786 # If `apiVersion` and `kind` are unspecified they default to the current latest
787 # version (currently `webhook.config.cert-manager.io/v1alpha1`). You can pin
788 # the version by specifying the `apiVersion` yourself.
789 #
790 # For example:
791 # apiVersion: webhook.config.cert-manager.io/v1alpha1
792 # kind: WebhookConfiguration
793 # # The port that the webhook listens on for requests.
794 # # In GKE private clusters, by default Kubernetes apiservers are allowed to
795 # # talk to the cluster nodes only on 443 and 10250. Configuring
796 # # securePort: 10250 therefore will work out-of-the-box without needing to add firewall
797 # # rules or requiring NET_BIND_SERVICE capabilities to bind port numbers < 1000.
798 # # This should be uncommented and set as a default by the chart once
799 # # the apiVersion of WebhookConfiguration graduates beyond v1alpha1.
800 # securePort: 10250
801 # # Configure the metrics server for TLS
802 # # See https://cert-manager.io/docs/devops-tips/prometheus-metrics/#tls
803 # metricsTLSConfig:
804 # dynamic:
805 # secretNamespace: "cert-manager"
806 # secretName: "cert-manager-metrics-ca"
807 # dnsNames:
808 # - cert-manager-metrics
809 config: {}
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400810
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400811 # The update strategy for the cert-manager webhook deployment.
812 # For more information, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy)
813 #
814 # For example:
815 # strategy:
816 # type: RollingUpdate
817 # rollingUpdate:
818 # maxSurge: 0
819 # maxUnavailable: 1
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400820 strategy: {}
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400821
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400822 # Pod Security Context to be set on the webhook component Pod.
823 # For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
824 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400825 securityContext:
826 runAsNonRoot: true
827 seccompProfile:
828 type: RuntimeDefault
829
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400830 # Container Security Context to be set on the webhook component container.
831 # For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
832 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400833 containerSecurityContext:
834 allowPrivilegeEscalation: false
835 capabilities:
836 drop:
837 - ALL
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400838 readOnlyRootFilesystem: true
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400839
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400840 podDisruptionBudget:
841 # Enable or disable the PodDisruptionBudget resource.
842 #
843 # This prevents downtime during voluntary disruptions such as during a Node upgrade.
844 # For example, the PodDisruptionBudget will block `kubectl drain`
845 # if it is used on the Node where the only remaining cert-manager
846 # Pod is currently running.
847 enabled: false
848
849 # This property configures the minimum available pods for disruptions. Can either be set to
850 # an integer (e.g., 1) or a percentage value (e.g., 25%).
851 # It cannot be used if `maxUnavailable` is set.
852 # +docs:property
853 # +docs:type=unknown
854 # minAvailable: 1
855
856 # This property configures the maximum unavailable pods for disruptions. Can either be set to
857 # an integer (e.g., 1) or a percentage value (e.g., 25%).
858 # It cannot be used if `minAvailable` is set.
859 # +docs:property
860 # +docs:type=unknown
861 # maxUnavailable: 1
862
863 # This configures how to act with unhealthy pods during eviction
864 # Note that this requires Kubernetes 1.31 or `PDBUnhealthyPodEvictionPolicy` feature gate enabled for
865 # the cluster to work.
866 # +docs:property
867 # +docs:type=string
868 # unhealthyPodEvictionPolicy: AlwaysAllow
869
870 # Optional additional annotations to add to the webhook Deployment.
871 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400872 # deploymentAnnotations: {}
873
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400874 # Optional additional annotations to add to the webhook Pods.
875 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400876 # podAnnotations: {}
877
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400878 # Optional additional annotations to add to the webhook Service.
879 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400880 # serviceAnnotations: {}
881
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400882 # Optional additional annotations to add to the webhook MutatingWebhookConfiguration.
883 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400884 # mutatingWebhookConfigurationAnnotations: {}
885
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400886 # Optional additional annotations to add to the webhook ValidatingWebhookConfiguration.
887 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400888 # validatingWebhookConfigurationAnnotations: {}
889
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400890 validatingWebhookConfiguration:
891 # Configure spec.namespaceSelector for validating webhooks.
892 # +docs:property
893 namespaceSelector:
894 matchExpressions:
895 - key: "cert-manager.io/disable-validation"
896 operator: "NotIn"
897 values:
898 - "true"
899
900 mutatingWebhookConfiguration:
901 # Configure spec.namespaceSelector for mutating webhooks.
902 # +docs:property
903 namespaceSelector: {}
904 # matchLabels:
905 # key: value
906 # matchExpressions:
907 # - key: kubernetes.io/metadata.name
908 # operator: NotIn
909 # values:
910 # - kube-system
911
912
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400913 # Additional command line flags to pass to cert-manager webhook binary.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400914 # To see all available flags run `docker run quay.io/jetstack/cert-manager-webhook:<version> --help`.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400915 extraArgs: []
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400916 # Path to a file containing a WebhookConfiguration object used to configure the webhook.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400917 # - --config=<path-to-config-file>
918
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400919 # Additional environment variables to pass to cert-manager webhook binary.
920 # For example:
921 # extraEnv:
922 # - name: SOME_VAR
923 # value: 'some value'
924 extraEnv: []
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400925
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400926 # Comma separated list of feature gates that should be enabled on the
927 # webhook pod.
928 featureGates: ""
929
930 # Resources to provide to the cert-manager webhook pod.
931 #
932 # For example:
933 # requests:
934 # cpu: 10m
935 # memory: 32Mi
936 #
937 # For more information, see [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
938 resources: {}
939
940 # Liveness probe values.
941 # For more information, see [Container probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes).
942 #
943 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400944 livenessProbe:
945 failureThreshold: 3
946 initialDelaySeconds: 60
947 periodSeconds: 10
948 successThreshold: 1
949 timeoutSeconds: 1
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400950
951 # Readiness probe values.
952 # For more information, see [Container probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes).
953 #
954 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400955 readinessProbe:
956 failureThreshold: 3
957 initialDelaySeconds: 5
958 periodSeconds: 5
959 successThreshold: 1
960 timeoutSeconds: 1
961
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400962 # The nodeSelector on Pods tells Kubernetes to schedule Pods on the nodes with
963 # matching labels.
964 # For more information, see [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).
965 #
966 # This default ensures that Pods are only scheduled to Linux nodes.
967 # It prevents Pods being scheduled to Windows nodes in a mixed OS cluster.
968 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400969 nodeSelector:
970 kubernetes.io/os: linux
971
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400972 # A Kubernetes Affinity, if required. For more information, see [Affinity v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#affinity-v1-core).
973 #
974 # For example:
975 # affinity:
976 # nodeAffinity:
977 # requiredDuringSchedulingIgnoredDuringExecution:
978 # nodeSelectorTerms:
979 # - matchExpressions:
980 # - key: foo.bar.com/role
981 # operator: In
982 # values:
983 # - master
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +0400984 affinity: {}
985
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +0400986 # A Kubernetes Runtime Class to apply to ACME HTTP01 solver pods, if required. For more information, see [Runtime Class](https://kubernetes.io/docs/concepts/containers/).
987 #
988 # For example:
989 # runtimeClassName: gvisor
990 # +docs:property
991 runtimeClassName: ""
992
993 # A list of Kubernetes Tolerations, if required. For more information, see [Toleration v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#toleration-v1-core).
994 #
995 # For example:
996 # tolerations:
997 # - key: foo.bar.com/role
998 # operator: Equal
999 # value: master
1000 # effect: NoSchedule
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001001 tolerations: []
1002
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001003 # A list of Kubernetes TopologySpreadConstraints, if required. For more information, see [Topology spread constraint v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#topologyspreadconstraint-v1-core).
1004 #
1005 # For example:
1006 # topologySpreadConstraints:
1007 # - maxSkew: 2
1008 # topologyKey: topology.kubernetes.io/zone
1009 # whenUnsatisfiable: ScheduleAnyway
1010 # labelSelector:
1011 # matchLabels:
1012 # app.kubernetes.io/instance: cert-manager
1013 # app.kubernetes.io/component: controller
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001014 topologySpreadConstraints: []
1015
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001016 # Optional additional labels to add to the Webhook Pods.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001017 podLabels: {}
1018
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001019 # Optional additional labels to add to the Webhook Service.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001020 serviceLabels: {}
1021
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001022 # Optionally set the IP family policy for the controller Service to configure dual-stack; see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services).
1023 serviceIPFamilyPolicy: ""
1024
1025 # Optionally set the IP families for the controller Service that should be supported, in the order in which they should be applied to ClusterIP. Can be IPv4 and/or IPv6.
1026 serviceIPFamilies: []
1027
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001028 image:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001029 # Deprecated: per-component registry prefix.
1030 #
1031 # If set, this value is *prepended* to the image repository that the chart would otherwise render.
1032 # This applies both when `webhook.image.repository` is set and when the repository is computed from
1033 # `imageRegistry` + `imageNamespace` + `webhook.image.name`.
1034 #
1035 # This can produce "double registry" style references such as `legacy.example.io/quay.io/jetstack/...`.
1036 # Prefer using the global `imageRegistry`/`imageNamespace` values.
1037 # +docs:property
1038 # registry: ""
1039
1040 # The image name for the cert-manager webhook.
1041 # +docs:property
1042 name: cert-manager-webhook
1043
1044 # Full repository override (takes precedence over `imageRegistry`, `imageNamespace`, and `webhook.image.name`).
1045 # +docs:property
1046 repository: ""
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001047
1048 # Override the image tag to deploy by setting this variable.
1049 # If no value is set, the chart's appVersion will be used.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001050 # +docs:property
1051 # tag: vX.Y.Z
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001052
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001053 # Setting a digest pins the image. If a tag is also set, the rendered reference will include
1054 # both ("image:tag@digest"), though only the digest will be used for pulling.
1055 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001056 # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20
1057
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001058 # Kubernetes imagePullPolicy on Deployment.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001059 pullPolicy: IfNotPresent
1060
1061 serviceAccount:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001062 # Specifies whether a service account should be created.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001063 create: true
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001064
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001065 # The name of the service account to use.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001066 # If not set and create is true, a name is generated using the fullname template.
1067 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001068 # name: ""
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001069
1070 # Optional additional annotations to add to the webhook's Service Account.
1071 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001072 # annotations: {}
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001073
1074 # Optional additional labels to add to the webhook's Service Account.
1075 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001076 # labels: {}
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001077
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001078 # Automount API credentials for a Service Account.
1079 automountServiceAccountToken: true
1080
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001081 # Automounting API credentials for a particular pod.
1082 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001083 # automountServiceAccountToken: true
1084
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001085 # The port that the webhook listens on for requests.
1086 # In GKE private clusters, by default Kubernetes apiservers are allowed to
1087 # talk to the cluster nodes only on 443 and 10250. Configuring
1088 # securePort: 10250, therefore will work out-of-the-box without needing to add firewall
1089 # rules or requiring NET_BIND_SERVICE capabilities to bind port numbers <1000.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001090 securePort: 10250
1091
1092 # Specifies if the webhook should be started in hostNetwork mode.
1093 #
1094 # Required for use in some managed kubernetes clusters (such as AWS EKS) with custom
1095 # CNI (such as calico), because control-plane managed by AWS cannot communicate
1096 # with pods' IP CIDR and admission webhooks are not working
1097 #
1098 # Since the default port for the webhook conflicts with kubelet on the host
1099 # network, `webhook.securePort` should be changed to an available port if
1100 # running in hostNetwork mode.
1101 hostNetwork: false
1102
1103 # Specifies how the service should be handled. Useful if you want to expose the
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001104 # webhook outside of the cluster. In some cases, the control plane cannot
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001105 # reach internal services.
1106 serviceType: ClusterIP
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001107
1108 # Specify the load balancer IP for the created service.
1109 # +docs:property
1110 # loadBalancerIP: "10.10.10.10"
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001111
1112 # Overrides the mutating webhook and validating webhook so they reach the webhook
1113 # service using the `url` field instead of a service.
1114 url: {}
1115 # host:
1116
1117 # Enables default network policies for webhooks.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001118 # This provides a way for you to restrict network traffic
1119 # between cert-manager components and other pods.
1120 # For more information, see [Network Policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/)
1121 # NOTE: an incorrect networkPolicy will cause traffic to be dropped
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001122 networkPolicy:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001123 # Create network policies for the webhooks.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001124 enabled: false
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001125
1126 # Ingress rule for the webhook network policy.
1127 # By default all pods are allowed access to:
1128 # https, http-metrics, and http-healthz ports
1129 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001130 ingress:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001131 - ports:
1132 - port: https
1133 protocol: TCP
1134 - port: healthcheck
1135 protocol: TCP
1136 - port: http-metrics
1137 protocol: TCP
1138
1139 # Egress rule for the webhook network policy. By default, it allows all
1140 # outbound traffic to ports 80 and 443, as well as DNS ports.
1141 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001142 egress:
1143 - ports:
1144 - port: 80
1145 protocol: TCP
1146 - port: 443
1147 protocol: TCP
1148 - port: 53
1149 protocol: TCP
1150 - port: 53
1151 protocol: UDP
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001152 # On OpenShift and OKD, the Kubernetes API server listens on.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001153 # port 6443.
1154 - port: 6443
1155 protocol: TCP
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001156
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001157 # Additional volumes to add to the cert-manager controller pod.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001158 volumes: []
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001159
1160 # Additional volume mounts to add to the cert-manager controller container.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001161 volumeMounts: []
1162
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001163 # enableServiceLinks indicates whether information about services should be
1164 # injected into the pod's environment variables, matching the syntax of Docker
1165 # links.
1166 enableServiceLinks: false
1167
1168 # enableClientVerification turns on client verification of requests
1169 # made to the webhook server
1170 enableClientVerification: false
1171 # the client CA file to be used for verification
1172 clientCAFile: ""
1173 # Subject names to verify for the client certificate.
1174 # Multiple values may be supplied as a comma-separated list.
1175 apiserverClientCertSubjects: ""
1176
1177# +docs:section=CA Injector
1178
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001179cainjector:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001180 # Create the CA Injector deployment
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001181 enabled: true
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001182
1183 # The number of replicas of the cert-manager cainjector to run.
1184 #
1185 # The default is 1, but in production set this to 2 or 3 to provide high
1186 # availability.
1187 #
1188 # If `replicas > 1`, consider setting `cainjector.podDisruptionBudget.enabled=true`.
1189 #
1190 # Note that cert-manager uses leader election to ensure that there can
1191 # only be a single instance active at a time.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001192 replicaCount: 1
1193
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001194 # This is used to configure options for the cainjector pod.
1195 # It allows setting options that are usually provided via flags.
1196 #
1197 # If `apiVersion` and `kind` are unspecified they default to the current latest
1198 # version (currently `cainjector.config.cert-manager.io/v1alpha1`). You can pin
1199 # the version by specifying the `apiVersion` yourself.
1200 #
1201 # For example:
1202 # apiVersion: cainjector.config.cert-manager.io/v1alpha1
1203 # kind: CAInjectorConfiguration
1204 # logging:
1205 # verbosity: 2
1206 # format: text
1207 # leaderElectionConfig:
1208 # namespace: kube-system
1209 # # Configure the metrics server for TLS
1210 # # See https://cert-manager.io/docs/devops-tips/prometheus-metrics/#tls
1211 # metricsTLSConfig:
1212 # dynamic:
1213 # secretNamespace: "cert-manager"
1214 # secretName: "cert-manager-metrics-ca"
1215 # dnsNames:
1216 # - cert-manager-metrics
1217 config: {}
1218
1219 # Deployment update strategy for the cert-manager cainjector deployment.
1220 # For more information, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy).
1221 #
1222 # For example:
1223 # strategy:
1224 # type: RollingUpdate
1225 # rollingUpdate:
1226 # maxSurge: 0
1227 # maxUnavailable: 1
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001228 strategy: {}
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001229
1230 # Pod Security Context to be set on the cainjector component Pod
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001231 # For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
1232 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001233 securityContext:
1234 runAsNonRoot: true
1235 seccompProfile:
1236 type: RuntimeDefault
1237
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001238 # Container Security Context to be set on the cainjector component container
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001239 # For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
1240 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001241 containerSecurityContext:
1242 allowPrivilegeEscalation: false
1243 capabilities:
1244 drop:
1245 - ALL
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001246 readOnlyRootFilesystem: true
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001247
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001248 # Enables default network policies for cainjector.
1249 # This provides a way for you to restrict network traffic
1250 # between cert-manager components and other pods.
1251 # For more information, see [Network Policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/)
1252 # NOTE: an incorrect networkPolicy will cause traffic to be dropped
1253 networkPolicy:
1254 # Create network policies for the cainjector.
1255 enabled: false
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001256
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001257 # Ingress rule for the webhook cainjector policy.
1258 # By default all pods are allowed access to:
1259 # http-metrics port
1260 # +docs:property
1261 ingress:
1262 - ports:
1263 - port: http-metrics
1264 protocol: TCP
1265
1266 # Egress rule for the cainjector network policy. By default, it allows all
1267 # outbound traffic to ports 80 and 443, as well as DNS ports.
1268 # +docs:property
1269 egress:
1270 - ports:
1271 - port: 80
1272 protocol: TCP
1273 - port: 443
1274 protocol: TCP
1275 - port: 53
1276 protocol: TCP
1277 - port: 53
1278 protocol: UDP
1279 # On OpenShift and OKD, the Kubernetes API server listens on.
1280 # port 6443.
1281 - port: 6443
1282 protocol: TCP
1283
1284 podDisruptionBudget:
1285 # Enable or disable the PodDisruptionBudget resource.
1286 #
1287 # This prevents downtime during voluntary disruptions such as during a Node upgrade.
1288 # For example, the PodDisruptionBudget will block `kubectl drain`
1289 # if it is used on the Node where the only remaining cert-manager
1290 # Pod is currently running.
1291 enabled: false
1292
1293 # `minAvailable` configures the minimum available pods for disruptions. It can either be set to
1294 # an integer (e.g., 1) or a percentage value (e.g., 25%).
1295 # Cannot be used if `maxUnavailable` is set.
1296 # +docs:property
1297 # +docs:type=unknown
1298 # minAvailable: 1
1299
1300 # `maxUnavailable` configures the maximum unavailable pods for disruptions. It can either be set to
1301 # an integer (e.g., 1) or a percentage value (e.g., 25%).
1302 # Cannot be used if `minAvailable` is set.
1303 # +docs:property
1304 # +docs:type=unknown
1305 # maxUnavailable: 1
1306
1307 # This configures how to act with unhealthy pods during eviction
1308 # Note that this requires Kubernetes 1.31 or `PDBUnhealthyPodEvictionPolicy` feature gate enabled for
1309 # the cluster to work.
1310 # +docs:property
1311 # +docs:type=string
1312 # unhealthyPodEvictionPolicy: AlwaysAllow
1313
1314 # Optional additional annotations to add to the cainjector Deployment.
1315 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001316 # deploymentAnnotations: {}
1317
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001318 # Optional additional annotations to add to the cainjector Pods.
1319 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001320 # podAnnotations: {}
1321
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001322 # Optional additional annotations to add to the cainjector metrics Service.
1323 # +docs:property
1324 # serviceAnnotations: {}
1325
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001326 # Additional command line flags to pass to cert-manager cainjector binary.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001327 # To see all available flags run `docker run quay.io/jetstack/cert-manager-cainjector:<version> --help`.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001328 extraArgs: []
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001329 # Enable profiling for cainjector.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001330 # - --enable-profiling=true
1331
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001332 # Additional environment variables to pass to cert-manager cainjector binary.
1333 # For example:
1334 # extraEnv:
1335 # - name: SOME_VAR
1336 # value: 'some value'
1337 extraEnv: []
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001338
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001339 # Comma separated list of feature gates that should be enabled on the
1340 # cainjector pod.
1341 featureGates: ""
1342
1343 # Resources to provide to the cert-manager cainjector pod.
1344 #
1345 # For example:
1346 # requests:
1347 # cpu: 10m
1348 # memory: 32Mi
1349 #
1350 # For more information, see [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
1351 resources: {}
1352
1353
1354 # The nodeSelector on Pods tells Kubernetes to schedule Pods on the nodes with
1355 # matching labels.
1356 # For more information, see [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).
1357 #
1358 # This default ensures that Pods are only scheduled to Linux nodes.
1359 # It prevents Pods being scheduled to Windows nodes in a mixed OS cluster.
1360 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001361 nodeSelector:
1362 kubernetes.io/os: linux
1363
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001364 # A Kubernetes Affinity, if required. For more information, see [Affinity v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#affinity-v1-core).
1365 #
1366 # For example:
1367 # affinity:
1368 # nodeAffinity:
1369 # requiredDuringSchedulingIgnoredDuringExecution:
1370 # nodeSelectorTerms:
1371 # - matchExpressions:
1372 # - key: foo.bar.com/role
1373 # operator: In
1374 # values:
1375 # - master
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001376 affinity: {}
1377
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001378 # A Kubernetes Runtime Class to apply to ACME HTTP01 solver pods, if required. For more information, see [Runtime Class](https://kubernetes.io/docs/concepts/containers/).
1379 #
1380 # For example:
1381 # runtimeClassName: gvisor
1382 # +docs:property
1383 runtimeClassName: ""
1384
1385 # A list of Kubernetes Tolerations, if required. For more information, see [Toleration v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#toleration-v1-core).
1386 #
1387 # For example:
1388 # tolerations:
1389 # - key: foo.bar.com/role
1390 # operator: Equal
1391 # value: master
1392 # effect: NoSchedule
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001393 tolerations: []
1394
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001395 # A list of Kubernetes TopologySpreadConstraints, if required. For more information, see [Topology spread constraint v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#topologyspreadconstraint-v1-core).
1396 #
1397 # For example:
1398 # topologySpreadConstraints:
1399 # - maxSkew: 2
1400 # topologyKey: topology.kubernetes.io/zone
1401 # whenUnsatisfiable: ScheduleAnyway
1402 # labelSelector:
1403 # matchLabels:
1404 # app.kubernetes.io/instance: cert-manager
1405 # app.kubernetes.io/component: controller
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001406 topologySpreadConstraints: []
1407
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001408 # Optional additional labels to add to the CA Injector Pods.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001409 podLabels: {}
1410
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001411 # Optional additional labels to add to the CA Injector metrics Service.
1412 serviceLabels: {}
1413
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001414 image:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001415 # Deprecated: per-component registry prefix.
1416 #
1417 # If set, this value is *prepended* to the image repository that the chart would otherwise render.
1418 # This applies both when `cainjector.image.repository` is set and when the repository is computed from
1419 # `imageRegistry` + `imageNamespace` + `cainjector.image.name`.
1420 #
1421 # This can produce "double registry" style references such as `legacy.example.io/quay.io/jetstack/...`.
1422 # Prefer using the global `imageRegistry`/`imageNamespace` values.
1423 # +docs:property
1424 # registry: ""
1425
1426 # The image name for the cert-manager cainjector.
1427 # +docs:property
1428 name: cert-manager-cainjector
1429
1430 # Full repository override (takes precedence over `imageRegistry`, `imageNamespace`, and `cainjector.image.name`).
1431 # +docs:property
1432 repository: ""
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001433
1434 # Override the image tag to deploy by setting this variable.
1435 # If no value is set, the chart's appVersion will be used.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001436 # +docs:property
1437 # tag: vX.Y.Z
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001438
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001439 # Setting a digest pins the image. If a tag is also set, the rendered reference will include
1440 # both ("image:tag@digest"), though only the digest will be used for pulling.
1441 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001442 # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20
1443
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001444 # Kubernetes imagePullPolicy on Deployment.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001445 pullPolicy: IfNotPresent
1446
1447 serviceAccount:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001448 # Specifies whether a service account should be created.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001449 create: true
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001450
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001451 # The name of the service account to use.
1452 # If not set and create is true, a name is generated using the fullname template
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001453 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001454 # name: ""
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001455
1456 # Optional additional annotations to add to the cainjector's Service Account.
1457 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001458 # annotations: {}
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001459
1460 # Optional additional labels to add to the cainjector's Service Account.
1461 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001462 # labels: {}
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001463
1464 # Automount API credentials for a Service Account.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001465 automountServiceAccountToken: true
1466
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001467 # Automounting API credentials for a particular pod.
1468 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001469 # automountServiceAccountToken: true
1470
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001471 # Additional volumes to add to the cert-manager controller pod.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001472 volumes: []
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001473
1474 # Additional volume mounts to add to the cert-manager controller container.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001475 volumeMounts: []
1476
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001477 # enableServiceLinks indicates whether information about services should be
1478 # injected into the pod's environment variables, matching the syntax of Docker
1479 # links.
1480 enableServiceLinks: false
1481
1482# +docs:section=ACME Solver
1483
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001484acmesolver:
1485 image:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001486 # Deprecated: per-component registry prefix.
1487 #
1488 # If set, this value is *prepended* to the image repository that the chart would otherwise render.
1489 # This applies both when `acmesolver.image.repository` is set and when the repository is computed from
1490 # `imageRegistry` + `imageNamespace` + `acmesolver.image.name`.
1491 #
1492 # This can produce "double registry" style references such as `legacy.example.io/quay.io/jetstack/...`.
1493 # Prefer using the global `imageRegistry`/`imageNamespace` values.
1494 # +docs:property
1495 # registry: ""
1496
1497 # The image name for the cert-manager acmesolver.
1498 # +docs:property
1499 name: cert-manager-acmesolver
1500
1501 # Full repository override (takes precedence over `imageRegistry`, `imageNamespace`, and `acmesolver.image.name`).
1502 # +docs:property
1503 repository: ""
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001504
1505 # Override the image tag to deploy by setting this variable.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001506 # If no value is set, the chart's appVersion is used.
1507 # +docs:property
1508 # tag: vX.Y.Z
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001509
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001510 # Setting a digest pins the image. If a tag is also set, the rendered reference will include
1511 # both ("image:tag@digest"), though only the digest will be used for pulling.
1512 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001513 # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20
1514
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001515 # Kubernetes imagePullPolicy on Deployment.
1516 pullPolicy: IfNotPresent
1517
1518 # A Kubernetes Runtime Class to apply to ACME HTTP01 solver pods, if required. For more information, see [Runtime Class](https://kubernetes.io/docs/concepts/containers/).
1519 #
1520 # For example:
1521 # runtimeClassName: gvisor
1522 # +docs:property
1523 runtimeClassName: ""
1524
1525# +docs:section=Startup API Check
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001526# This startupapicheck is a Helm post-install hook that waits for the webhook
1527# endpoints to become available.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001528# The check is implemented using a Kubernetes Job - if you are injecting mesh
1529# sidecar proxies into cert-manager pods, ensure that they
1530# are not injected into this Job's pod. Otherwise, the installation may time out
1531# owing to the Job never being completed because the sidecar proxy does not exit.
1532# For more information, see [this note](https://github.com/cert-manager/cert-manager/pull/4414).
1533
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001534startupapicheck:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001535 # Enables the startup api check.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001536 enabled: true
1537
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001538 # Pod Security Context to be set on the startupapicheck component Pod.
1539 # For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
1540 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001541 securityContext:
1542 runAsNonRoot: true
1543 seccompProfile:
1544 type: RuntimeDefault
1545
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001546 # Container Security Context to be set on the controller component container.
1547 # For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
1548 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001549 containerSecurityContext:
1550 allowPrivilegeEscalation: false
1551 capabilities:
1552 drop:
1553 - ALL
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001554 readOnlyRootFilesystem: true
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001555
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001556 # Timeout for 'kubectl check api' command.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001557 timeout: 1m
1558
1559 # Job backoffLimit
1560 backoffLimit: 4
1561
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001562 # Limits the lifetime of a Job that has finished execution (either Complete
1563 # or Failed). If this field is set, once the Job finishes, it will be
1564 # automatically cleaned up after ttlSecondsAfterFinished seconds. This is
1565 # disabled by default (field is not set) to preserve backward compatibility
1566 # and avoid issues with GitOps tools (e.g. Argo CD) that may attempt to
1567 # reconcile or recreate Jobs after they are automatically deleted.
1568 # For more information, see [Automatic Cleanup for Finished Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/ttlafterfinished/).
1569 # +docs:property
1570 # +docs:type=integer
1571 # ttlSecondsAfterFinished:
1572
1573 # Optional additional annotations to add to the startupapicheck Job.
1574 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001575 jobAnnotations:
1576 helm.sh/hook: post-install
1577 helm.sh/hook-weight: "1"
1578 helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
1579
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001580 # Optional additional annotations to add to the startupapicheck Pods.
1581 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001582 # podAnnotations: {}
1583
1584 # Additional command line flags to pass to startupapicheck binary.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001585 # To see all available flags run `docker run quay.io/jetstack/cert-manager-startupapicheck:<version> --help`.
1586 #
1587 # Verbose logging is enabled by default so that if startupapicheck fails, you
1588 # can know what exactly caused the failure. Verbose logs include details of
1589 # the webhook URL, IP address and TCP connect errors for example.
1590 # +docs:property
1591 extraArgs:
1592 - -v
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001593
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001594 # Additional environment variables to pass to cert-manager startupapicheck binary.
1595 # For example:
1596 # extraEnv:
1597 # - name: SOME_VAR
1598 # value: 'some value'
1599 extraEnv: []
1600
1601 # Resources to provide to the cert-manager startupapicheck pod.
1602 #
1603 # For example:
1604 # requests:
1605 # cpu: 10m
1606 # memory: 32Mi
1607 #
1608 # For more information, see [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001609 resources: {}
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001610
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001611
1612 # The nodeSelector on Pods tells Kubernetes to schedule Pods on the nodes with
1613 # matching labels.
1614 # For more information, see [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).
1615 #
1616 # This default ensures that Pods are only scheduled to Linux nodes.
1617 # It prevents Pods being scheduled to Windows nodes in a mixed OS cluster.
1618 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001619 nodeSelector:
1620 kubernetes.io/os: linux
1621
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001622 # A Kubernetes Affinity, if required. For more information, see [Affinity v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#affinity-v1-core).
1623 # For example:
1624 # affinity:
1625 # nodeAffinity:
1626 # requiredDuringSchedulingIgnoredDuringExecution:
1627 # nodeSelectorTerms:
1628 # - matchExpressions:
1629 # - key: foo.bar.com/role
1630 # operator: In
1631 # values:
1632 # - master
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001633 affinity: {}
1634
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001635 # A Kubernetes Runtime Class to apply to ACME HTTP01 solver pods, if required. For more information, see [Runtime Class](https://kubernetes.io/docs/concepts/containers/).
1636 #
1637 # For example:
1638 # runtimeClassName: gvisor
1639 # +docs:property
1640 runtimeClassName: ""
1641
1642 # A list of Kubernetes Tolerations, if required. For more information, see [Toleration v1 core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#toleration-v1-core).
1643 #
1644 # For example:
1645 # tolerations:
1646 # - key: foo.bar.com/role
1647 # operator: Equal
1648 # value: master
1649 # effect: NoSchedule
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001650 tolerations: []
1651
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001652 # Optional additional labels to add to the startupapicheck Pods.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001653 podLabels: {}
1654
1655 image:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001656 # Deprecated: per-component registry prefix.
1657 #
1658 # If set, this value is *prepended* to the image repository that the chart would otherwise render.
1659 # This applies both when `startupapicheck.image.repository` is set and when the repository is computed from
1660 # `imageRegistry` + `imageNamespace` + `startupapicheck.image.name`.
1661 #
1662 # This can produce "double registry" style references such as `legacy.example.io/quay.io/jetstack/...`.
1663 # Prefer using the global `imageRegistry`/`imageNamespace` values.
1664 # +docs:property
1665 # registry: ""
1666
1667 # The image name for the cert-manager startupapicheck.
1668 # +docs:property
1669 name: cert-manager-startupapicheck
1670
1671 # Full repository override (takes precedence over `imageRegistry`, `imageNamespace`, and `startupapicheck.image.name`).
1672 # +docs:property
1673 repository: ""
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001674
1675 # Override the image tag to deploy by setting this variable.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001676 # If no value is set, the chart's appVersion is used.
1677 # +docs:property
1678 # tag: vX.Y.Z
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001679
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001680 # Setting a digest pins the image. If a tag is also set, the rendered reference will include
1681 # both ("image:tag@digest"), though only the digest will be used for pulling.
1682 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001683 # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20
1684
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001685 # Kubernetes imagePullPolicy on Deployment.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001686 pullPolicy: IfNotPresent
1687
1688 rbac:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001689 # annotations for the startup API Check job RBAC and PSP resources.
1690 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001691 annotations:
1692 helm.sh/hook: post-install
1693 helm.sh/hook-weight: "-5"
1694 helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
1695
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001696 # Automounting API credentials for a particular pod.
1697 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001698 # automountServiceAccountToken: true
1699
1700 serviceAccount:
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001701 # Specifies whether a service account should be created.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001702 create: true
1703
1704 # The name of the service account to use.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001705 # If not set and create is true, a name is generated using the fullname template.
1706 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001707 # name: ""
1708
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001709 # Optional additional annotations to add to the Job's Service Account.
1710 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001711 annotations:
1712 helm.sh/hook: post-install
1713 helm.sh/hook-weight: "-5"
1714 helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
1715
1716 # Automount API credentials for a Service Account.
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001717 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001718 automountServiceAccountToken: true
1719
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001720 # Optional additional labels to add to the startupapicheck's Service Account.
1721 # +docs:property
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001722 # labels: {}
1723
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001724 # Additional volumes to add to the cert-manager controller pod.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001725 volumes: []
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001726
1727 # Additional volume mounts to add to the cert-manager controller container.
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001728 volumeMounts: []
Giorgi Lekveishviliea328da2026-07-29 12:15:15 +04001729
1730 # enableServiceLinks indicates whether information about services should be
1731 # injected into pod's environment variables, matching the syntax of Docker
1732 # links.
1733 enableServiceLinks: false
1734
1735# Create dynamic manifests via values.
1736#
1737# For example:
1738# extraObjects:
1739# - |
1740# apiVersion: v1
1741# kind: ConfigMap
1742# metadata:
1743# name: '{{ template "cert-manager.fullname" . }}-extra-configmap'
1744extraObjects: []
1745
1746# Field used by our release pipeline to produce the static manifests.
1747# The field defaults to "helm" but is set to "static" when we render
1748# the static YAML manifests.
1749# +docs:hidden
1750creator: "helm"
1751
1752# Field that can be used as a condition when cert-manager is a dependency.
1753# This definition is only here as a placeholder such that it is included in
1754# the json schema.
1755# See https://helm.sh/docs/chart_best_practices/dependencies/#conditions-and-tags
1756# for more info.
1757# +docs:hidden
1758enabled: true