# Flowise

[Flowise](https://flowiseai.com/) is a drag & drop UI to build your customized LLM flow.

**DISCLAIMER**: This is an unofficial chart not supported by Flowise authors.

## TL;DR;

```bash
$ helm repo add cowboysysop https://cowboysysop.github.io/charts/
$ helm install my-release cowboysysop/flowise
```

or for an OCI-based registry:

```bash
$ helm install my-release oci://ghcr.io/cowboysysop/charts/flowise
```

## Introduction

This chart bootstraps a Flowise deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.

## Prerequisites

- Kubernetes >= 1.24
- Helm >= 3.9

## Installing

Install the chart using:

```bash
$ helm repo add cowboysysop https://cowboysysop.github.io/charts/
$ helm install my-release cowboysysop/flowise
```

or for an OCI-based registry:

```bash
$ helm install my-release oci://ghcr.io/cowboysysop/charts/flowise
```

These commands deploy Flowise on the Kubernetes cluster in the default configuration and with the release name `my-release`. The deployment configuration can be customized by specifying the customization parameters with the `helm install` command using the `--values` or `--set` arguments. Find more information in the [configuration section](#configuration) of this document.

## Upgrading

Upgrade the chart deployment using:

```bash
$ helm upgrade my-release cowboysysop/flowise
```

or for an OCI-based registry:

```bash
$ helm upgrade my-release oci://ghcr.io/cowboysysop/charts/flowise
```

The command upgrades the existing `my-release` deployment with the most latest release of the chart.

### Upgrading to version 6.0.0
The chart now uses forked versions of the Bitnami charts to reference the Bitnami Legacy repository:

- https://github.com/bitnami/containers/issues/83267

A label `app.kubernetes.io/component` will be added to the Deployment. Run this command before upgrading to prevent an immutable field error:

```bash
$ kubectl delete deployment/my-flowise-deployment
```

Pod and container security contexts are now configured with default values.

### Upgrading to version 5.0.0

The application has changed its authentication system, see the release notes:

- https://github.com/FlowiseAI/Flowise/releases/tag/flowise%403.0.1

Parameters `config.username` and `config.password` have been removed.

### Upgrading to version 4.0.0

A new parameter `config.encryptionKey` has been added.

If you're using the default `local` storage type and not the `aws` one, configure it with the
current value of the encryption key using:

```bash
$ kubectl exec deployment/my-flowise-deployment -c flowise -- cat /data/encryption.key
```

The MariaDB subchart has been updated to a major release, see these upgrade instructions:

- https://github.com/bitnami/charts/tree/master/bitnami/mariadb#to-2020
- https://github.com/bitnami/charts/tree/master/bitnami/mariadb#to-2000
- https://github.com/bitnami/charts/tree/master/bitnami/mariadb#to-1900

Information about services are no more injected into pod's environment variable.

### Upgrading to version 3.0.0

The MariaDB subchart has been updated to a major release, see these upgrade instructions:

- https://github.com/bitnami/charts/tree/master/bitnami/mariadb#to-1700
- https://github.com/bitnami/charts/tree/master/bitnami/mariadb#to-1600
- https://github.com/bitnami/charts/tree/master/bitnami/mariadb#to-1400
- https://github.com/bitnami/charts/tree/master/bitnami/mariadb#to-1300

The PostgreSQL subchart has been updated to a major release, see these upgrade instructions:

- https://github.com/bitnami/charts/tree/main/bitnami/postgresql#to-1500
- https://github.com/bitnami/charts/tree/main/bitnami/postgresql#to-1400
- https://github.com/bitnami/charts/tree/main/bitnami/postgresql#to-1300

### Upgrading to version 2.0.0

The chart is now tested with Kubernetes >= 1.24 and Helm >= 3.9.

Future upgrades may introduce undetected breaking changes if you continue to use older versions.

## Uninstalling

Uninstall the `my-release` deployment using:

```bash
$ helm uninstall my-release
```

The command deletes the release named `my-release` and frees all the kubernetes resources associated with the release.

**TIP**: Specify the `--purge` argument to the above command to remove the release from the store and make its name free for later use.

## Configuration

### Global parameters

| Name                      | Description                                     | Default |
| ------------------------- | ----------------------------------------------- | ------- |
| `global.imageRegistry`    | Global Docker image registry                    | `""`    |
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]`    |

### Common parameters

| Name                | Description                                                                                  | Default |
| ------------------- | -------------------------------------------------------------------------------------------- | ------- |
| `kubeVersion`       | Override Kubernetes version                                                                  | `""`    |
| `nameOverride`      | Partially override `flowise.fullname` template with a string (will prepend the release name) | `""`    |
| `fullnameOverride`  | Fully override `flowise.fullname` template with a string                                     | `""`    |
| `namespaceOverride` | Fully override `common.names.namespace` template with a string                               | `""`    |
| `commonAnnotations` | Annotations to add to all deployed objects                                                   | `{}`    |
| `commonLabels`      | Labels to add to all deployed objects                                                        | `{}`    |
| `extraDeploy`       | Array of extra objects to deploy with the release                                            | `[]`    |

### Parameters

| Name                                       | Description                                                                                           | Default                  |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------------------ |
| `replicaCount`                             | Number of replicas (do not change it)                                                                 | `1`                      |
| `revisionHistoryLimit`                     | Number of old history to retain to allow rollback                                                     | `10`                     |
| `updateStrategy.type`                      | Update strategy type (do not change it)                                                               | `Recreate`               |
| `image.registry`                           | Image registry                                                                                        | `docker.io`              |
| `image.repository`                         | Image repository                                                                                      | `flowiseai/flowise`      |
| `image.tag`                                | Image tag                                                                                             | `3.0.3`                  |
| `image.digest`                             | Image digest                                                                                          | `""`                     |
| `image.pullPolicy`                         | Image pull policy                                                                                     | `IfNotPresent`           |
| `pdb.create`                               | Specifies whether a pod disruption budget should be created                                           | `false`                  |
| `pdb.minAvailable`                         | Minimum number/percentage of pods that should remain scheduled                                        | `1`                      |
| `pdb.maxUnavailable`                       | Maximum number/percentage of pods that may be made unavailable                                        | `nil`                    |
| `serviceAccount.create`                    | Specifies whether a service account should be created                                                 | `true`                   |
| `serviceAccount.annotations`               | Service account annotations                                                                           | `{}`                     |
| `serviceAccount.name`                      | The name of the service account to use (Generated using the `flowise.fullname` template if not set)   | `nil`                    |
| `enableServiceLinks`                       | Whether information about services should be injected into pod's environment variable                 | `false`                  |
| `hostAliases`                              | Pod host aliases                                                                                      | `[]`                     |
| `deploymentAnnotations`                    | Additional deployment annotations                                                                     | `{}`                     |
| `podAnnotations`                           | Additional pod annotations                                                                            | `{}`                     |
| `podLabels`                                | Additional pod labels                                                                                 | `{}`                     |
| `podSecurityContext`                       | Pod security context                                                                                  |                          |
| `podSecurityContext.seccompProfile.type`   | Set pod's Security Context seccomp profile                                                            | `RuntimeDefault`         |
| `priorityClassName`                        | Priority class name                                                                                   | `nil`                    |
| `runtimeClassName`                         | Runtime class name                                                                                    | `""`                     |
| `topologySpreadConstraints`                | Topology Spread Constraints for pod assignment                                                        | `[]`                     |
| `securityContext`                          | Container security context                                                                            |                          |
| `securityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                             | `true`                   |
| `securityContext.capabilities.drop`        | List of capabilities to be dropped                                                                    | `[]`                     |
| `securityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                               | `false`                  |
| `securityContext.runAsNonRoot`             | Whether the container must run as a non-root user                                                     | `false`                  |
| `securityContext.runAsUser`                | The UID to run the entrypoint of the container process                                                | `0`                      |
| `securityContext.runAsGroup`               | The GID to run the entrypoint of the container process                                                | `0`                      |
| `containerPorts.http`                      | Container port for HTTP                                                                               | `3000`                   |
| `livenessProbe.enabled`                    | Enable liveness probe                                                                                 | `true`                   |
| `livenessProbe.initialDelaySeconds`        | Delay before the liveness probe is initiated                                                          | `0`                      |
| `livenessProbe.periodSeconds`              | How often to perform the liveness probe                                                               | `10`                     |
| `livenessProbe.timeoutSeconds`             | When the liveness probe times out                                                                     | `1`                      |
| `livenessProbe.failureThreshold`           | Minimum consecutive failures for the liveness probe to be considered failed after having succeeded    | `3`                      |
| `livenessProbe.successThreshold`           | Minimum consecutive successes for the liveness probe to be considered successful after having failed  | `1`                      |
| `readinessProbe.enabled`                   | Enable readiness probe                                                                                | `true`                   |
| `readinessProbe.initialDelaySeconds`       | Delay before the readiness probe is initiated                                                         | `0`                      |
| `readinessProbe.periodSeconds`             | How often to perform the readiness probe                                                              | `10`                     |
| `readinessProbe.timeoutSeconds`            | When the readiness probe times out                                                                    | `1`                      |
| `readinessProbe.failureThreshold`          | Minimum consecutive failures for the readiness probe to be considered failed after having succeeded   | `3`                      |
| `readinessProbe.successThreshold`          | Minimum consecutive successes for the readiness probe to be considered successful after having failed | `1`                      |
| `startupProbe.enabled`                     | Enable startup probe                                                                                  | `false`                  |
| `startupProbe.initialDelaySeconds`         | Delay before the startup probe is initiated                                                           | `0`                      |
| `startupProbe.periodSeconds`               | How often to perform the startup probe                                                                | `10`                     |
| `startupProbe.timeoutSeconds`              | When the startup probe times out                                                                      | `1`                      |
| `startupProbe.failureThreshold`            | Minimum consecutive failures for the startup probe to be considered failed after having succeeded     | `3`                      |
| `startupProbe.successThreshold`            | Minimum consecutive successes for the startup probe to be considered successful after having failed   | `1`                      |
| `service.annotations`                      | Service annotations                                                                                   | `{}`                     |
| `service.type`                             | Service type                                                                                          | `ClusterIP`              |
| `service.clusterIP`                        | Static cluster IP address or None for headless service when service type is ClusterIP                 | `nil`                    |
| `service.ipFamilyPolicy`                   | Service IP family policy                                                                              | `""`                     |
| `service.ipFamilies`                       | Service IP families                                                                                   | `[]`                     |
| `service.sessionAffinity`                  | Control where client requests go, to the same pod or round-robin                                      | `None`                   |
| `service.sessionAffinityConfig`            | Additional settings for the sessionAffinity                                                           | `{}`                     |
| `service.loadBalancerIP`                   | Static load balancer IP address when service type is LoadBalancer                                     | `nil`                    |
| `service.loadBalancerSourceRanges`         | Source IP address ranges when service type is LoadBalancer                                            | `nil`                    |
| `service.externalTrafficPolicy`            | External traffic routing policy when service type is LoadBalancer or NodePort                         | `Cluster`                |
| `service.ports.http`                       | Service port for HTTP                                                                                 | `3000`                   |
| `service.nodePorts.http`                   | Service node port for HTTP when service type is LoadBalancer or NodePort                              | `nil`                    |
| `ingress.enabled`                          | Enable ingress controller resource                                                                    | `false`                  |
| `ingress.ingressClassName`                 | IngressClass that will be be used to implement the Ingress                                            | `""`                     |
| `ingress.pathType`                         | Ingress path type                                                                                     | `ImplementationSpecific` |
| `ingress.annotations`                      | Ingress annotations                                                                                   | `{}`                     |
| `ingress.hosts[0].host`                    | Hostname to your Flowise installation                                                                 | `flowise.local`          |
| `ingress.hosts[0].paths`                   | Paths within the url structure                                                                        | `["/"]`                  |
| `ingress.tls`                              | TLS configuration                                                                                     | `[]`                     |
| `resources`                                | CPU/Memory resource requests/limits                                                                   | `{}`                     |
| `nodeSelector`                             | Node labels for pod assignment                                                                        | `{}`                     |
| `tolerations`                              | Tolerations for pod assignment                                                                        | `[]`                     |
| `affinity`                                 | Map of node/pod affinities                                                                            | `{}`                     |
| `extraArgs`                                | Additional container arguments                                                                        | `{}`                     |
| `extraEnvVars`                             | Additional container environment variables                                                            | `[]`                     |
| `extraEnvVarsCM`                           | Name of existing ConfigMap containing additional container environment variables                      | `nil`                    |
| `extraEnvVarsSecret`                       | Name of existing Secret containing additional container environment variables                         | `nil`                    |
| `extraVolumes`                             | Optionally specify extra list of additional volumes                                                   | `[]`                     |
| `extraVolumeMounts`                        | Optionally specify extra list of additional volumeMounts                                              | `[]`                     |
| `persistence.enabled`                      | Enable persistence using PVC                                                                          | `false`                  |
| `persistence.existingClaim`                | Name of an existing PVC to use                                                                        | `nil`                    |
| `persistence.accessMode`                   | PVC access mode                                                                                       | `ReadWriteOnce`          |
| `persistence.annotations`                  | PVC annotations                                                                                       | `{}`                     |
| `persistence.size`                         | PVC size                                                                                              | `1Gi`                    |
| `persistence.storageClass`                 | PVC storage class                                                                                     | `nil`                    |

### Config parameters

| Name                             | Description                                         | Default          |
| -------------------------------- | --------------------------------------------------- | ---------------- |
| `config.mode`                    | Mode to run Flowise                                 | `main`           |
| `config.encryptionKey`           | Encryption key                                      | `""`             |
| `existingSecret`                 | Name of existing Secret to use                      | `""`             |
| `existingSecretKeyEncryptionKey` | Key in existing Secret that contains encryption key | `encryption-key` |

### Worker parameters

| Name                                              | Description                                                                                           | Default                    |
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------- |
| `worker.enabled`                                  | Enable the component                                                                                  | `false`                    |
| `worker.replicaCount`                             | Number of replicas                                                                                    | `1`                        |
| `worker.revisionHistoryLimit`                     | Number of old history to retain to allow rollback                                                     | `10`                       |
| `worker.image.registry`                           | Image registry                                                                                        | `docker.io`                |
| `worker.image.repository`                         | Image repository                                                                                      | `flowiseai/flowise-worker` |
| `worker.image.tag`                                | Image tag                                                                                             | `3.0.3`                    |
| `worker.image.digest`                             | Image digest                                                                                          | `""`                       |
| `worker.image.pullPolicy`                         | Image pull policy                                                                                     | `IfNotPresent`             |
| `worker.pdb.create`                               | Specifies whether a pod disruption budget should be created                                           | `false`                    |
| `worker.pdb.minAvailable`                         | Minimum number/percentage of pods that should remain scheduled                                        | `1`                        |
| `worker.pdb.maxUnavailable`                       | Maximum number/percentage of pods that may be made unavailable                                        | `nil`                      |
| `worker.serviceAccount.create`                    | Specifies whether a service account should be created                                                 | `true`                     |
| `worker.serviceAccount.annotations`               | Service account annotations                                                                           | `{}`                       |
| `worker.serviceAccount.name`                      | The name of the service account to use (Generated using the `flowise.fullname` template if not set)   | `nil`                      |
| `worker.enableServiceLinks`                       | Whether information about services should be injected into pod's environment variable                 | `false`                    |
| `worker.hostAliases`                              | Pod host aliases                                                                                      | `[]`                       |
| `worker.deploymentAnnotations`                    | Additional deployment annotations                                                                     | `{}`                       |
| `worker.podAnnotations`                           | Additional pod annotations                                                                            | `{}`                       |
| `worker.podLabels`                                | Additional pod labels                                                                                 | `{}`                       |
| `worker.podSecurityContext`                       | Pod security context                                                                                  |                            |
| `worker.podSecurityContext.seccompProfile.type`   | Set pod's Security Context seccomp profile                                                            | `RuntimeDefault`           |
| `worker.priorityClassName`                        | Priority class name                                                                                   | `nil`                      |
| `worker.runtimeClassName`                         | Runtime class name                                                                                    | `""`                       |
| `worker.topologySpreadConstraints`                | Topology Spread Constraints for pod assignment                                                        | `[]`                       |
| `worker.securityContext`                          | Container security context                                                                            |                            |
| `worker.securityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                             | `true`                     |
| `worker.securityContext.capabilities.drop`        | List of capabilities to be dropped                                                                    | `[]`                       |
| `worker.securityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                               | `false`                    |
| `worker.securityContext.runAsNonRoot`             | Whether the container must run as a non-root user                                                     | `false`                    |
| `worker.securityContext.runAsUser`                | The UID to run the entrypoint of the container process                                                | `0`                        |
| `worker.securityContext.runAsGroup`               | The GID to run the entrypoint of the container process                                                | `0`                        |
| `worker.containerPorts.probes`                    | Container port for Probes                                                                             | `5566`                     |
| `worker.livenessProbe.enabled`                    | Enable liveness probe                                                                                 | `true`                     |
| `worker.livenessProbe.initialDelaySeconds`        | Delay before the liveness probe is initiated                                                          | `0`                        |
| `worker.livenessProbe.periodSeconds`              | How often to perform the liveness probe                                                               | `10`                       |
| `worker.livenessProbe.timeoutSeconds`             | When the liveness probe times out                                                                     | `1`                        |
| `worker.livenessProbe.failureThreshold`           | Minimum consecutive failures for the liveness probe to be considered failed after having succeeded    | `3`                        |
| `worker.livenessProbe.successThreshold`           | Minimum consecutive successes for the liveness probe to be considered successful after having failed  | `1`                        |
| `worker.readinessProbe.enabled`                   | Enable readiness probe                                                                                | `true`                     |
| `worker.readinessProbe.initialDelaySeconds`       | Delay before the readiness probe is initiated                                                         | `0`                        |
| `worker.readinessProbe.periodSeconds`             | How often to perform the readiness probe                                                              | `10`                       |
| `worker.readinessProbe.timeoutSeconds`            | When the readiness probe times out                                                                    | `1`                        |
| `worker.readinessProbe.failureThreshold`          | Minimum consecutive failures for the readiness probe to be considered failed after having succeeded   | `3`                        |
| `worker.readinessProbe.successThreshold`          | Minimum consecutive successes for the readiness probe to be considered successful after having failed | `1`                        |
| `worker.startupProbe.enabled`                     | Enable startup probe                                                                                  | `false`                    |
| `worker.startupProbe.initialDelaySeconds`         | Delay before the startup probe is initiated                                                           | `0`                        |
| `worker.startupProbe.periodSeconds`               | How often to perform the startup probe                                                                | `10`                       |
| `worker.startupProbe.timeoutSeconds`              | When the startup probe times out                                                                      | `1`                        |
| `worker.startupProbe.failureThreshold`            | Minimum consecutive failures for the startup probe to be considered failed after having succeeded     | `3`                        |
| `worker.startupProbe.successThreshold`            | Minimum consecutive successes for the startup probe to be considered successful after having failed   | `1`                        |
| `worker.resources`                                | CPU/Memory resource requests/limits                                                                   | `{}`                       |
| `worker.nodeSelector`                             | Node labels for pod assignment                                                                        | `{}`                       |
| `worker.tolerations`                              | Tolerations for pod assignment                                                                        | `[]`                       |
| `worker.affinity`                                 | Map of node/pod affinities                                                                            | `{}`                       |
| `worker.extraArgs`                                | Additional container arguments                                                                        | `{}`                       |
| `worker.extraEnvVars`                             | Additional container environment variables                                                            | `[]`                       |
| `worker.extraEnvVarsCM`                           | Name of existing ConfigMap containing additional container environment variables                      | `nil`                      |
| `worker.extraEnvVarsSecret`                       | Name of existing Secret containing additional container environment variables                         | `nil`                      |
| `worker.extraVolumes`                             | Optionally specify extra list of additional volumes                                                   | `[]`                       |
| `worker.extraVolumeMounts`                        | Optionally specify extra list of additional volumeMounts                                              | `[]`                       |

### MariaDB parameters

| Name                                        | Description                                           | Default            |
| ------------------------------------------- | ----------------------------------------------------- | ------------------ |
| `mariadb.enabled`                           | Whether to use the MariaDB chart                      | `false`            |
| `mariadb.architecture`                      | MariaDB architecture                                  | `standalone`       |
| `mariadb.auth.database`                     | MariaDB database                                      | `flowise`          |
| `mariadb.auth.username`                     | MariaDB user                                          | `flowise`          |
| `mariadb.auth.password`                     | MariaDB password                                      | `flowise`          |
| `mariadb.auth.existingSecret`               | Name of existing Secret to use                        | `""`               |
| `mariadb.primary.service.ports.mysql`       | MariaDB port                                          | `3306`             |
| `externalMariadb.enabled`                   | Whether to use an external MariaDB                    | `false`            |
| `externalMariadb.host`                      | External MariaDB host                                 | `mariadb`          |
| `externalMariadb.port`                      | External MariaDB port                                 | `3306`             |
| `externalMariadb.username`                  | External MariaDB user                                 | `flowise`          |
| `externalMariadb.password`                  | External MariaDB password                             | `flowise`          |
| `externalMariadb.existingSecret`            | Name of existing Secret to use                        | `""`               |
| `externalMariadb.existingSecretKeyPassword` | Key in existing Secret that contains MariaDB password | `mariadb-password` |
| `externalMariadb.database`                  | External MariaDB database                             | `flowise`          |

### PostgreSQL parameters

| Name                                           | Description                                              | Default      |
| ---------------------------------------------- | -------------------------------------------------------- | ------------ |
| `postgresql.enabled`                           | Whether to use the PostgreSQL chart                      | `false`      |
| `postgresql.auth.username`                     | PostgreSQL user                                          | `flowise`    |
| `postgresql.auth.password`                     | PostgreSQL password                                      | `flowise`    |
| `postgresql.auth.database`                     | PostgreSQL database                                      | `flowise`    |
| `postgresql.auth.existingSecret`               | Name of existing Secret to use                           | `""`         |
| `postgresql.architecture`                      | PostgreSQL architecture                                  | `standalone` |
| `postgresql.primary.service.ports.postgresql`  | PostgreSQL port                                          | `5432`       |
| `externalPostgresql.enabled`                   | Whether to use an external PostgreSQL                    | `false`      |
| `externalPostgresql.host`                      | External PostgreSQL host                                 | `postgresql` |
| `externalPostgresql.port`                      | External PostgreSQL port                                 | `5432`       |
| `externalPostgresql.username`                  | External PostgreSQL user                                 | `flowise`    |
| `externalPostgresql.password`                  | External PostgreSQL password                             | `flowise`    |
| `externalPostgresql.existingSecret`            | Name of existing Secret to use                           | `""`         |
| `externalPostgresql.existingSecretKeyPassword` | Key in existing Secret that contains PostgreSQL password | `password`   |
| `externalPostgresql.database`                  | External PostgreSQL database                             | `flowise`    |

### Redis parameters

| Name                                      | Description                                         | Default          |
| ----------------------------------------- | --------------------------------------------------- | ---------------- |
| `redis.enabled`                           | Whether to use the Redis chart                      | `false`          |
| `redis.architecture`                      | Redis architecture                                  | `standalone`     |
| `redis.auth.password`                     | Redis password                                      | `flowise`        |
| `redis.auth.existingSecret`               | Name of existing Secret to use                      | `""`             |
| `redis.master.service.ports.redis`        | Redis port                                          | `6379`           |
| `externalRedis.enabled`                   | Whether to use an external Redis                    | `false`          |
| `externalRedis.host`                      | External Redis host                                 | `redis`          |
| `externalRedis.port`                      | External Redis port                                 | `6379`           |
| `externalRedis.password`                  | External Redis password                             | `flowise`        |
| `externalRedis.existingSecret`            | Name of existing Secret to use                      | `""`             |
| `externalRedis.existingSecretKeyPassword` | Key in existing Secret that contains Redis password | `redis-password` |

### Wait parameters

| Name                                            | Description                                               | Default         |
| ----------------------------------------------- | --------------------------------------------------------- | --------------- |
| `wait.image.registry`                           | Image registry                                            | `docker.io`     |
| `wait.image.repository`                         | Image repository                                          | `wait4x/wait4x` |
| `wait.image.tag`                                | Image tag                                                 | `3.3.1`         |
| `wait.image.digest`                             | Image digest                                              | `""`            |
| `wait.image.pullPolicy`                         | Image pull policy                                         | `IfNotPresent`  |
| `wait.securityContext`                          | Container security context                                |                 |
| `wait.securityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation | `false`         |
| `wait.securityContext.capabilities.drop`        | List of capabilities to be dropped                        | `["ALL"]`       |
| `wait.securityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem   | `true`          |
| `wait.securityContext.runAsNonRoot`             | Whether the container must run as a non-root user         | `true`          |
| `wait.securityContext.runAsUser`                | The UID to run the entrypoint of the container process    | `65534`         |
| `wait.securityContext.runAsGroup`               | The GID to run the entrypoint of the container process    | `65534`         |
| `wait.resources`                                | CPU/Memory resource requests/limits                       | `{}`            |
| `wait.extraVolumeMounts`                        | Optionally specify extra list of additional volumeMounts  | `[]`            |

### Tests parameters

| Name                     | Description       | Default              |
| ------------------------ | ----------------- | -------------------- |
| `tests.image.registry`   | Image registry    | `ghcr.io`            |
| `tests.image.repository` | Image repository  | `cowboysysop/pytest` |
| `tests.image.tag`        | Image tag         | `1.2.0`              |
| `tests.image.digest`     | Image digest      | `""`                 |
| `tests.image.pullPolicy` | Image pull policy | `IfNotPresent`       |

## Setting parameters

Specify the parameters you which to customize using the `--set` argument to the `helm install` command. For instance,

```bash
$ helm install my-release \
    --set nameOverride=my-name cowboysysop/flowise
```

or for an OCI-based registry:

```bash
$ helm install my-release \
    --set nameOverride=my-name oci://ghcr.io/cowboysysop/charts/flowise
```

The above command sets the `nameOverride` to `my-name`.

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

```bash
$ helm install my-release \
    --values values.yaml cowboysysop/flowise
```

or for an OCI-based registry:

```bash
$ helm install my-release \
    --values values.yaml oci://ghcr.io/cowboysysop/charts/flowise
```

**TIP**: You can use the default [values.yaml](values.yaml).

## Queue mode

To run Flowise in queue mode:

- Set `config.mode` parameter to `queue`
- Set `worker.enabled` parameter to `true`
- Set `mariadb.enabled` parameter or `externalMariadb.enabled` parameter
  or `postgresql.enabled` parameter or `externalPostgresql.enabled` parameter to `true`
- Set `redis.enabled` parameter or `externalRedis.enabled` parameter to `true`

## License

The source code of this chart is under [MIT License](LICENSE).

It also uses source code under Apache 2.0 License from the [Bitnami repository](https://github.com/bitnami/charts).
