gtctl
gtctl, g-t-control, is a command-line tool for managing the GreptimeDB clusters. gtctl is the All-in-One binary that integrates with multiple operations of GreptimeDB clusters.
Installation
One-line Installation
Download the binary using the following command:
bash
curl -fsSL https://raw.githubusercontent.com/greptimeteam/gtctl/develop/hack/install.sh | sh
After downloading, the gtctl will be in the current directory.
You also can install gtctl from the AWS-CN S3 bucket:
bash
curl -fsSL https://downloads.greptime.cn/releases/scripts/gtctl/install.sh | sh -s -- -s aws
Homebrew
On macOS, gtctl is available via Homebrew:
bash
brew tap greptimeteam/greptime
brew install gtctl
From Source
If you already have the Go installed, you can run the make
command under this project to build gtctl:
bash
make gtctl
After building, the gtctl will be generated in ./bin/
. If you want to install gtctl, you can run the install
command:
bash
# The built gtctl will be installed in /usr/local/bin.
make install
# The built gtctl will be installed in your customed path.
make install INSTALL_DIR=<your-path>
Enable gtctl Autocompletion (Optional)
The gtctl supports autocompletion of several different shells.
Bash
The gtctl completion script for Bash can be generated with the command gtctl completion bash. Sourcing the completion script in your shell enables gtctl autocompletion.
bash
echo 'source <(gtctl completion bash)' >> ~/.bashrc
Zsh
The gtctl completion script for Zsh can be generated with the command gtctl completion zsh. Sourcing the completion script in your shell enables gtctl autocompletion.
bash
mkdir -p $ZSH/completions && gtctl completion zsh > $ZSH/completions/_gtctl
Fish
The gtctl completion script for Fish can be generated with the command gtctl completion fish. Sourcing the completion script in your shell enables gtctl autocompletion.
bash
gtctl completion fish | source
Quick Start
The fastest way to experience the GreptimeDB cluster is to use the playground:
bash
gtctl playground
The playground
will deploy the minimal GreptimeDB cluster on your environment in bare-metal mode.
Deployments
The gtctl supports two deployment mode: Kubernetes and Bare-Metal.
Kubernetes
Prerequisites
Kubernetes 1.18 or higher version is required.
You can use the kind to create your own Kubernetes cluster:
bash
kind create cluster
Create
Create your own GreptimeDB cluster and etcd cluster:
bash
gtctl cluster create mycluster -n default
If you want to use artifacts(charts and images) that are stored in the CN region, you can enable --use-greptime-cn-artifacts
:
bash
gtctl cluster create mycluster -n default --use-greptime-cn-artifacts
After creating, the whole GreptimeDB cluster will start in the default namespace:
bash
# Get the cluster.
gtctl cluster get mycluster -n default
# List all clusters.
gtctl cluster list
All the values used for cluster, etcd and operator which provided in charts are configurable, you can use --set
to configure them. The gtctl also surface some commonly used configurations, you can use gtctl cluster create --help
to browse them.
bash
# Configure cluster datanode replicas to 5
gtctl cluster create mycluster --set cluster.datanode.replicas=5
# Two same ways to configure etcd storage size to 15Gi
gtctl cluster create mycluster --set etcd.storage.volumeSize=15Gi
gtctl cluster create mycluster --etcd-storage-size 15Gi
Dry Run
gtctl provides --dry-run
option in cluster creation. If a user executes the command with --dry-run
, gtctl will output the manifests content without applying them:
bash
gtctl cluster create mycluster -n default --dry-run
Connect
You can use the kubectl port-forward
command to forward frontend requests:
bash
kubectl port-forward svc/mycluster-frontend 4002:4002 > connections.out &
Use gtctl connect
command or your mysql
client to connect to your cluster:
bash
gtctl cluster connect mycluster -p mysql
mysql -h 127.0.0.1 -P 4002
Scale (Experimental)
You can use the following commands to scale (or down-scale) your cluster:
bash
# Scale datanode to 3 replicas.
gtctl cluster scale <your-cluster> -n <your-cluster-namespace> -c datanode --replicas 3
# Scale frontend to 5 replicas.
gtctl cluster scale <your-cluster> -n <your-cluster-namespace> -c frontend --replicas 5
Delete
If you want to delete the cluster, you can:
bash
# Delete the cluster.
gtctl cluster delete mycluster -n default
# Delete the cluster, including etcd cluster.
gtctl cluster delete mycluster -n default --tear-down-etcd
Bare-Metal
Create
You can deploy the GreptimeDB cluster on a bare-metal environment by the following simple command:
bash
gtctl cluster create mycluster --bare-metal
It will create all the necessary meta information on ${HOME}/.gtctl
.
If you want to do more configurations, you can use the yaml format config file:
bash
gtctl cluster create mycluster --bare-metal --config <your-config-file>
You can refer to the example config cluster.yaml
and cluster-with-local-artifacts.yaml
provided in examples/bare-metal
.
Delete
Since the cluster in bare-metal mode runs in the foreground, any SIGINT
and SIGTERM
will delete the cluster. For example, the cluster will be deleted after pressing Ctrl+C
on keyboard.
The deletion will also delete the meta information of one cluster which located in ${HOME}/.gtctl
. The logs of cluster will remain if --retain-logs
is enabled (enabled by default).
Development
There are many useful tools provided through Makefile, you can simply run make help to get more information:
Compile the project
bash
make
Then the gtctl will be generated in
./bin/
.Run the unit test
bash
make test
Run the e2e test
bash
make e2e