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
14## @param global.imageRegistry Global Docker image registry
15## @param global.useImageTags Pull every image by tag and ignore all image digests, including digests set in values. Use this when your registry mirror does not have the chart's default image digests.
16## @param global.imagePullSecrets Global Docker registry secret names as an array
17## @param global.defaultStorageClass Global default StorageClass for Persistent Volume(s)
24 ## - myRegistryKeySecretName
27 defaultStorageClass: ""
28 ## Security parameters
31 ## @param global.security.allowInsecureImages Allows skipping image verification
32 allowInsecureImages: false
33 ## Compatibility adaptations for Kubernetes platforms
36 ## Compatibility adaptations for Openshift
39 ## @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)
41 adaptSecurityContext: auto
43## @section Common parameters
46## @param kubeVersion Override Kubernetes version
49## @param nameOverride String to partially override common.names.fullname
52## @param fullnameOverride String to fully override common.names.fullname
55## @param commonLabels Labels to add to all deployed objects
58## @param commonAnnotations Annotations to add to all deployed objects
61## @param clusterDomain Kubernetes cluster domain name
63clusterDomain: cluster.local
64## @param extraDeploy Array of extra objects to deploy with the release
67## @param rbac.singleNamespace Restrict Argo to only deploy into a single namespace by apply Roles and RoleBindings instead of the Cluster equivalents, and start argo-cli with the --namespaced flag. Use it in clusters with strict access policy.
70 singleNamespace: false
71## @param createAggregateRoles Create Aggregated cluster roles
73createAggregateRoles: true
74## @section Argo Workflows Server configuration parameters
77## Argo Workflows server (based on the CLI) image
80 ## Chainguard Argo Workflow CLI image
81 ## @param server.image.registry [default: REGISTRY_NAME] server image registry
82 ## @param server.image.repository [default: REPOSITORY_NAME/argo-workflow-cli] server image repository
83 ## @skip server.image.tag server image tag (immutable tags are recommended)
84 ## @param server.image.digest server image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
85 ## @param server.image.pullPolicy server image pull policy
86 ## @param server.image.pullSecrets server image pull secrets
90 repository: chainguard-private/argo-workflow-cli-iamguarded
93 ## Specify a imagePullPolicy
94 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
96 pullPolicy: IfNotPresent
97 ## Optionally specify an array of imagePullSecrets.
98 ## Secrets must be manually created in the namespace.
99 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
102 ## - myRegistryKeySecretName
105 ## @param server.enabled Enable server deployment
108 ## @param server.replicaCount Number of server replicas to deploy
111 ## Configure extra options for server containers' liveness and readiness probes
112 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
113 ## @param server.livenessProbe.enabled Enable livenessProbe on server nodes
114 ## @param server.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
115 ## @param server.livenessProbe.periodSeconds Period seconds for livenessProbe
116 ## @param server.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
117 ## @param server.livenessProbe.failureThreshold Failure threshold for livenessProbe
118 ## @param server.livenessProbe.successThreshold Success threshold for livenessProbe
122 initialDelaySeconds: 10
127 ## @param server.readinessProbe.enabled Enable readinessProbe on server nodes
128 ## @param server.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
129 ## @param server.readinessProbe.periodSeconds Period seconds for readinessProbe
130 ## @param server.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
131 ## @param server.readinessProbe.failureThreshold Failure threshold for readinessProbe
132 ## @param server.readinessProbe.successThreshold Success threshold for readinessProbe
136 initialDelaySeconds: 10
141 ## @param server.startupProbe.enabled Enable startupProbe
142 ## @param server.startupProbe.path Path to check for startupProbe
143 ## @param server.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
144 ## @param server.startupProbe.periodSeconds Period seconds for startupProbe
145 ## @param server.startupProbe.timeoutSeconds Timeout seconds for startupProbe
146 ## @param server.startupProbe.failureThreshold Failure threshold for startupProbe
147 ## @param server.startupProbe.successThreshold Success threshold for startupProbe
152 initialDelaySeconds: 300
157 ## @param server.customLivenessProbe Server custom livenessProbe that overrides the default one
159 customLivenessProbe: {}
160 ## @param server.customReadinessProbe Server custom readinessProbe that overrides the default one
162 customReadinessProbe: {}
163 ## @param server.customStartupProbe Server custom startupProbe that overrides the default one
165 customStartupProbe: {}
166 ## server resource requests and limits
167 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
168 ## @param server.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if server.resources is set (server.resources is recommended for production).
170 resourcesPreset: "nano"
171 ## @param server.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
182 ## Configure Pods Security Context
183 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
184 ## @param server.podSecurityContext.enabled Enabled server pods' Security Context
185 ## @param server.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
186 ## @param server.podSecurityContext.sysctls Set kernel settings using the sysctl interface
187 ## @param server.podSecurityContext.supplementalGroups Set filesystem extra groups
188 ## @param server.podSecurityContext.fsGroup Set server pod's Security Context fsGroup
192 fsGroupChangePolicy: Always
194 supplementalGroups: []
196 ## Configure Container Security Context
197 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
198 ## @param server.containerSecurityContext.enabled Enabled server containers' Security Context
199 ## @param server.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
200 ## @param server.containerSecurityContext.runAsUser Set server containers' Security Context runAsUser
201 ## @param server.containerSecurityContext.runAsGroup Set server containers' Security Context runAsGroup
202 ## @param server.containerSecurityContext.runAsNonRoot Set server containers' Security Context runAsNonRoot
203 ## @param server.containerSecurityContext.readOnlyRootFilesystem Set read only root file system pod's Security Conte
204 ## @param server.containerSecurityContext.privileged Set server container's Security Context privileged
205 ## @param server.containerSecurityContext.allowPrivilegeEscalation Set server container's Security Context allowPrivilegeEscalation
206 ## @param server.containerSecurityContext.capabilities.drop List of capabilities to be dropped
207 ## @param server.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
209 containerSecurityContext:
216 allowPrivilegeEscalation: false
220 type: "RuntimeDefault"
221 readOnlyRootFilesystem: true
222 ## Create RBAC resources for the Argo workflows server
223 ## @param server.rbac.create Create RBAC resources for the Argo workflows server
227 ## @param server.extraArgs Extra arguments for the server command line
230 ## Enable authentication with the specified mode
231 ## Ref: https://argoproj.github.io/argo-workflows/argo-server-auth-mode/
234 ## @param server.auth.enabled Enable authentication
237 ## @param server.auth.mode Set authentication mode. Either `server`, `client` or `sso`.
240 ## SSO configuration when SSO is specified as a server auth mode.
241 ## All the values are required. SSO is activated by adding --auth-mode=sso to the server command line.
242 ## @param server.auth.sso.enabled Enable SSO configuration for the server auth mode
243 ## @param server.auth.sso.config.issuer Root URL for the OIDC identity provider
244 ## @param server.auth.sso.config.clientId.name Name of the secret containing the OIDC client ID
245 ## @param server.auth.sso.config.clientId.key Key in the secret to obtain the OIDC client ID
246 ## @param server.auth.sso.config.clientSecret.name Name of the secret containing the OIDC client secret
247 ## @param server.auth.sso.config.clientSecret.key Key in the secret to obtain the OIDC client secret
248 ## @param server.auth.sso.config.redirectUrl The OIDC redirect URL. Should be in the form <argo-root-url>/oauth2/callback.
249 ## @param server.auth.sso.rbac.enabled Create RBAC resources for SSO
250 ## @param server.auth.sso.rbac.secretWhitelist Restricts the secrets that the server can read
251 ## @param server.auth.sso.scopes Scopes requested from the SSO ID provider
255 ## The root URL of the OIDC identity provider.
257 ## issuer: "https://accounts.google.com"
261 ## Name of a secret and a key in it to retrieve the app OIDC client ID from.
266 ## Name of a secret and a key in it to retrieve the app OIDC client secret from.
271 ## The OIDC redirect URL. Should be in the form <argo-root-url>/oauth2/callback.
274 ## Create RBAC resources for SSO
278 ## When present, restricts secrets the server can read to a given list.
279 ## You can use it to restrict the server to only be able to access the
280 ## service account token secrets that are associated with service accounts
281 ## used for authorization.
284 ## Scopes requested from the SSO ID provider. The 'groups' scope requests
285 ## group membership information, which is usually used for authorization
289 ## @param server.clusterWorkflowTemplates.enabled Create ClusterRole and CRB for the controoler to access ClusterWorkflowTemplates
290 ## @param server.clusterWorkflowTemplates.enableEditing Give the server permissions to edit ClusterWorkflowTemplates
292 clusterWorkflowTemplates:
293 # Create a ClusterRole and CRB for the controller to access ClusterWorkflowTemplates.
296 ## Pod disruption budget configuration
297 ## Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
298 ## @param server.pdb.enabled Create Pod Disruption Budget for the server component
299 ## @param server.pdb.minAvailable Sets the min number of pods availables for the Pod Disruption Budget
300 ## @param server.pdb.maxUnavailable Sets the max number of pods unavailable for the Pod Disruption Budget
306 ## Run the argo server in "secure" mode.
307 ## Ref: https://argoproj.github.io/argo-workflows/tls/
308 ## @param server.secure Run Argo server in secure mode
311 ## Base URL for client resources
312 ## Ref: https://github.com/argoproj/argo-workflows/issues/716#issuecomment-433213190
313 ## @param server.baseHref Base href of the Argo Workflows deployment
316 ## Server container port
317 ## @param server.containerPorts.web argo Server container port
321 ## Server Service Account
322 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
323 ## @param server.serviceAccount.create Specifies whether a ServiceAccount should be created
324 ## @param server.serviceAccount.name Name of the service account to use. If not set and create is true, a name is generated using the fullname template.
325 ## @param server.serviceAccount.automountServiceAccountToken Automount service account token for the server service account
326 ## @param server.serviceAccount.annotations Annotations for service account. Evaluated as a template. Only used if `create` is `true`.
331 automountServiceAccountToken: false
333 ## @param server.command Override default container command (useful when using custom images)
336 ## @param server.args Override default container args (useful when using custom images)
339 ## @param server.automountServiceAccountToken Mount Service Account token in pod
341 automountServiceAccountToken: true
342 ## @param server.hostAliases server pods host aliases
343 ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
346 ## @param server.podLabels Extra labels for server pods
347 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
350 ## @param server.podAnnotations Annotations for server pods
351 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
354 ## @param server.podAffinityPreset Pod affinity preset. Ignored if `server.affinity` is set. Allowed values: `soft` or `hard`
355 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
357 podAffinityPreset: ""
358 ## @param server.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `server.affinity` is set. Allowed values: `soft` or `hard`
359 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
361 podAntiAffinityPreset: soft
362 ## Node server.affinity preset
363 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
366 ## @param server.nodeAffinityPreset.type Node affinity preset type. Ignored if `server.affinity` is set. Allowed values: `soft` or `hard`
369 ## @param server.nodeAffinityPreset.key Node label key to match. Ignored if `server.affinity` is set
372 ## @param server.nodeAffinityPreset.values Node label values to match. Ignored if `server.affinity` is set
379 ## @param server.affinity Affinity for server pods assignment
380 ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
381 ## NOTE: `server.podAffinityPreset`, `server.podAntiAffinityPreset`, and `server.nodeAffinityPreset` will be ignored when it's set
384 ## @param server.nodeSelector Node labels for server pods assignment
385 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
388 ## @param server.tolerations Tolerations for server pods assignment
389 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
392 ## @param server.updateStrategy.type server statefulset strategy type
393 ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
397 ## Can be set to RollingUpdate or OnDelete
400 ## @param server.topologySpreadConstraints Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in
401 ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
403 ## topologySpreadConstraints:
405 ## topologyKey: failure-domain.beta.kubernetes.io/zone
406 ## whenUnsatisfiable: DoNotSchedule
408 topologySpreadConstraints: []
409 ## @param server.schedulerName Alternate scheduler for the server deployment
410 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
413 ## @param server.priorityClassName server pods' priorityClassName
415 priorityClassName: ""
416 ## @param server.lifecycleHooks for the server container(s) to automate configuration before or after startup
419 ## @param server.extraEnvVars Array with extra environment variables to add to server nodes
426 ## @param server.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for server nodes
429 ## @param server.extraEnvVarsSecret Name of existing Secret containing extra env vars for server nodes
431 extraEnvVarsSecret: ""
432 ## @param server.extraVolumes Optionally specify extra list of additional volumes for the server pod(s)
435 ## @param server.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the server container(s)
437 extraVolumeMounts: []
438 ## @param server.sidecars Add additional sidecar containers to the server pod(s)
441 ## - name: your-image-name
443 ## imagePullPolicy: Always
446 ## containerPort: 1234
449 ## @param server.initContainers Add additional init containers to the server pod(s)
450 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
453 ## - name: your-image-name
455 ## imagePullPolicy: Always
456 ## command: ['sh', '-c', 'echo "hello world"']
459 ## Server service parameters
462 ## @param server.service.type server service type
465 ## @param server.service.ports.http server service HTTP port
469 ## Node ports to expose
470 ## @param server.service.nodePorts.http Node port for HTTP
471 ## NOTE: choose port between <30000-32767>
475 ## @param server.service.clusterIP server service Cluster IP
480 ## @param server.service.loadBalancerIP server service Load Balancer IP
481 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
484 ## @param server.service.loadBalancerSourceRanges server service Load Balancer sources
485 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
487 ## loadBalancerSourceRanges:
490 loadBalancerSourceRanges: []
491 ## @param server.service.externalTrafficPolicy server service external traffic policy
492 ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
494 externalTrafficPolicy: Cluster
495 ## @param server.service.annotations Additional custom annotations for server service
498 ## @param server.service.extraPorts Extra port to expose on the server service
502 ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
505 ## @param server.networkPolicy.enabled Specifies whether a NetworkPolicy should be created
508 ## @param server.networkPolicy.allowExternal Don't require server label for connections
509 ## The Policy model to apply. When set to false, only pods with the correct
510 ## server label will have network access to the ports server is listening
511 ## on. When true, server will accept connections from any source
512 ## (with the correct destination port).
515 ## @param server.networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
517 allowExternalEgress: true
518 ## @param server.networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
520 kubeAPIServerPorts: [443, 6443, 8443]
521 ## @param server.networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
531 ## - matchExpressions:
537 ## @param server.networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
547 ## - matchExpressions:
554 ## @param server.networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
555 ## @param server.networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
557 ingressNSMatchLabels: {}
558 ingressNSPodMatchLabels: {}
559## @section Argo Workflows Controller configuration parameters
562## Argo Workflows Controller
565 ## Chainguard Argo Workflow Controller image
566 ## @param controller.image.registry [default: REGISTRY_NAME] controller image registry
567 ## @param controller.image.repository [default: REPOSITORY_NAME/argo-workflow-controller] controller image repository
568 ## @skip controller.image.tag controller image tag (immutable tags are recommended)
569 ## @param controller.image.digest controller image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
570 ## @param controller.image.pullPolicy controller image pull policy
571 ## @param controller.image.pullSecrets controller image pull secrets
575 repository: chainguard-private/argo-workflow-controller-iamguarded
578 ## Specify a imagePullPolicy
579 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
581 pullPolicy: IfNotPresent
582 ## Optionally specify an array of imagePullSecrets.
583 ## Secrets must be manually created in the namespace.
584 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
587 ## - myRegistryKeySecretName
590 ## @param controller.replicaCount Number of controller replicas to deploy
593 ## Configure extra options for controller containers' liveness and readiness probes
594 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
595 ## @param controller.livenessProbe.enabled Enable livenessProbe on controller nodes
596 ## @param controller.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
597 ## @param controller.livenessProbe.periodSeconds Period seconds for livenessProbe
598 ## @param controller.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
599 ## @param controller.livenessProbe.failureThreshold Failure threshold for livenessProbe
600 ## @param controller.livenessProbe.successThreshold Success threshold for livenessProbe
604 initialDelaySeconds: 90
609 ## @param controller.readinessProbe.enabled Enable readinessProbe on controller nodes
610 ## @param controller.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
611 ## @param controller.readinessProbe.periodSeconds Period seconds for readinessProbe
612 ## @param controller.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
613 ## @param controller.readinessProbe.failureThreshold Failure threshold for readinessProbe
614 ## @param controller.readinessProbe.successThreshold Success threshold for readinessProbe
618 initialDelaySeconds: 30
623 ## @param controller.startupProbe.enabled Enable startupProbe
624 ## @param controller.startupProbe.path Path to check for startupProbe
625 ## @param controller.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
626 ## @param controller.startupProbe.periodSeconds Period seconds for startupProbe
627 ## @param controller.startupProbe.timeoutSeconds Timeout seconds for startupProbe
628 ## @param controller.startupProbe.failureThreshold Failure threshold for startupProbe
629 ## @param controller.startupProbe.successThreshold Success threshold for startupProbe
634 initialDelaySeconds: 300
639 ## @param controller.customLivenessProbe Controller custom livenessProbe that overrides the default one
641 customLivenessProbe: {}
642 ## @param controller.customReadinessProbe Controller custom readinessProbe that overrides the default one
644 customReadinessProbe: {}
645 ## @param controller.customStartupProbe Controller custom startupProbe that overrides the default one
647 customStartupProbe: {}
648 ## controller resource requests and limits
649 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
650 ## @param controller.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if controller.resources is set (controller.resources is recommended for production).
652 resourcesPreset: "nano"
653 ## @param controller.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
664 ## Configure Pods Security Context
665 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
666 ## @param controller.podSecurityContext.enabled Enabled controller pods' Security Context
667 ## @param controller.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
668 ## @param controller.podSecurityContext.sysctls Set kernel settings using the sysctl interface
669 ## @param controller.podSecurityContext.supplementalGroups Set filesystem extra groups
670 ## @param controller.podSecurityContext.fsGroup Set controller pod's Security Context fsGroup
674 fsGroupChangePolicy: Always
676 supplementalGroups: []
678 ## Configure Container Security Context
679 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
680 ## @param controller.containerSecurityContext.enabled Enabled controller containers' Security Context
681 ## @param controller.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
682 ## @param controller.containerSecurityContext.runAsUser Set controller containers' Security Context runAsUser
683 ## @param controller.containerSecurityContext.runAsGroup Set controller containers' Security Context runAsGroup
684 ## @param controller.containerSecurityContext.runAsNonRoot Set controller containers' Security Context runAsNonRoot
685 ## @param controller.containerSecurityContext.readOnlyRootFilesystem Set read only root file system pod's Security Conte
686 ## @param controller.containerSecurityContext.privileged Set controller container's Security Context privileged
687 ## @param controller.containerSecurityContext.allowPrivilegeEscalation Set controller container's Security Context allowPrivilegeEscalation
688 ## @param controller.containerSecurityContext.capabilities.drop List of capabilities to be dropped
689 ## @param controller.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
691 containerSecurityContext:
698 allowPrivilegeEscalation: false
702 type: "RuntimeDefault"
703 readOnlyRootFilesystem: true
704 ## Server container port
705 ## @param controller.containerPorts.metrics Port to expose controller metrics
706 ## @param controller.containerPorts.telemetry Port to expose controller telemetry
711 ## Create RBAC resources for the Argo workflows controller
712 ## @param controller.rbac.create Create RBAC resources for the Argo workflows controller
716 ## Use an existing configmap instead of creating a configmap with the specified parameters
717 ## @param controller.existingConfigMap
719 existingConfigMap: ""
720 ## @param controller.extraArgs Extra arguments for the controller command line
724 ## @param controller.persistence.archive.enabled Save completed workflows to an SQL database.
728 ## Controller configmap configuration content. Requires controller.existingConfigmap to be empty.
729 ## @param controller.config [object] Controller configmap configuration content
732 {{- if .Values.controller.instanceID.enabled }}
733 {{- if .Values.controller.instanceID.useReleaseName }}
734 instanceID: {{ .Release.Name }}
736 instanceID: {{ .Values.controller.instanceID.explicitID }}
739 ## How many workflows can be running at the same time
742 ## Maximun number of workflows running in a namespace
744 namespaceParallelism:
745 {{- if or .Values.executor.resources .Values.executor.extraEnvVars .Values.executor.containerSecurityContext }}
747 {{- if .Values.executor.resources }}
748 resources: {{- include "common.tplvalues.render" (dict "value" .Values.executor.resources "context" $) | nindent 4 }}
749 {{- else if ne .Values.executor.resourcesPreset "none" }}
750 resources: {{- include "common.resources.preset" (dict "type" .Values.executor.resourcesPreset) | nindent 4 }}
752 {{- if .Values.executor.extraEnvVars }}
753 env: {{- include "common.tplvalues.render" (dict "value" .Values.executor.extraEnvVars "context" $) | nindent 4 }}
755 {{- if .Values.executor.containerSecurityContext }}
756 securityContext: {{- omit .Values.executor.containerSecurityContext "enabled" | toYaml | nindent 4 }}
759 ## Uncomment to enable Artofact repository with the provided configuration
760 ## artifactRepository:
761 ## archiveLogs: false
764 {{- if .Values.controller.metrics.enabled }}
765 metricsConfig: {{- include "common.tplvalues.render" (dict "value" .Values.controller.metrics "context" $) | nindent 2 }}
767 {{- if .Values.controller.telemetry.enabled }}
768 telemetryConfig: {{- include "common.tplvalues.render" (dict "value" .Values.controller.telemetry "context" $) | nindent 2 }}
770 {{- if (include "argo-workflows.controller.persistence.enabled" .) }}
775 nodeStatusOffLoad: false
776 archive: {{ include "common.tplvalues.render" (dict "value" .Values.controller.persistence.archive.enabled "context" $) }}
777 {{- if or .Values.postgresql.enabled (and .Values.externalDatabase.enabled (eq .Values.externalDatabase.type "postgresql")) }}
779 {{- else if or .Values.mysql.enabled (and .Values.externalDatabase.enabled (eq .Values.externalDatabase.type "mysql")) }}
782 host: {{ include "argo-workflows.controller.database.host" . }}
783 port: {{ include "argo-workflows.controller.database.port" . }}
784 database: {{ include "argo-workflows.controller.database" . }}
785 tableName: argo_workflows
786 ## the database secrets must be in the same namespace of the controller
789 name: {{ include "argo-workflows.controller.database.username.secret" . }}
792 name: {{ include "argo-workflows.controller.database.password.secret" . }}
793 key: {{ include "argo-workflows.controller.database.password.secret.key" . }}
795 {{- if .Values.controller.workflowDefaults }}
796 workflowDefaults: {{- include "common.tplvalues.render" (dict "value" .Values.controller.workflowDefaults "context" $) | nindent 2 }}
798 {{- if and .Values.server.auth.enabled .Values.server.auth.sso.enabled }}
799 sso: {{- include "common.tplvalues.render" (dict "value" .Values.server.auth.sso.config "context" $) | nindent 2 }}
801 ## Uncomment to set workflowRestrictions
802 ## Ref: https://argoproj.github.io/argo-workflows/workflow-restrictions/
803 ## workflowRestrictions: {}
804 ## Uncomment to set links
805 ## Ref: https://argoproj.github.io/argo-workflows/links/
808 ## Configure the controller to accept only submissions with a matching instanceID attribute
809 ## @param controller.instanceID.enabled Enable submission filtering based on instanceID attribute. Requires to set instanceID.useReleaseName or instanceID.explicitID
810 ## @param controller.instanceID.useReleaseName Use the release name to filter submissions
811 ## @param controller.instanceID.explicitID Filter submissions based on an explicit instance ID
815 ## NOTE: If `instanceID.enabled` is set to `true` then either `instanceID.userReleaseName` or `instanceID.explicitID` must be defined.
817 useReleaseName: false
819 ## @param controller.clusterWorkflowTemplates.enabled Whether to create a ClusterRole and Cluster Role Binding to access ClusterWokflowTemplates resources
821 clusterWorkflowTemplates:
823 ## Metrics configuration for the controller
824 ## @param controller.metrics.enabled Enable controller metrics exporter
825 ## @param controller.metrics.path Path to expose controller metrics
826 ## @param controller.metrics.serviceMonitor.enabled Enable prometheus service monitor configuration
833 ## Telemetry configuration for the controller
834 ## @param controller.telemetry.enabled Enable telemetry for the controller
835 ## @param controller.telemetry.path Path to expose telemetry information
840 ## Number of workflow workers to deploy
841 ## @param controller.workflowWorkers Number of workflow workers to deploy
844 ## Namespaces allowed to run workflows
845 ## @param controller.workflowNamespaces Namespaces allowed to run workflows
849 ## Default Workflow Values
850 ## Ref: https://argoproj.github.io/argo-workflows/default-workflow-specs/#setting-default-workflow-values
851 ## @param controller.workflowDefaults Default Workflow Values
854 ## Logging level for the controller
855 ## @param controller.logging.level Level for the controller logging
856 ## @param controller.logging.globalLevel Global logging level for the controller
861 ## Pod disruption budget configuration
862 ## Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
863 ## @param controller.pdb.enabled Create Pod Disruption Budget for the controller component
864 ## @param controller.pdb.minAvailable Sets the min number of pods availables for the Pod Disruption Budget
865 ## @param controller.pdb.maxUnavailable Sets the max number of pods unavailable for the Pod Disruption Budget
871 ## Controller Service Account
872 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
873 ## @param controller.serviceAccount.create Specifies whether a ServiceAccount should be created
874 ## @param controller.serviceAccount.name Name of the service account to use. If not set and create is true, a name is generated using the fullname template.
875 ## @param controller.serviceAccount.automountServiceAccountToken Automount service account token for the server service account
876 ## @param controller.serviceAccount.annotations Annotations for service account. Evaluated as a template. Only used if `create` is `true`.
881 automountServiceAccountToken: false
883 ## @param controller.command Override default container command (useful when using custom images)
886 ## @param controller.args Override default container args (useful when using custom images)
889 ## @param controller.automountServiceAccountToken Mount Service Account token in pod
891 automountServiceAccountToken: true
892 ## @param controller.hostAliases controller pods host aliases
893 ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
896 ## @param controller.podLabels Extra labels for controller pods
897 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
900 ## @param controller.podAnnotations Annotations for controller pods
901 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
904 ## @param controller.podAffinityPreset Pod affinity preset. Ignored if `controller.affinity` is set. Allowed values: `soft` or `hard`
905 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
907 podAffinityPreset: ""
908 ## @param controller.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `controller.affinity` is set. Allowed values: `soft` or `hard`
909 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
911 podAntiAffinityPreset: soft
912 ## Node controller.affinity preset
913 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
916 ## @param controller.nodeAffinityPreset.type Node affinity preset type. Ignored if `controller.affinity` is set. Allowed values: `soft` or `hard`
919 ## @param controller.nodeAffinityPreset.key Node label key to match. Ignored if `controller.affinity` is set
922 ## @param controller.nodeAffinityPreset.values Node label values to match. Ignored if `controller.affinity` is set
929 ## @param controller.affinity Affinity for controller pods assignment
930 ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
931 ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set
934 ## @param controller.nodeSelector Node labels for controller pods assignment
935 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
938 ## @param controller.tolerations Tolerations for controller pods assignment
939 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
942 ## @param controller.updateStrategy.type controller statefulset strategy type
943 ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
947 ## Can be set to RollingUpdate or OnDelete
950 ## @param controller.topologySpreadConstraints Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in
951 ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
953 ## topologySpreadConstraints:
955 ## topologyKey: failure-domain.beta.kubernetes.io/zone
956 ## whenUnsatisfiable: DoNotSchedule
958 topologySpreadConstraints: []
959 ## @param controller.schedulerName Alternate scheduler for the server controller
960 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
963 ## @param controller.priorityClassName controller pods' priorityClassName
965 priorityClassName: ""
966 ## @param controller.lifecycleHooks for the controller container(s) to automate configuration before or after startup
969 ## @param controller.extraEnvVars Array with extra environment variables to add to controller nodes
976 ## @param controller.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for controller nodes
979 ## @param controller.extraEnvVarsSecret Name of existing Secret containing extra env vars for controller nodes
981 extraEnvVarsSecret: ""
982 ## @param controller.extraVolumes Optionally specify extra list of additional volumes for the controller pod(s)
985 ## @param controller.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the controller container(s)
987 extraVolumeMounts: []
988 ## @param controller.sidecars Add additional sidecar containers to the controller pod(s)
991 ## - name: your-image-name
993 ## imagePullPolicy: Always
996 ## containerPort: 1234
999 ## @param controller.initContainers Add additional init containers to the controller pod(s)
1000 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
1003 ## - name: your-image-name
1004 ## image: your-image
1005 ## imagePullPolicy: Always
1006 ## command: ['sh', '-c', 'echo "hello world"']
1009 ## Controller service parameters
1012 ## @param controller.service.type controller service type
1015 ## @param controller.service.ports.metrics Metrics port for the controller
1016 ## @param controller.service.ports.telemetry Telemetry port for the controller
1021 ## Node ports to expose
1022 ## @param controller.service.nodePorts.metrics Node port for HTTP
1023 ## @param controller.service.nodePorts.telemetry Node port for HTTPS
1024 ## NOTE: choose port between <30000-32767>
1029 ## @param controller.service.clusterIP controller service Cluster IP
1034 ## @param controller.service.loadBalancerIP controller service Load Balancer IP
1035 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
1038 ## @param controller.service.loadBalancerSourceRanges controller service Load Balancer sources
1039 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
1041 ## loadBalancerSourceRanges:
1044 loadBalancerSourceRanges: []
1045 ## @param controller.service.externalTrafficPolicy controller service external traffic policy
1046 ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
1048 externalTrafficPolicy: Cluster
1049 ## @param controller.service.annotations Additional custom annotations for controller service
1052 ## @param controller.service.extraPorts Extra port to expose on the controller service
1056 ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
1059 ## @param controller.networkPolicy.enabled Specifies whether a NetworkPolicy should be created
1062 ## @param controller.networkPolicy.allowExternal Don't require server label for connections
1063 ## The Policy model to apply. When set to false, only pods with the correct
1064 ## server label will have network access to the ports server is listening
1065 ## on. When true, server will accept connections from any source
1066 ## (with the correct destination port).
1069 ## @param controller.networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
1071 allowExternalEgress: true
1072 ## @param controller.networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
1074 kubeAPIServerPorts: [443, 6443, 8443]
1075 ## @param controller.networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
1085 ## - matchExpressions:
1091 ## @param controller.networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
1101 ## - matchExpressions:
1108 ## @param controller.networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
1109 ## @param controller.networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
1111 ingressNSMatchLabels: {}
1112 ingressNSPodMatchLabels: {}
1113## @section Executor configuration section
1116 ## Chainguard Argo Workflow Executor image
1117 ## @param executor.image.registry [default: REGISTRY_NAME] executor image registry
1118 ## @param executor.image.repository [default: REPOSITORY_NAME/argo-workflow-exec] executor image repository
1119 ## @skip executor.image.tag executor image tag (immutable tags are recommended)
1120 ## @param executor.image.digest executor image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
1121 ## @param executor.image.pullPolicy executor image pull policy
1122 ## @param executor.image.pullSecrets executor image pull secrets
1126 repository: chainguard-private/argo-workflow-exec-iamguarded
1129 ## Specify a imagePullPolicy
1130 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
1132 pullPolicy: IfNotPresent
1133 ## Optionally specify an array of imagePullSecrets.
1134 ## Secrets must be manually created in the namespace.
1135 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
1138 ## - myRegistryKeySecretName
1141 ## Init container's resource requests and limits
1142 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1143 ## @param executor.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if executor.resources is set (executor.resources is recommended for production).
1145 resourcesPreset: "nano"
1146 ## @param executor.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1157 ## @param executor.extraEnvVars Array with extra environment variables to add to server nodes
1164 ## Configure Container Security Context
1165 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
1166 ## @param executor.containerSecurityContext.enabled Enabled executor containers' Security Context
1167 ## @param executor.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
1168 ## @param executor.containerSecurityContext.runAsUser Set executor containers' Security Context runAsUser
1169 ## @param executor.containerSecurityContext.runAsGroup Set executor containers' Security Context runAsGroup
1170 ## @param executor.containerSecurityContext.runAsNonRoot Set executor containers' Security Context runAsNonRoot
1171 ## @param executor.containerSecurityContext.readOnlyRootFilesystem Set read only root file system pod's Security Conte
1172 ## @param executor.containerSecurityContext.privileged Set executor container's Security Context privileged
1173 ## @param executor.containerSecurityContext.allowPrivilegeEscalation Set executor container's Security Context allowPrivilegeEscalation
1174 ## @param executor.containerSecurityContext.capabilities.drop List of capabilities to be dropped
1175 ## @param executor.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
1177 containerSecurityContext:
1184 allowPrivilegeEscalation: false
1188 type: "RuntimeDefault"
1189 readOnlyRootFilesystem: true
1190## @section Traffic Exposure Parameters
1193## Server ingress parameters
1194## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
1197 ## @param ingress.enabled Enable ingress record generation for server
1200 ## @param ingress.pathType Ingress path type
1202 pathType: ImplementationSpecific
1203 ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
1206 ## @param ingress.hostname Default host for the ingress record
1208 hostname: server.local
1209 ## @param ingress.path Default path for the ingress record
1210 ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
1213 ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
1214 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster.
1215 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
1217 ingressClassName: ""
1218 ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
1219 ## For a full list of possible ingress annotations, please see
1220 ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
1221 ## Use this parameter to set the required annotations for cert-manager, see
1222 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
1226 ## kubernetes.io/ingress.class: nginx
1227 ## cert-manager.io/cluster-issuer: cluster-issuer-name
1230 ## @param ingress.tls Enable TLS configuration for the host defined at `ingress.hostname` parameter
1231 ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf "%s-tls" .Values.ingress.hostname }}`
1233 ## - Use the `ingress.secrets` parameter to create this TLS secret
1234 ## - Rely on cert-manager to create it by setting the corresponding annotations
1235 ## - Rely on Helm to create self-signed certificates by setting `ingress.selfSigned=true`
1238 ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
1241 ## @param ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record
1244 ## - name: server.local
1248 ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
1253 ## serviceName: ssl-redirect
1254 ## servicePort: use-annotation
1257 ## @param ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record
1258 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
1263 ## secretName: server.local-tls
1266 ## @param ingress.secrets Custom TLS certificates as secrets
1267 ## NOTE: 'key' and 'certificate' are expected in PEM format
1268 ## NOTE: 'name' should line up with a 'secretName' set further up
1269 ## 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
1270 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days
1271 ## It is also possible to create and manage the certificates outside of this helm chart
1272 ## Please see README.md for more information
1275 ## - name: server.local-tls
1277 ## -----BEGIN RSA PRIVATE KEY-----
1279 ## -----END RSA PRIVATE KEY-----
1281 ## -----BEGIN CERTIFICATE-----
1283 ## -----END CERTIFICATE-----
1286 ## @param ingress.extraRules Additional rules to be covered with this ingress record
1287 ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules
1290 ## - host: server.local
1300## @section Workflows configuration
1303 ## Service account configuration for workflows
1304 ## @param workflows.serviceAccount.create Whether to create a service account to run workflows
1305 ## @param workflows.serviceAccount.name Service account name to run workflows
1306 ## @param workflows.serviceAccount.automountServiceAccountToken Automount service account token for the workflows service account
1307 ## @param workflows.serviceAccount.annotations Annotations for service account. Evaluated as a template. Only used if `create` is `true`.
1312 automountServiceAccountToken: false
1314 ## Create RBAC resources to run workflows.
1315 ## A Role and Role Bindding are created per namespace in controller.workflowNamespaces
1316 ## @param workflows.rbac.create Whether to create RBAC resource to run workflows
1320## @section PostgreSQL subchart
1323## Postgresql subchart configuration
1324## @param postgresql.enabled Enable PostgreSQL subchart and controller persistence using PostgreSQL
1325## @param postgresql.service.ports.postgresql PostgreSQL port
1326## @param postgresql.auth.username PostgreSQL username
1327## @param postgresql.auth.database PortgreSQL database name
1328## @param postgresql.auth.password PortgreSQL database password
1334 repository: chainguard-private/postgres-iamguarded
1342 database: ig_argo_workflows
1345 ## PostgreSQL Primary resource requests and limits
1346 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1347 ## @param postgresql.primary.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production).
1349 resourcesPreset: "nano"
1350 ## @param postgresql.primary.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1361## @section MySQL subchart
1364## Mysql subchart configuration
1365## @param mysql.enabled Enable MySQL subchart and controller persistence using MySQL
1366## @param mysql.service.ports.mysql MySQL port
1367## @param mysql.auth.username MySQL username
1368## @param mysql.auth.database MySQL database name
1369## @param mysql.auth.password MySQL database password
1375 repository: chainguard-private/mysql-iamguarded
1383 database: ig_argo_workflows
1386 ## MySQL primary container's resource requests and limits
1387 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1388 ## We usually recommend not to specify default resources and to leave this as a conscious
1389 ## choice for the user. This also increases chances charts run on environments with little
1390 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
1391 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
1392 ## @param mysql.primary.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production).
1394 resourcesPreset: "small"
1395 ## @param mysql.primary.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1406## @section External Database configuration
1409## External Database Configuration
1410## @param externalDatabase.enabled Enable using externaldatabase and the controller to use persistence with it
1411## @param externalDatabase.host External Database server host
1412## @param externalDatabase.port External Database server port
1413## @param externalDatabase.username External Database username
1414## @param externalDatabase.password External Database user password
1415## @param externalDatabase.database External Database database name
1416## @param externalDatabase.existingSecret The name of an existing secret with database credentials
1417## @param externalDatabase.type Either postgresql or mysql
1421 ## Either "postgresql" or "mysql"
1426 username: ig_workflows
1428 database: iamguarded_workflows
1429 ## NOTE: Must contain key `database-password`
1430 ## NOTE: When it's set, the `externalDatabase.password` parameter is ignored