Kubernetes
We provide an installation script that will help you configure Appsmith & deploy your app on a Kubernetes cluster

Installing Appsmith using Helm Charts

This chart bootstraps an Appsmith deployment on a Kubernetes cluster using Helm package manager.

Prerequisites

Installing the Chart

  1. 1.
    Add Appsmith into your repository using Helm.
1
helm repo add appsmith https://helm.appsmith.com
2
3
helm repo update
Copied!
2. Install the chart with the appsmith release.
1
helm install appsmith/appsmith --generate-name
Copied!
The command deploys the Appsmith application on the Kubernetes cluster in the default configuration. The Parameters section lists the configurable parameters during installation.

Uninstalling the Chart

To uninstall the appsmith release:
1
helm list
2
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
3
appsmith-1631069261 default 1 2021-09-09 11:24:40.152766 +0700 +07 deployed appsmith-1.3.0 1.16.0
4
5
helm uninstall appsmith-1631069261
Copied!
The command uninstalls the release and removes all Kubernetes resources associated with the chart.

Parameters

Global parameters

Name
Description
Value
global.namespaceOverride
Override the namespace for resource deployed by the chart
""
global.storageClass
Global StorageClass for Persistent Volume(s)
""

Common parameters

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
{}

Appsmith Image parameters

Name
Description
Value
image.registry
Appsmith image registry
index.docker.io
image.repository
Appsmith image repository
appsmith/appsmith-editor
image.tag
Appsmith image tag
latest
image.pullPolicy
Appsmith image pull policy
IfNotPresent

Appsmith deployment parameters

Name
Description
Value
strategyType
Appsmith deployment strategy type
RollingUpdate
schedulerName
Alternate scheduler
""
podAnnotations
Annotations for Appsmith pods
{}
podSecurityContext
Appsmith pods security context
{}
securityContext
Set security context
{}
resources.limits
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
{}

Appsmith namespace parameters

Name
Description
Value
namespace.create
Enable creation of Namespace
true

Appsmith service account parameters

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
{}

Traffic Exposure Parameters

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.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
""

Persistence parameters

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
{}

Auto-update chart's image

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:
1
helm install \
2
--set persistence.storageClass=appsmith-pv \
3
stable-appsmith/appsmith --generate-name
Copied!
The above command deploys the Appsmith application and configures the application to use the storage class nameappsmith-pv.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example:
1
helm install -f values.yaml stable-appsmith/appsmith --generate-name
Copied!
Tip: You can use the default values.yaml as a starting point for configuring this way.

Appsmith configuration

To change Appsmith configurations, you can update the values.yaml file (the available configurations are 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_CLIENT_LOG_LEVEL
""
applicationConfig.APPSMITH_GOOGLE_MAPS_API_KEY
""
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
""
For example, to change the encryption salt configuration, you can run the following command:
1
helm install \
2
--set applicationConfig.APPSMITH_ENCRYPTION_SALT=123 \
3
stable-appsmith/appsmith --generate-name
Copied!

Expose Appsmith

  • If you wish to publish your Appsmith to the world through the Internet, you will need to setup the Ingress controller firstly. Please refer to the section Kubernetes NGINX Ingress Controller in the Prerequisites.
  • In case of you have not install the Helm chart yet, you can run the below command to install it with exposing Appsmith:
    1
    helm install appsmith/appsmith --generate-name \
    2
    --set ingress.enabled=true \
    3
    --set ingress.annotations."kubernetes\.io/ingress\.class"=nginx \
    4
    --set service.type=ClusterIP
    Copied!
  • If you have installed Appsmith Helm chart, please run the helm upgrade command to upgrade the existing installation
    1
    helm upgrade --set ingress.enabled=true appsmith appsmith/appsmith
    2
    3
    # Or this command if you are using values.yaml file
    4
    helm upgrade --values values.yaml appsmith appsmith/appsmith
    Copied!

Updating Appsmith

Auto Update

  • In the default Appsmith helm installation the auto-update is disabled (Recommended). You have the option to enable auto-update for your Appsmith helm deployment by either:
    • Setting autoupdate.enabled to true in the values.yaml file, if you are using the values file.
    1
    helm upgrade --values values.yaml appsmith appsmith/appsmith
    Copied!
    • By passing the argument --set autoupdate.enabled=true to the helm install/upgrade command.
    1
    helm install appsmith/appsmith --generate-name \
    2
    --set ingress.enabled=true \
    3
    --set ingress.annotations."kubernetes\.io/ingress\.class"=nginx \
    4
    --set service.type=ClusterIP \
    5
    --set autoupdate.enabled=true
    Copied!

Manual Update

  • To manually update the Appsmith container image to the latest release, run the command: kubectl rollout restart statefulset appsmith

Troubleshooting

If you encounter any errors during this process, check out our guide on debugging deployment errors. If you are still facing any issues, please reach out to [email protected] or join our Discord Server to speak to the Appsmith team directly!

Further Reading

Last modified 13d ago