# Helm chart (/self-hosting-optional-advanced/architecture/helm-chart)



Toucan AI can be deployed easily on a Kubernetes cluster using Helm.

## Repository and usage [#repository-and-usage]

Add the Helm repository:

```sh
helm repo add toucan-ai <to be defined>
```

Install the chart:

```sh
helm install toucan-ai toucan-ai/toucan-ai
```

Upgrade the chart:

```sh
helm upgrade toucan-ai toucan-ai/toucan-ai
```

Uninstall the chart:

```sh
helm uninstall toucan-ai
```

## Variables [#variables]

This is a reference of all the values that can be overridden in your values file:

### Global Variables [#global-variables]

* `nameOverride`: Overrides the default name of the chart.
* `fullnameOverride`: Overrides the default full name of the chart.

### Frontend Variables [#frontend-variables]

* `frontend.replicaCount`: Number of replicas for the frontend deployment.
* `frontend.image.repository`: Docker image repository for the frontend.
* `frontend.image.pullPolicy`: Image pull policy for the frontend.
* `frontend.image.tag`: Docker image tag for the frontend.
* `frontend.imagePullSecrets`: Secrets for pulling the frontend image.
* `frontend.config`: Configuration values for the frontend.
* `frontend.podAnnotations`: Annotations for the frontend pods.
* `frontend.podLabels`: Labels for the frontend pods.
* `frontend.podSecurityContext`: Security context for the frontend pods.
* `frontend.securityContext`: Security context for the frontend containers.
* `frontend.service.type`: Type of the frontend service.
* `frontend.service.port`: Port of the frontend service.
* `frontend.volumes`: Additional volumes for the frontend deployment.
* `frontend.volumeMounts`: Additional volume mounts for the frontend deployment.
* `frontend.nodeSelector`: Node selector for the frontend deployment.
* `frontend.tolerations`: Tolerations for the frontend deployment.
* `frontend.affinity`: Affinity for the frontend deployment.
* `frontend.resources`: Resource requests and limits for the frontend.
* `frontend.livenessProbe`: Liveness probe for the frontend.
* `frontend.readinessProbe`: Readiness probe for the frontend.
* `frontend.autoscaling.enabled`: Whether autoscaling is enabled for the frontend.
* `frontend.autoscaling.minReplicas`: Minimum number of replicas for the frontend.
* `frontend.autoscaling.maxReplicas`: Maximum number of replicas for the frontend.
* `frontend.autoscaling.targetCPUUtilizationPercentage`: Target CPU utilization percentage for the frontend.
* `frontend.autoscaling.targetMemoryUtilizationPercentage`: Target memory utilization percentage for the frontend.

### Backend Variables [#backend-variables]

* `backend.image.repository`: Docker image repository for the backend.
* `backend.image.pullPolicy`: Image pull policy for the backend.
* `backend.image.tag`: Docker image tag for the backend.
* `backend.imagePullSecrets`: Secrets for pulling the backend image.
* `backend.config`: Configuration values for the backend.
* `backend.secrets`: Secrets for the backend.

## Web & worker [#web--worker]

* `backend.[web|worker].replicaCount`: Number of replicas for the backend deployment.
* `backend.[web|worker].podAnnotations`: Annotations for the backend pods.
* `backend.[web|worker].podLabels`: Labels for the backend pods.
* `backend.[web|worker].podSecurityContext`: Security context for the backend pods.
* `backend.[web|worker].securityContext`: Security context for the backend containers.
* `backend.[web|worker].volumes`: Additional volumes for the backend deployment.
* `backend.[web|worker].volumeMounts`: Additional volume mounts for the backend deployment.
* `backend.[web|worker].nodeSelector`: Node selector for the backend deployment.
* `backend.[web|worker].tolerations`: Tolerations for the backend deployment.
* `backend.[web|worker].affinity`: Affinity for the backend deployment.
* `backend.[web|worker].resources`: Resource requests and limits for the backend.
* `backend.[web|worker].livenessProbe`: Liveness probe for the backend.
* `backend.[web|worker].readinessProbe`: Readiness probe for the backend.
* `backend.[web|worker].autoscaling.enabled`: Whether autoscaling is enabled for the backend.
* `backend.[web|worker].autoscaling.minReplicas`: Minimum number of replicas for the backend.
* `backend.[web|worker].autoscaling.maxReplicas`: Maximum number of replicas for the backend.
* `backend.[web|worker].autoscaling.targetCPUUtilizationPercentage`: Target CPU utilization percentage for the backend.
* `backend.[web|worker].autoscaling.targetMemoryUtilizationPercentage`: Target memory utilization percentage for the backend.

### Web specific [#web-specific]

* `backend.web.service.type`: Type of the backend service.
* `backend.web.service.port`: Port of the backend service.

### Ingress Variables [#ingress-variables]

* `ingress.enabled`: Whether ingress is enabled.
* `ingress.className`: Ingress class name.
* `ingress.annotations`: Annotations for the ingress.
* `ingress.hosts`: Hosts for the ingress.
* `ingress.tls`: TLS configuration for the ingress.

### Service Account Variables [#service-account-variables]

* `serviceAccount.create`: Whether to create a service account.
* `serviceAccount.automount`: Whether to automount the service account token.
* `serviceAccount.annotations`: Annotations for the service account.
* `serviceAccount.name`: Name of the service account.

### PostgreSQL Variables [#postgresql-variables]

* `postgresql.enabled`: Whether PostgreSQL is enabled.

See [the PostgreSQL chart parameter](https://github.com/bitnami/charts/tree/main/bitnami/postgresql#parameters) for other parameters.

Main ones are:

* `postgresql.fullname`: Full name of the PostgreSQL deployment.
* `postgresql.auth.postgresPassword`: Password for the PostgreSQL admin user.
* `postgresql.auth.username`: Username for the PostgreSQL user.
* `postgresql.auth.password`: Password for the PostgreSQL user.
* `postgresql.auth.database`: Database name for PostgreSQL.
* `postgresql.service.ports.postgresql`: Port for PostgreSQL.
* `postgresql.primary.initdb.scriptsConfigMap`: ConfigMap for PostgreSQL init scripts.

### Redis Variables [#redis-variables]

* `redis.enabled`: Whether Redis is enabled.
  See [the Redis chart parameter](https://github.com/bitnami/charts/tree/main/bitnami/redis#parameters) for other parameters.

Note: auto-configuration of the REDIS\_URL config parameter for the backend is only supported when `architecture` is `standalone`.

### Extra Manifests [#extra-manifests]

* `extraManifests`: Additional Kubernetes manifests to deploy.
