Skip to main content

Kubernetes (k8s)

This page provides steps to install Appsmith on a Kubernetes cluster using the Helm package manager.

How To Deploy Appsmith On Kubernetes

Prerequisites

  • At least 15 GB of free storage space.
  • 4 GB of RAM.

Before you begin

  1. Install Helm package manager on your local machine. See the official Helm documentation for your operating system.

  2. Install and configure kubectl to interact with your Kubernetes cluster. Follow the below guides available on the official Kubernetes documentation for instructions on how to install kubectl on your specific operating system:

  3. Setup a Kubernetes cluster. Follow these steps using a terminal to set up the cluster on AWS EKS:

    info

    You are free to choose your preferred platform for hosting the Kubernetes cluster. Make sure you have configured Kubeconfig and created a default storage class before proceeding with the Appsmith installation. If you face any issues, contact the support team using the chat widget at the bottom right of this page.

    a. Verify if you have access to AWS CLI with:

      aws sts get-caller-identity 

    The above command provides information related to your account and ARN, indicating that you can connect and access your Amazon account using a terminal.

    b. Create KubeConfig with:

    aws eks update-kubeconfig --region ap-south-1 --name CLUSTER_NAME  --profile <PROFILE_NAME>

    In the above command, add the profile name that has access to the EKS cluster to the --profile parameter.

    c. Test your Kubernetes configuration with:

    kubectl cluster-info

    The above command provides a summary of the current cluster configuration, including the Kubernetes master and other cluster information.

    d. Define a storage class.

    • For Kubernetes version earlier than 1.23, define the storage class with:

      kubectl apply -f - <<EOF
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
      name: gp2
      provisioner: kubernetes.io/aws-ebs
      EOF
    • For Kubernetes version 1.23 and later, define the storage class with:

      1. Create an IAM role by following the Amazon official documentation for Creating the Amazon EBS CSI driver IAM role.
      2. Add the Amazon Elastic Block Store (Amazon EBS) Container Storage Interface (CSI) driver chart repository with:
        helm repo add aws-ebs-csi-driver https://kubernetes-sigs.github.io/aws-ebs-csi-driver
      3. Update the Amazon EBS CSI driver repository with:
        helm repo update
      4. Install Amazon EBS CSI driver with:
        helm upgrade --install aws-ebs-csi-driver --namespace kube-system aws-ebs-csi-driver aws-ebs-csi-driver 
      5. Verify the Amazon EBS CSI driver installation with:
        kubectl get pods -n kube-system -l app.kubernetes.io/name=aws-ebs-csi-driver

Install Appsmith

  1. Create a folder named appsmith on your machine for deployment and data storage. Then, navigate to this folder using the cd command.

  2. Add the Appsmith chart repository with:

    helm repo add appsmith https://helm.appsmith.com
  3. Load the Appsmith chart repository with:

    helm repo update
  4. Generate the values.yaml file with:

    helm show values appsmith/appsmith  > values.yaml
  5. Deploy Appsmith with:

    helm install appsmith appsmith/appsmith -n appsmith --create-namespace -f values.yaml
  6. Get pod name with:

    kubectl get pods -n appsmith

    The above command displays the status of the pods. Proceed to the next step once the pod status is shown as RUNNING.

  7. To verify the installation locally, use the below command to forward the 8080 port to 80:

    kubectl --namespace appsmith port-forward appsmith-0 8080:80

    In above command, appsmith-0 is the Appsmith pod name.

  8. Open http://localhost:8080 and wait for the server to come up. This can take up to 5 minutes. Once the server is up and running, you can access Appsmith at http://localhost:8080. To expose Appsmith installation on internet, see the Expose K8s to Internet guide.

Troubleshooting

If you face issues, contact the support team using the chat widget at the bottom right of this page.

Further reading