299 lines
8.1 KiB
Markdown
299 lines
8.1 KiB
Markdown
---
|
|
sidebar_label: Helm
|
|
title: Use Helm to deploy TDengine
|
|
---
|
|
|
|
Helm is a package manager for Kubernetes that can provide more capabilities in deploying on Kubernetes.
|
|
|
|
## Install Helm
|
|
|
|
```bash
|
|
curl -fsSL -o get_helm.sh \
|
|
https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
|
|
chmod +x get_helm.sh
|
|
./get_helm.sh
|
|
|
|
```
|
|
|
|
Helm uses the kubectl and kubeconfig configurations to perform Kubernetes operations. For more information, see the Rancher configuration for Kubernetes installation.
|
|
|
|
## Install TDengine Chart
|
|
|
|
To use TDengine Chart, download it from GitHub:
|
|
|
|
```bash
|
|
wget https://github.com/taosdata/TDengine-Operator/raw/3.0/helm/tdengine-3.0.0.tgz
|
|
|
|
```
|
|
|
|
Query the storageclass of your Kubernetes deployment:
|
|
|
|
```bash
|
|
kubectl get storageclass
|
|
|
|
```
|
|
|
|
With minikube, the default value is standard.
|
|
|
|
Use Helm commands to install TDengine:
|
|
|
|
```bash
|
|
helm install tdengine tdengine-3.0.0.tgz \
|
|
--set storage.className=<your storage class name>
|
|
|
|
```
|
|
|
|
You can configure a small storage size in minikube to ensure that your deployment does not exceed your available disk space.
|
|
|
|
```bash
|
|
helm install tdengine tdengine-3.0.0.tgz \
|
|
--set storage.className=standard \
|
|
--set storage.dataSize=2Gi \
|
|
--set storage.logSize=10Mi
|
|
|
|
```
|
|
|
|
After TDengine is deployed, TDengine Chart outputs information about how to use TDengine:
|
|
|
|
```bash
|
|
export POD_NAME=$(kubectl get pods --namespace default \
|
|
-l "app.kubernetes.io/name=tdengine,app.kubernetes.io/instance=tdengine" \
|
|
-o jsonpath="{.items[0].metadata.name}")
|
|
kubectl --namespace default exec $POD_NAME -- taos -s "show dnodes; show mnodes"
|
|
kubectl --namespace default exec -it $POD_NAME -- taos
|
|
|
|
```
|
|
|
|
You can test the deployment by creating a table:
|
|
|
|
```bash
|
|
kubectl --namespace default exec $POD_NAME -- \
|
|
taos -s "create database test;
|
|
use test;
|
|
create table t1 (ts timestamp, n int);
|
|
insert into t1 values(now, 1)(now + 1s, 2);
|
|
select * from t1;"
|
|
|
|
```
|
|
|
|
## Configuring Values
|
|
|
|
You can configure custom parameters in TDengine with the `values.yaml` file.
|
|
|
|
Run the `helm show values` command to see all parameters supported by TDengine Chart.
|
|
|
|
```bash
|
|
helm show values tdengine-3.0.0.tgz
|
|
|
|
```
|
|
|
|
Save the output of this command as `values.yaml`. Then you can modify this file with your desired values and use it to deploy a TDengine cluster:
|
|
|
|
```bash
|
|
helm install tdengine tdengine-3.0.0.tgz -f values.yaml
|
|
|
|
```
|
|
|
|
The parameters are described as follows:
|
|
|
|
```yaml
|
|
# Default values for tdengine.
|
|
# This is a YAML-formatted file.
|
|
# Declare variables to be passed into helm templates.
|
|
|
|
replicaCount: 1
|
|
|
|
image:
|
|
prefix: tdengine/tdengine
|
|
#pullPolicy: Always
|
|
# Overrides the image tag whose default is the chart appVersion.
|
|
# tag: "3.0.0.0"
|
|
|
|
service:
|
|
# ClusterIP is the default service type, use NodeIP only if you know what you are doing.
|
|
type: ClusterIP
|
|
ports:
|
|
# TCP range required
|
|
tcp: [6030, 6041, 6042, 6043, 6044, 6046, 6047, 6048, 6049, 6060]
|
|
# UDP range
|
|
udp: [6044, 6045]
|
|
|
|
|
|
# Set timezone here, not in taoscfg
|
|
timezone: "Asia/Shanghai"
|
|
|
|
resources:
|
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
|
# choice for the user. This also increases chances charts run on environments with little
|
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
|
# limits:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
# requests:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
|
|
storage:
|
|
# Set storageClassName for pvc. K8s use default storage class if not set.
|
|
#
|
|
className: ""
|
|
dataSize: "100Gi"
|
|
logSize: "10Gi"
|
|
|
|
nodeSelectors:
|
|
taosd:
|
|
# node selectors
|
|
|
|
clusterDomainSuffix: ""
|
|
# Config settings in taos.cfg file.
|
|
#
|
|
# The helm/k8s support will use environment variables for taos.cfg,
|
|
# converting an upper-snake-cased variable like `TAOS_DEBUG_FLAG`,
|
|
# to a camelCase taos config variable `debugFlag`.
|
|
#
|
|
# See the [Configuration Variables](../../reference/config)
|
|
#
|
|
# Note:
|
|
# 1. firstEp/secondEp: should not be setted here, it's auto generated at scale-up.
|
|
# 2. serverPort: should not be setted, we'll use the default 6030 in many places.
|
|
# 3. fqdn: will be auto generated in kubenetes, user should not care about it.
|
|
# 4. role: currently role is not supported - every node is able to be mnode and vnode.
|
|
#
|
|
# Btw, keep quotes "" around the value like below, even the value will be number or not.
|
|
taoscfg:
|
|
# Starts as cluster or not, must be 0 or 1.
|
|
# 0: all pods will start as a seperate TDengine server
|
|
# 1: pods will start as TDengine server cluster. [default]
|
|
CLUSTER: "1"
|
|
|
|
# number of replications, for cluster only
|
|
TAOS_REPLICA: "1"
|
|
|
|
#
|
|
# TAOS_NUM_OF_RPC_THREADS: number of threads for RPC
|
|
#TAOS_NUM_OF_RPC_THREADS: "2"
|
|
|
|
|
|
#
|
|
# TAOS_NUM_OF_COMMIT_THREADS: number of threads to commit cache data
|
|
#TAOS_NUM_OF_COMMIT_THREADS: "4"
|
|
|
|
# enable/disable installation / usage report
|
|
#TAOS_TELEMETRY_REPORTING: "1"
|
|
|
|
# time interval of system monitor, seconds
|
|
#TAOS_MONITOR_INTERVAL: "30"
|
|
|
|
# time interval of dnode status reporting to mnode, seconds, for cluster only
|
|
#TAOS_STATUS_INTERVAL: "1"
|
|
|
|
# time interval of heart beat from shell to dnode, seconds
|
|
#TAOS_SHELL_ACTIVITY_TIMER: "3"
|
|
|
|
# minimum sliding window time, milli-second
|
|
#TAOS_MIN_SLIDING_TIME: "10"
|
|
|
|
# minimum time window, milli-second
|
|
#TAOS_MIN_INTERVAL_TIME: "1"
|
|
|
|
# the compressed rpc message, option:
|
|
# -1 (no compression)
|
|
# 0 (all message compressed),
|
|
# > 0 (rpc message body which larger than this value will be compressed)
|
|
#TAOS_COMPRESS_MSG_SIZE: "-1"
|
|
|
|
# max number of connections allowed in dnode
|
|
#TAOS_MAX_SHELL_CONNS: "50000"
|
|
|
|
# stop writing logs when the disk size of the log folder is less than this value
|
|
#TAOS_MINIMAL_LOG_DIR_G_B: "0.1"
|
|
|
|
# stop writing temporary files when the disk size of the tmp folder is less than this value
|
|
#TAOS_MINIMAL_TMP_DIR_G_B: "0.1"
|
|
|
|
# if disk free space is less than this value, taosd service exit directly within startup process
|
|
#TAOS_MINIMAL_DATA_DIR_G_B: "0.1"
|
|
|
|
# One mnode is equal to the number of vnode consumed
|
|
#TAOS_MNODE_EQUAL_VNODE_NUM: "4"
|
|
|
|
# enbale/disable http service
|
|
#TAOS_HTTP: "1"
|
|
|
|
# enable/disable system monitor
|
|
#TAOS_MONITOR: "1"
|
|
|
|
# enable/disable async log
|
|
#TAOS_ASYNC_LOG: "1"
|
|
|
|
#
|
|
# time of keeping log files, days
|
|
#TAOS_LOG_KEEP_DAYS: "0"
|
|
|
|
# The following parameters are used for debug purpose only.
|
|
# debugFlag 8 bits mask: FILE-SCREEN-UNUSED-HeartBeat-DUMP-TRACE_WARN-ERROR
|
|
# 131: output warning and error
|
|
# 135: output debug, warning and error
|
|
# 143: output trace, debug, warning and error to log
|
|
# 199: output debug, warning and error to both screen and file
|
|
# 207: output trace, debug, warning and error to both screen and file
|
|
#
|
|
# debug flag for all log type, take effect when non-zero value\
|
|
#TAOS_DEBUG_FLAG: "143"
|
|
|
|
# generate core file when service crash
|
|
#TAOS_ENABLE_CORE_FILE: "1"
|
|
```
|
|
|
|
## Scaling Out
|
|
|
|
For information about scaling out your deployment, see Kubernetes. Additional Helm-specific is described as follows.
|
|
|
|
First, obtain the name of the StatefulSet service for your deployment.
|
|
|
|
```bash
|
|
export STS_NAME=$(kubectl get statefulset \
|
|
-l "app.kubernetes.io/name=tdengine" \
|
|
-o jsonpath="{.items[0].metadata.name}")
|
|
|
|
```
|
|
|
|
You can scale out your deployment by adding replicas. The following command scales a deployment to three nodes:
|
|
|
|
```bash
|
|
kubectl scale --replicas 3 statefulset/$STS_NAME
|
|
|
|
```
|
|
|
|
Run the `show dnodes` and `show mnodes` commands to check whether the scale-out was successful.
|
|
|
|
## Scaling In
|
|
|
|
:::warning
|
|
Exercise caution when scaling in a cluster.
|
|
|
|
:::
|
|
|
|
Determine which dnodes you want to remove and drop them manually.
|
|
|
|
```bash
|
|
kubectl --namespace default exec $POD_NAME -- \
|
|
cat /var/lib/taos/dnode/dnodeEps.json \
|
|
| jq '.dnodeInfos[1:] |map(.dnodeFqdn + ":" + (.dnodePort|tostring)) | .[]' -r
|
|
kubectl --namespace default exec $POD_NAME -- taos -s "show dnodes"
|
|
kubectl --namespace default exec $POD_NAME -- taos -s 'drop dnode "<you dnode in list>"'
|
|
|
|
```
|
|
|
|
## Remove a TDengine Cluster
|
|
|
|
You can use Helm to remove your cluster:
|
|
|
|
```bash
|
|
helm uninstall tdengine
|
|
|
|
```
|
|
|
|
However, Helm does not remove PVCs automatically. After you remove your cluster, manually remove all PVCs.
|