1# This file has been modified by Chainguard, Inc.
3# Copyright Chainguard, Inc. All Rights Reserved.
4# Chainguard, Inc. modifications are subject to the license
5# available at: https://www.chainguard.dev/legal/software-license-agreement
7# Copyright Broadcom, Inc. All Rights Reserved.
8# SPDX-License-Identifier: APACHE-2.0
10## @section Global parameters
11## Global Docker image parameters
12## Please, note that this will override the image parameters, including dependencies, configured to use the global value
13## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
16## @param global.imageRegistry Global Docker image registry
17## @param global.imagePullSecrets [array] Global Docker registry secret names as an array
23 ## - myRegistryKeySecretName
26 ## Security parameters
29 ## @param global.security.allowInsecureImages Allows skipping image verification
30 allowInsecureImages: false
31 ## Compatibility adaptations for Kubernetes platforms
34 ## Compatibility adaptations for Openshift
37 ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)
39 adaptSecurityContext: auto
41## @section Common parameters
44## @param kubeVersion Override Kubernetes version
47## @param nameOverride String to partially override common.names.fullname
50## @param fullnameOverride String to fully override common.names.fullname
53## @param namespaceOverride String to fully override common.names.namespace
56## @param commonLabels [object] Labels to add to all deployed objects
59## @param commonAnnotations [object] Annotations to add to all deployed objects
62## @param clusterDomain Kubernetes cluster domain name
64clusterDomain: cluster.local
65## @param extraDeploy [array] Array of extra objects to deploy with the release
68## @section Sealed Secrets Parameters
71## Iamguarded Sealed Secrets image
72## @param image.registry [default: REGISTRY_NAME] Sealed Secrets image registry
73## @param image.repository [default: REPOSITORY_NAME/sealed-secrets] Sealed Secrets image repository
74## @skip image.tag Sealed Secrets image tag (immutable tags are recommended)
75## @param image.digest Sealed Secrets image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
76## @param image.pullPolicy Sealed Secrets image pull policy
77## @param image.pullSecrets [array] Sealed Secrets image pull secrets
78## @param image.debug Enable Sealed Secrets image debug mode
81 registry: chainreg.biz
82 repository: chainguard-private/sealed-secrets-controller-iamguarded
85 ## Specify a imagePullPolicy
86 ## ref: http://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
88 pullPolicy: IfNotPresent
89 ## Optionally specify an array of imagePullSecrets.
90 ## Secrets must be manually created in the namespace.
91 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
94 ## - myRegistryKeySecretName
100## @param command [array] Override default container command (useful when using custom images)
103## @param commandArgs [array] Additional args (doesn't override the default ones)
106## @param args [array] Override default container args (useful when using custom images)
109## @param revisionHistoryLimit Number of old history to retain to allow rollback (If not set, default Kubernetes value is set to 10)
111revisionHistoryLimit: ""
112## @param createController Specifies whether the Sealed Secrets controller should be created
114createController: true
115## @param secretName The name of an existing TLS secret containing the key used to encrypt secrets
118## @param updateStatus Specifies whether the Sealed Secrets controller should update the status subresource
121## @param skipRecreate Specifies whether the Sealed Secrets controller should skip recreating removed secrets
122## Setting it to true allows to optionally restore backward compatibility in low priviledge
123## environments when old versions of the controller did not require watch permissions on secrets
124## for secret re-creation.
127## @param keyRenewPeriod Specifies key renewal period. Default 30 days. e.g keyRenewPeriod: "720h30m"
130## @param rateLimit Number of allowed sustained request per second for verify endpoint
133## @param rateLimitBurst Number of requests allowed to exceed the rate limit per second for verify endpoint
136## @param additionalNamespaces List of namespaces used to manage the Sealed Secrets
138additionalNamespaces: []
139## @param privateKeyAnnotations Map of annotations to be set on the sealing keypairs
141privateKeyAnnotations: {}
142## @param privateKeyLabels Map of labels to be set on the sealing keypairs
145## @param logInfoStdout Specifies whether the Sealed Secrets controller will log info to stdout
148## @param containerPorts.http Controller HTTP container port to open
149## @param containerPorts.metrics Controller metrics container port
154## Sealed Secret resource requests and limits
155## ref: http://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
156## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
158resourcesPreset: "nano"
159## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
170## Configure extra options for Sealed Secret containers' liveness, readiness and startup probes
171## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
172## @param livenessProbe.enabled Enable livenessProbe on Sealed Secret containers
173## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
174## @param livenessProbe.periodSeconds Period seconds for livenessProbe
175## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
176## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
177## @param livenessProbe.successThreshold Success threshold for livenessProbe
181 initialDelaySeconds: 5
186## @param readinessProbe.enabled Enable readinessProbe on Sealed Secret containers
187## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
188## @param readinessProbe.periodSeconds Period seconds for readinessProbe
189## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
190## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
191## @param readinessProbe.successThreshold Success threshold for readinessProbe
195 initialDelaySeconds: 5
200## @param startupProbe.enabled Enable startupProbe on Sealed Secret containers
201## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
202## @param startupProbe.periodSeconds Period seconds for startupProbe
203## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
204## @param startupProbe.failureThreshold Failure threshold for startupProbe
205## @param startupProbe.successThreshold Success threshold for startupProbe
209 initialDelaySeconds: 10
214## @param customLivenessProbe [object] Custom livenessProbe that overrides the default one
216customLivenessProbe: {}
217## @param customReadinessProbe [object] Custom readinessProbe that overrides the default one
219customReadinessProbe: {}
220## @param customStartupProbe [object] Custom startupProbe that overrides the default one
222customStartupProbe: {}
223## Configure Pods Security Context
224## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
225## @param podSecurityContext.enabled Enabled Sealed Secret pods' Security Context
226## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
227## @param podSecurityContext.sysctls Set kernel settings using the sysctl interface
228## @param podSecurityContext.supplementalGroups Set filesystem extra groups
229## @param podSecurityContext.fsGroup Set Sealed Secret pod's Security Context fsGroup
233 fsGroupChangePolicy: Always
235 supplementalGroups: []
237## Configure Container Security Context
238## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
239## @param containerSecurityContext.enabled Enabled Sealed Secret containers' Security Context
240## @param containerSecurityContext.allowPrivilegeEscalation Whether the Sealed Secret container can escalate privileges
241## @param containerSecurityContext.capabilities.drop Which privileges to drop in the Sealed Secret container
242## @param containerSecurityContext.readOnlyRootFilesystem Whether the Sealed Secret container has a read-only root filesystem
243## @param containerSecurityContext.runAsNonRoot Indicates that the Sealed Secret container must run as a non-root user
244## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
245## @param containerSecurityContext.runAsUser Set Sealed Secret containers' Security Context runAsUser
246## @param containerSecurityContext.runAsGroup Set Sealed Secret containers' Security Context runAsGroup
247## @param containerSecurityContext.seccompProfile.type Set Sealed Secret container's Security Context seccompProfile type
249containerSecurityContext:
251 allowPrivilegeEscalation: false
254 readOnlyRootFilesystem: true
261## @param automountServiceAccountToken Mount Service Account token in pod
263automountServiceAccountToken: true
264## @param hostAliases [array] Sealed Secret pods host aliases
265## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
268## @param podLabels [object] Extra labels for Sealed Secret pods
269## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
272## @param podAnnotations [object] Annotations for Sealed Secret pods
273## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
276## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
277## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
280## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
281## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
283podAntiAffinityPreset: soft
284## Node affinity preset
285## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
288 ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
291 ## @param nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set
294 ## @param nodeAffinityPreset.values [array] Node label values to match. Ignored if `affinity` is set
301## @param affinity [object] Affinity for Sealed Secret pods assignment
302## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
303## NOTE: `podAffinityPreset`, `podAntiAffinityPreset`, and `nodeAffinityPreset` will be ignored when it's set
306## @param nodeSelector [object] Node labels for Sealed Secret pods assignment
307## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
310## @param tolerations [array] Tolerations for Sealed Secret pods assignment
311## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
314## @param updateStrategy.type Sealed Secret statefulset strategy type
315## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
319 ## Can be set to RollingUpdate or OnDelete
322## @param priorityClassName Sealed Secret pods' priorityClassName
325## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template
326## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods
328topologySpreadConstraints: []
329## @param schedulerName Name of the k8s scheduler (other than default) for Sealed Secret pods
330## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
333## @param terminationGracePeriodSeconds Seconds the pod needs to terminate gracefully
334## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
336terminationGracePeriodSeconds: ""
337## @param lifecycleHooks [object] for the Sealed Secret container(s) to automate configuration before or after startup
340## @param extraEnvVars Array with extra environment variables to add to Sealed Secret nodes
347## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Sealed Secret nodes
350## @param extraEnvVarsSecret Name of existing Secret containing extra env vars for Sealed Secret nodes
352extraEnvVarsSecret: ""
353## @param extraVolumes [array] Optionally specify extra list of additional volumes for the Sealed Secret pod(s)
356## @param extraVolumeMounts [array] Optionally specify extra list of additional volumeMounts for the Sealed Secret container(s)
359## @param sidecars [object] Add additional sidecar containers to the Sealed Secret pod(s)
362## - name: your-image-name
364## imagePullPolicy: Always
367## containerPort: 1234
370## @param initContainers [object] Add additional init containers to the Sealed Secret pod(s)
371## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
374## - name: your-image-name
376## imagePullPolicy: Always
377## command: ['sh', '-c', 'echo "hello world"']
380## @section Traffic Exposure Parameters
383## Sealed Secret service parameters
386 ## @param service.type Sealed Secret service type
390 ## @param service.ports.http Sealed Secret service HTTP port number
393 ## @param service.ports.name Sealed Secret service HTTP port name
396 ## @param service.nodePorts.http Node port for HTTP
397 ## Specify the nodePort value for the LoadBalancer and NodePort service types
398 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
399 ## NOTE: choose port between <30000-32767>
403 ## @param service.clusterIP Sealed Secret service Cluster IP
408 ## @param service.loadBalancerIP Sealed Secret service Load Balancer IP
409 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
412 ## @param service.loadBalancerClass Sealed Secret service Load Balancer Class
413 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class
415 loadBalancerClass: ""
416 ## @param service.loadBalancerSourceRanges [array] Sealed Secret service Load Balancer sources
417 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
419 ## loadBalancerSourceRanges:
422 loadBalancerSourceRanges: []
423 ## @param service.externalTrafficPolicy Sealed Secret service external traffic policy
424 ## ref: http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
426 externalTrafficPolicy: Cluster
427 ## @param service.annotations [object] Additional custom annotations for Sealed Secret service
430 ## @param service.extraPorts Extra ports to expose in Sealed Secret service (normally used with the `sidecars` value)
433 ## @param service.sessionAffinity Control where client requests go, to the same pod or round-robin
434 ## Values: ClientIP or None
435 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
437 sessionAffinity: None
438 ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
439 ## sessionAffinityConfig:
441 ## timeoutSeconds: 300
443 sessionAffinityConfig: {}
444## Sealed Secret ingress parameters
445## ref: http://kubernetes.io/docs/concepts/services-networking/ingress/
448 ## @param ingress.enabled Enable ingress record generation for Sealed Secret
451 ## @param ingress.pathType Ingress path type
453 pathType: ImplementationSpecific
454 ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
457 ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress
458 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster.
459 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
462 ## @param ingress.hostname Default host for the ingress record
464 hostname: sealed-secrets.local
465 ## @param ingress.path Default path for the ingress record
466 ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
469 ## @param ingress.annotations [object] Additional custom annotations for the ingress record
470 ## NOTE: If `ingress.certManager=true`, annotation `kubernetes.io/tls-acme: "true"` will automatically be added
473 ## @param ingress.tls Enable TLS configuration for the host defined at `ingress.hostname` parameter
474 ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf "%s-tls" .Values.ingress.hostname }}`
476 ## - Use the `ingress.secrets` parameter to create this TLS secret
477 ## - Relay on cert-manager to create it by setting `ingress.certManager=true`
478 ## - Relay on Helm to create self-signed certificates by setting `ingress.selfSigned=true`
481 ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
484 ## @param ingress.extraHosts [array] An array with additional hostname(s) to be covered with the ingress record
487 ## - name: sealed-secrets.local
491 ## @param ingress.extraPaths [array] An array with additional arbitrary paths that may need to be added to the ingress under the main host
496 ## serviceName: ssl-redirect
497 ## servicePort: use-annotation
500 ## @param ingress.extraTls [array] TLS configuration for additional hostname(s) to be covered with this ingress record
501 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
505 ## - sealed-secrets.local
506 ## secretName: sealed-secrets.local-tls
509 ## @param ingress.secrets [array] Custom TLS certificates as secrets
510 ## NOTE: 'key' and 'certificate' are expected in PEM format
511 ## NOTE: 'name' should line up with a 'secretName' set further up
512 ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates
513 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days
514 ## It is also possible to create and manage the certificates outside of this helm chart
515 ## Please see README.md for more information
518 ## - name: sealed-secrets.local-tls
520 ## -----BEGIN RSA PRIVATE KEY-----
522 ## -----END RSA PRIVATE KEY-----
524 ## -----BEGIN CERTIFICATE-----
526 ## -----END CERTIFICATE-----
529 ## @param ingress.extraRules Additional rules to be covered with this ingress record
530 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules
533 ## - host: sealed-secrets.local
538 ## name: sealed-secrets
543## @section Other Parameters
549 ## @param rbac.create Specifies whether RBAC resources should be created
552 ## @param rbac.pspEnabled PodSecurityPolicy
555 ## @param rbac.clusterRole Specifies whether the Cluster Role resource should be created. If both rbac.clusterRole and rbac.namespacedRoles are set to false no RBAC will be created.
558 ## @param rbac.clusterRoleName Specifies the name for the Cluster Role resource
561 ## @param rbac.namespacedRoles Specifies whether the namespaced Roles should be created (in each of the specified additionalNamespaces). If both rbac.clusterRole and rbac.namespacedRoles are set to false no RBAC will be created.
563 namespacedRoles: false
564 ## @param rbac.namespacedRolesName Specifies the name for the namesapced Role resource
566 namespacedRolesName: ""
567 ## @param rbac.unsealer.rules Custom RBAC rules to set for unsealer ClusterRole
568 ## @param rbac.keyAdmin.rules Custom RBAC rules to set for key-admin role
569 ## @param rbac.serviceProxier.rules Custom RBAC rules to set for service-proxier role
586 ## @param rbac.labels Extra labels to be added to RBAC resources
589## ServiceAccount configuration
592 ## @param serviceAccount.create Specifies whether a ServiceAccount should be created
595 ## @param serviceAccount.name The name of the ServiceAccount to use.
596 ## If not set and create is true, a name is generated using the common.names.fullname template
599 ## @param serviceAccount.annotations Additional Service Account annotations (evaluated as a template)
602 ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account
604 automountServiceAccountToken: false
606## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
609 ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
612 ## @param networkPolicy.allowExternal Don't require client label for connections
613 ## When set to false, only pods with the correct client label will have network access to the port the controller is
614 ## listening on. When true, the controller accept connections from any source (with the correct destination port).
617## Pod Disruption Budget configuration
618## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
619## @param pdb.create Enable a Pod Disruption Budget creation
620## @param pdb.minAvailable Minimum number/percentage of pods that should remain scheduled
621## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.
627## @section Metrics parameters
630 ## @param metrics.enabled Sealed Secrets toggle metrics service definition
633 ## @param metrics.service.type Sealed Secrets metrics service type
636 ## @param metrics.service.ports.metrics Sealed Secrets metrics service port
640 ## @param metrics.service.externalTrafficPolicy Sealed Secrets metrics service external traffic policy
641 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
643 externalTrafficPolicy: Cluster
644 ## @param metrics.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
647 ## @param metrics.service.loadBalancerIP Sealed Secrets metrics service Load Balancer IP
648 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
651 ## @param metrics.service.loadBalancerSourceRanges Sealed Secrets metrics service Load Balancer sources
652 ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
654 ## loadBalancerSourceRanges:
657 loadBalancerSourceRanges: []
658 ## @param metrics.service.annotations Additional custom annotations for Sealed Secrets metrics service
661 ## Prometheus Service Monitor
662 ## ref: https://github.com/coreos/prometheus-operator
663 ## https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
666 ## @param metrics.serviceMonitor.enabled Specify if a ServiceMonitor will be deployed for Prometheus Operator
669 ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
673 ## @param metrics.serviceMonitor.port.number Port number for the serviceMonitor
675 ## @param metrics.serviceMonitor.port.name Port name for the serviceMonitor
677 ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
680 ## @param metrics.serviceMonitor.annotations Additional ServiceMonitor annotations (evaluated as a template)
683 ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in Prometheus
686 ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
689 ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped.
690 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
695 ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
696 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
698 ## scrapeTimeout: 10s
701 ## @param metrics.serviceMonitor.metricRelabelings Specify additional relabeling of metrics
703 metricRelabelings: []
704 ## @param metrics.serviceMonitor.relabelings Specify general relabeling
707 ## @param metrics.serviceMonitor.selector Prometheus instance selector labels
709 ## prometheus: my-prometheus