This folder containing scripts and Kubernetes resources configurations to run ThingsBoard in Microservices mode.
ThingsBoard Microservices run on the Kubernetes cluster. You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not have a cluster already, you can create one by using Minikube, or you can choose any other available Kubernetes cluster deployment solutions.
By default ingress addon is disabled in the Minikube, and available only in cluster providers. To enable ingress, please execute the following command:
$ minikube addons enable ingress
Make sure your have logged in to docker hub using command line. To upload Docker credentials, please execute next command:
$ ./k8s-upload-docker-credentials.sh
Before performing initial installation you can configure the type of database to be used with ThingsBoard and the type of deployment.
In order to set database type change the value of DATABASE
variable in .env
file to one of the following:
postgres
- use PostgreSQL database;hybrid
- use PostgreSQL for entities database and Cassandra for timeseries database;
NOTE: According to the database type corresponding kubernetes resources will be deployed (see postgres.yml
, cassandra.yml
for details).
In order to set deployment type change the value of DEPLOYMENT_TYPE
variable in .env
file to one of the following:
basic
- start up with single instance of Zookeeper, Kafka and Redis;high-availability
- start up with Zookeeper, Kafka and Redis in cluster modes;
NOTE: According to the deployment type corresponding kubernetes resources will be deployed (see the content of the directories ./basic
and ./high-availability
for details).
Execute the following command to run the installation:
$ ./k8s-install-tb.sh --loadDemo
Where:
--loadDemo
- optional argument. Whether to load additional demo data.
$ nano common/tb-node.yml
and put the license secret parameter
# tb-node StatefulSet configuration
- name: TB_LICENSE_SECRET
value: "PUT_YOUR_LICENSE_SECRET_HERE"
Execute the following command to deploy third-party resources:
$ ./k8s-deploy-thirdparty.sh
Type 'yes' when prompted, if you are running ThingsBoard in high-availability
DEPLOYMENT_TYPE
for the first time and don't have configured Redis cluster.
Before deploying ThingsBoard resources you should configure number of pods for each service.
You can do it in thingsboard.yml
by changing spec.replicas
fields for different services.
It is recommended to have at least 2 tb-node
and 10 tb-js-executor
.
Execute the following command to deploy resources:
$ ./k8s-deploy-resources.sh
After a while when all resources will be successfully started you can open http://{your-cluster-ip}
in your browser (for ex. http://192.168.99.101
).
You should see the ThingsBoard login page.
Use the following default credentials:
- System Administrator: [email protected] / sysadmin
If you installed DataBase with demo data (using --loadDemo
flag) you can also use the following credentials:
- Tenant Administrator: [email protected] / tenant
- Customer User: [email protected] / customer
In case of any issues, you can examine service logs for errors. For example to see ThingsBoard node logs execute the following commands:
- Get the list of the running tb-node pods:
$ kubectl get pods -l app=tb-node
- Fetch logs of the tb-node pod:
$ kubectl logs -f [tb-node-pod-name]
Where:
tb-node-pod-name
- tb-node pod name obtained from the list of the running tb-node pods.
Or use kubectl get pods
to see the state of all the pods.
Or use kubectl get services
to see the state of all the services.
Or use kubectl get deployments
to see the state of all the deployments.
See kubectl Cheat Sheet command reference for details.
Execute the following command to delete all ThingsBoard microservices:
$ ./k8s-delete-resources.sh
Execute the following command to delete all third-party microservices:
$ ./k8s-delete-thirdparty.sh
Execute the following command to delete all resources (including database):
$ ./k8s-delete-all.sh
In case when database upgrade is needed, execute the following commands:
$ ./k8s-delete-resources.sh
$ ./k8s-upgrade-tb.sh --fromVersion=[FROM_VERSION]
$ ./k8s-deploy-resources.sh
Where:
FROM_VERSION
- from which version upgrade should be started. See Upgrade Instructions for validfromVersion
values.