* LwM2M - Start transport * LwM2M - Test endpoint * LwM2M - Test endpoint * LwM2M - Test add xml * LwM2M device registration * LwM2M - add get from client, add attributes and telemetry upgrade from registration client * LwM2M - add get from client, add attributes and telemetry upgrade from registration client * LwM2M implementation * LwM2M - add to service telemetry and attribute * LwM2M add to service attribute and telemetry * LwM2M - add LWM2M_CREDENTIALS to DeviceCredentialsType * LwM2M - add LWM2M_CREDENTIALS to DeviceCredentialsType * LwM2M - add transport.process * LwM2M - delete from yml tenantid, PSK -ok * LwM2M - yml del tenantId * LwM2M - add RPK * LwM2M - add connect only x509 certificate. Crate certificates in serverKeyStore.jks and clientKeyStore.jks * LwM2M - add no_sec * LwM2M - add RPK & PSK integration test with app Client * LwM2M - add RPK & PSK integration test with app Client * LwM2M - add read JKS from file * LwM2M - add read JKS from file * LwM2M - add bootstrap cert * LwM2M - add bootstrap RPK * LwM2M - add bootstrap No_sec * LwM2M - cleaned the code * LwM2M - add to 3.0 in UI credentials lwm2m * LwM2M - add to 3.0 in UI credentials lwm2m * LwM2M - add to 3.0 in UI credentials lwm2m * LwM2M - fix bug CoAP transport * LwM2M: UI - add Json to credentials * LwM2M: Back - add command "/3/0/5" - trigger client * LwM2M: fix bug Json edit dialog * LwM2M: fix bug Json edit dialog * lwm2m: fix bug Json edit dialog: add validate * lwm2m: UI add tabs * lwm2m: UI add tabs (cleaner) * lwm2m: add interface SecurityConfigModels * lwm2m: add interface SecurityConfigModels2 * lwm2m: change html * lwm2m: UI add bootstrap component * lwm2m: UI add bootstrap component with FormControl * lwm2m: UI add start Observe * lwm2m: UI - correct * lwm2m: UI - correct * lwm2m: UI - add Validator: BS RPK, X509 * lwm2m: UI - add Observe * lwm2m: UI - finish Observe * lwm2m: UI - fix bug config-service update identity * lwm2m: Bootstarp&Sewrver All config secure * lwm2m: Bootstarp&Sewrver All config secure for new Front format * lwm2m: Bootstarp&Sewrver Different config secure for new Front format * lwm2m: Add attributes Gui and Backend * lwm2m: Add attributes Gui and Backend final * lwm2m: Add telemetrys to Gui * lwm2m: Add Attribute & telemetry in Gui to instance * lwm2m: Optimize Attr/Telemetry * lwm2m: Optimize Attr/Telemetry * lwm2m: Optimize Attr/Telemetry * lwm2m: Optimize Attr/Telemetry for mobile * lwm2m: Model folder * lwm2m: Ok on AWS: NoSec, PSK, X509 bad registration - RPK * lwm2m: KeyStore start only one * lwm2m: Server observe ok * lwm2m: Server fix bug finish session without remove * lwm2m: Server add function installValue * lwm2m: Server add function getAttrTelemetry to tingsboard * lwm2m: Server add function installValue * lwm2m: Server add function update Telemetry, Attr from observe * lwm2m: Server add comments * lwm2m: Server add session listener * lwm2m: Server add onGetChangeCredentials with analyze * lwm2m: Server add onGetChangeCredentials with analyze Onserve add * lwm2m: Server: updated algorithm for analyzing dynamic changes in attributes / telemetry / observation * lwm2m: fix bug: "ngx-flowchart" compile * lwm2m: get value resource OPAQUE - byte [] to HexString * lwm2m: change path to base * lwm2m: fix bug COAP & lwm2m * Lwm2m_3_2: back: cleaner, test bootstrap-ok front: restore * Lwm2m_3_2: back: del SynchronousRegistrationListener.java * Lwm2m_3_2: front: start profile lwm2m UI * Lwm2m_3_2: front&back: add to profile lwm2m (api, getModels...) * Lwm2m_3_2: back: fix bug from commented front: add update change observe/attribute/telemetry to config json * Lwm2m_3_2: back: fix bug from commented front: add update change observe/attribute/telemetry to config json (2) * Lwm2m_3_2: back: fix bug from commented front: add update change observe/attribute/telemetry to config json (3) * Lwm2m_3_2: back: fix bug from commented front: add update change observe/attribute/telemetry to config json (4) * Lwm2m_3_2: front: add update change bootstrapConfig and save to config json * Lwm2m_3_2: update after merge master * lwm2m: fix bug proto * lwm2m: fix bug in yml keyStore.jks * lwm2m: fix bug tests * lwm2m: front: add nameThingsboard * lwm2m: fix bug Autowired lwm2mContext, caseCamel * lwm2m: back-end^ start api /lwm2m/deviceProfile/bootstrap * lwm2m: back-end: add method read models from resources * lwm2m: back-end/front: add and finish api bootstrapConfig * lwm2m: back-end: add decode profile * lwm2m: back-end: add new bin in transport api * lwm2m: add microservice lwm2m and docker lwm2m. * lwm2m: add microservice lwm2m and docker lwm2m (fix bug) * lwm2m: front: start fix bug disabled resources * lwm2m: master to lwm2m merge, front add change attribute, telemetry * lwm2m: front PR * lwm2m: front add sort keyName to Json on the start * lwm2m: front add instances * lwm2m: front add/del instances FormGrp Value * lwm2m: Merge remote-tracking branch 'origin/master' into develop/lwm2m # Conflicts: # common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java # common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/SessionMsgListener.java # ui-ngx/src/app/modules/home/components/home-components.module.ts * lwm2m: Merge remote-tracking branch 'origin/master' into develop/lwm2m * lwm2m: Front: del sort after add/del instance * lwm2m: Front: fix bug reindex FormArray after update * Lwm2m: Front fix bug add/del instans * Lwm2m: Front finish1 profile * Lwm2m: Back add profile to ModelClient * Lwm2m: Back add form profile sent thingsboard: attr/tel/observe * Lwm2m: Back -> fix bug: serverKeyStore.jks] Unable to load KeyStore files server * Lwm2m: Back -> fix bug: onRegistered an unReg * Lwm2m: Back -> add updateProfiles * Lwm2m: Back -> add updateDevice and updateProfile dynamic * Lwm2m: Back -> error if CoapCode not access * Lwm2m: Front -> clear credential * Lwm2m: Front -> credential fix bug button "save" * Lwm2m: Back -> add telemetry logLwm2m Co-authored-by: nickAS21 <nick@avalr.com.ua>
Kubernetes resources configuration for ThingsBoard Microservices
This folder containing scripts and Kubernetes resources configurations to run ThingsBoard in Microservices mode.
Prerequisites
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.
Enable ingress addon
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
Installation
Before performing initial installation you can configure the type of database to be used with ThingsBoard and the type of deployment.
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).
To set deployment type change the value of DEPLOYMENT_TYPE variable in .env file to one of the following:
basic- startup with a single instance of Zookeeper, Kafka and Redis;high-availability- startup 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.
Running
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.
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: sysadmin@thingsboard.org / sysadmin
 
If you installed DataBase with demo data (using --loadDemo flag) you can also use the following credentials:
- Tenant Administrator: tenant@thingsboard.org / tenant
 - Customer User: customer@thingsboard.org / 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
Upgrading
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 validfromVersionvalues.