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]