This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 5703560  Adding Pinot Presto Helm (#5358)
5703560 is described below

commit 57035609b65a1afbaa497e41d2c12dbd921d9b43
Author: Xiang Fu <[email protected]>
AuthorDate: Mon May 11 00:21:09 2020 -0700

    Adding Pinot Presto Helm (#5358)
---
 kubernetes/helm/index.yaml                         |  42 +--
 kubernetes/helm/pinot-0.2.0.tgz                    | Bin 102559 -> 23445 bytes
 kubernetes/helm/{ => pinot}/Chart.yaml             |   0
 kubernetes/helm/pinot/README.md                    | 402 +++++++++++++++++++++
 .../helm/{ => pinot}/charts/zookeeper-2.1.3.tgz    | Bin
 .../helm/{ => pinot}/pinot-github-events-setup.yml |   0
 .../helm/{ => pinot}/pinot-realtime-quickstart.yml |   0
 kubernetes/helm/{ => pinot}/query-pinot-data.sh    |   0
 kubernetes/helm/{ => pinot}/requirements.lock      |   0
 kubernetes/helm/{ => pinot}/requirements.yaml      |   0
 kubernetes/helm/{ => pinot}/templates/_helpers.tpl |   0
 .../{ => pinot}/templates/broker/configmap.yaml    |   0
 .../templates/broker/service-external.yaml         |   0
 .../templates/broker/service-headless.yaml         |   0
 .../helm/{ => pinot}/templates/broker/service.yaml |   0
 .../{ => pinot}/templates/broker/statefulset.yml   |   0
 .../templates/controller/configmap.yaml            |   0
 .../templates/controller/service-external.yaml     |   0
 .../templates/controller/service-headless.yaml     |   0
 .../{ => pinot}/templates/controller/service.yaml  |   0
 .../templates/controller/statefulset.yaml          |   0
 .../{ => pinot}/templates/server/configmap.yaml    |   0
 .../templates/server/service-headless.yaml         |   0
 .../helm/{ => pinot}/templates/server/service.yaml |   0
 .../{ => pinot}/templates/server/statefulset.yml   |   0
 kubernetes/helm/{ => pinot}/values.yaml            |   0
 kubernetes/helm/presto-0.2.0.tgz                   | Bin 0 -> 8299 bytes
 kubernetes/helm/presto-cli.sh                      |  28 --
 kubernetes/helm/{ => presto}/Chart.yaml            |  11 +-
 kubernetes/helm/presto/README.md                   | 232 ++++++++++++
 kubernetes/helm/{ => presto}/launch-presto-ui.sh   |   0
 kubernetes/helm/{ => presto}/pinot-presto-cli.sh   |   0
 kubernetes/helm/presto/presto-cli.sh               |   8 +
 .../helm/{ => presto}/presto-coordinator.yaml      |   0
 kubernetes/helm/{ => presto}/presto-worker.yaml    |   0
 kubernetes/helm/presto/templates/_helpers.tpl      |  91 +++++
 .../presto/templates/coordinator/configmap.yaml    |  60 +++
 .../templates/coordinator}/service-external.yaml   |  20 +-
 .../templates/coordinator}/service-headless.yaml   |  14 +-
 .../templates/coordinator}/service.yaml            |  14 +-
 .../presto/templates/coordinator/statefulset.yml   | 121 +++++++
 .../templates/worker}/configmap.yaml               |  30 +-
 .../templates/worker}/service-headless.yaml        |  14 +-
 .../templates/worker}/service.yaml                 |  14 +-
 .../helm/presto/templates/worker/statefulset.yml   | 121 +++++++
 kubernetes/helm/presto/values.yaml                 | 160 ++++++++
 46 files changed, 1280 insertions(+), 102 deletions(-)

diff --git a/kubernetes/helm/index.yaml b/kubernetes/helm/index.yaml
index 5ef2a22..d7c1eb3 100644
--- a/kubernetes/helm/index.yaml
+++ b/kubernetes/helm/index.yaml
@@ -3,7 +3,7 @@ entries:
   pinot:
   - apiVersion: v1
     appVersion: 0.2.0
-    created: "2020-05-04T00:59:04.094942-07:00"
+    created: "2020-05-10T01:58:56.42736-07:00"
     dependencies:
     - condition: pinot.zookeeper.enabled,zookeeper.enabled
       name: zookeeper
@@ -13,7 +13,7 @@ entries:
       to deliver scalable real time analytics with low latency. It can ingest 
data
       from offline data sources (such as Hadoop and flat files) as well as 
online
       sources (such as Kafka). Pinot is designed to scale horizontally.
-    digest: e2b52aff7c2bae33ea0bbc9335b94d218a94afc56a11388f1848d4726c0e8221
+    digest: a15cb08e2077d6e2893ea46212a5b769f303af83904681a95e550879fa22f870
     home: https://pinot.apache.org/
     keywords:
     - olap
@@ -29,26 +29,26 @@ entries:
     urls:
     - pinot-0.2.0.tgz
     version: 0.2.0
-  zookeeper:
+  presto:
   - apiVersion: v1
-    appVersion: 3.5.5
-    created: "2020-05-04T00:59:04.096461-07:00"
-    description: Centralized service for maintaining configuration 
information, naming,
-      providing distributed synchronization, and providing group services.
-    digest: ce79cf63a1284c16e6b615a3dea62e619ce99dea85419be5b46a8ee6ceec3b4e
-    home: https://zookeeper.apache.org/
-    icon: https://zookeeper.apache.org/images/zookeeper_small.gif
-    kubeVersion: ^1.10.0-0
+    appVersion: 0.2.0
+    created: "2020-05-10T01:58:56.428267-07:00"
+    description: Presto is an open source distributed SQL query engine for 
running
+      interactive analytic queries against data sources of all sizes ranging 
from
+      gigabytes to petabytes.
+    digest: d17eb6e0b1b3ba26e013325d7fb8da1c7a25fad35f37f955f4fbe402b5363b15
+    home: https://github.com/prestodb/presto
+    keywords:
+    - analytics
+    - database
+    - presto
     maintainers:
-    - email: [email protected]
-      name: lachie83
-    - email: [email protected]
-      name: kow3ns
-    name: zookeeper
+    - email: [email protected]
+      name: pinot-dev
+    name: presto
     sources:
-    - https://github.com/apache/zookeeper
-    - https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper
+    - https://github.com/apache/incubator-pinot/tree/master/kubernetes/helm
     urls:
-    - charts/zookeeper-2.1.3.tgz
-    version: 2.1.3
-generated: "2020-05-04T00:59:04.087389-07:00"
+    - presto-0.2.0.tgz
+    version: 0.2.0
+generated: "2020-05-10T01:58:56.423122-07:00"
diff --git a/kubernetes/helm/pinot-0.2.0.tgz b/kubernetes/helm/pinot-0.2.0.tgz
index 2e26faf..7ce06b5 100644
Binary files a/kubernetes/helm/pinot-0.2.0.tgz and 
b/kubernetes/helm/pinot-0.2.0.tgz differ
diff --git a/kubernetes/helm/Chart.yaml b/kubernetes/helm/pinot/Chart.yaml
similarity index 100%
copy from kubernetes/helm/Chart.yaml
copy to kubernetes/helm/pinot/Chart.yaml
diff --git a/kubernetes/helm/pinot/README.md b/kubernetes/helm/pinot/README.md
new file mode 100644
index 0000000..12e7ab7
--- /dev/null
+++ b/kubernetes/helm/pinot/README.md
@@ -0,0 +1,402 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# Pinot Quickstart on Kubernetes with Helm
+
+## Prerequisite
+
+- kubectl (<https://kubernetes.io/docs/tasks/tools/install-kubectl>)
+- Helm (<https://helm.sh/docs/using_helm/#installing-helm>)
+- Configure kubectl to connect to the Kubernetes cluster.
+  - Skip to [Section: How to setup a Pinot cluster for demo](#How to setup a 
Pinot cluster for demo) if a k8s cluster is already setup.
+
+
+## (Optional) Setup a Kubernetes cluster on Amazon Elastic Kubernetes Service 
(Amazon EKS)
+
+### (Optional) Create a new k8s cluster on AWS EKS
+
+- Install AWS CLI 
(<https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html#install-tool-bundled>)
+- Install AWS-IAM-AUTHENTICATOR 
(<https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html>)
+- Install eksctl 
(<https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html#installing-eksctl>)
+
+- Login to your AWS account.
+
+```bash
+aws configure
+```
+
+Note that environment variables `AWS_ACCESS_KEY_ID` and 
`AWS_SECRET_ACCESS_KEY` will override the aws configuration in file 
`~/.aws/credentials`.
+
+- Create an EKS cluster
+
+Please modify the parameters in the example command below:
+
+```bash
+eksctl create cluster \
+--name pinot-quickstart \
+--version 1.14 \
+--region us-west-2 \
+--nodegroup-name standard-workers \
+--node-type t3.small \
+--nodes 3 \
+--nodes-min 3 \
+--nodes-max 4 \
+--node-ami auto
+```
+You can monitor cluster status by command:
+
+```bash
+EKS_CLUSTER_NAME=pinot-quickstart
+aws eks describe-cluster --name ${EKS_CLUSTER_NAME}
+```
+
+Once the cluster is in `ACTIVE` status, it's ready to be used.
+
+### (Optional) How to connect to an existing cluster
+
+Simply run below command to get the credential for the cluster you just 
created or your existing cluster.
+
+```bash
+EKS_CLUSTER_NAME=pinot-quickstart
+aws eks update-kubeconfig --name ${EKS_CLUSTER_NAME}
+```
+
+To verify the connection, you can run
+```bash
+kubectl get nodes
+```
+
+## (Optional) Setup a Kubernetes cluster on Google Kubernetes Engine(GKE)
+
+### (Optional) Create a new k8s cluster on GKE
+
+- Google Cloud SDK (<https://cloud.google.com/sdk/install>)
+- Enable Google Cloud Account and create a project, e.g. `pinot-demo`.
+  - `pinot-demo` will be used as example value for `${GCLOUD_PROJECT}` 
variable in script example.
+  - `[email protected]` will be used as example value for 
`${GCLOUD_EMAIL}`.
+
+Below script will:
+
+- Create a gCloud cluster `pinot-quickstart`
+- Request 2 servers of type `n1-standard-8` for demo.
+
+Please fill both environment variables: `${GCLOUD_PROJECT}` and 
`${GCLOUD_EMAIL}` with your gcloud project and gcloud account email in below 
script.
+
+```bash
+GCLOUD_PROJECT=[your gcloud project name]
+GCLOUD_EMAIL=[Your gcloud account email]
+./setup_gke.sh
+```
+
+E.g.
+
+```bash
+GCLOUD_PROJECT=pinot-demo
[email protected]
+./setup_gke.sh
+```
+
+### (Optional) How to connect to an existing cluster
+
+Simply run below command to get the credential for the cluster you just 
created or your existing cluster.
+Please modify the Env variables `${GCLOUD_PROJECT}`, `${GCLOUD_ZONE}`, 
`${GCLOUD_CLUSTER}` accordingly in below script.
+
+```bash
+GCLOUD_PROJECT=pinot-demo
+GCLOUD_ZONE=us-west1-b
+GCLOUD_CLUSTER=pinot-quickstart
+gcloud container clusters get-credentials ${GCLOUD_CLUSTER} --zone 
${GCLOUD_ZONE} --project ${GCLOUD_PROJECT}
+```
+
+
+## (Optional) Setup a Kubernetes cluster on Microsoft Azure
+
+### (Optional) Create a new k8s cluster on Azure
+
+- Install Azure CLI 
(<https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest>)
+- Login to your Azure account.
+
+```bash
+az login
+```
+
+- Create Resource Group
+
+```bash
+AKS_RESOURCE_GROUP=pinot-demo
+AKS_RESOURCE_GROUP_LOCATION=eastus
+az group create --name ${AKS_RESOURCE_GROUP} --location 
${AKS_RESOURCE_GROUP_LOCATION}
+```
+
+- Create an AKS cluster
+
+```bash
+AKS_RESOURCE_GROUP=pinot-demo
+AKS_CLUSTER_NAME=pinot-quickstart
+az aks create --resource-group ${AKS_RESOURCE_GROUP}  --name 
${AKS_CLUSTER_NAME} --node-count 3
+```
+
+(Optional) Please register default provider if above command failed for error: 
`MissingSubscriptionRegistration`
+
+```bash
+az provider register --namespace Microsoft.Network
+```
+
+### (Optional) How to connect to an existing cluster
+
+Simply run below command to get the credential for the cluster you just 
created or your existing cluster.
+
+```bash
+AKS_RESOURCE_GROUP=pinot-demo
+AKS_CLUSTER_NAME=pinot-quickstart
+az aks get-credentials --resource-group ${AKS_RESOURCE_GROUP} --name 
${AKS_CLUSTER_NAME}
+```
+
+To verify the connection, you can run
+```bash
+kubectl get nodes
+```
+
+## How to setup a Pinot cluster for demo
+
+### Update helm dependency
+
+```bash
+helm dependency update
+```
+
+### Start Pinot with Helm
+
+- For helm v3.1.2
+
+```bash
+kubectl create ns pinot-quickstart
+helm install pinot -n pinot-quickstart .
+```
+
+- For helm v3.0.0
+
+```bash
+kubectl create ns pinot-quickstart
+helm install -n pinot-quickstart pinot .
+```
+
+- For helm v2.12.1
+
+If cluster is just initialized, ensure helm is initialized by running:
+
+```bash
+helm init --service-account tiller
+```
+
+Then deploy pinot cluster by:
+
+```bash
+helm install --namespace "pinot-quickstart" --name "pinot" .
+```
+
+#### Troubleshooting (For helm v2.12.1)
+- Error: Please run below command if encountering issue:
+
+```
+Error: could not find tiller".
+```
+
+- Resolution:
+
+```bash
+kubectl -n kube-system delete deployment tiller-deploy
+kubectl -n kube-system delete service/tiller-deploy
+helm init --service-account tiller
+```
+
+- Error: Please run below command if encountering permission issue:
+
+```Error: release pinot failed: namespaces "pinot-quickstart" is forbidden: 
User "system:serviceaccount:kube-system:default" cannot get resource 
"namespaces" in API group "" in the namespace "pinot-quickstart"```
+
+- Resolution:
+
+```bash
+kubectl apply -f helm-rbac.yaml
+```
+
+#### To check deployment status
+
+```bash
+kubectl get all -n pinot-quickstart
+```
+
+### Pinot Realtime QuickStart
+
+#### Bring up a Kafka Cluster for realtime data ingestion
+
+- For helm v3.0.0
+
+```bash
+helm repo add incubator 
http://storage.googleapis.com/kubernetes-charts-incubator
+helm install -n pinot-quickstart kafka incubator/kafka --set replicas=1
+```
+
+- For helm v2.12.1
+
+```bash
+helm repo add incubator 
http://storage.googleapis.com/kubernetes-charts-incubator
+helm install --namespace "pinot-quickstart"  --name kafka incubator/kafka 
--set replicas=1
+```
+
+#### Create Kafka topic
+
+```bash
+kubectl -n pinot-quickstart exec kafka-0 -- kafka-topics --zookeeper 
kafka-zookeeper:2181 --topic flights-realtime --create --partitions 1 
--replication-factor 1
+kubectl -n pinot-quickstart exec kafka-0 -- kafka-topics --zookeeper 
kafka-zookeeper:2181 --topic flights-realtime-avro --create --partitions 1 
--replication-factor 1
+```
+
+#### Load data into Kafka and create Pinot schema/table
+
+```bash
+kubectl apply -f pinot-realtime-quickstart.yml
+```
+
+### How to query pinot data
+
+Please use below script to do local port-forwarding and open Pinot query 
console on your web browser.
+
+```bash
+./query-pinot-data.sh
+```
+
+## Configuring the Chart
+
+This chart includes a ZooKeeper chart as a dependency to the Pinot
+cluster in its `requirement.yaml` by default. The chart can be customized 
using the
+following configurable parameters:
+
+| Parameter                                      | Description                 
                                                                                
                                                               | Default        
                                                    |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `image.repository`                             | Pinot Container image repo  
                                                                                
                                                               | 
`apachepinot/pinot`                                                |
+| `image.tag`                                    | Pinot Container image tag   
                                                                                
                                                               | 
`0.3.0-SNAPSHOT`                                                   |
+| `image.pullPolicy`                             | Pinot Container image pull 
policy                                                                          
                                                                | 
`IfNotPresent`                                                     |
+| `cluster.name`                                 | Pinot Cluster name          
                                                                                
                                                               | 
`pinot-quickstart`                                                 |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `controller.name`                              | Name of Pinot Controller    
                                                                                
                                                               | `controller`   
                                                    |
+| `controller.port`                              | Pinot controller port       
                                                                                
                                                               | `9000`         
                                                    |
+| `controller.replicaCount`                      | Pinot controller replicas   
                                                                                
                                                               | `1`            
                                                    |
+| `controller.data.dir`                          | Pinot controller data 
directory, should be same as `controller.persistence.mountPath` or a sub 
directory of it                                                             | 
`/var/pinot/controller/data`                                       |
+| `controller.vip.host`                          | Pinot Vip host              
                                                                                
                                                               | 
`pinot-controller`                                                 |
+| `controller.vip.port`                          | Pinot Vip port              
                                                                                
                                                               | `9000`         
                                                    |
+| `controller.persistence.enabled`               | Use a PVC to persist Pinot 
Controller data                                                                 
                                                                | `true`        
                                                     |
+| `controller.persistence.accessMode`            | Access mode of data volume  
                                                                                
                                                               | 
`ReadWriteOnce`                                                    |
+| `controller.persistence.size`                  | Size of data volume         
                                                                                
                                                               | `1G`           
                                                    |
+| `controller.persistence.mountPath`             | Mount path of controller 
data volume                                                                     
                                                                  | 
`/var/pinot/controller/data`                                       |
+| `controller.persistence.storageClass`          | Storage class of backing 
PVC                                                                             
                                                                  | `""`        
                                                       |
+| `controller.jvmOpts`                           | Pinot Controller JVM 
Options                                                                         
                                                                      | 
`-Xms256M -Xmx1G`                                                  |
+| `controller.log4j2ConfFile`                    | Pinot Controller log4j2 
configuration file                                                              
                                                                   | 
`/opt/pinot/conf/pinot-controller-log4j2.xml`                      |
+| `controller.pluginsDir`                        | Pinot Controller plugins 
directory                                                                       
                                                                  | 
`/opt/pinot/plugins`                                               |
+| `controller.service.port`                      | Service Port                
                                                                                
                                                               | `9000`         
                                                    |
+| `controller.external.enabled`                  | If True, exposes Pinot 
Controller externally                                                           
                                                                    | `true`    
                                                         |
+| `controller.external.type`                     | Service Type                
                                                                                
                                                               | `LoadBalancer` 
                                                    |
+| `controller.external.port`                     | Service Port                
                                                                                
                                                               | `9000`         
                                                    |
+| `controller.resources`                         | Pinot Controller resource 
requests and limits                                                             
                                                                 | `{}`         
                                                      |
+| `controller.nodeSelector`                      | Node labels for controller 
pod assignment                                                                  
                                                                | `{}`          
                                                     |
+| `controller.affinity`                          | Defines affinities and 
anti-affinities for pods as defined in: 
<https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity>
 preferences | `{}`                                                             
  |
+| `controller.tolerations`                       | List of node tolerations 
for the pods. 
<https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/>       
                                                    | `[]`                      
                                         |
+| `controller.podAnnotations`                    | Annotations to be added to 
controller pod                                                                  
                                                                | `{}`          
                                                     |
+| `controller.updateStrategy.type`               | StatefulSet update strategy 
to use.                                                                         
                                                               | 
`RollingUpdate`                                                    |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `broker.name`                                  | Name of Pinot Broker        
                                                                                
                                                               | `broker`       
                                                    |
+| `broker.port`                                  | Pinot broker port           
                                                                                
                                                               | `8099`         
                                                    |
+| `broker.replicaCount`                          | Pinot broker replicas       
                                                                                
                                                               | `1`            
                                                    |
+| `broker.jvmOpts`                               | Pinot Broker JVM Options    
                                                                                
                                                               | `-Xms256M 
-Xmx1G`                                                  |
+| `broker.log4j2ConfFile`                        | Pinot Broker log4j2 
configuration file                                                              
                                                                       | 
`/opt/pinot/conf/pinot-broker-log4j2.xml`                          |
+| `broker.pluginsDir`                            | Pinot Broker plugins 
directory                                                                       
                                                                      | 
`/opt/pinot/plugins`                                               |
+| `broker.service.port`                          | Service Port                
                                                                                
                                                               | `8099`         
                                                    |
+| `broker.external.enabled`                      | If True, exposes Pinot 
Broker externally                                                               
                                                                    | `true`    
                                                         |
+| `broker.external.type`                         | External service Type       
                                                                                
                                                               | `LoadBalancer` 
                                                    |
+| `broker.external.port`                         | External service Port       
                                                                                
                                                               | `8099`         
                                                    |
+| `broker.routingTable.builderClass`             | Routing Table Builder Class 
                                                                                
                                                               | `random`       
                                                    |
+| `broker.resources`                             | Pinot Broker resource 
requests and limits                                                             
                                                                     | `{}`     
                                                          |
+| `broker.nodeSelector`                          | Node labels for broker pod 
assignment                                                                      
                                                                | `{}`          
                                                     |
+| `broker.affinity`                              | Defines affinities and 
anti-affinities for pods as defined in: 
<https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity>
 preferences | `{}`                                                             
  |
+| `broker.tolerations`                           | List of node tolerations 
for the pods. 
<https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/>       
                                                    | `[]`                      
                                         |
+| `broker.podAnnotations`                        | Annotations to be added to 
broker pod                                                                      
                                                                | `{}`          
                                                     |
+| `broker.updateStrategy.type`                   | StatefulSet update strategy 
to use.                                                                         
                                                               | 
`RollingUpdate`                                                    |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `server.name`                                  | Name of Pinot Server        
                                                                                
                                                               | `server`       
                                                    |
+| `server.port.netty`                            | Pinot server netty port     
                                                                                
                                                               | `8098`         
                                                    |
+| `server.port.admin`                            | Pinot server admin port     
                                                                                
                                                               | `8097`         
                                                    |
+| `server.replicaCount`                          | Pinot server replicas       
                                                                                
                                                               | `1`            
                                                    |
+| `server.dataDir`                               | Pinot server data 
directory, should be same as `server.persistence.mountPath` or a sub directory 
of it                                                                     | 
`/var/pinot/server/data/index`                                     |
+| `server.segmentTarDir`                         | Pinot server segment 
directory, should be same as `server.persistence.mountPath` or a sub directory 
of it                                                                  | 
`/var/pinot/server/data/segments`                                  |
+| `server.persistence.enabled`                   | Use a PVC to persist Pinot 
Server data                                                                     
                                                                | `true`        
                                                     |
+| `server.persistence.accessMode`                | Access mode of data volume  
                                                                                
                                                               | 
`ReadWriteOnce`                                                    |
+| `server.persistence.size`                      | Size of data volume         
                                                                                
                                                               | `4G`           
                                                    |
+| `server.persistence.mountPath`                 | Mount path of server data 
volume                                                                          
                                                                 | 
`/var/pinot/server/data`                                           |
+| `server.persistence.storageClass`              | Storage class of backing 
PVC                                                                             
                                                                  | `""`        
                                                       |
+| `server.jvmOpts`                               | Pinot Server JVM Options    
                                                                                
                                                               | `-Xms512M 
-Xmx1G`                                                  |
+| `server.log4j2ConfFile`                        | Pinot Server log4j2 
configuration file                                                              
                                                                       | 
`/opt/pinot/conf/pinot-server-log4j2.xml`                          |
+| `server.pluginsDir`                            | Pinot Server plugins 
directory                                                                       
                                                                      | 
`/opt/pinot/plugins`                                               |
+| `server.service.port`                          | Service Port                
                                                                                
                                                               | `8098`         
                                                    |
+| `server.resources`                             | Pinot Server resource 
requests and limits                                                             
                                                                     | `{}`     
                                                          |
+| `server.nodeSelector`                          | Node labels for server pod 
assignment                                                                      
                                                                | `{}`          
                                                     |
+| `server.affinity`                              | Defines affinities and 
anti-affinities for pods as defined in: 
<https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity>
 preferences | `{}`                                                             
  |
+| `server.tolerations`                           | List of node tolerations 
for the pods. 
<https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/>       
                                                    | `[]`                      
                                         |
+| `server.podAnnotations`                        | Annotations to be added to 
server pod                                                                      
                                                                | `{}`          
                                                     |
+| `server.updateStrategy.type`                   | StatefulSet update strategy 
to use.                                                                         
                                                               | 
`RollingUpdate`                                                    |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `zookeeper.enabled`                            | If True, installs Zookeeper 
Chart                                                                           
                                                               | `true`         
                                                    |
+| `zookeeper.resources`                          | Zookeeper resource requests 
and limits                                                                      
                                                               | `{}`           
                                                    |
+| `zookeeper.env`                                | Environmental variables 
provided to Zookeeper Zookeeper                                                 
                                                                   | 
`{ZK_HEAP_SIZE: "256M"}`                                           |
+| `zookeeper.storage`                            | Zookeeper Persistent volume 
size                                                                            
                                                               | `2Gi`          
                                                    |
+| `zookeeper.image.PullPolicy`                   | Zookeeper Container pull 
policy                                                                          
                                                                  | 
`IfNotPresent`                                                     |
+| `zookeeper.url`                                | URL of Zookeeper Cluster 
(unneeded if installing Zookeeper Chart)                                        
                                                                  | `""`        
                                                       |
+| `zookeeper.port`                               | Port of Zookeeper Cluster   
                                                                                
                                                               | `2181`         
                                                    |
+| `zookeeper.affinity`                           | Defines affinities and 
anti-affinities for pods as defined in: 
<https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity>
 preferences | `{}`                                                             
  |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+
+Specify parameters using `--set key=value[,key=value]` argument to `helm 
install`
+
+```bash
+helm install --name pinot -f values.yaml . --set server.replicaCount=2
+```
+
+Alternatively a YAML file that specifies the values for the parameters can be 
provided like this:
+
+```bash
+helm install --name pinot -f values.yaml .
+```
+
+If you are using GKE, Create a storageClass:
+
+```
+kubectl apply -f gke-ssd.yaml
+```
+
+or If you want to use pd-standard storageClass:
+
+```bash
+kubectl apply -f gke-pd.yaml
+```
+
+## How to clean up Pinot deployment
+
+```bash
+kubectl delete ns pinot-quickstart
+```
diff --git a/kubernetes/helm/charts/zookeeper-2.1.3.tgz 
b/kubernetes/helm/pinot/charts/zookeeper-2.1.3.tgz
similarity index 100%
rename from kubernetes/helm/charts/zookeeper-2.1.3.tgz
rename to kubernetes/helm/pinot/charts/zookeeper-2.1.3.tgz
diff --git a/kubernetes/helm/pinot-github-events-setup.yml 
b/kubernetes/helm/pinot/pinot-github-events-setup.yml
similarity index 100%
rename from kubernetes/helm/pinot-github-events-setup.yml
rename to kubernetes/helm/pinot/pinot-github-events-setup.yml
diff --git a/kubernetes/helm/pinot-realtime-quickstart.yml 
b/kubernetes/helm/pinot/pinot-realtime-quickstart.yml
similarity index 100%
rename from kubernetes/helm/pinot-realtime-quickstart.yml
rename to kubernetes/helm/pinot/pinot-realtime-quickstart.yml
diff --git a/kubernetes/helm/query-pinot-data.sh 
b/kubernetes/helm/pinot/query-pinot-data.sh
similarity index 100%
rename from kubernetes/helm/query-pinot-data.sh
rename to kubernetes/helm/pinot/query-pinot-data.sh
diff --git a/kubernetes/helm/requirements.lock 
b/kubernetes/helm/pinot/requirements.lock
similarity index 100%
rename from kubernetes/helm/requirements.lock
rename to kubernetes/helm/pinot/requirements.lock
diff --git a/kubernetes/helm/requirements.yaml 
b/kubernetes/helm/pinot/requirements.yaml
similarity index 100%
rename from kubernetes/helm/requirements.yaml
rename to kubernetes/helm/pinot/requirements.yaml
diff --git a/kubernetes/helm/templates/_helpers.tpl 
b/kubernetes/helm/pinot/templates/_helpers.tpl
similarity index 100%
rename from kubernetes/helm/templates/_helpers.tpl
rename to kubernetes/helm/pinot/templates/_helpers.tpl
diff --git a/kubernetes/helm/templates/broker/configmap.yaml 
b/kubernetes/helm/pinot/templates/broker/configmap.yaml
similarity index 100%
rename from kubernetes/helm/templates/broker/configmap.yaml
rename to kubernetes/helm/pinot/templates/broker/configmap.yaml
diff --git a/kubernetes/helm/templates/broker/service-external.yaml 
b/kubernetes/helm/pinot/templates/broker/service-external.yaml
similarity index 100%
rename from kubernetes/helm/templates/broker/service-external.yaml
rename to kubernetes/helm/pinot/templates/broker/service-external.yaml
diff --git a/kubernetes/helm/templates/broker/service-headless.yaml 
b/kubernetes/helm/pinot/templates/broker/service-headless.yaml
similarity index 100%
rename from kubernetes/helm/templates/broker/service-headless.yaml
rename to kubernetes/helm/pinot/templates/broker/service-headless.yaml
diff --git a/kubernetes/helm/templates/broker/service.yaml 
b/kubernetes/helm/pinot/templates/broker/service.yaml
similarity index 100%
copy from kubernetes/helm/templates/broker/service.yaml
copy to kubernetes/helm/pinot/templates/broker/service.yaml
diff --git a/kubernetes/helm/templates/broker/statefulset.yml 
b/kubernetes/helm/pinot/templates/broker/statefulset.yml
similarity index 100%
rename from kubernetes/helm/templates/broker/statefulset.yml
rename to kubernetes/helm/pinot/templates/broker/statefulset.yml
diff --git a/kubernetes/helm/templates/controller/configmap.yaml 
b/kubernetes/helm/pinot/templates/controller/configmap.yaml
similarity index 100%
copy from kubernetes/helm/templates/controller/configmap.yaml
copy to kubernetes/helm/pinot/templates/controller/configmap.yaml
diff --git a/kubernetes/helm/templates/controller/service-external.yaml 
b/kubernetes/helm/pinot/templates/controller/service-external.yaml
similarity index 100%
copy from kubernetes/helm/templates/controller/service-external.yaml
copy to kubernetes/helm/pinot/templates/controller/service-external.yaml
diff --git a/kubernetes/helm/templates/controller/service-headless.yaml 
b/kubernetes/helm/pinot/templates/controller/service-headless.yaml
similarity index 100%
rename from kubernetes/helm/templates/controller/service-headless.yaml
rename to kubernetes/helm/pinot/templates/controller/service-headless.yaml
diff --git a/kubernetes/helm/templates/controller/service.yaml 
b/kubernetes/helm/pinot/templates/controller/service.yaml
similarity index 100%
rename from kubernetes/helm/templates/controller/service.yaml
rename to kubernetes/helm/pinot/templates/controller/service.yaml
diff --git a/kubernetes/helm/templates/controller/statefulset.yaml 
b/kubernetes/helm/pinot/templates/controller/statefulset.yaml
similarity index 100%
rename from kubernetes/helm/templates/controller/statefulset.yaml
rename to kubernetes/helm/pinot/templates/controller/statefulset.yaml
diff --git a/kubernetes/helm/templates/server/configmap.yaml 
b/kubernetes/helm/pinot/templates/server/configmap.yaml
similarity index 100%
rename from kubernetes/helm/templates/server/configmap.yaml
rename to kubernetes/helm/pinot/templates/server/configmap.yaml
diff --git a/kubernetes/helm/templates/server/service-headless.yaml 
b/kubernetes/helm/pinot/templates/server/service-headless.yaml
similarity index 100%
copy from kubernetes/helm/templates/server/service-headless.yaml
copy to kubernetes/helm/pinot/templates/server/service-headless.yaml
diff --git a/kubernetes/helm/templates/server/service.yaml 
b/kubernetes/helm/pinot/templates/server/service.yaml
similarity index 100%
rename from kubernetes/helm/templates/server/service.yaml
rename to kubernetes/helm/pinot/templates/server/service.yaml
diff --git a/kubernetes/helm/templates/server/statefulset.yml 
b/kubernetes/helm/pinot/templates/server/statefulset.yml
similarity index 100%
rename from kubernetes/helm/templates/server/statefulset.yml
rename to kubernetes/helm/pinot/templates/server/statefulset.yml
diff --git a/kubernetes/helm/values.yaml b/kubernetes/helm/pinot/values.yaml
similarity index 100%
rename from kubernetes/helm/values.yaml
rename to kubernetes/helm/pinot/values.yaml
diff --git a/kubernetes/helm/presto-0.2.0.tgz b/kubernetes/helm/presto-0.2.0.tgz
new file mode 100644
index 0000000..f495056
Binary files /dev/null and b/kubernetes/helm/presto-0.2.0.tgz differ
diff --git a/kubernetes/helm/presto-cli.sh b/kubernetes/helm/presto-cli.sh
deleted file mode 100644
index 135c529..0000000
--- a/kubernetes/helm/presto-cli.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-if [[ $(nc -z  localhost 8080) != 0 ]]; then
-  kubectl port-forward service/presto-coordinator 8080:8080 -n 
pinot-quickstart > /dev/null &
-fi
-sleep 2
-open http://localhost:8080/
-
-# Just for blocking
-tail -f /dev/null
-pkill -f "kubectl port-forward sservice/presto-coordinator 8080:8080 -n 
pinot-quickstart"
diff --git a/kubernetes/helm/Chart.yaml b/kubernetes/helm/presto/Chart.yaml
similarity index 69%
rename from kubernetes/helm/Chart.yaml
rename to kubernetes/helm/presto/Chart.yaml
index 0bfa2c6..167994f 100644
--- a/kubernetes/helm/Chart.yaml
+++ b/kubernetes/helm/presto/Chart.yaml
@@ -19,17 +19,16 @@
 
 apiVersion: v1
 appVersion: 0.2.0
-name: pinot
-description: Apache Pinot is a realtime distributed OLAP datastore, which is 
used to deliver scalable real time analytics with low latency. It can ingest 
data from offline data sources (such as Hadoop and flat files) as well as 
online sources (such as Kafka). Pinot is designed to scale horizontally.
+name: presto
+description: Presto is an open source distributed SQL query engine for running 
interactive analytic queries against data sources of all sizes ranging from 
gigabytes to petabytes.
 version: 0.2.0
 keywords:
-  - olap
   - analytics
   - database
-  - pinot
-home: https://pinot.apache.org/
+  - presto
+home: https://github.com/prestodb/presto
 sources:
-  - https://github.com/apache/incubator-pinot
+  - https://github.com/apache/incubator-pinot/tree/master/kubernetes/helm
 maintainers:
   - name: pinot-dev
     email: [email protected]
diff --git a/kubernetes/helm/presto/README.md b/kubernetes/helm/presto/README.md
new file mode 100644
index 0000000..52a81b6
--- /dev/null
+++ b/kubernetes/helm/presto/README.md
@@ -0,0 +1,232 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# Pinot Presto Quickstart on Kubernetes with Helm
+
+## Prerequisite
+
+- kubectl (<https://kubernetes.io/docs/tasks/tools/install-kubectl>)
+- Helm (<https://helm.sh/docs/using_helm/#installing-helm>)
+- Configure kubectl to connect to the Kubernetes cluster.
+- An already Setup Pinot demo cluster.
+
+## How to setup a Presto cluster for demo
+
+### Start Presto with Helm
+
+Below command will start one presto coordinator and one presto worker as an 
example.
+
+```bash
+helm install presto -n pinot-quickstart .
+```
+
+#### To check deployment status
+
+```bash
+kubectl get all -n pinot-quickstart
+```
+
+### Presto UI
+Please use below script to do local port-forwarding and open Presto UI on your 
web browser.
+```bash
+./launch-presto-ui.sh
+```
+
+### Query Presto using Presto CLI
+
+Once Presto is deployed, you could run below command.
+
+```bash
+./pinot-presto-cli.sh
+```
+
+or with your own command with custom parameters.
+
+```bash
+./presto-cli.sh --server localhost:8080 --catalog pinot --schema default
+```
+
+### Sample queries to execute
+
+- List all catalogs
+
+```
+presto:default> show catalogs;
+```
+```
+ Catalog
+---------
+ pinot
+ system
+(2 rows)
+
+Query 20191112_050827_00003_xkm4g, FINISHED, 1 node
+Splits: 19 total, 19 done (100.00%)
+0:01 [0 rows, 0B] [0 rows/s, 0B/s]
+
+```
+
+- List All tables
+
+```
+presto:default> show tables;
+```
+```
+    Table
+--------------
+ airlinestats
+(1 row)
+
+Query 20191112_050907_00004_xkm4g, FINISHED, 1 node
+Splits: 19 total, 19 done (100.00%)
+0:01 [1 rows, 29B] [1 rows/s, 41B/s]
+```
+
+- Show schema
+
+```
+presto:default> DESCRIBE pinot.dontcare.airlinestats;
+```
+```
+        Column        |  Type   | Extra | Comment
+----------------------+---------+-------+---------
+ flightnum            | integer |       |
+ origin               | varchar |       |
+ quarter              | integer |       |
+ lateaircraftdelay    | integer |       |
+ divactualelapsedtime | integer |       |
+......
+
+Query 20191112_051021_00005_xkm4g, FINISHED, 1 node
+Splits: 19 total, 19 done (100.00%)
+0:02 [80 rows, 6.06KB] [35 rows/s, 2.66KB/s]
+```
+
+- Count total documents
+
+```
+presto:default> select count(*) as cnt from pinot.dontcare.airlinestats limit 
10;
+```
+```
+ cnt
+------
+ 9745
+(1 row)
+
+Query 20191112_051114_00006_xkm4g, FINISHED, 1 node
+Splits: 17 total, 17 done (100.00%)
+0:00 [1 rows, 8B] [2 rows/s, 19B/s]
+```
+
+Then you could verify the new worker nodes are added by:
+
+```bash
+presto:default> select * from system.runtime.nodes;
+               node_id                |        http_uri        |      
node_version      | coordinator | state
+--------------------------------------+------------------------+------------------------+-------------+--------
+ d7123f72-bdd4-417e-adc2-9cfed5bbb12c | http://10.1.0.165:8080 | 
0.236-SNAPSHOT-dbf3a80 | true        | active
+ fe9b8813-7bfc-4b4e-aa84-9d50c5e87c57 | http://10.1.0.166:8080 | 
0.236-SNAPSHOT-dbf3a80 | false       | active
+(2 rows)
+
+Query 20200510_073256_00012_z6jp6, FINISHED, 2 nodes
+Splits: 17 total, 17 done (100.00%)
+0:00 [2 rows, 174B] [14 rows/s, 1.27KB/s]
+```
+
+## Configuring the Chart
+
+The chart can be customized using the following configurable parameters:
+
+| Parameter                                      | Description                 
                                                                                
                                                               | Default        
                                                    |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `image.repository`                             | Presto Container image repo 
                                                                                
                                                                | 
`apachepinot/pinot-presto`                                                |
+| `image.tag`                                    | Presto Container image tag  
                                                                                
                                                                | `latest`      
                                             |
+| `image.pullPolicy`                             | Presto Container image pull 
policy                                                                          
                                                                | 
`IfNotPresent`                                                     |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `pinot.connectorName`                              | Name of Pinot Connector 
                                                                                
                                                                  | `pinot`     
                                                  |
+| `pinot.controllerUrls`                              | Pinot Controller URLs  
                                                                                
                                                                 | 
`pinot-controller:9000`                                                       |
+| `pinot.controllerRestService`                              | Pinot 
Controller Rest Service URLs                                                    
                                    | `pinot-controller:9000`                   
                                    |
+| `pinot.allowMultipleAggregations`                              | Allow Query 
with Multiple Aggregations                                                      
                                                                                
           | `true`                                                       |
+| `pinot.useDateTrunc`                              | Allow DateTrunc Function 
in Pinot                                                                        
                                                                           | 
`true`                                                       |
+| `pinot.inferDateTypeInSchema`                              | Infer a Pinot 
TimeFieldSpec/DateTimeFieldSpec column with Days Since Epoch value as a Date 
column based on Pinot Schema                                                    
                                                                                
              | `true`                                                       |
+| `pinot.inferTimestampTypeInSchema`                              | Infer a 
Pinot TimeFieldSpec/DateTimeFieldSpec column with MilliSecond Since Epoch value 
as a Timestamp column based on Pinot Schema                                     
                                                                                
                              | `true`                                          
             |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `coordinator.name`                              | Name of Presto Coordinator 
                                                                                
                                                                  | 
`coordinator`                                                       |
+| `coordinator.port`                              | Presto Coordinator port    
                                                                                
                                                                  | `8080`      
                                                       |
+| `coordinator.replicaCount`                      | Presto Coordinator 
replicas                                                                        
                                                                          | `1` 
                                                               |
+| `coordinator.query.maxMemory`                          | Max Memory Usage 
per Query                                                             | `4GB`   
                                    |
+| `coordinator.query.maxMemoryPerNode`                          | Max Memory 
Usage per Node per Query                                                        
    | `1GB`                                       |
+| `coordinator.query.maxTotalMemoryPerNode`                          | Max 
Total Memory Usage per Node                                                     
        | `2GB`                                       |
+| `coordinator.discovery.serverEnabled`                          | Enable 
Discovery Server                                                                
                                                                                
             | `true`                                                 |
+| `coordinator.discovery.uri`                          | Discovery Server URI  
                                                                                
                                                                          | 
`http://presto-coordinator:8080`                                                
 |
+| `coordinator.jvm`                          | Coordinator JVM Configs         
                                                                                
                                                                    | `-server 
-Xmx16G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit 
-XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError 
-XX:+ExitOnOutOfMemoryError`                                                    
         |
+| `coordinator.log`                          | Log File Content                
                                                                                
                                                             | 
`com.facebook.presto=INFO`                                                      
       |
+| `coordinator.node.environment`                          | Node Environment   
                                                                                
                                                                          | 
`production`                                                             |
+| `coordinator.node.id`                          | Node ID (Default is empty, 
Presto will assign automatically)                                               
                                                                                
                              | ``                                              
               |
+| `coordinator.node.dataDir`                          | Data Directory         
                                                                                
                                                                    | 
`/home/presto/data`                                                             
|
+| `coordinator.node.schedulerIncludeCoordinator`                          |  
If Schedule Query on Coordinator                                                
                                                                                
                            | `true`                                            
                 |
+| `coordinator.persistence.enabled`               | Use a PVC to persist 
Presto Coordinator Data                                                         
                                                                        | 
`true`                                                             |
+| `coordinator.persistence.accessMode`            | Access mode of data volume 
                                                                                
                                                                | 
`ReadWriteOnce`                                                    |
+| `coordinator.persistence.size`                  | Size of data volume        
                                                                                
                                                                | `4G`          
                                                     |
+| `coordinator.persistence.storageClass`          | Storage class of backing 
PVC                                                                             
                                                                  | `""`        
                                                       |
+| `coordinator.service.port`                      | Service Port               
                                                                                
                                                                | `8080`        
                                                     |
+| `coordinator.external.enabled`                  | If True, exposes Presto 
Coordinator externally                                                          
                                                                     | `true`   
                                                         |
+| `coordinator.external.type`                     | Service Type               
                                                                                
                                                                | 
`LoadBalancer`                                                     |
+| `coordinator.external.port`                     | Service Port               
                                                                                
                                                                | `8080`        
                                                     |
+| `coordinator.resources`                         | Presto Coordinator 
resource requests and limits                                                    
                                                                          | 
`{}`                                                               |
+| `coordinator.nodeSelector`                      | Node labels for controller 
pod assignment                                                                  
                                                                | `{}`          
                                                     |
+| `coordinator.affinity`                          | Defines affinities and 
anti-affinities for pods as defined in: 
<https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity>
 preferences | `{}`                                                             
  |
+| `coordinator.tolerations`                       | List of node tolerations 
for the pods. 
<https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/>       
                                                    | `[]`                      
                                         |
+| `coordinator.podAnnotations`                    | Annotations to be added to 
controller pod                                                                  
                                                                | `{}`          
                                                     |
+| `coordinator.updateStrategy.type`               | StatefulSet update 
strategy to use.                                                                
                                                                        | 
`RollingUpdate`                                                    |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| `worker.name`                              | Name of Presto Worker           
                                                                                
                                                        | `worker`              
                                         |
+| `worker.port`                              | Presto Worker port              
                                                                                
                                                        | `8080`                
                                             |
+| `worker.replicaCount`                      | Presto Worker replicas          
                                                                                
                                                        | `1`                   
                                             |
+| `worker.query.maxMemory`                          | Max Memory Usage per 
Query                                                             | `8GB`       
                                |
+| `worker.query.maxMemoryPerNode`                          | Max Memory Usage 
per Node per Query                                                            | 
`4GB`                                       |
+| `worker.query.maxTotalMemoryPerNode`                          | Max Total 
Memory Usage per Node                                                           
  | `8GB`                                       |
+| `worker.discovery.uri`                          | Discovery Server URI       
                                                                                
                                                                     | 
`http://presto-coordinator:8080`                                                
 |
+| `worker.jvm`                          | Worker JVM Configs                   
                                                                                
                                                          | `-server -Xmx64G 
-XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit 
-XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError 
-XX:+ExitOnOutOfMemoryError`                                                    
         |
+| `worker.log`                          | Log File Content                     
                                                                                
                                                        | 
`com.facebook.presto=INFO`                                                      
       |
+| `worker.node.environment`                          | Node Environment        
                                                                                
                                                                     | 
`production`                                                             |
+| `worker.node.id`                          | Node ID (Default is empty, 
Presto will assign automatically)                                               
                                                                                
                              | ``                                              
               |
+| `worker.node.dataDir`                          | Data Directory              
                                                                                
                                                               | 
`/home/presto/data`                                                             
|
+| `worker.persistence.enabled`               | Use a PVC to persist Presto 
Worker Data                                                                     
                                                            | `true`            
                                                 |
+| `worker.persistence.accessMode`            | Access mode of data volume      
                                                                                
                                                           | `ReadWriteOnce`    
                                                |
+| `worker.persistence.size`                  | Size of data volume             
                                                                                
                                                           | `4G`               
                                                |
+| `worker.persistence.storageClass`          | Storage class of backing PVC    
                                                                                
                                                           | `""`               
                                                |
+| `worker.service.port`                      | Service Port                    
                                                                                
                                                           | `8080`             
                                                |
+| `worker.resources`                         | Presto Worker resource requests 
and limits                                                                      
                                                        | `{}`                  
                                             |
+| `worker.nodeSelector`                      | Node labels for controller pod 
assignment                                                                      
                                                            | `{}`              
                                                 |
+| `worker.affinity`                          | Defines affinities and 
anti-affinities for pods as defined in: 
<https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity>
 preferences | `{}`                                                             
  |
+| `worker.tolerations`                       | List of node tolerations for 
the pods. 
<https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/>       
                                                    | `[]`                      
                                         |
+| `worker.podAnnotations`                    | Annotations to be added to 
controller pod                                                                  
                                                                | `{}`          
                                                     |
+| `worker.updateStrategy.type`               | StatefulSet update strategy to 
use.                                                                            
                                                            | `RollingUpdate`   
                                                 |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+
+Specify parameters using `--set key=value[,key=value]` argument to `helm 
install`
+
+Alternatively a YAML file that specifies the values for the parameters can be 
provided like this:
+
+```bash
+helm install --name presto -f values.yaml .
+```
diff --git a/kubernetes/helm/launch-presto-ui.sh 
b/kubernetes/helm/presto/launch-presto-ui.sh
similarity index 100%
rename from kubernetes/helm/launch-presto-ui.sh
rename to kubernetes/helm/presto/launch-presto-ui.sh
diff --git a/kubernetes/helm/pinot-presto-cli.sh 
b/kubernetes/helm/presto/pinot-presto-cli.sh
similarity index 100%
rename from kubernetes/helm/pinot-presto-cli.sh
rename to kubernetes/helm/presto/pinot-presto-cli.sh
diff --git a/kubernetes/helm/presto/presto-cli.sh 
b/kubernetes/helm/presto/presto-cli.sh
new file mode 100755
index 0000000..be3b3d8
--- /dev/null
+++ b/kubernetes/helm/presto/presto-cli.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+if [[ ! -f "/tmp/presto-cli" ]]; then
+  curl -L 
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.228/presto-cli-0.228-executable.jar
 -o /tmp/presto-cli
+  chmod +x /tmp/presto-cli
+fi
+
+/tmp/presto-cli $@
\ No newline at end of file
diff --git a/kubernetes/helm/presto-coordinator.yaml 
b/kubernetes/helm/presto/presto-coordinator.yaml
similarity index 100%
rename from kubernetes/helm/presto-coordinator.yaml
rename to kubernetes/helm/presto/presto-coordinator.yaml
diff --git a/kubernetes/helm/presto-worker.yaml 
b/kubernetes/helm/presto/presto-worker.yaml
similarity index 100%
rename from kubernetes/helm/presto-worker.yaml
rename to kubernetes/helm/presto/presto-worker.yaml
diff --git a/kubernetes/helm/presto/templates/_helpers.tpl 
b/kubernetes/helm/presto/templates/_helpers.tpl
new file mode 100644
index 0000000..eb49763
--- /dev/null
+++ b/kubernetes/helm/presto/templates/_helpers.tpl
@@ -0,0 +1,91 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "presto.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to 
this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "presto.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "presto.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | 
trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified presto coordinator name.
+We truncate at 63 chars because some Kubernetes name fields are limited to 
this (by the DNS naming spec).
+*/}}
+{{- define "presto.coordinator.fullname" -}}
+{{ template "presto.fullname" . }}-{{ .Values.coordinator.name }}
+{{- end -}}
+
+{{/*
+Create a default fully qualified presto worker name.
+We truncate at 63 chars because some Kubernetes name fields are limited to 
this (by the DNS naming spec).
+*/}}
+{{- define "presto.worker.fullname" -}}
+{{ template "presto.fullname" . }}-{{ .Values.worker.name }}
+{{- end -}}
+
+{{/*
+The name of the presto coordinator external service.
+*/}}
+{{- define "presto.coordinator.external" -}}
+{{- printf "%s-external" (include "presto.coordinator.fullname" .) | trunc 63 
| trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+The name of the presto coordinator headless service.
+*/}}
+{{- define "presto.coordinator.headless" -}}
+{{- printf "%s-headless" (include "presto.coordinator.fullname" .) | trunc 63 
| trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+The name of the presto worker headless service.
+*/}}
+{{- define "presto.worker.headless" -}}
+{{- printf "%s-headless" (include "presto.worker.fullname" .) | trunc 63 | 
trimSuffix "-" -}}
+{{- end -}}
\ No newline at end of file
diff --git a/kubernetes/helm/presto/templates/coordinator/configmap.yaml 
b/kubernetes/helm/presto/templates/coordinator/configmap.yaml
new file mode 100644
index 0000000..9dbb34f
--- /dev/null
+++ b/kubernetes/helm/presto/templates/coordinator/configmap.yaml
@@ -0,0 +1,60 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: presto-catalog
+data:
+  pinot.properties: |-
+    connector.name={{ .Values.pinot.connectorName }}
+    pinot.controller-urls={{ .Values.pinot.controllerUrls }}
+    pinot.controller-rest-service={{ .Values.pinot.controllerRestService }}
+    pinot.allow-multiple-aggregations={{ 
.Values.pinot.allowMultipleAggregations }}
+    pinot.use-date-trunc={{ .Values.pinot.useDateTrunc }}
+    pinot.infer-date-type-in-schema={{ .Values.pinot.inferDateTypeInSchema }}
+    pinot.infer-timestamp-type-in-schema={{ 
.Values.pinot.inferTimestampTypeInSchema }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: presto-coordinator-etc
+data:
+  config.properties: |-
+    coordinator=true
+    node-scheduler.include-coordinator={{ 
.Values.coordinator.node.schedulerIncludeCoordinator }}
+    http-server.http.port={{ .Values.coordinator.port }}
+    query.max-memory={{ .Values.coordinator.query.maxMemory }}
+    query.max-memory-per-node={{ .Values.coordinator.query.maxMemoryPerNode }}
+    query.max-total-memory-per-node={{ 
.Values.coordinator.query.maxTotalMemoryPerNode }}
+    discovery-server.enabled={{ .Values.coordinator.discovery.serverEnabled }}
+    discovery.uri={{ .Values.coordinator.discovery.uri }}
+
+  jvm.config:
+{{ toYaml .Values.coordinator.jvm | indent 4 }}
+
+  log.properties:
+{{ toYaml .Values.coordinator.log | indent 4 }}
+
+  node.properties: |-
+    node.environment={{ .Values.coordinator.node.environment }}
+    {{- if .Values.coordinator.node.id }}
+    node.id={{ .Values.coordinator.node.id }}
+    {{ end }}
+    node.data-dir={{ .Values.coordinator.node.dataDir }}
diff --git a/kubernetes/helm/templates/controller/service-external.yaml 
b/kubernetes/helm/presto/templates/coordinator/service-external.yaml
similarity index 68%
rename from kubernetes/helm/templates/controller/service-external.yaml
rename to kubernetes/helm/presto/templates/coordinator/service-external.yaml
index 6db4b6c..c81b37c 100644
--- a/kubernetes/helm/templates/controller/service-external.yaml
+++ b/kubernetes/helm/presto/templates/coordinator/service-external.yaml
@@ -17,25 +17,25 @@
 # under the License.
 #
 
-{{- if .Values.controller.external.enabled }}
+{{- if .Values.coordinator.external.enabled }}
 ---
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ template "pinot.controller.external" . }}
+  name: {{ template "presto.coordinator.external" . }}
   labels:
-    app: {{ include "pinot.name" . }}
-    chart: {{ include "pinot.chart" . }}
-    component: {{ .Values.controller.name }}
+    app: {{ include "presto.name" . }}
+    chart: {{ include "presto.chart" . }}
+    component: {{ .Values.coordinator.name }}
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
-  type: {{ .Values.controller.external.type }}
+  type: {{ .Values.coordinator.external.type }}
   ports:
-    - name: external-controller
-      port: {{ .Values.controller.external.port }}
+    - name: external-coordinator
+      port: {{ .Values.coordinator.external.port }}
   selector:
-    app: {{ include "pinot.name" . }}
+    app: {{ include "presto.name" . }}
     release: {{ .Release.Name }}
-    component: {{ .Values.controller.name }}
+    component: {{ .Values.coordinator.name }}
 {{- end }}
diff --git a/kubernetes/helm/templates/server/service-headless.yaml 
b/kubernetes/helm/presto/templates/coordinator/service-headless.yaml
similarity index 76%
copy from kubernetes/helm/templates/server/service-headless.yaml
copy to kubernetes/helm/presto/templates/coordinator/service-headless.yaml
index aa8297d..d1e1e36 100644
--- a/kubernetes/helm/templates/server/service-headless.yaml
+++ b/kubernetes/helm/presto/templates/coordinator/service-headless.yaml
@@ -20,19 +20,19 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ template "pinot.server.headless" . }}
+  name: {{ template "presto.coordinator.headless" . }}
   labels:
-    app: {{ include "pinot.name" . }}
-    chart: {{ include "pinot.chart" . }}
-    component: {{ .Values.server.name }}
+    app: {{ include "presto.name" . }}
+    chart: {{ include "presto.chart" . }}
+    component: {{ .Values.coordinator.name }}
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
   clusterIP: None
   ports:
     # [pod_name].[service_name].[namespace].svc.cluster.local
-    - port: {{ .Values.server.service.port }}
+    - port: {{ .Values.coordinator.service.port }}
   selector:
-    app: {{ include "pinot.name" . }}
+    app: {{ include "presto.name" . }}
     release: {{ .Release.Name }}
-    component: {{ .Values.server.name }}
+    component: {{ .Values.coordinator.name }}
diff --git a/kubernetes/helm/templates/broker/service.yaml 
b/kubernetes/helm/presto/templates/coordinator/service.yaml
similarity index 76%
copy from kubernetes/helm/templates/broker/service.yaml
copy to kubernetes/helm/presto/templates/coordinator/service.yaml
index 62c8424..8cfac97 100644
--- a/kubernetes/helm/templates/broker/service.yaml
+++ b/kubernetes/helm/presto/templates/coordinator/service.yaml
@@ -20,19 +20,19 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "pinot.broker.fullname" . }}
+  name: {{ include "presto.coordinator.fullname" . }}
   labels:
-    app: {{ include "pinot.name" . }}
-    chart: {{ include "pinot.chart" . }}
-    component: {{ .Values.broker.name }}
+    app: {{ include "presto.name" . }}
+    chart: {{ include "presto.chart" . }}
+    component: {{ .Values.coordinator.name }}
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
   type: ClusterIP
   ports:
     # [pod_name].[service_name].[namespace].svc.cluster.local
-    - port: {{ .Values.broker.service.port }}
+    - port: {{ .Values.coordinator.service.port }}
   selector:
-    app: {{ include "pinot.name" . }}
+    app: {{ include "presto.name" . }}
     release: {{ .Release.Name }}
-    component: {{ .Values.broker.name }}
+    component: {{ .Values.coordinator.name }}
diff --git a/kubernetes/helm/presto/templates/coordinator/statefulset.yml 
b/kubernetes/helm/presto/templates/coordinator/statefulset.yml
new file mode 100644
index 0000000..e44fec9
--- /dev/null
+++ b/kubernetes/helm/presto/templates/coordinator/statefulset.yml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: {{ include "presto.coordinator.fullname" . }}
+  labels:
+    app: {{ include "presto.name" . }}
+    chart: {{ include "presto.chart" . }}
+    component: {{ .Values.coordinator.name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ include "presto.name" . }}
+      release: {{ .Release.Name }}
+      component: {{ .Values.coordinator.name }}
+  serviceName: {{ template "presto.coordinator.headless" . }}
+  replicas: {{ .Values.coordinator.replicaCount }}
+  updateStrategy:
+    type: {{ .Values.coordinator.updateStrategy.type }}
+  podManagementPolicy: Parallel
+  template:
+    metadata:
+      labels:
+        app: {{ include "presto.name" . }}
+        release: {{ .Release.Name }}
+        component: {{ .Values.coordinator.name }}
+      annotations:
+{{ toYaml .Values.coordinator.podAnnotations | indent 8 }}
+    spec:
+      nodeSelector:
+{{ toYaml .Values.coordinator.nodeSelector | indent 8 }}
+      affinity:
+{{ toYaml .Values.coordinator.affinity | indent 8 }}
+      tolerations:
+{{ toYaml .Values.coordinator.tolerations | indent 8 }}
+      securityContext:
+        runAsGroup: 1000
+        fsGroup: 1000
+        runAsUser: 1000
+      containers:
+      - name: coordinator
+        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+        imagePullPolicy: {{ .Values.image.pullPolicy }}
+        args: [ "run" ]
+        ports:
+          - containerPort: {{ .Values.coordinator.port }}
+            protocol: TCP
+        volumeMounts:
+          - name: presto-data
+            mountPath: {{ .Values.coordinator.node.dataDir }}
+          - name: presto-catalog
+            mountPath: "/home/presto/etc/catalog"
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/config.properties"
+            subPath: config.properties
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/log.properties"
+            subPath: log.properties
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/node.properties"
+            subPath: node.properties
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/jvm.config"
+            subPath: jvm.config
+            readOnly: true
+        resources:
+{{ toYaml .Values.coordinator.resources | indent 12 }}
+      restartPolicy: Always
+      volumes:
+        - name: presto-catalog
+          configMap:
+            name: presto-catalog
+        - name: presto-etc
+          configMap:
+            name: presto-coordinator-etc
+
+  {{- if .Values.coordinator.persistence.enabled }}
+  volumeClaimTemplates:
+    - metadata:
+        name: presto-data
+        annotations:
+          pv.beta.kubernetes.io/gid: "1000"
+          pv.beta.kubernetes.io/groups: "1000"
+      spec:
+        accessModes:
+          - {{ .Values.coordinator.persistence.accessMode | quote }}
+        {{- if .Values.coordinator.persistence.storageClass }}
+        {{- if (eq "-" .Values.coordinator.persistence.storageClass) }}
+        storageClassName: ""
+        {{- else }}
+        storageClassName: {{ .Values.coordinator.persistence.storageClass }}
+        {{- end }}
+        {{- end }}
+        resources:
+          requests:
+            storage: {{ .Values.coordinator.persistence.size }}
+  {{ end }}
diff --git a/kubernetes/helm/templates/controller/configmap.yaml 
b/kubernetes/helm/presto/templates/worker/configmap.yaml
similarity index 53%
rename from kubernetes/helm/templates/controller/configmap.yaml
rename to kubernetes/helm/presto/templates/worker/configmap.yaml
index 7e6cf87..30fb778 100644
--- a/kubernetes/helm/templates/controller/configmap.yaml
+++ b/kubernetes/helm/presto/templates/worker/configmap.yaml
@@ -20,13 +20,25 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: controller-config
+  name: presto-worker-etc
 data:
-  pinot-controller.conf: |-
-    controller.helix.cluster.name={{ .Values.cluster.name }}
-    controller.port={{ .Values.controller.port }}
-    controller.vip.host={{ include "pinot.controller.fullname" . }}
-    controller.vip.port={{ .Values.controller.service.port }}
-    controller.data.dir={{ .Values.controller.data.dir }}
-    controller.zk.str={{ include "zookeeper.url" . }}
-    pinot.set.instance.id.to.hostname=true
+  config.properties: |-
+    coordinator=false
+    http-server.http.port={{ .Values.worker.port }}
+    query.max-memory={{ .Values.worker.query.maxMemory }}
+    query.max-memory-per-node={{ .Values.worker.query.maxMemoryPerNode }}
+    query.max-total-memory-per-node={{ 
.Values.worker.query.maxTotalMemoryPerNode }}
+    discovery.uri={{ .Values.worker.discovery.uri }}
+
+  jvm.config:
+{{ toYaml .Values.worker.jvm | indent 4 }}
+
+  log.properties:
+{{ toYaml .Values.worker.log | indent 4 }}
+
+  node.properties: |-
+    node.environment={{ .Values.worker.node.environment }}
+    {{- if .Values.worker.node.id }}
+    node.id={{ .Values.worker.node.id }}
+    {{ end }}
+    node.data-dir={{ .Values.worker.node.dataDir }}
diff --git a/kubernetes/helm/templates/server/service-headless.yaml 
b/kubernetes/helm/presto/templates/worker/service-headless.yaml
similarity index 77%
rename from kubernetes/helm/templates/server/service-headless.yaml
rename to kubernetes/helm/presto/templates/worker/service-headless.yaml
index aa8297d..f7ffc16 100644
--- a/kubernetes/helm/templates/server/service-headless.yaml
+++ b/kubernetes/helm/presto/templates/worker/service-headless.yaml
@@ -20,19 +20,19 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ template "pinot.server.headless" . }}
+  name: {{ template "presto.worker.headless" . }}
   labels:
-    app: {{ include "pinot.name" . }}
-    chart: {{ include "pinot.chart" . }}
-    component: {{ .Values.server.name }}
+    app: {{ include "presto.name" . }}
+    chart: {{ include "presto.chart" . }}
+    component: {{ .Values.worker.name }}
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
   clusterIP: None
   ports:
     # [pod_name].[service_name].[namespace].svc.cluster.local
-    - port: {{ .Values.server.service.port }}
+    - port: {{ .Values.worker.service.port }}
   selector:
-    app: {{ include "pinot.name" . }}
+    app: {{ include "presto.name" . }}
     release: {{ .Release.Name }}
-    component: {{ .Values.server.name }}
+    component: {{ .Values.worker.name }}
diff --git a/kubernetes/helm/templates/broker/service.yaml 
b/kubernetes/helm/presto/templates/worker/service.yaml
similarity index 77%
rename from kubernetes/helm/templates/broker/service.yaml
rename to kubernetes/helm/presto/templates/worker/service.yaml
index 62c8424..f02cce4 100644
--- a/kubernetes/helm/templates/broker/service.yaml
+++ b/kubernetes/helm/presto/templates/worker/service.yaml
@@ -20,19 +20,19 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "pinot.broker.fullname" . }}
+  name: {{ include "presto.worker.fullname" . }}
   labels:
-    app: {{ include "pinot.name" . }}
-    chart: {{ include "pinot.chart" . }}
-    component: {{ .Values.broker.name }}
+    app: {{ include "presto.name" . }}
+    chart: {{ include "presto.chart" . }}
+    component: {{ .Values.worker.name }}
     release: {{ .Release.Name }}
     heritage: {{ .Release.Service }}
 spec:
   type: ClusterIP
   ports:
     # [pod_name].[service_name].[namespace].svc.cluster.local
-    - port: {{ .Values.broker.service.port }}
+    - port: {{ .Values.worker.service.port }}
   selector:
-    app: {{ include "pinot.name" . }}
+    app: {{ include "presto.name" . }}
     release: {{ .Release.Name }}
-    component: {{ .Values.broker.name }}
+    component: {{ .Values.worker.name }}
diff --git a/kubernetes/helm/presto/templates/worker/statefulset.yml 
b/kubernetes/helm/presto/templates/worker/statefulset.yml
new file mode 100644
index 0000000..40eca4b
--- /dev/null
+++ b/kubernetes/helm/presto/templates/worker/statefulset.yml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: {{ include "presto.worker.fullname" . }}
+  labels:
+    app: {{ include "presto.name" . }}
+    chart: {{ include "presto.chart" . }}
+    component: {{ .Values.worker.name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ include "presto.name" . }}
+      release: {{ .Release.Name }}
+      component: {{ .Values.worker.name }}
+  serviceName: {{ template "presto.worker.headless" . }}
+  replicas: {{ .Values.worker.replicaCount }}
+  updateStrategy:
+    type: {{ .Values.worker.updateStrategy.type }}
+  podManagementPolicy: Parallel
+  template:
+    metadata:
+      labels:
+        app: {{ include "presto.name" . }}
+        release: {{ .Release.Name }}
+        component: {{ .Values.worker.name }}
+      annotations:
+{{ toYaml .Values.worker.podAnnotations | indent 8 }}
+    spec:
+      nodeSelector:
+{{ toYaml .Values.worker.nodeSelector | indent 8 }}
+      affinity:
+{{ toYaml .Values.worker.affinity | indent 8 }}
+      tolerations:
+{{ toYaml .Values.worker.tolerations | indent 8 }}
+      securityContext:
+        runAsGroup: 1000
+        fsGroup: 1000
+        runAsUser: 1000
+      containers:
+      - name: coordinator
+        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+        imagePullPolicy: {{ .Values.image.pullPolicy }}
+        args: [ "run" ]
+        ports:
+          - containerPort: {{ .Values.worker.port }}
+            protocol: TCP
+        volumeMounts:
+          - name: presto-data
+            mountPath: {{ .Values.worker.node.dataDir }}
+          - name: presto-catalog
+            mountPath: "/home/presto/etc/catalog"
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/config.properties"
+            subPath: config.properties
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/log.properties"
+            subPath: log.properties
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/node.properties"
+            subPath: node.properties
+            readOnly: true
+          - name: presto-etc
+            mountPath: "/home/presto/etc/jvm.config"
+            subPath: jvm.config
+            readOnly: true
+        resources:
+{{ toYaml .Values.worker.resources | indent 12 }}
+      restartPolicy: Always
+      volumes:
+        - name: presto-catalog
+          configMap:
+            name: presto-catalog
+        - name: presto-etc
+          configMap:
+            name: presto-worker-etc
+
+  {{- if .Values.worker.persistence.enabled }}
+  volumeClaimTemplates:
+    - metadata:
+        name: presto-data
+        annotations:
+          pv.beta.kubernetes.io/gid: "1000"
+          pv.beta.kubernetes.io/groups: "1000"
+      spec:
+        accessModes:
+          - {{ .Values.worker.persistence.accessMode | quote }}
+        {{- if .Values.worker.persistence.storageClass }}
+        {{- if (eq "-" .Values.worker.persistence.storageClass) }}
+        storageClassName: ""
+        {{- else }}
+        storageClassName: {{ .Values.worker.persistence.storageClass }}
+        {{- end }}
+        {{- end }}
+        resources:
+          requests:
+            storage: {{ .Values.worker.persistence.size }}
+  {{ end }}
diff --git a/kubernetes/helm/presto/values.yaml 
b/kubernetes/helm/presto/values.yaml
new file mode 100644
index 0000000..0a668cf
--- /dev/null
+++ b/kubernetes/helm/presto/values.yaml
@@ -0,0 +1,160 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Default values for Presto image with built-in Pinot Connector.
+
+image:
+  repository: apachepinot/pinot-presto
+  tag: latest
+  pullPolicy: IfNotPresent
+
+pinot:
+  connectorName: pinot
+  controllerUrls: pinot-controller:9000
+  controllerRestService: pinot-controller:9000
+  allowMultipleAggregations: true
+  useDateTrunc: true
+  inferDateTypeInSchema: true
+  inferTimestampTypeInSchema: true
+
+coordinator:
+  name: coordinator
+  port: 8080
+  replicaCount: 1
+
+  query:
+    maxMemory: 4GB
+    maxMemoryPerNode: 1GB
+    maxTotalMemoryPerNode: 2GB
+
+  discovery:
+    serverEnabled: true
+    uri: http://presto-coordinator:8080
+
+  jvm: |-
+    -server
+    -Xmx16G
+    -XX:+UseG1GC
+    -XX:G1HeapRegionSize=32M
+    -XX:+UseGCOverheadLimit
+    -XX:+ExplicitGCInvokesConcurrent
+    -XX:+HeapDumpOnOutOfMemoryError
+    -XX:+ExitOnOutOfMemoryError
+
+  log: |-
+    com.facebook.presto=INFO
+
+  node:
+    environment: production
+    dataDir: /home/presto/data
+    schedulerIncludeCoordinator: true
+
+  persistence:
+    enabled: true
+    accessMode: ReadWriteOnce
+    size: 4G
+    storageClass: ""
+
+  service:
+    annotations: {}
+    clusterIP: ""
+    externalIPs: []
+    loadBalancerIP: ""
+    loadBalancerSourceRanges: []
+    type: ClusterIP
+    port: 8080
+    nodePort: ""
+
+  external:
+    enabled: true
+    type: LoadBalancer
+    port: 8080
+
+  resources: {}
+
+  nodeSelector: {}
+
+  tolerations: []
+
+  affinity: {}
+
+  podAnnotations: {}
+
+  updateStrategy:
+    type: RollingUpdate
+
+
+worker:
+  name: worker
+  port: 8080
+  replicaCount: 1
+
+  query:
+    maxMemory: 8GB
+    maxMemoryPerNode: 4GB
+    maxTotalMemoryPerNode: 8GB
+
+  discovery:
+    uri: http://presto-coordinator:8080
+
+  jvm: |-
+    -server
+    -Xmx64G
+    -XX:+UseG1GC
+    -XX:G1HeapRegionSize=32M
+    -XX:+UseGCOverheadLimit
+    -XX:+ExplicitGCInvokesConcurrent
+    -XX:+HeapDumpOnOutOfMemoryError
+    -XX:+ExitOnOutOfMemoryError
+
+  log: |-
+    com.facebook.presto=INFO
+
+  node:
+    environment: production
+    dataDir: /home/presto/data
+
+  persistence:
+    enabled: true
+    accessMode: ReadWriteOnce
+    size: 10G
+    storageClass: ""
+
+  service:
+    annotations: {}
+    clusterIP: ""
+    externalIPs: []
+    loadBalancerIP: ""
+    loadBalancerSourceRanges: []
+    type: ClusterIP
+    port: 8080
+    nodePort: ""
+
+  resources: {}
+
+  nodeSelector: {}
+
+  tolerations: []
+
+  affinity: {}
+
+  podAnnotations: {}
+
+  updateStrategy:
+    type: RollingUpdate


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to