deploy/helm/README.md
Appsmith is a JS-based internal tool development platform. Internal tools take a lot of time to build even though they involve the same UI components, data integrations, and user access management. Developers love Appsmith because it saves them hundreds of hours.
Build interactive web apps by using UI components like a table, form components, button, charts, rich text editor, map, tabs, modal, and many more.
API Support: CURL importer for REST APIs Database Support: PostgreSQL, MongoDB, MySQL, Redshift, Elastic Search, DynamoDB, Redis, & MSFT SQL Server.
helm repo add stable-appsmith http://helm.appsmith.com
helm repo update
helm install stable-appsmith/appsmith --generate-name
This chart bootstrap an Appsmith deployment on a Kubernetes cluster using Helm package manager.
kubectl is installed and configured to connect to your cluster
Install kubectl: kubernetes.io/vi/docs/tasks/tools/install-kubectl/
Minikube: Setup Kubectl
Google Cloud Kubernetes: Configuring cluster access for kubectl
Aws EKS: Create a kubeconfig for Amazon EKS
Microk8s: Working with kubectl
To install the chart with the release appsmith
helm install stable-appsmith/appsmith --generate-name
The command deploys Appsmith application on Kubernetes cluster in the default configuration. The Parameters section lists the parameters that can be configured during installation.
To uninstall the appsmith release:
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
appsmith-1631069261 default 1 2021-09-09 11:24:40.152766 +0700 +07 deployed appsmith-1.3.0 1.16.0
helm uninstall appsmith-1631069261
The command uninstalls the release and removes all Kubernetes resources associated with the chart
| Name | Description | Value |
|---|---|---|
global.namespaceOverride | Override the namespace for resource deployed by the chart | "" |
global.storageClass | Global StorageClass for Persistent Volume(s) | "" |
| Name | Description | Value |
|---|---|---|
fullnameOverride | String to fully override appsmith.name template | "" |
containerName | Specify container's name running in the pods | "appsmith" |
commonLabels | Labels to add to all deployed objects | {} |
commonAnnotations | Annotations to add to all deployed objects | {} |
| Name | Description | Value |
|---|---|---|
image.registry | Appsmith image registry | index.docker.io |
image.repository | Appsmith image repository | appsmith/appsmith-ce |
image.tag | Appsmith image tag | latest |
image.pullPolicy | Appsmith image pull policy | IfNotPresent |
| Name | Description | Value |
|---|---|---|
strategyType | Appsmith deployment strategy type | RollingUpdate |
schedulerName | Alternate scheduler | "" |
annotations | Annotations to add to the Deployment/StatefulSet resource | {} |
podAnnotations | Annotations for Appsmith pods | {} |
podLabels | Labels for Appsmith pods | {} |
podSecurityContext | Appsmith pods security context | {} |
securityContext | Set security context | {} |
resources.limit | The resources limits for the Appsmith container | {} |
resources.requests | The requested resources for the Appsmith container | {} |
nodeSelector | Node labels for pod assignment | {} |
tolerations | Tolerations for pod assignment | [] |
affinity | Affinity fod pod assignment | {} |
extraVolumes | Additional volumes to add to the pod | [] |
extraVolumeMounts | Additional volume mounts to add to the appsmith container | [] |
workload.kind: Selects the workload resource to create. Allowed values: Deployment, StatefulSet (case-insensitive; default: StatefulSet).autoscaling.enabled is true, workload.kind is ignored and a Deployment is used.Deployment without autoscaling, control the number of replicas with replicas.| Name | Description | Value |
|---|---|---|
serviceAccount.create | Enable creation of ServiceAccount for Appsmith pods | true |
serviceAccount.name | Name of the created ServiceAccount . If not set, a name is generated using the appsmith.fullname template | "" |
serviceAccount.annotations | Additional service account annotations | {} |
| Name | Description | Value |
|---|---|---|
service.type | Appsmith service type | ClusterIP |
service.port | Appsmith service port | 80 |
service.portName | Appsmith service port name | appsmith |
service.nodePort | Appsmith service node port to expose to expose | 8000 |
service.clusterIP | Appsmith service Cluster | "" |
service.loadBalancerIP | Appsmith service Load Balancer IP | "" |
service.loadBalancerSourceRanges | Appsmith service Load Balancer sources | [] |
service.annotations | Additional custom annotations for Appsmith service | {} |
ingress.enabled | Enable ingress record generation for Appsmith | false |
ingress.annotations | Additional custom annotations for Ingress | {} |
ingress.hosts | An array of hosts to be covered with the ingress record | [] |
ingress.tls | Enable TLS configuration for the hosts defined at ingress.hosts parameter | false |
ingress.secrets | Custom TLS certificates as secrets | [] |
ingress.certManager | Enable ingress to use TLS certificates provided by Cert Manager | false |
ingress.certManagerTls | Specify TLS secret resources created by Cert Manager | [] |
ingress.className | Configure Ingress class that being used in ingress resource | "" |
| Name | Description | Value |
|---|---|---|
persistence.enabled | Enable persistence using Persistent Volume Claims | true |
persistence.storageClass | Persistent Volume storage class | "" |
persistence.annotations | Additional custom annotations for the PVC | {} |
persistence.localStorage | Enable persistent volume using local storage | false |
persistence.storagePath | Local storage path | /tmp/hostpath_pv |
persistence.localCluster | Local running cluster to provide storage space | [minikube] |
persistence.accessModes | Persistent Volume access modes | [ReadWriteOnce] |
persistence.size | Persistent Volume size | 10Gi |
storageClass.enabled | Enable Storage Class configuration | false |
storageClass.defaultClass | Create default Storage Class | false |
storageClass.bindingMode | Binding mode for Persistent Volume Claims using Storage Class | Immediate |
storageClass.allowVolumeExpansion | Allow expansion of Persistent Volume Claims using Storage Class | true |
storageClass.reclaimPolicy | Configure the retention of the dynamically created Persistent Volume | Delete |
storageClass.provisioner | Storage Class provisioner | "" |
storageClass.annotations | Additional storage class annotations | {} |
storageClass.mountOptions | Mount options used by Persistent Volumes | {} |
storageClass.parameters | Storage Class parameters | {} |
Preview feature in 3.7.0 — documented for fresh installs in this release. A documented migration path from an existing Bitnami-backed Appsmith release is being prepared separately. Pilot before relying on it for production data. See docs/install-mongodb-operator.md for known limitations.
The chart can deploy MongoDB via the MongoDB Kubernetes Operator instead of the default Bitnami MongoDB subchart. Set mongodbOperator.enabled=true to bundle the operator as a subchart.
Quickstart for a fresh install:
kubectl create namespace appsmith
helm install appsmith stable-appsmith/appsmith -n appsmith \
--set mongodb.enabled=false \
--set mongodbCommunity.enabled=true \
--set mongodbOperator.enabled=true
See docs/install-mongodb-operator.md for the full guide.
When mongodbCommunity.enabled=true and mongodbCommunity.auth.passwordSecretName is empty, a pre-install Job generates a random password into a Secret whose name is derived from the resolved mongodbCommunity.name value with a -password suffix. The resolved name defaults to <release-fullname>-mongo when mongodbCommunity.name isn't explicitly set — so for a release named appsmith the Secret is appsmith-mongo-password. The Job is idempotent and compatible with ArgoCD.
mongodbOperator.*)| Name | Description | Value |
|---|---|---|
mongodbOperator.enabled | Install the upstream MongoDB Kubernetes Operator subchart alongside this chart | false |
Other mongodbOperator.* values pass through to the upstream mongodb-kubernetes chart. Common overrides include mongodbOperator.operator.watchNamespace and mongodbOperator.registry.* — see the upstream chart's values reference.
mongodbCommunity.*)| Name | Description | Value |
|---|---|---|
mongodbCommunity.enabled | Deploy a MongoDBCommunity custom resource | false |
mongodbCommunity.name | Name of the MongoDBCommunity custom resource. When empty, defaults to <release-fullname>-mongo. | "" |
mongodbCommunity.version | MongoDB version to deploy | 8.0.20 |
mongodbCommunity.members | Number of replica set members. 1 is a dev-friendly default; set to 3 for production HA. | 1 |
mongodbCommunity.auth.username | MongoDB user for Appsmith | appsmith |
mongodbCommunity.auth.database | Authentication database (also used as connection path) | appsmith |
mongodbCommunity.auth.passwordSecretName | Name of an existing Secret containing the password (key: password). When empty, a pre-install Job autogenerates the Secret. | "" |
mongodbCommunity.persistent.storageSize | Storage size for each MongoDB replica PVC | 10Gi |
mongodbCommunity.persistent.storageClass | StorageClass for MongoDB PVCs. Empty uses cluster default (or global.storageClass). | "" |
mongodbCommunity.resources | Resource requests/limits for MongoDB containers | {} |
mongodbCommunity.nodeSelector | Node selector for MongoDB pods | {} |
mongodbCommunity.affinity | Affinity rules for MongoDB pods | {} |
mongodbCommunity.tolerations | Tolerations for MongoDB pods | [] |
| Name | Description | Value |
|---|---|---|
autoupdate.enabled | Enable auto update Helm chart's image | true |
autoupdate.scheduler | Schedule time to run cron job to update image | "0 * * * *" |
Specify each parameter using --set key=value[,key=value] argument to helm install. For example:
helm install \
--set persistence.storageClass=appsmith-pv \
stable-appsmith/appsmith --generate-name
The above command deploys Appsmith application and configure application to use storage class name appsmith-pv
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example:
helm install -f values.yaml stable-appsmith/appsmith --generate-name
Tip: You can use the default values.yaml
To change Appsmith configurations, you can use configuration UI in application or update value in values.yaml(The available configurations is listed below).
| Name | Value |
|---|---|
applicationConfig.APPSMITH_OAUTH2_GOOGLE_CLIENT_ID | "" |
applicationConfig.APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET | "" |
applicationConfig.APPSMITH_OAUTH2_GITHUB_CLIENT_ID | "" |
applicationConfig.APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET | "" |
applicationConfig.APPSMITH_OAUTH2_OIDC_CLIENT_ID | "" |
applicationConfig.APPSMITH_OAUTH2_OIDC_CLIENT_SECRET | "" |
applicationConfig.APPSMITH_CLIENT_LOG_LEVEL | "" |
applicationConfig.APPSMITH_MAIL_ENABLED | "" |
applicationConfig.APPSMITH_MAIL_HOST | "" |
applicationConfig.APPSMITH_MAIL_PORT | "" |
applicationConfig.APPSMITH_MAIL_USERNAME | "" |
applicationConfig.APPSMITH_MAIL_PASSWORD | "" |
applicationConfig.APPSMITH_MAIL_FROM | "" |
applicationConfig.APPSMITH_REPLY_TO | "" |
applicationConfig.APPSMITH_MAIL_SMTP_AUTH | "" |
applicationConfig.APPSMITH_MAIL_SMTP_TLS_ENABLED | "" |
applicationConfig.APPSMITH_DISABLE_TELEMETRY | "" |
applicationConfig.APPSMITH_RECAPTCHA_SITE_KEY | "" |
applicationConfig.APPSMITH_RECAPTCHA_SECRET_KEY | "" |
applicationConfig.APPSMITH_RECAPTCHA_ENABLED | "" |
applicationConfig.APPSMITH_MONGODB_URI | "" |
applicationConfig.APPSMITH_REDIS_URL | "" |
applicationConfig.APPSMITH_ENCRYPTION_PASSWORD | "" |
applicationConfig.APPSMITH_ENCRYPTION_SALT | "" |
applicationConfig.APPSMITH_CUSTOM_DOMAIN | "" |
applicationConfig.APPSMITH_FORM_LOGIN_DISABLED | "" |
applicationConfig.APPSMITH_SIGNUP_DISABLED | "" |
For example, to change the encryption salt configuration, you can run the following command:
helm install \
--set applicationConfig.APPSMITH_ENCRYPTION_SALT=123 \
stable-appsmith/appsmith --generate-name
helm install stable-appsmith/appsmith --generate-name \
--set ingress.enabled=true \
--set ingress.annotations."kubernetes\.io/ingress\.class"=nginx \
--set service.type=ClusterIP
helm upgrade command to upgrade the existing installationhelm upgrade stable-appsmith/appsmith appsmith \
--set ingress.enabled=true \
--set ingress.annotations."kubernetes\.io/ingress\.class"=nginx \
--set service.type=ClusterIP
# Or this command if you are using values.yaml file
helm upgrade --values values.yaml stable-appsmith/appsmith appsmith
If at any time you encounter an error during the installation process, reach out to [email protected] or join our Discord Server
If you know the error and would like to reinstall Appsmith, simply delete the installation folder and the templates folder and execute the script again
Review tests/README.md for details on how the chart is tested.