4 topologySpreadConstraints: []
6 # topologyKey: topology.kubernetes.io/zone
7 # whenUnsatisfiable: ScheduleAnyway
11 # topologyKey: kubernetes.io/hostname
12 # whenUnsatisfiable: DoNotSchedule
16 # -- Global hostAliases to be applied to all deployments
18 # -- Global pod labels to be applied to all deployments
20 # -- Global pod annotations to be applied to all deployments
22 # -- Global imagePullSecrets to be applied to all deployments
24 # -- Global image repository to be applied to all deployments
28 # -- Manages the securityContext properties to make them compatible with OpenShift.
30 # auto - Apply configurations if it is detected that OpenShift is the target platform.
31 # force - Always apply configurations.
32 # disabled - No modification applied.
33 adaptSecurityContext: auto
38# -- Specifies the amount of historic ReplicaSets k8s should keep (see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy)
39revisionHistoryLimit: 10
41 repository: cgr.dev/chainguard-private/external-secrets
42 pullPolicy: IfNotPresent
43 # -- The image tag to use. The default is the chart appVersion.
44 tag: latest@sha256:d2c9181872c4cf603887deeb24ffd9e24e8faa21ed3d62b86073790395bb59e5
45 # -- The flavour of tag you want to use
46 # There are different image flavours available, like distroless and ubi.
47 # Please see GitHub release notes for image tags for these flavors.
48 # By default, the distroless image is used.
50# -- If set, install and upgrade CRDs through helm chart.
53 # -- If true, create CRDs for Cluster External Secret. If set to false you must also set processClusterExternalSecret: false.
54 createClusterExternalSecret: true
55 # -- If true, create CRDs for Cluster Secret Store. If set to false you must also set processClusterStore: false.
56 createClusterSecretStore: true
57 # -- If true, create CRDs for Secret Store. If set to false you must also set processSecretStore: false.
58 createSecretStore: true
59 # -- If true, create CRDs for Cluster Generator. If set to false you must also set processClusterGenerator: false.
60 createClusterGenerator: true
61 # -- If true, create CRDs for Cluster Push Secret. If set to false you must also set processClusterPushSecret: false.
62 createClusterPushSecret: true
63 # -- If true, create CRDs for Push Secret. If set to false you must also set processPushSecret: false.
64 createPushSecret: true
67 # -- Conversion is disabled by default as we stopped supporting v1alpha1.
69 # -- If true, enable v1beta1 API version serving for ExternalSecret, ClusterExternalSecret, SecretStore, and ClusterSecretStore CRDs.
70 # v1beta1 is deprecated. Only enable this for backward compatibility if you have existing v1beta1 resources.
71 # Warning: This flag will be removed on 2026.05.01.
72 unsafeServeV1Beta1: false
77# -- Additional labels added to all helm chart resources.
79# -- If true, external-secrets will perform leader election between instances to ensure no more
80# than one instance of external-secrets operates at a time.
82# -- ID of the lease object used for leader election.
83# Leave empty to use the default ('external-secrets-controller').
84# Set to a unique value when running multiple independent ESO deployments in the same namespace.
85# @default -- "external-secrets-controller"
87# -- If set external secrets will filter matching
88# Secret Stores with the appropriate controller values.
90# -- If true external secrets will use recommended kubernetes
91# annotations as prometheus metric labels.
92extendedMetricLabels: false
93# -- If set external secrets are only reconciled in the
96# -- Must be used with scopedNamespace. If true, create scoped RBAC roles under the scoped namespace
97# and implicitly disable cluster stores and cluster external secrets
99# -- If true the OpenShift finalizer permissions will be added to RBAC
100openshiftFinalizers: true
101# -- If true the system:auth-delegator ClusterRole will be added to RBAC
102systemAuthDelegator: false
103# -- if true, the operator will process cluster external secret. Else, it will ignore them.
104# When enabled, this adds update/patch permissions on namespaces to handle finalizers for proper
105# cleanup during namespace deletion, preventing race conditions with ExternalSecrets.
106processClusterExternalSecret: true
107# -- if true, the operator will process cluster push secret. Else, it will ignore them.
108processClusterPushSecret: true
109# -- if true, the operator will process cluster store. Else, it will ignore them.
110processClusterStore: true
111# -- if true, the operator will process secret store. Else, it will ignore them.
112processSecretStore: true
113# -- if true, the operator will process cluster generator. Else, it will ignore them.
114processClusterGenerator: true
115# -- if true, the operator will process push secret. Else, it will ignore them.
116processPushSecret: true
117# -- Enable support for generic targets (ConfigMaps, Custom Resources).
118# Warning: Using generic target. Make sure access policies and encryption are properly configured.
119# When enabled, this grants the controller permissions to create/update/delete
120# ConfigMaps and optionally other resource types specified in generic.resources.
122 # -- Enable generic target support
124 # -- List of additional resource types to grant permissions for.
125 # Each entry should specify apiGroup, resources, and verbs.
128 # - apiGroup: "argoproj.io"
129 # resources: ["applications"]
130 # verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
132# -- Specifies whether an external secret operator deployment be created.
134# -- if true, HTTP2 will be enabled for the services created by all controllers, curently metrics and webhook.
136# -- Vault token cache configuration
138 # -- Enable Vault token cache. External secrets will reuse the Vault token without creating a new one on each request.
139 enableTokenCache: false
140 # -- Maximum size of Vault token cache. Only used if enableTokenCache is true.
141 tokenCacheSize: 262144
142# -- Specifies the number of concurrent ExternalSecret Reconciles external-secret executes at
145# -- Specifies Log Params to the External Secrets Operator
150 # -- Set the ip family policy to configure dual-stack see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services)
152 # -- Sets the families that should be supported and the order in which they should be applied to ClusterIP as well. Can be IPv4 and/or IPv6.
155 # -- Specifies whether a service account should be created.
157 # -- Automounts the service account token in all containers of the pod
159 # -- Annotations to add to the service account.
161 # -- Extra Labels to add to the service account.
163 # -- The name of the service account to use.
164 # If not set and create is true, a name is generated using the fullname template.
167 # -- Specifies whether role and rolebinding resources should be created.
170 # -- Specifies whether a clusterrole to give servicebindings read access should be created.
172 # -- Specifies whether permissions are aggregated to the view ClusterRole
173 aggregateToView: true
174 # -- Specifies whether permissions are aggregated to the edit ClusterRole
175 aggregateToEdit: true
176## -- Extra environment variables to add to container.
178## -- Map of extra arguments to pass to container.
180## -- Extra volumes to pass to pod.
182## -- Extra Kubernetes objects to deploy with the helm chart
184## -- Extra volumes to mount to the container.
186## -- Extra init containers to add to the pod.
187extraInitContainers: []
188## -- Extra containers to add to the pod.
190# -- Annotations to add to Deployment
191deploymentAnnotations: {}
192# -- Set deployment strategy
194# -- Annotations to add to Pod
201 allowPrivilegeEscalation: false
206 readOnlyRootFilesystem: true
217 # -- Specifies whether to create a ServiceMonitor resource for collecting Prometheus metrics
219 # -- How should we react to missing CRD "`monitoring.coreos.com/v1/ServiceMonitor`"
222 # - `skipIfMissing`: Only render ServiceMonitor resources if CRD is present, skip if missing.
223 # - `failIfMissing`: Fail Helm install if CRD is not present.
224 # - `alwaysRender` : Always render ServiceMonitor resources, do not check for CRD.
232 renderMode: skipIfMissing # @schema enum: [skipIfMissing, failIfMissing, alwaysRender]
233 # -- namespace where you want to install ServiceMonitors
235 # -- Additional labels
237 # -- Interval to scrape metrics
239 # -- Timeout if metrics can't be retrieved in given time interval
241 # -- Let prometheus add an exported_ prefix to conflicting labels
243 # -- Metric relabel configs to apply to samples before ingestion. [Metric Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs)
244 metricRelabelings: []
249 # - exported_namespace
250 # targetLabel: namespace
252 # -- Relabel configs to apply to samples before ingestion. [Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config)
254 # - sourceLabels: [__meta_kubernetes_pod_node_name]
257 # targetLabel: nodename
265 # -- if those are not set or invalid, self-signed certs will be generated
266 # -- TLS cert directory path
268 # -- TLS cert file path
269 certFile: /etc/tls/tls.crt
270 # -- TLS key file path
271 keyFile: /etc/tls/tls.key
273 # -- Enable if you use another monitoring tool than Prometheus to scrape the metrics
275 # -- Metrics service port to scrape
277 # -- Additional service annotations
280 # -- If true creates a Grafana dashboard.
282 # -- Label that ConfigMaps should have to be loaded as dashboards.
283 sidecarLabel: "grafana_dashboard"
284 # -- Label value that ConfigMaps should have to be loaded as dashboards.
285 sidecarLabelValue: "1"
286 # -- Annotations that ConfigMaps can have to get configured in Grafana,
287 # See: sidecar.dashboards.folderAnnotation for specifying the dashboard folder.
288 # https://github.com/grafana/helm-charts/tree/main/charts/grafana
290 # -- Extra labels to add to the Grafana dashboard ConfigMap.
293 # -- Enabled determines if the liveness probe should be used or not. By default it's disabled.
295 # -- The body of the liveness probe settings.
297 # -- Bind address for the health server used by both liveness and readiness probes (--live-addr flag).
299 # -- Port for the health server used by both liveness and readiness probes (--live-addr flag).
301 # -- Specify the maximum amount of time to wait for a probe to respond before considering it fails.
303 # -- Number of consecutive probe failures that should occur before considering the probe as failed.
305 # -- Period in seconds for K8s to start performing probes.
307 # -- Number of successful probes to mark probe successful.
309 # -- Delay in seconds for the container to start before performing the initial probe.
310 initialDelaySeconds: 10
311 # -- Handler for liveness probe.
313 # -- Set this value to 'live' (for named port) or an an integer for liveness probes.
314 # @schema type: [string, integer]
316 # -- Path for liveness probe.
319 # -- Determines whether the readiness probe is enabled. Disabled by default. Enabling this will auto-start the health server (--live-addr) even if livenessProbe is disabled. Health server address/port are configured via livenessProbe.spec.address and livenessProbe.spec.port.
321 # -- The body of the readiness probe settings (standard Kubernetes probe spec).
323 # -- Specify the maximum amount of time to wait for a probe to respond before considering it fails.
325 # -- Number of consecutive probe failures that should occur before considering the probe as failed.
327 # -- Period in seconds for K8s to start performing probes.
329 # -- Number of successful probes to mark probe successful.
331 # -- Delay in seconds for the container to start before performing the initial probe.
332 initialDelaySeconds: 10
333 # -- Handler for readiness probe.
335 # -- Set this value to 'live' (for named port) or an integer for readiness probes.
336 # @schema type: [string, integer]
338 # -- Path for readiness probe.
342topologySpreadConstraints: []
344# -- Pod priority class name.
346# -- Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
349 minAvailable: 1 # @schema type:[integer, string]
351 # maxUnavailable: "50%"
352# -- Run the controller on the host network
354# -- (bool) Specifies if controller pod should use hostUsers or not. If hostNetwork is true, hostUsers should be too. Only available in Kubernetes ≥ 1.33.
355# @schema type: [boolean, null]
358 # -- Annotations to place on validating webhook configuration.
360 # -- Specifies whether a webhook deployment be created. If set to false, crds.conversion.enabled should also be set to false otherwise the kubeapi will be hammered because the conversion is looking for a webhook endpoint.
362 # -- Specifies the time to check if the cert is valid
363 certCheckInterval: "5m"
364 # -- Specifies the lookaheadInterval for certificate validity
365 lookaheadInterval: ""
367 # -- Specifies Log Params to the Webhook
371 # -- Specifies the amount of historic ReplicaSets k8s should keep (see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy)
372 revisionHistoryLimit: 10
374 # -- Specifies whether validating webhooks should be created with failurePolicy: Fail or Ignore
376 # -- Specifies if webhook pod should use hostNetwork or not.
378 # -- (bool) Specifies if webhook pod should use hostUsers or not. If hostNetwork is true, hostUsers should be too. Only available in Kubernetes ≥ 1.33.
379 # @schema type: [boolean, null]
382 repository: cgr.dev/chainguard-private/external-secrets
383 pullPolicy: IfNotPresent
384 # -- The image tag to use. The default is the chart appVersion.
385 tag: latest@sha256:d2c9181872c4cf603887deeb24ffd9e24e8faa21ed3d62b86073790395bb59e5
386 # -- The flavour of tag you want to use
389 # -- The port the webhook will listen to
392 # -- Specifies whether a service account should be created.
394 # -- Automounts the service account token in all containers of the pod
396 # -- Annotations to add to the service account.
398 # -- Extra Labels to add to the service account.
400 # -- The name of the service account to use.
401 # If not set and create is true, a name is generated using the fullname template.
404 # -- Specifies `hostAliases` to webhook deployment
407 # -- Enabling cert-manager support will disable the built in secret and
408 # switch to using cert-manager (installed separately) to automatically issue
409 # and renew the webhook certificate. This chart does not install
410 # cert-manager for you, See https://cert-manager.io/docs/
412 # -- Automatically add the cert-manager.io/inject-ca-from annotation to the
413 # webhooks and CRDs. As long as you have the cert-manager CA Injector
414 # enabled, this will automatically setup your webhook's CA to the one used
415 # by cert-manager. See https://cert-manager.io/docs/concepts/ca-injector
416 addInjectorAnnotations: true
418 # -- Create a certificate resource within this chart. See
419 # https://cert-manager.io/docs/usage/certificate/
421 # -- For the Certificate created by this chart, setup the issuer. See
422 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.IssuerSpec
424 group: cert-manager.io
427 # -- Set the requested duration (i.e. lifetime) of the Certificate. See
428 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
429 # One year by default.
430 duration: "8760h0m0s"
431 # -- Set the revisionHistoryLimit on the Certificate. See
432 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
433 # Defaults to 0 (ignored).
434 revisionHistoryLimit: 0
435 # -- How long before the currently issued certificate’s expiry
436 # cert-manager should renew the certificate. See
437 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
438 # Note that renewBefore should be greater than .webhook.lookaheadInterval
439 # since the webhook will check this far in advance that the certificate is
442 # -- Specific settings on the privateKey and its generation
444 # rotationPolicy: Always
447 # -- Specific settings on the signatureAlgorithm used on the cert.
448 # signatureAlgorithm is only valid for cert-manager v1.18.0+
449 signatureAlgorithm: ""
450 # -- Add extra annotations to the Certificate resource.
453 topologySpreadConstraints: []
455 # -- Set deployment strategy
457 # -- Pod priority class name.
458 priorityClassName: ""
459 # -- Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
462 minAvailable: 1 # @schema type:[integer, string]
464 # maxUnavailable: "50%"
469 # -- Enable if you use another monitoring tool than Prometheus to scrape the metrics
471 # -- Metrics service port to scrape
473 # -- Additional service annotations
477 # -- Set this value to 'live' (for named port) or an integer for liveness probes.
478 # @schema type: [string, integer]
484 initialDelaySeconds: 10
488 # -- Set this value to 'ready' (for named port) or an integer for readiness probes.
489 # @schema type: [string, integer]
495 initialDelaySeconds: 20
496 ## -- Extra environment variables to add to container.
498 ## -- Map of extra arguments to pass to container.
500 ## -- Extra init containers to add to the pod.
501 extraInitContainers: []
502 ## -- Extra volumes to pass to pod.
504 ## -- Extra volumes to mount to the container.
505 extraVolumeMounts: []
506 # -- Annotations to add to Secret
507 secretAnnotations: {}
508 # -- Annotations to add to Deployment
509 deploymentAnnotations: {}
510 # -- Annotations to add to Pod
517 allowPrivilegeEscalation: false
522 readOnlyRootFilesystem: true
532 # -- Manage the service through which the webhook is reached.
534 # -- Whether the service object should be enabled or not (it is expected to exist).
536 # -- Custom annotations for the webhook service.
538 # -- Custom labels for the webhook service.
540 # -- The service type of the webhook service.
542 # -- If the webhook service type is LoadBalancer, you can assign a specific load balancer IP here.
543 # Check the documentation of your load balancer provider to see if/how this should be used.
546 # -- Specifies whether a certificate controller deployment be created.
548 requeueInterval: "5m"
550 # -- Specifies Log Params to the Certificate Controller
554 # -- Specifies the amount of historic ReplicaSets k8s should keep (see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy)
555 revisionHistoryLimit: 10
557 repository: cgr.dev/chainguard-private/external-secrets
558 pullPolicy: IfNotPresent
559 tag: latest@sha256:d2c9181872c4cf603887deeb24ffd9e24e8faa21ed3d62b86073790395bb59e5
563 # -- Specifies whether role and rolebinding resources should be created.
566 # -- Specifies whether a service account should be created.
568 # -- Automounts the service account token in all containers of the pod
570 # -- Annotations to add to the service account.
572 # -- Extra Labels to add to the service account.
574 # -- The name of the service account to use.
575 # If not set and create is true, a name is generated using the fullname template.
578 # -- Specifies `hostAliases` to cert-controller deployment
581 topologySpreadConstraints: []
583 # -- Set deployment strategy
585 # -- Run the certController on the host network
587 # -- (bool) Specifies if certController pod should use hostUsers or not. If hostNetwork is true, hostUsers should be too. Only available in Kubernetes ≥ 1.33.
588 # @schema type: [boolean, null]
590 # -- Pod priority class name.
591 priorityClassName: ""
592 # -- Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
595 minAvailable: 1 # @schema type:[integer, string]
597 # maxUnavailable: "50%"
602 # -- Enable if you use another monitoring tool than Prometheus to scrape the metrics
604 # -- Metrics service port to scrape
606 # -- Additional service annotations
610 # -- Set this value to 'live' (for named port) or an integer for liveness probes.
611 # @schema type: [string, integer]
617 initialDelaySeconds: 10
621 # -- Set this value to 'ready' (for named port) or an integer for readiness probes.
622 # @schema type: [string, integer]
628 initialDelaySeconds: 20
630 # -- Enabled determines if the startup probe should be used or not. By default it's enabled
632 # -- whether to use the readiness probe port for startup probe.
633 useReadinessProbePort: true
634 # -- Port for startup probe.
636 ## -- Extra environment variables to add to container.
638 ## -- Map of extra arguments to pass to container.
640 ## -- Extra init containers to add to the pod.
641 extraInitContainers: []
642 ## -- Extra volumes to pass to pod.
644 ## -- Extra volumes to mount to the container.
645 extraVolumeMounts: []
646 # -- Annotations to add to Deployment
647 deploymentAnnotations: {}
648 # -- Annotations to add to Pod
655 allowPrivilegeEscalation: false
660 readOnlyRootFilesystem: true
669# -- Specifies `dnsPolicy` to deployment
670dnsPolicy: ClusterFirst
671# -- Specifies `dnsOptions` to deployment
673# -- Specifies `hostAliases` to deployment
675# -- Any extra pod spec on the deployment