From ae26d2c61158d77fb79f0933aa39038edf4e9497 Mon Sep 17 00:00:00 2001
From: geekup-legodevops <72587752+geekup-legodevops@users.noreply.github.com>
Date: Sat, 2 Oct 2021 13:16:07 +0700
Subject: [PATCH] Helm charts for Appsmith fat container (#7343)
---
deploy/helm/.helmignore | 23 ++
deploy/helm/Chart.lock | 6 +
deploy/helm/Chart.yaml | 20 ++
deploy/helm/README.md | 167 +++++++++++
deploy/helm/Setup-https.md | 94 +++++++
deploy/helm/charts/common-0.3.1.tgz | Bin 0 -> 4673 bytes
deploy/helm/images/helm-ssl-config.png | Bin 0 -> 198725 bytes
deploy/helm/templates/NOTES.txt | 22 ++
deploy/helm/templates/_helpers.tpl | 84 ++++++
deploy/helm/templates/autoupdate.yaml | 79 ++++++
deploy/helm/templates/deployment.yaml | 108 ++++++++
deploy/helm/templates/ingress.yaml | 69 +++++
deploy/helm/templates/namespace.yaml | 4 +
deploy/helm/templates/persistentVolume.yaml | 27 ++
.../helm/templates/persistentVolumeClaim.yaml | 16 ++
deploy/helm/templates/service.yaml | 35 +++
deploy/helm/templates/serviceaccount.yaml | 19 ++
deploy/helm/templates/storageClass.yaml | 39 +++
deploy/helm/templates/tls-secret.yaml | 50 ++++
deploy/helm/values.yaml | 260 ++++++++++++++++++
20 files changed, 1122 insertions(+)
create mode 100644 deploy/helm/.helmignore
create mode 100644 deploy/helm/Chart.lock
create mode 100644 deploy/helm/Chart.yaml
create mode 100644 deploy/helm/README.md
create mode 100644 deploy/helm/Setup-https.md
create mode 100644 deploy/helm/charts/common-0.3.1.tgz
create mode 100644 deploy/helm/images/helm-ssl-config.png
create mode 100644 deploy/helm/templates/NOTES.txt
create mode 100644 deploy/helm/templates/_helpers.tpl
create mode 100644 deploy/helm/templates/autoupdate.yaml
create mode 100644 deploy/helm/templates/deployment.yaml
create mode 100644 deploy/helm/templates/ingress.yaml
create mode 100644 deploy/helm/templates/namespace.yaml
create mode 100644 deploy/helm/templates/persistentVolume.yaml
create mode 100644 deploy/helm/templates/persistentVolumeClaim.yaml
create mode 100644 deploy/helm/templates/service.yaml
create mode 100644 deploy/helm/templates/serviceaccount.yaml
create mode 100644 deploy/helm/templates/storageClass.yaml
create mode 100644 deploy/helm/templates/tls-secret.yaml
create mode 100644 deploy/helm/values.yaml
diff --git a/deploy/helm/.helmignore b/deploy/helm/.helmignore
new file mode 100644
index 0000000000..0e8a0eb36f
--- /dev/null
+++ b/deploy/helm/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/deploy/helm/Chart.lock b/deploy/helm/Chart.lock
new file mode 100644
index 0000000000..5b164bbc3b
--- /dev/null
+++ b/deploy/helm/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: common
+ repository: https://charts.bitnami.com/bitnami
+ version: 0.3.1
+digest: sha256:a6d6b7927942884d4abd2291b1561b6c86db71aedeb08b33ccd5a4228a776257
+generated: "2021-09-09T10:54:25.247689+07:00"
diff --git a/deploy/helm/Chart.yaml b/deploy/helm/Chart.yaml
new file mode 100644
index 0000000000..7e8078a986
--- /dev/null
+++ b/deploy/helm/Chart.yaml
@@ -0,0 +1,20 @@
+annotations:
+ category: Application
+apiVersion: v2
+appVersion: "1.16.0"
+name: appsmith
+type: application
+dependencies:
+ # This dependency is used to render common declaration (tplvalues.render, storage.class, labels.standard)
+ # in Deployment, PVC, Service, ServiceAccount and TLS-Secret template
+ - name: common
+ version: 0.3.1
+ repository: https://charts.bitnami.com/bitnami
+description: Appsmith is an open source framework to build admin panels, CRUD apps and workflows. Build everything you need, 10x faster.
+maintainer:
+ - email: tech@appsmith.com
+ name: Appsmith
+sources:
+ - https://github.com/appsmithorg/appsmith
+ - https://www.appsmith.com/
+version: 1.3.0
diff --git a/deploy/helm/README.md b/deploy/helm/README.md
new file mode 100644
index 0000000000..2bc192adca
--- /dev/null
+++ b/deploy/helm/README.md
@@ -0,0 +1,167 @@
+
+# Appsmith
+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.
+## TL;DR
+---
+```
+helm repo add appsmith https://appsmithorg.github.io/appsmith
+
+helm repo update
+
+helm install appsmith/appsmith --generate-name
+```
+
+## Introduction
+---
+This chart bootstrap an [Appsmith](https://github.com/appsmithorg/appsmith) deployment on a [Kubernetes](kubernetes.io) cluster using [Helm](https://helm.sh) package manager.
+
+## Prerequisites
+---
+* Install Helm package manager: [https://helm.sh/docs/intro/install/](https://helm.sh/docs/intro/install/)
+* Ensure `kubectl` is installed and configured to connect to your cluster
+ * Install kubeclt: [kubernetes.io/vi/docs/tasks/tools/install-kubectl/](https://kubernetes.io/vi/docs/tasks/tools/install-kubectl/)
+ * Minikube: [Setup Kubectl](https://minikube.sigs.k8s.io/docs/handbook/kubectl/)
+ * Google Cloud Kubernetes: [Configuring cluster access for kubectl](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl)
+ * Aws EKS: [Create a kubeconfig for Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html)
+
+ * Microk8s: [Working with kubectl](https://microk8s.io/docs/working-with-kubectl)
+* Ensure you have a default storage class running on your cluster. Please follow one of below guideline to enable your default storage class in case of no existing one
+ * Minikube: [Enable addon default-storageclass](https://kubernetes.io/docs/tutorials/hello-minikube/#enable-addons)
+ * Google Cloud Kubernetes: [Setting up default storage class on GKE](https://cloud.google.com/anthos/clusters/docs/on-prem/1.3/how-to/default-storage-class)
+ * AWS EKS: [Create default storage class](https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html)
+ * Microk8s: [Enable storage](https://microk8s.io/docs/command-reference#heading--microk8s-enable)
+* Kubernetes NGINX Ingress Controller should be enable on your cluster by default. Please make sure that you install the right version for your cluster
+ * Minikube: [Set up Ingress on Minikube with the NGINX Ingress Controller](https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/)
+ * Google Cloud Kubernetes: [Ingress with NGINX controller on Google Kubernetes Engine](https://kubernetes.github.io/ingress-nginx/deploy/)
+ * AWS EKS: [Install NGINX Controller for AWS EKS](https://kubernetes.github.io/ingress-nginx/deploy/#network-load-balancer-nlb)
+ * Microk8s: [Add on: Ingress](https://microk8s.io/docs/addon-ingress)
+## Installing the Chart
+---
+To install the chart with the release `appsmith`
+```
+helm install appsmith/appsmith --generate-name
+```
+The command deploys Appsmith application on Kubernetes cluster in the default configuration. The [Parameters](https://github.com/appsmithorg/appsmith/tree/release/deploy/helm#paramters) section lists the parameters that can be configured during installation.
+## Uninstalling the Chart
+---
+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
+## 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.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 | `{}` |
+
+### 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.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 | `[]` |
+
+### Persistence parameters
+| Name | Description | Value |
+| ----------------------------------- | --------------------------------------------------------------------- | ------------------- |
+| `persistence.enabled` | Enable persistence using Persistent Volume Claims | `true` |
+| `persistence.storageClass` | Persistent Volume storage class | `""` |
+| `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:
+```
+helm install appsmith \
+--set persistence.storageClass=appsmith-pv \
+ deploy/helm
+```
+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 appsmith/appsmith --generate-name
+```
+
+*Tip: You can use the default [values.yaml](https://github.com/appsmithorg/appsmith/blob/release/deploy/helm/values.yaml)*
+
+## Troubleshooting
+If at any time you encounter an error during the installation process, reach out to support@appsmith.com 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
\ No newline at end of file
diff --git a/deploy/helm/Setup-https.md b/deploy/helm/Setup-https.md
new file mode 100644
index 0000000000..31f2c4ddc7
--- /dev/null
+++ b/deploy/helm/Setup-https.md
@@ -0,0 +1,94 @@
+## Introduction
+- Deploying Appsmith application on a Kubernetes cluster is easier with [Appsmith's Helm chart](). However, it is best practice to secure your web application with TLS certificates.
+
+- This guide will show you how to secure HTTP traffic with TLS and SSL certificates using [Cert Manager](https://cert-manager.io/).
+
+## Prerequisites
+- You should have a Kubernetes cluster running with [Helm v3.x](https://helm.sh/docs/intro/install/) installed.
+- Ensure `kubectl` is installed and configured to connect to your cluster:
+ - Install kubeclt: [kubernetes.io/vi/docs/tasks/tools/install-kubectl/](https://kubernetes.io/vi/docs/tasks/tools/install-kubectl/)
+ - Google Cloud Kubernetes: [Configuring cluster access for kubectl](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl)
+ * Aws EKS: [Create a kubeconfig for Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html)
+
+## Secure traffic with TLS and Let's Encrypt SSL certificates
+The Appsmith Helm chart comes with built-in support for Ingress routes and certificate management through [cert-manager](https://github.com/jetstack/cert-manager). This makes it easy to configure TLS support using certificates from a variety of certificate providers, including [Let's Encrypt](https://letsencrypt.org/).
+
+The steps below explain how to use Ingress routes and cert-manager to configure TLS for your Appsmith deployment using a free Let's Encrypt certificate:
+
+- Begin by installing the NGINX Ingress controller with Helm:
+```shell
+helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
+helm repo update
+
+helm install ingress-nginx ingress-nginx/ingress-nginx
+```
+- Obtain the LoadBalancer IP address using the command below. Note this IP address as you will use it to configure DNS in a later step.
+```
+kubectl get svc ingress-nginx-controller -o jsonpath="{.status.loadBalancer.ingress[0].hostname}"
+```
+*Tip: It may take some time for the load balancer IP address to be assigned, so you may need to wait a few minutes before the command above returns any output.*
+- Browse to the IP address and confirm that you see the default NGINX welcome page. This indicates that the NGINX Ingress controller is working.
+
+- Configure the DNS for your domain name by adding an A record pointing to the public IP address obtained in the previous steps.
+
+- Add the cert-manager repository, create a namespace and create CRDs:
+```
+helm repo add jetstack https://charts.jetstack.io
+
+kubectl create namespace cert-manager
+kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.crds.yaml
+```
+*Tip: When executing these commands on Google Kubernetes Engine (GKE), you may encounter permission errors. [Refer to the official cert-manager documentation for notes on how to elevate your permissions](https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html).*
+- Create a ClusterIssuer resource for Let's Encrypt certificates. Create a file named letsencrypt-prod.yaml with the following content. Replace the EMAIL-ADDRESS placeholder with a valid email address.
+```yaml
+apiVersion: cert-manager.io/v1
+kind: ClusterIssuer
+metadata:
+ name: letsencrypt-prod
+spec:
+ acme:
+ email: EMAIL-ADDRESS
+ server: https://acme-v02.api.letsencrypt.org/directory
+ privateKeySecretRef:
+ name: letsencrypt-prod
+ solvers:
+ - http01:
+ ingress:
+ class: nginx
+```
+- Apply the changes to the cluster:
+```
+kubectl apply -f letsencrypt-prod.yaml
+```
+- Install cert-manager with Helm and configure Let's Encrypt as the default Certificate Authority (CA):
+```
+helm install cert-manager --namespace cert-manager jetstack/cert-manager --version v1.5.3
+```
+- Install Appsmith using Helm chart with additional parameters to integrate with Ingress and cert-manager. Replace the DOMAIN placeholder with your domain name:
+```
+helm install appsmith/appsmith --generate-name \
+--set service.type=ClusterIP \
+--set ingress.enabled=true \
+--set ingress.tls=true \
+--set ingress.certManager=true \
+--set ingress.annotations."kubernetes\.io/ingress\.class"=nginx \
+--set ingress.annotations."cert-manager\.io/cluster-issuer"=letsencrypt-prod \
+--set ingress.hosts[0].host=DOMAIN \
+--set ingress.hosts[0].paths[0].path=/ \
+--set ingress.hosts[0].paths[0].pathType=ImplementationSpecific \
+--set ingress.certManagerTls[0].hosts[0]=DOMAIN \
+--set ingress.certManagerTls[0].secretName=letsencrypt-prod
+```
+After the deployment completes, visit the domain in your browser and you should see the Appsmith site over a secure TLS connection with a valid Let's Encrypt certificate.
+
+
+
+
+## Useful links
+
+To learn more about the topics discussed in this guide, use the links below:
+- [Appsmith Helm chart](https://github.com/appsmithorg/appsmith/blob/release/deploy/helm/README.md)
+- [Get Started with Kubernetes](https://kubernetes.io/docs/setup/)
+- [Kubernetes Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/)
+- [NGINX Ingress Controller documentation](https://github.com/kubernetes/ingress/tree/master/controllers/nginx)
+- [Annotations supported by various Ingress controllers](https://github.com/kubernetes/ingress/blob/master/docs/annotations.md)
\ No newline at end of file
diff --git a/deploy/helm/charts/common-0.3.1.tgz b/deploy/helm/charts/common-0.3.1.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..72e4aba3900d699bc18df6fe7f15096eb18f8ad9
GIT binary patch
literal 4673
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
DN|QR$
literal 0
HcmV?d00001
diff --git a/deploy/helm/images/helm-ssl-config.png b/deploy/helm/images/helm-ssl-config.png
new file mode 100644
index 0000000000000000000000000000000000000000..01a4cbcebd475ce7945f1443d5777d88a0b30755
GIT binary patch
literal 198725
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®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