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-fips
42 pullPolicy: IfNotPresent
43 # -- The image tag to use. The default is the chart appVersion.
44 tag: latest@sha256:16d3a0d5e8cd540c76cac404d2af9ae03df1976cc2949e54d42aa25ffc11bf62
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# -- Duration that non-leader candidates will wait to force acquire leadership.
88# Increase this along with renewDeadline to tolerate a busy or briefly unavailable API server
89# (for example during control plane maintenance) without churning leadership.
90# Leave empty to use the controller default ('15s').
92leaderElectionLeaseDuration: ""
93# -- Duration that the acting leader will retry refreshing leadership before giving up.
94# Must be less than leaderElectionLeaseDuration.
95# Leave empty to use the controller default ('10s').
97leaderElectionRenewDeadline: ""
98# -- Duration the leader election client waits between tries of actions.
99# Leave empty to use the controller default ('2s').
101leaderElectionRetryPeriod: ""
102# -- If set external secrets will filter matching
103# Secret Stores with the appropriate controller values.
105# -- If true external secrets will use recommended kubernetes
106# annotations as prometheus metric labels.
107extendedMetricLabels: false
108# -- If set external secrets are only reconciled in the
111# -- If true, create scoped RBAC roles and implicitly disable cluster-scoped
112# controllers. Scoped to scopedNamespace if set, otherwise to .Release.Namespace.
114# -- If true the OpenShift finalizer permissions will be added to RBAC
115openshiftFinalizers: true
116# -- If true the system:auth-delegator ClusterRole will be added to RBAC
117systemAuthDelegator: false
118# -- if true, the operator will process cluster external secret. Else, it will ignore them.
119# When enabled, this adds update/patch permissions on namespaces to handle finalizers for proper
120# cleanup during namespace deletion, preventing race conditions with ExternalSecrets.
121processClusterExternalSecret: true
122# -- if true, the operator will process cluster push secret. Else, it will ignore them.
123processClusterPushSecret: true
124# -- if true, the operator will process cluster store. Else, it will ignore them.
125processClusterStore: true
126# -- if true, the operator will process secret store. Else, it will ignore them.
127processSecretStore: true
128# -- Default time duration between reconciling (Cluster)SecretStores.
129storeRequeueInterval: ""
130# -- if true, the operator will process cluster generator. Else, it will ignore them.
131processClusterGenerator: true
132# -- if true, the operator will process push secret. Else, it will ignore them.
133processPushSecret: true
134# -- Enable support for generic targets (ConfigMaps, Custom Resources).
135# Warning: Using generic target. Make sure access policies and encryption are properly configured.
136# When enabled, this grants the controller permissions to create/update/delete
137# ConfigMaps and optionally other resource types specified in generic.resources.
139 # -- Enable generic target support
141 # -- List of additional resource types to grant permissions for.
142 # Each entry should specify apiGroup, resources, and verbs.
145 # - apiGroup: "argoproj.io"
146 # resources: ["applications"]
147 # verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
149# -- Specifies whether an external secret operator deployment be created.
151# -- if true, HTTP2 will be enabled for the services created by all controllers, curently metrics and webhook.
153# -- Vault token cache configuration
155 # -- Enable Vault token cache. External secrets will reuse the Vault token without creating a new one on each request.
156 enableTokenCache: false
157 # -- Maximum size of Vault token cache. Only used if enableTokenCache is true.
158 tokenCacheSize: 262144
159# -- Specifies the number of concurrent ExternalSecret Reconciles external-secret executes at
162# -- Specifies Log Params to the External Secrets Operator
167 # -- Set the ip family policy to configure dual-stack see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services)
169 # -- 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.
172 # -- Specifies whether a service account should be created.
174 # -- Automounts the service account token in all containers of the pod
176 # -- Annotations to add to the service account.
178 # -- Extra Labels to add to the service account.
180 # -- The name of the service account to use.
181 # If not set and create is true, a name is generated using the fullname template.
184 # -- Specifies whether role and rolebinding resources should be created.
186 # -- Specifies whether the serviceaccounts/token create permission is included in the controller RBAC.
187 # When set to false, users must create per-ServiceAccount Role/RoleBinding with resourceNames constraint
188 # to grant ESO token creation for specific ServiceAccounts referenced in SecretStore specs.
189 serviceAccountTokenCreate: true
191 # -- Specifies whether a clusterrole to give servicebindings read access should be created.
193 # -- Specifies whether permissions are aggregated to the view ClusterRole
194 aggregateToView: true
195 # -- Specifies whether permissions are aggregated to the edit ClusterRole
196 aggregateToEdit: true
197 # -- Specifies whether permissions are aggregated to the admin ClusterRole
198 aggregateToAdmin: true
199## -- Extra environment variables to add to container.
201## -- Map of extra arguments to pass to container.
203## -- Extra volumes to pass to pod.
205## -- Extra Kubernetes objects to deploy with the helm chart
207## -- Extra volumes to mount to the container.
209## -- Extra init containers to add to the pod.
210extraInitContainers: []
211## -- Extra containers to add to the pod.
213# -- Annotations to add to Deployment
214deploymentAnnotations: {}
215# -- Set deployment strategy
217# -- Annotations to add to Pod
224 allowPrivilegeEscalation: false
229 readOnlyRootFilesystem: true
240 # -- Specifies whether to create a ServiceMonitor resource for collecting Prometheus metrics
242 # -- How should we react to missing CRD "`monitoring.coreos.com/v1/ServiceMonitor`"
245 # - `skipIfMissing`: Only render ServiceMonitor resources if CRD is present, skip if missing.
246 # - `failIfMissing`: Fail Helm install if CRD is not present.
247 # - `alwaysRender` : Always render ServiceMonitor resources, do not check for CRD.
255 renderMode: skipIfMissing # @schema enum: [skipIfMissing, failIfMissing, alwaysRender]
256 # -- namespace where you want to install ServiceMonitors
258 # -- Additional labels
260 # -- Interval to scrape metrics
262 # -- Timeout if metrics can't be retrieved in given time interval
264 # -- Let prometheus add an exported_ prefix to conflicting labels
266 # -- Metric relabel configs to apply to samples before ingestion. [Metric Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs)
267 metricRelabelings: []
272 # - exported_namespace
273 # targetLabel: namespace
275 # -- Relabel configs to apply to samples before ingestion. [Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config)
277 # - sourceLabels: [__meta_kubernetes_pod_node_name]
280 # targetLabel: nodename
287 # -- Enable Kubernetes RBAC-based authentication for metrics endpoint. Requires metrics.listen.secure to be true. Default value is false.
291 # -- if those are not set or invalid, self-signed certs will be generated
292 # -- TLS cert directory path
294 # -- TLS cert file path
295 certFile: /etc/tls/tls.crt
296 # -- TLS key file path
297 keyFile: /etc/tls/tls.key
299 # -- Enable if you use another monitoring tool than Prometheus to scrape the metrics
301 # -- Metrics service port to scrape
303 # -- Additional service annotations
306 # -- If true creates a Grafana dashboard.
308 # -- Label that ConfigMaps should have to be loaded as dashboards.
309 sidecarLabel: "grafana_dashboard"
310 # -- Label value that ConfigMaps should have to be loaded as dashboards.
311 sidecarLabelValue: "1"
312 # -- Annotations that ConfigMaps can have to get configured in Grafana,
313 # See: sidecar.dashboards.folderAnnotation for specifying the dashboard folder.
314 # https://github.com/grafana/helm-charts/tree/main/charts/grafana
316 # -- Extra labels to add to the Grafana dashboard ConfigMap.
319 # -- Enabled determines if the liveness probe should be used or not. By default it's disabled.
321 # -- The body of the liveness probe settings.
323 # -- Bind address for the health server used by both liveness and readiness probes (--live-addr flag).
325 # -- Port for the health server used by both liveness and readiness probes (--live-addr flag).
327 # -- Specify the maximum amount of time to wait for a probe to respond before considering it fails.
329 # -- Number of consecutive probe failures that should occur before considering the probe as failed.
331 # -- Period in seconds for K8s to start performing probes.
333 # -- Number of successful probes to mark probe successful.
335 # -- Delay in seconds for the container to start before performing the initial probe.
336 initialDelaySeconds: 10
337 # -- Handler for liveness probe.
339 # -- Set this value to 'live' (for named port) or an an integer for liveness probes.
340 # @schema type: [string, integer]
342 # -- Path for liveness probe.
345 # -- 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.
347 # -- The body of the readiness probe settings (standard Kubernetes probe spec).
349 # -- Specify the maximum amount of time to wait for a probe to respond before considering it fails.
351 # -- Number of consecutive probe failures that should occur before considering the probe as failed.
353 # -- Period in seconds for K8s to start performing probes.
355 # -- Number of successful probes to mark probe successful.
357 # -- Delay in seconds for the container to start before performing the initial probe.
358 initialDelaySeconds: 10
359 # -- Handler for readiness probe.
361 # -- Set this value to 'live' (for named port) or an integer for readiness probes.
362 # @schema type: [string, integer]
364 # -- Path for readiness probe.
368topologySpreadConstraints: []
370# -- Pod priority class name.
372# -- Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
375 minAvailable: 1 # @schema type:[integer, string]
377 # maxUnavailable: "50%"
378# -- Run the controller on the host network
380# -- (bool) Specifies if controller pod should use hostUsers or not. If hostNetwork is true, hostUsers should be too. Only available in Kubernetes ≥ 1.33.
381# @schema type: [boolean, null]
383# -- Setup a networkPolicy for external-secrets
385 # -- Specifies whether the networkPolicy should be created.
387 # -- The ingress traffic
388 # Should match the health and (optionally) metrics port
392 # @schema type: [string, integer]
393 port: 8080 # metrics port
395 # @schema type: [string, integer]
396 port: 8082 # health port
397 # -- The egress traffic
398 # The minimum egress ports required to function are:
399 # DNS (53/udp, 53/tcp)
400 # API server (80/tcp, 443/tcp, or 6443/tcp)
401 # You will need to customize this value to meet your needs
404 # -- Annotations to place on validating webhook configuration.
406 # -- 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.
408 # -- Specifies the time to check if the cert is valid
409 certCheckInterval: "5m"
410 # -- Specifies the lookaheadInterval for certificate validity
411 lookaheadInterval: ""
413 # -- Specifies Log Params to the Webhook
417 # -- Specifies the amount of historic ReplicaSets k8s should keep (see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy)
418 revisionHistoryLimit: 10
420 # -- Specifies whether validating webhooks should be created with failurePolicy: Fail or Ignore
422 # -- Specifies if webhook pod should use hostNetwork or not.
424 # -- (bool) Specifies if webhook pod should use hostUsers or not. If hostNetwork is true, hostUsers should be too. Only available in Kubernetes ≥ 1.33.
425 # @schema type: [boolean, null]
427 # -- Setup a networkPolicy for external-secrets webhook
429 # -- Specifies whether the networkPolicy should be created.
431 # -- The ingress traffic
432 # Should match the webhook, health, and (optionally) metrics port
436 # @schema type: [string, integer]
437 port: 8080 # metrics port
439 # @schema type: [string, integer]
440 port: 8081 # health port
442 # @schema type: [string, integer]
443 port: 10250 # webhook port
444 # -- The egress traffic
445 # The minimum egress ports required to function are:
446 # DNS (53/udp, 53/tcp)
447 # API server (80/tcp, 443/tcp, or 6443/tcp)
448 # You will need to customize this value to meet your needs
451 repository: cgr.dev/chainguard-private/external-secrets-fips
452 pullPolicy: IfNotPresent
453 # -- The image tag to use. The default is the chart appVersion.
454 tag: latest@sha256:16d3a0d5e8cd540c76cac404d2af9ae03df1976cc2949e54d42aa25ffc11bf62
455 # -- The flavour of tag you want to use
458 # -- The port the webhook will listen to
461 # -- Specifies whether a service account should be created.
463 # -- Automounts the service account token in all containers of the pod
465 # -- Annotations to add to the service account.
467 # -- Extra Labels to add to the service account.
469 # -- The name of the service account to use.
470 # If not set and create is true, a name is generated using the fullname template.
473 # -- Specifies `hostAliases` to webhook deployment
476 # -- Enabling cert-manager support will disable the built in secret and
477 # switch to using cert-manager (installed separately) to automatically issue
478 # and renew the webhook certificate. This chart does not install
479 # cert-manager for you, See https://cert-manager.io/docs/
481 # -- Automatically add the cert-manager.io/inject-ca-from annotation to the
482 # webhooks and CRDs. As long as you have the cert-manager CA Injector
483 # enabled, this will automatically setup your webhook's CA to the one used
484 # by cert-manager. See https://cert-manager.io/docs/concepts/ca-injector
485 addInjectorAnnotations: true
487 # -- Create a certificate resource within this chart. See
488 # https://cert-manager.io/docs/usage/certificate/
490 # -- For the Certificate created by this chart, setup the issuer. See
491 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.IssuerSpec
493 group: cert-manager.io
496 # -- Set the requested duration (i.e. lifetime) of the Certificate. See
497 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
498 # One year by default.
499 duration: "8760h0m0s"
500 # -- Set the revisionHistoryLimit on the Certificate. See
501 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
502 # Defaults to 0 (ignored).
503 revisionHistoryLimit: 0
504 # -- How long before the currently issued certificate’s expiry
505 # cert-manager should renew the certificate. See
506 # https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
507 # Note that renewBefore should be greater than .webhook.lookaheadInterval
508 # since the webhook will check this far in advance that the certificate is
511 # -- Specific settings on the privateKey and its generation
513 # rotationPolicy: Always
516 # -- Specific settings on the signatureAlgorithm used on the cert.
517 # signatureAlgorithm is only valid for cert-manager v1.18.0+
518 signatureAlgorithm: ""
519 # -- Add extra annotations to the Certificate resource.
522 topologySpreadConstraints: []
524 # -- Set deployment strategy
526 # -- Pod priority class name.
527 priorityClassName: ""
528 # -- Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
531 minAvailable: 1 # @schema type:[integer, string]
533 # maxUnavailable: "50%"
538 # -- Enable Kubernetes RBAC-based authentication for webhook's metrics endpoint. Requires webhook.metrics.listen.secure to be true. Default value is false.
542 # -- if those are not set or invalid, self-signed certs will be generated
543 # -- TLS cert directory path
545 # -- TLS cert file path
546 certFile: /etc/tls/tls.crt
547 # -- TLS key file path
548 keyFile: /etc/tls/tls.key
550 # -- Enable if you use another monitoring tool than Prometheus to scrape the metrics
552 # -- Metrics service port to scrape
554 # -- Additional service annotations
558 # -- Set this value to 'live' (for named port) or an integer for liveness probes.
559 # @schema type: [string, integer]
565 initialDelaySeconds: 10
569 # -- Set this value to 'ready' (for named port) or an integer for readiness probes.
570 # @schema type: [string, integer]
576 initialDelaySeconds: 20
578 # -- Enabled determines if the startup probe should be used or not. By default it's disabled.
580 # -- Number of seconds after the container has started before the startup probe is initiated.
581 initialDelaySeconds: 10
582 # -- How often (in seconds) to perform the startup probe.
584 # -- Number of consecutive failures before the container is restarted. The startup window is initialDelaySeconds + failureThreshold * periodSeconds.
586 ## -- Extra environment variables to add to container.
588 ## -- Map of extra arguments to pass to container.
590 ## -- Extra init containers to add to the pod.
591 extraInitContainers: []
592 ## -- Extra volumes to pass to pod.
594 ## -- Extra volumes to mount to the container.
595 extraVolumeMounts: []
596 # -- Annotations to add to Secret
597 secretAnnotations: {}
598 # -- Annotations to add to Deployment
599 deploymentAnnotations: {}
600 # -- Annotations to add to Pod
607 allowPrivilegeEscalation: false
612 readOnlyRootFilesystem: true
622 # -- Manage the service through which the webhook is reached.
624 # -- Whether the service object should be enabled or not (it is expected to exist).
626 # -- Custom annotations for the webhook service.
628 # -- Custom labels for the webhook service.
630 # -- The service type of the webhook service.
632 # -- If the webhook service type is LoadBalancer, you can assign a specific load balancer IP here.
633 # Check the documentation of your load balancer provider to see if/how this should be used.
636 # -- Specifies whether a certificate controller deployment be created.
638 requeueInterval: "5m"
640 # -- Specifies Log Params to the Certificate Controller
644 # -- Specifies the amount of historic ReplicaSets k8s should keep (see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy)
645 revisionHistoryLimit: 10
647 repository: cgr.dev/chainguard-private/external-secrets-fips
648 pullPolicy: IfNotPresent
649 tag: latest@sha256:16d3a0d5e8cd540c76cac404d2af9ae03df1976cc2949e54d42aa25ffc11bf62
653 # -- Specifies whether role and rolebinding resources should be created.
656 # -- Specifies whether a service account should be created.
658 # -- Automounts the service account token in all containers of the pod
660 # -- Annotations to add to the service account.
662 # -- Extra Labels to add to the service account.
664 # -- The name of the service account to use.
665 # If not set and create is true, a name is generated using the fullname template.
668 # -- Specifies `hostAliases` to cert-controller deployment
671 topologySpreadConstraints: []
673 # -- Set deployment strategy
675 # -- Run the certController on the host network
677 # -- (bool) Specifies if certController pod should use hostUsers or not. If hostNetwork is true, hostUsers should be too. Only available in Kubernetes ≥ 1.33.
678 # @schema type: [boolean, null]
680 # -- Setup a networkPolicy for external-secrets certController
682 # -- Specifies whether the networkPolicy should be created.
684 # -- The ingress traffic
685 # Should match the health and (optionally) metrics port
689 # @schema type: [string, integer]
690 port: 8080 # metrics port
692 # @schema type: [string, integer]
693 port: 8081 # health port
694 # -- The egress traffic
695 # The minimum egress ports required to function are:
696 # DNS (53/udp, 53/tcp)
697 # API server (80/tcp, 443/tcp, or 6443/tcp)
698 # You will need to customize this value to meet your needs
700 # -- Pod priority class name.
701 priorityClassName: ""
702 # -- Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
705 minAvailable: 1 # @schema type:[integer, string]
707 # maxUnavailable: "50%"
712 # -- Enable Kubernetes RBAC-based authentication for certController's metrics endpoint. Requires certController.metrics.listen.secure to be true. Default value is false.
716 # -- if those are not set or invalid, self-signed certs will be generated
717 # -- TLS cert directory path
719 # -- TLS cert file path
720 certFile: /etc/tls/tls.crt
721 # -- TLS key file path
722 keyFile: /etc/tls/tls.key
724 # -- Enable if you use another monitoring tool than Prometheus to scrape the metrics
726 # -- Metrics service port to scrape
728 # -- Additional service annotations
732 # -- Set this value to 'live' (for named port) or an integer for liveness probes.
733 # @schema type: [string, integer]
739 initialDelaySeconds: 10
743 # -- Set this value to 'ready' (for named port) or an integer for readiness probes.
744 # @schema type: [string, integer]
750 initialDelaySeconds: 20
752 # -- Enabled determines if the startup probe should be used or not. By default it's disabled.
754 # -- Number of seconds after the container has started before the startup probe is initiated.
755 initialDelaySeconds: 10
756 # -- How often (in seconds) to perform the startup probe.
758 # -- Number of consecutive failures before the container is restarted. The startup window is initialDelaySeconds + failureThreshold * periodSeconds.
760 ## -- Extra environment variables to add to container.
762 ## -- Map of extra arguments to pass to container.
764 ## -- Extra init containers to add to the pod.
765 extraInitContainers: []
766 ## -- Extra volumes to pass to pod.
768 ## -- Extra volumes to mount to the container.
769 extraVolumeMounts: []
770 # -- Annotations to add to Deployment
771 deploymentAnnotations: {}
772 # -- Annotations to add to Pod
779 allowPrivilegeEscalation: false
784 readOnlyRootFilesystem: true
793# -- Specifies `dnsPolicy` to deployment
794dnsPolicy: ClusterFirst
795# -- Specifies `dnsOptions` to deployment
797# -- Specifies `hostAliases` to deployment
799# -- Any extra pod spec on the deployment