This is the multi-page printable view of this section. Click here to print.
Reference
- 1: Helm Chart
- 2: Microservices
- 2.1: Barcodereader
- 2.2: Cache
- 2.3: Data Bridge
- 2.4: Database
- 2.5: Factoryinsight
- 2.6: Grafana
- 2.7: Kafka Bridge
- 2.8: Kafka Broker
- 2.9: Kafka Console
- 2.10: Kafka to Postgresql
- 2.11: Kafka to Postgresql v2
- 2.12: MQTT Broker
- 2.13: MQTT Kafka Bridge
- 2.14: MQTT Simulator
- 2.15: MQTT to Postgresql
- 2.16: Node-RED
- 2.17: OPCUA Simulator
- 2.18: PackML Simulator
- 2.19: Sensorconnect
- 2.20: Tulip Connector
1 - Helm Chart
An Helm chart is a package manager for Kubernetes that simplifies the
installation, configuration, and deployment of applications and services.
It contains all the necessary Kubernetes manifests, configuration files, and
dependencies required to run a particular application or service. One of the
main advantages of Helm is that it allows to define the configuration of the
installed resources in a single YAML file, called values.yaml
. Helm provides
great documentation
on this process.
The Helm Chart of the United Manufacturing Hub is composed of both custom microservices and third-party applications. If you want a more in-depth view of the architecture of the United Manufacturing Hub, you can read the Architecture overview page.
Helm Chart structure
Custom microservices
The Helm Chart of the United Manufacturing Hub is composed of the following custom microservices:
- barcodereader: reads the input from a barcode reader and sends it to the MQTT broker for further processing.
- customMicroservice: a template for deploying any number of custom microservices.
- data-bridge: transfers data between two Kafka or MQTT brokers, transforming the data following the UNS data model.
- factoryinsight: provides REST endpoints to fetch data and calculate KPIs.
- MQTT Simulator: simulates sensors and sends the data to the MQTT broker for further processing.
- kafka-bridge: connects Kafka brokers on different Kubernetes clusters.
- kafkatopostgresql: stores the data from the Kafka broker in a PostgreSQL database.
- mqtt-kafka-bridge: connects the MQTT broker and the Kafka broker.
- opcuasimulator: simulates OPC UA servers and sends the data to the MQTT broker for further processing.
- packmlmqttsimulator: simulates a PackML state machine and sends the data to the MQTT broker for further processing.
- sensorconnect: connects to a sensor and sends the data to the MQTT and Kafka brokers for further processing.
- tulip-connector: exposes internal APIs to the internet, especially tailored for the Tulip platform.
Third-party applications
The Helm Chart of the United Manufacturing Hub is composed of the following third-party applications:
- Grafana: a visualization and analytics software.
- HiveMQ: an MQTT broker.
- Node-RED: a programming tool for wiring together hardware devices, APIs and online services.
- Redis: an in-memory data structure store, used for cache.
- RedPanda: a Kafka-compatible distributed event streaming platform.
- RedPanda Console: a web-based user interface for RedPanda.
- TimescaleDB: an open-source time-series SQL database.
Configuration options
The Helm Chart of the United Manufacturing Hub can be configured by setting
values in the values.yaml
file. This file has three main sections that can be
used to configure the applications:
- customers: contains the definition of the customers that will be created during the installation of the Helm Chart. This section is optional, and it’s used only by factoryinsight.
- _000_commonConfig: contains the basic configuration options to customize the United Manufacturing Hub, and it’s divided into sections that group applications with similar scope, like the ones that compose the infrastructure or the ones responsible for data processing. This is the section that should be mostly used to configure the microservices.
- _001_customMicroservices: used to define the configuration of custom microservices that are not included in the Helm Chart.
After those three sections, there are the specific sections for each microservice, which contain their advanced configuration. This is the so called Danger Zone, because the values in those sections should not be changed, unlsess you absolutely know what you are doing.
When a parameter contains .
(dot) characters, it means that it is a nested
parameter. For example, in the tls.factoryinsight.cert
parameter the cert
parameter is nested inside the tls.factoryinsight
section, and the factoryinsight
section is nested inside the tls
section.
Customers
The customers
section contains the definition of the customers that will be
created during the installation of the Helm Chart. It’s a simple dictionary where
the key is the name of the customer, and the value is the password.
For example, the following snippet creates two customers:
customers:
customer1: password1
customer2: password2
Common configuration options
The _000_commonConfig
contains the basic configuration options to customize the
United Manufacturing Hub, and it’s divided into sections that group applications
with similar scope.
The following table lists the configuration options that can be set in the
_000_commonConfig
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
datainput | The configuration of the microservices used to input data. | object | See below | See below |
datamodel_v2 | The configuration related to the UNS data model. | object | See below | See below |
dataprocessing | The configuration of the microservices used to process data. | object | See below | See below |
datasources | The configuration of the microservices used to acquire data. | object | See below | See below |
datastorage | The configuration of the microservices used to store data. | object | See below | See below |
debug | The configuration for the debug mode. | object | See below | See below |
infrastructure | The configuration of the microservices used to provide infrastructure services. | object | See below | See below |
kafkaBridge | The configuration for the Kafka bridge. | object | See below | See below |
metrics.enabled | Whether to enable the anonymous metrics service or not. | bool | true or false | true |
serialNumber | The hostname of the device. Used by some microservices to identify the device. | string | Any | default |
tulipconnector | The configuration for the Tulip connector. | object | See below | See below |
Data model v2
The _000_commonConfig.datamodel_v2
section contains the configuration related
to the UNS data model.
The following table lists the configuration options that can be set in the
_000_commonConfig.datamodel_v2
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the UNS data model should be used. | bool | true , false | true |
bridges | List of data bridges to create. | list | See below | See below |
database.name | The name of the database to use for the data model v2 | string | Any | umh_v2 |
database.host | The host of the database to use for the data model v2 | string | Any | united-manufacturing-hub |
grafana.dbreader | The name of the Grafana read-only database user | string | Any | grafanareader |
grafana.dbpassword | The password of the Grafana read-only database user | string | Any | changeme |
Bridges
The _000_commonConfig.datamodel_v2.bridges
section contains a list of configuration
options for the data bridge.
Each item in the list represents a data bridge instance, and the following table
lists the configuration options that can be set in each item:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
mode | The mode of the data bridge. | string | mqtt-kafka, kafka-kafka, mqtt-mqtt | mqtt-kafka |
brokerA | The address of the source broker. Can be either MQTT or Kafka, and must include the port | string | Valid address | united-manufacturing-hub-mqtt:1883 |
brokerB | The address of the destination broker. Can be either MQTT or Kafka, and must include the port | string | Valid address | united-manufacturing-hub-kafka:9092 |
topic | The topic to subscribe to. Can be in either MQTT or Kafka form. Wildcards (# for MQTT, .* for Kafka) are allowed in order to subscribe to multiple topics | string | Any | umh.v1..* |
topicMergePoint | The nth part of the topic to use as the message key. If the topic is umh/v1/acme/anytown/foo/bar/# , and this value is 5, then all the messages wil end up in the topic umh.v1.acme.anytown.foo | int | Greater than 3 | 5 |
partitions | The number of partitions to use for the destination topic. Only used if the destination broker is Kafka. | int | Greater than 0 | 6 |
replicationFactor | The replication factor to use for the destination topic. Only used if the destination broker is Kafka. | int | Odd integer | 1 |
mqttEnableTLS | Whether to enable TLS for the MQTT connection. Only used with MQTT brokers | bool | true , false | false |
mqttPassword | The password to use for the MQTT connection. Only used with MQTT brokers | string | Any | "" |
messageLRUSize | The size of the LRU cache used to avoid message looping. Only used with MQTT brokers | int | Any | 1000000 |
Data sources
The _000_commonConfig.datasources
section contains the configuration of the
microservices used to acquire data, like the ones that connect to a sensor or
simulate data.
The following table lists the configuration options that can be set in the
_000_commonConfig.datasources
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
barcodereader | The configuration of the barcodereader microservice. | object | See below | See below |
iotsensorsmqtt | The configuration of the IoTSensorsMQTT microservice. | object | See below | See below |
opcuasimulator | The configuration of the opcuasimulator microservice. | object | See below | See below |
packmlmqttsimulator | The configuration of the packmlsimulator microservice. | object | See below | See below |
sensorconnect | The configuration of the sensorconnect microservice. | object | See below | See below |
Barcode reader
The _000_commonConfig.datasources.barcodereader
section contains the
configuration of the barcodereader
microservice.
The following table lists the configuration options that can be set in the
_000_commonConfig.datasources.barcodereader
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the barcodereader microservice is enabled. | bool | true , false | false |
USBDeviceName | The name of the USB device to use. | string | Any | Datalogic ADC, Inc. Handheld Barcode Scanner |
USBDevicePath | The path of the USB device to use. It is recommended to use a wildcard (for example, /dev/input/event* ) or leave empty | string | Valid Unix device path | "" |
customerID | The customer ID to use in the topic structure. | string | Any | raw |
location | The location to use in the topic structure. | string | Any | barcodereader |
machineID | The asset ID to use in the topic structure. | string | Any | barcodereader |
IoT Sensors MQTT
The _000_commonConfig.datasources.iotsensorsmqtt
section contains the
configuration of the IoTSensorsMQTT
microservice.
The following table lists the configuration options that can be set in the
_000_commonConfig.datasources.iotsensorsmqtt
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the IoTSensorsMQTT microservice is enabled. | bool | true , false | true |
OPC UA Simulator
The _000_commonConfig.datasources.opcuasimulator
section contains the
configuration of the opcuasimulator
microservice.
The following table lists the configuration options that can be set in the
_000_commonConfig.datasources.opcuasimulator
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the opcuasimulator microservice is enabled. | bool | true , false | true |
PackML MQTT Simulator
The _000_commonConfig.datasources.packmlmqttsimulator
section contains the
configuration of the packmlsimulator
microservice.
The following table lists the configuration options that can be set in the
_000_commonConfig.datasources.packmlmqttsimulator
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the packmlsimulator microservice is enabled. | bool | true , false | true |
Sensor connect
The _000_commonConfig.datasources.sensorconnect
section contains the
configuration of the sensorconnect
microservice.
The following table lists the configuration options that can be set in the
_000_commonConfig.datasources.sensorconnect
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the sensorconnect microservice is enabled. | bool | true , false | false |
iprange | The IP range of the sensors in CIDR notation. | string | Valid IP range | 192.168.10.1/24 |
enableKafka | Whether the sensorconnect microservice should use Kafka. | bool | true , false | true |
enableMQTT | Whether the sensorconnect microservice should use MQTT. | bool | true , false | false |
testMode | Whether to enable test mode. Only useful for development. | bool | true , false | false |
Data processing
The _000_commonConfig.dataprocessing
section contains the configuration of the
microservices used to process data, such as the nodered
microservice.
The following table lists the configuration options that can be set in the
_000_commonConfig.dataprocessing
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
nodered | The configuration of the nodered microservice. | object | See below | See below |
Node-RED
The _000_commonConfig.dataprocessing.nodered
section contains the configuration
of the nodered microservice.
The following table lists the configuration options that can be set in the
_000_commonConfig.dataprocessing.nodered
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the nodered microservice is enabled. | bool | true , false | true |
defaultFlows | Whether the default flows should be used. | bool | true , false | false |
Infrastructure
The _000_commonConfig.infrastructure
section contains the configuration of the
microservices responsible for connecting all the other microservices, such as the
MQTT broker and the
Kafka broker.
The following table lists the configuration options that can be set in the
_000_commonConfig.infrastructure
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
mqtt | The configuration of the MQTT broker. | object | See below | See below |
kafka | The configuration of the Kafka broker. | object | See below | See below |
MQTT
The _000_commonConfig.infrastructure.mqtt
section contains the configuration
of the MQTT broker.
The following table lists the configuration options that can be set in the
_000_commonConfig.infrastructure.mqtt
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the MQTT broker is enabled | bool | true , false | true |
adminUser.enabled | Whether the admin user is enabled | bool | true , false | false |
adminUser.name | The name of the admin user | string | Any UTF-8 string | admin-user |
adminUser.encryptedPassword | The encrypted password of the admin user | string | Any | "" |
tls.useTLS | Whether TLS should be used | bool | true , false | true |
tls.insecureSkipVerify | Whether the SSL certificate validation should be skipped | bool | true , false | true |
tls.keystoreBase64 | The base64 encoded keystore | string | Any | "" |
tls.keystorePassword | The password of the keystore | string | Any | "" |
tls.truststoreBase64 | The base64 encoded truststore | string | Any | "" |
tls.truststorePassword | The password of the truststore | string | Any | "" |
tls.caCert | The CA certificate | string | Any | "" |
tls.mqtt_kafka_bridge.cert | The certificate used for the mqttkafkabridge | string | Any | "" |
tls.mqtt_kafka_bridge.key | The key used for the mqttkafkabridge | string | Any | "" |
tls.sensorconnect.cert | The certificate used for the sensorconnect microservice | string | Any | "" |
tls.sensorconnect.key | The key used for the sensorconnect microservice | string | Any | "" |
tls.iotsensorsmqtt.cert | The certificate used for the iotsensorsmqtt microservice | string | Any | "" |
tls.iotsensorsmqtt.key | The key used for the iotsensorsmqtt microservice | string | Any | "" |
tls.packmlsimulator.cert | The certificate used for the packmlsimulator microservice | string | Any | "" |
tls.packmlsimulator.key | The key used for the packmlsimulator microservice | string | Any | "" |
tls.nodered.cert | The certificate used for the nodered microservice | string | Any | "" |
tls.nodered.key | The key used for the nodered microservice | string | Any | "" |
Kafka
The _000_commonConfig.infrastructure.kafka
section contains the configuration
of the Kafka broker
and related services, like mqttkafkabridge,
kafkatopostgresql
and the Kafka console.
The following table lists the configuration options that can be set in the
_000_commonConfig.infrastructure.kafka
section:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether the Kafka broker and related services are enabled | bool | true , false | true |
useSSL | Whether SSL should be used | bool | true , false | true |
defaultTopics | The default topics that should be created | string | Semicolon separated list of valid Kafka topics | ia.test.test.test.processValue;ia.test.test.test.count;umh.v1.kafka.newTopic |
tls.CACert | The CA certificate | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafka.cert | The certificate used for the kafka broker | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafka.privkey | The private key of the certificate for the Kafka broker | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.barcodereader.sslKeyPassword | The encrypted password of the SSL key for the barcodereader microservice. If empty, no password is used | string | Any | "" |
tls.barcodereader.sslKeyPem | The private key for the SSL certificate of the barcodereader microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.barcodereader.sslCertificatePem | The private SSL certificate for the barcodereader microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkabridge.sslKeyPasswordLocal | The encrypted password of the SSL key for the local kafkabridge broker. If empty, no password is used | string | Any | "" |
tls.kafkabridge.sslKeyPemLocal | The private key for the SSL certificate of the local kafkabridge broker | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kafkabridge.sslCertificatePemLocal | The private SSL certificate for the local kafkabridge broker | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkabridge.sslCACertRemote | The CA certificate for the remote kafkabridge broker | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkabridge.sslCertificatePemRemote | The private SSL certificate for the remote kafkabridge broker | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkabridge.sslKeyPasswordRemote | The encrypted password of the SSL key for the remote kafkabridge broker. If empty, no password is used | string | Any | "" |
tls.kafkabridge.sslKeyPemRemote | The private key for the SSL certificate of the remote kafkabridge broker | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kafkadebug.sslKeyPassword | The encrypted password of the SSL key for the kafkadebug microservice. If empty, no password is used | string | Any | "" |
tls.kafkadebug.sslKeyPem | The private key for the SSL certificate of the kafkadebug microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kafkadebug.sslCertificatePem | The private SSL certificate for the kafkadebug microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkainit.sslKeyPassword | The encrypted password of the SSL key for the kafkainit microservice. If empty, no password is used | string | Any | "" |
tls.kafkainit.sslKeyPem | The private key for the SSL certificate of the kafkainit microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kafkainit.sslCertificatePem | The private SSL certificate for the kafkainit microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkatopostgresql.sslKeyPassword | The encrypted password of the SSL key for the kafkatopostgresql microservice. If empty, no password is used | string | Any | "" |
tls.kafkatopostgresql.sslKeyPem | The private key for the SSL certificate of the kafkatopostgresql microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kafkatopostgresql.sslCertificatePem | The private SSL certificate for the kafkatopostgresql microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kowl.sslKeyPassword | The encrypted password of the SSL key for the kowl microservice. If empty, no password is used | string | Any | "" |
tls.kowl.sslKeyPem | The private key for the SSL certificate of the kowl microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kowl.sslCertificatePem | The private SSL certificate for the kowl microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.mqttkafkabridge.sslKeyPassword | The encrypted password of the SSL key for the mqttkafkabridge microservice. If empty, no password is used | string | Any | "" |
tls.mqttkafkabridge.sslKeyPem | The private key for the SSL certificate of the mqttkafkabridge microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.mqttkafkabridge.sslCertificatePem | The private SSL certificate for the mqttkafkabridge microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.nodered.sslKeyPassword | The encrypted password of the SSL key for the nodered microservice. If empty, no password is used | string | Any | "" |
tls.nodered.sslKeyPem | The private key for the SSL certificate of the nodered microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.nodered.sslCertificatePem | The private SSL certificate for the nodered microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.sensorconnect.sslKeyPassword | The encrypted password of the SSL key for the sensorconnect microservice. If empty, no password is used | string | Any | "" |
tls.sensorconnect.sslKeyPem | The private key for the SSL certificate of the sensorconnect microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.sensorconnect.sslCertificatePem | The private SSL certificate for the sensorconnect microservice | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
Data storage
The _000_commonConfig.datastorage
section contains the configuration of the
microservices used to store data. Specifically, it controls the following
microservices:
If you want to specifically configure one of these microservices, you can do so in their respective sections in the Danger Zone.
The following table lists the configurable parameters of the
_000_commonConfig.datastorage
section.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the data storage microservices | bool | true , false | true |
db_password | The password for the database. Used by all the microservices that need to connect to the database | string | Any | changeme |
Kafka Bridge
The _000_commonConfig.kafkaBridge
section contains the configuration of the
kafka-bridge microservice,
responsible for bridging Kafka brokers in different Kubernetes clusters.
The following table lists the configurable parameters of the
_000_commonConfig.kafkaBridge
section.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the kafka-bridge microservice | bool | true , false | false |
remotebootstrapServer | The URL of the remote Kafka broker | string | Any | "" |
topicCreationLocalList | The list of topics to create locally | string | Semicolon separated list of valid Kafka topics | ia.test.test.test.processValue;ia.test.test.test.count;umh.v1.kafka.newTopic |
topicCreationRemoteList | The list of topics to create remotely | string | Semicolon separated list of valid Kafka topics | ia.test.test.test.processValue;ia.test.test.test.count;umh.v1.kafka.newTopic |
topicmap | The list of topic maps of topics to forward | object | See below | empty |
Topic Map
The topicmap
parameter is a list of topic maps, each of which contains the
following parameters:
Parameter | Description | Type | Allowed values |
---|---|---|---|
bidirectional | Whether to enable bidirectional communication for that topic | bool | true , false |
name | The name of the map | string | HighIntegrity, HighThroughput |
send_direction | The direction of the communication for that topic | string | to_remote, to_local |
topic | The topic to forward. A regex can be used to match multiple topics. | string | Any valid Kafka topic |
For more information about the topic maps, see the kafka-bridge documentation.
Debug
The _000_commonConfig.debug
section contains the debug configuration for all
the microservices. This values should not be enabled in production.
The following table lists the configurable parameters of the
_000_commonConfig.debug
section.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enableFGTrace | Whether to enable the foreground trace | bool | true , false | false |
Tulip Connector
The _000_commonConfig.tulipconnector
section contains the configuration of
the tulip-connector
microservice, responsible for connecting a Tulip instance with the United
Manufacturing Hub.
The following table lists the configurable parameters of the
_000_commonConfig.tulipconnector
section.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the tulip-connector microservice | bool | true , false | false |
domain | The domain name pointing to you cluster | string | Any valid domain name | tulip-connector.changme.com |
Custom microservices configuration
The _001_customConfig
section contains a list of custom microservices
definitions. It can be used to deploy any application of your choice, which can
be configured using the following parameters:
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
name | The name of the microservice | string | Any | example |
image | The image and tag of the microservice | string | Any | hello-world:latest |
enabled | Whether to enable the microservice | bool | true , false | false |
imagePullPolicy | The image pull policy of the microservice | string | “Always”, “IfNotPresent”, “Never” | “Always” |
env | The list of environment variables to set for the microservice | object | Any | [{name: LOGGING_LEVEL, value: PRODUCTION}] |
port | The internal port of the microservice to target | int | Any | 80 |
externalPort | The host port to which expose the internal port | int | Any | 8080 |
probePort | The port to use for the liveness and startup probes | int | Any | 9091 |
startupProbe | The interval in seconds for the startup probe | int | Any | 200 |
livenessProbe | The interval in seconds for the liveness probe | int | Any | 500 |
statefulEnabled | Create a PersistentVolumeClaim for the microservice and mount it in /data | bool | true , false | false |
Danger zone
The next sections contain a more advanced configuration of the microservices. Usually, changing the values of the previous sections is enough to run the United Manufacturing Hub. However, you may need to adjust some of the values below if you want to change the default behavior of the microservices.
Section | Description |
---|---|
barcodereader | Configuration for barcodereader |
databridge | Configuration for databridge |
factoryinsight | Configuration for factoryinsight |
grafana | Configuration for Grafana |
iotsensorsmqtt | Configuration for the IoTSensorsMQTT simulator |
kafkabridge | Configuration for kafka-bridge |
kafkatopostgresql | Configuration for kafka-to-postgresql |
kafkatopostgresqlv2 | Configuration for kafka-to-postgresql-v2 |
metrics | Configuration for the metrics |
mqtt_broker | Configuration for the MQTT broker |
mqttkafkabridge | Configuration for mqtt-kafka-bridge |
nodered | Configuration for Node-RED |
opcuasimulator | Configuration for the OPC UA simulator |
packmlmqttsimulator | Configuration for the PackML MQTT simulator |
redis | Configuration for Redis |
redpanda | Configuration for the Kafka broker |
sensorconnect | Configuration for sensorconnect |
serviceAccount | Configuration for the service account used by the microservices |
timescaledb-single | Configuration for TimescaleDB |
tulipconnector | Configuration for tulip-connector |
Sections
barcodereader
The barcodereader
section contains the advanced configuration of the
barcodereader
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
annotations | Annotations to add to the Kubernetes resources | object | Any | {} |
enabled | Whether to enable the barcodereader microservice | bool | true , false | false |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the barcodereader microservice | string | Any | ghcr.io/united-manufacturing-hub/barcodereader |
image.tag | The tag of the barcodereader microservice. Defaults to Chart version if not set | string | Any | |
resources.limits.cpu | The CPU limit | string | Any | 10m |
resources.limits.memory | The memory limit | string | Any | 60Mi |
resources.requests.cpu | The CPU request | string | Any | 2m |
resources.requests.memory | The memory request | string | Any | 30Mi |
scanOnly | Whether to only scan without sending the data to the Kafka broker | bool | true , false | false |
databridge
The databridge
section contains the advanced configuration of the
databridge
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the databridge microservice | bool | true , false | false |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the databridge microservice | string | Any | ghcr.io/united-manufacturing-hub/databridge |
image.tag | The tag of the databridge microservice. Defaults to Chart version if not set | string | Any | |
pdb.enabled | Whether to enable a PodDisruptionBudget | bool | true , false | true |
pdb.minAvailable | The minimum number of available pods | int | Any | 1 |
replicas | The number of Pod replicas | int | Any | 1 |
resources.limits.cpu | The CPU limit | string | Any | 400m |
resources.limits.memory | The memory limit | string | Any | 300Mi |
resources.requests.cpu | The CPU request | string | Any | 500m |
resources.requests.memory | The memory request | string | Any | 450Mi |
factoryinsight
The factoryinsight
section contains the advanced configuration of the
factoryinsight
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
db_database | The database name | string | Any | factoryinsight |
db_host | The host of the database | string | Any | [i18n] resource_service_database |
db_user | The database user | string | Any | factoryinsight |
enabled | Whether to enable the factoryinsight microservice | bool | true , false | false |
hpa.enabled | Whether to enable a HorizontalPodAutoscaler | bool | true , false | false |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the factoryinsight microservice | string | Any | ghcr.io/united-manufacturing-hub/factoryinsight |
image.tag | The tag of the factoryinsight microservice. Defaults to Chart version if not set | string | Any | |
ingress.enabled | Whether to enable an Ingress | bool | true , false | false |
ingress.publicHostSecretName | The secret name of the public host of the Ingress | string | Any | "" |
ingress.publicHost | The public host of the Ingress | string | Any | "" |
insecure_no_auth | Whether to enable the insecure_no_auth mode | bool | true , false | false |
pdb.enabled | Whether to enable a PodDisruptionBudget | bool | true , false | false |
redis.URI | The URI of the Redis instance | string | Any | united-manufacturing-hub-redis-headless:6379 |
replicas | The number of Pod replicas | int | Any | 2 |
resources.limits.cpu | The CPU limit | string | Any | 200m |
resources.limits.memory | The memory limit | string | Any | 200Mi |
resources.requests.cpu | The CPU request | string | Any | 50m |
resources.requests.memory | The memory request | string | Any | 50Mi |
service.annotations | Annotations to add to the factoryinsight Service | object | Any | {} |
user | The user of factoryinsight | string | Any | factoryinsight |
version | The version of the API used. Each version also enables all the previous ones | int | Any | 2 |
grafana
The grafana
section contains the advanced configuration of the
grafana microservice. This is
based on the official Grafana Helm chart.
For more information about the parameters, please refer to the
official documentation.
Here are only the values different from the default ones.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
admin.existingSecret | The name of the secret containing the admin password | string | Any | grafana-secret |
admin.passwordKey | The key of the admin password in the secret | string | Any | adminpassword |
admin.userKey | The key of the admin password in the secret | string | Any | adminuser |
datasources | The datasources configuration. | object | Any | See datasources section |
envValueFrom | Environment variables to add to the Pod, from a secret or a configmap | object | Any | See envValueFrom section |
env | Environment variables to add to the Pod | object | Any | See env section |
extraInitContainers | Extra init containers to add to the Pod | object | Any | See extraInitContainers section |
grafana.ini | The grafana.ini configuration. | object | Any | See grafana.ini section |
initChownData.enabled | Whether to enable the initChownData job, to reset data ownership at startup | bool | true , false | true |
persistence.enabled | Whether to enable persistence | bool | true , false | true |
persistence.size | The size of the persistent volume | string | Any | 5Gi |
podDisruptionBudget.minAvailable | The minimum number of available pods | int | Any | 1 |
service.port | The port of the Service | int | Any | 8080 |
service.type | The type of Service to expose | string | ClusterIP, LoadBalancer | LoadBalancer |
serviceAccount.create | Whether to create a ServiceAccount | bool | true , false | false |
testFramework.enabled | Whether to enable the test framework | bool | true , false | false |
datasources
The datasources
section contains the configuration of the datasources
provisioning. See the
Grafana documentation
for more information.
datasources.yaml:
apiVersion: 1
datasources:
- name: umh-v2-datasource
# <string, required> datasource type. Required
type: umh-v2-datasource
# <string, required> access mode. proxy or direct (Server or Browser in the UI). Required
access: proxy
# <int> org id. will default to orgId 1 if not specified
orgId: 1
url: "http://united-manufacturing-hub-factoryinsight-service/"
jsonData:
customerID: $FACTORYINSIGHT_CUSTOMERID
apiKey: $FACTORYINSIGHT_PASSWORD
baseURL: "http://united-manufacturing-hub-factoryinsight-service/"
apiKeyConfigured: true
version: 1
# <bool> allow users to edit datasources from the UI.
isDefault: false
editable: false
# <string, required> name of the datasource. Required
- name: umh-datasource
# <string, required> datasource type. Required
type: umh-datasource
# <string, required> access mode. proxy or direct (Server or Browser in the UI). Required
access: proxy
# <int> org id. will default to orgId 1 if not specified
orgId: 1
url: "http://united-manufacturing-hub-factoryinsight-service/"
jsonData:
customerId: $FACTORYINSIGHT_CUSTOMERID
apiKey: $FACTORYINSIGHT_PASSWORD
serverURL: "http://united-manufacturing-hub-factoryinsight-service/"
apiKeyConfigured: true
version: 1
# <bool> allow users to edit datasources from the UI.
isDefault: false
editable: false
- name: UMH TimescaleDB
type: postgres
url: united-manufacturing-hub:5432
user: $GRAFANAREADER_USER
isDefault: true
secureJsonData:
password: $GRAFANAREADER_PASSWORD
jsonData:
database: umh_v2
sslmode: 'require' # disable/require/verify-ca/verify-full
maxOpenConns: 100 # Grafana v5.4+
maxIdleConns: 100 # Grafana v5.4+
maxIdleConnsAuto: true # Grafana v9.5.1+
connMaxLifetime: 14400 # Grafana v5.4+
postgresVersion: 1300 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10
timescaledb: true
envValueFrom
The envValueFrom
section contains the configuration of the environment
variables to add to the Pod, from a secret or a configmap.
Parameter | Description | Value from | Name | Key |
---|---|---|---|---|
FACTORYINSIGHT_APIKEY | The API key to use to authenticate to the Factoryinsight API | secretKeyRef | factoryinsight-secret | apiKey |
FACTORYINSIGHT_BASEURL | The base URL of the Factoryinsight API | secretKeyRef | factoryinsight-secret | baseURL |
FACTORYINSIGHT_CUSTOMERID | The customer ID to use to authenticate to the Factoryinsight API | secretKeyRef | factoryinsight-secret | customerID |
FACTORYINSIGHT_PASSWORD | The password to use to authenticate to the Factoryinsight API | secretKeyRef | factoryinsight-secret | password |
GRAFANAREADER_USER | The name of the Grafana read-only user for the data model v2 | secretKeyRef" | grafana-secret | grafanareader |
GRAFANAREADER_PASSWORD | The password of the Grafana read-only user for the data model v2 | secretKeyRef" | grafana-secret | grafanareaderpassword |
env
The env
section contains the configuration of the environment variables to add
to the Pod.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS | List of plugin identifiers to allow loading even if they lack a valid signature | string | Comma separated list | umh-datasource, umh-v2-datasource |
extraInitContainers
The extraInitContainers
section contains the configuration of the extra init
containers to add to the Pod.
The init-plugins container is used to install the default plugins shipped with the UMH version of Grafana without the need to have an internet connection. See the documentation for a list of the plugins.
- image: unitedmanufacturinghub/grafana-umh:1.2.0
name: init-plugins
imagePullPolicy: IfNotPresent
command: ['sh', '-c', 'cp -r /plugins /var/lib/grafana/']
volumeMounts:
- name: storage
mountPath: /var/lib/grafana
grafana.ini
The grafana.ini
section contains the configuration of the grafana.ini file.
See the Grafana documentation
for more information.
paths:
data: /var/lib/grafana/data
logs: /var/log/grafana
plugins: /var/lib/grafana/plugins
provisioning: /etc/grafana/provisioning
database:
host: united-manufacturing-hub
user: "grafana"
name: "grafana"
password: "changeme"
ssl_mode: require
type: postgres
iotsensorsmqtt
The iotsensorsmqtt
section contains the configuration of the IoT Sensors MQTT
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
image | The image of the iotsensorsmqtt microservice | string | Any | amineamaach/sensors-mqtt |
mqtt.encryptedPassword | The encrypted password of the MQTT broker | string | Any | Base 64 encrypted password |
mqtt.password | The password of the MQTT broker | string | Any | INSECURE_INSECURE_INSECURE |
resources.limits.cpu | The CPU limit | string | Any | 30m |
resources.limits.memory | The memory limit | string | Any | 50Mi |
resources.requests.cpu | The CPU request | string | Any | 10m |
resources.requests.memory | The memory request | string | Any | 20Mi |
tag | The tag of the iotsensorsmqtt microservice. Defaults to latest if not set | string | Any | v1.0.0 |
kafkabridge
The kafkabridge
section contains the configuration of the
Kafka bridge.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the kafka-bridge microservice | string | Any | ghcr.io/united-manufacturing-hub/kafka-bridge |
image.tag | The tag of the kafka-bridge microservice. Defaults to Chart version if not set | string | Any | |
initContainer.pullPolicy | The image pull policy of the init container | string | Always, IfNotPresent, Never | IfNotPresent |
initContainer.repository | The image of the init container | string | Any | ghcr.io/united-manufacturing-hub/kafka-init |
initContainer.tag | The tag of the init container. Defaults to Chart version if not set | string | Any |
kafkatopostgresql
The kafkatopostgresql
section contains the configuration of the
Kafka to PostgreSQL microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the Kafka to PostgreSQL microservice | bool | true , false | true |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the kafkatopostgresql microservice | string | Any | ghcr.io/united-manufacturing-hub/kafka-to-postgresql |
image.tag | The tag of the kafkatopostgresql microservice. Defaults to Chart version if not set | string | Any | |
initContainer.pullPolicy | The image pull policy of the init container | string | Always, IfNotPresent, Never | IfNotPresent |
initContainer.repository | The image of the init container | string | Any | ghcr.io/united-manufacturing-hub/kafka-init |
initContainer.tag | The tag of the init container. Defaults to Chart version if not set | string | Any | |
replicas | The number of Pod replicas | int | Any | 1 |
resources.limits.cpu | The CPU limit | string | Any | 200m |
resources.limits.memory | The memory limit | string | Any | 300Mi |
resources.requests.cpu | The CPU request | string | Any | 50m |
resources.requests.memory | The memory request | string | Any | 150Mi |
kafkatopostgresqlv2
The kafkatopostgresqlv2
section contains the configuration of the
Kafka to PostgreSQL v2 microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the Kafka to PostgreSQL v2 microservice | bool | true , false | true |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the kafkatopostgresqlv2 microservice | string | Any | ghcr.io/united-manufacturing-hub/kafka-to-postgresql-v2 |
image.tag | The tag of the kafkatopostgresqlv2 microservice. Defaults to Chart version if not set | string | Any | |
replicas | The number of Pod replicas | int | Any | 1 |
resources.limits.cpu | The CPU limit | string | Any | 200m |
resources.limits.memory | The memory limit | string | Any | 300Mi |
resources.requests.cpu | The CPU request | string | Any | 50m |
resources.requests.memory | The memory request | string | Any | 150Mi |
probes.startup.failureThreshold | The failure threshold of the startup probe | int | Any | 30 |
probes.startup.initialDelaySeconds | The initial delay of the startup probe | int | Any | 10 |
probes.startup.periodSeconds | The period of the startup probe | int | Any | 10 |
probes.liveness.periodSeconds | The period of the liveness probe | int | Any | 10 |
probes.readiness.periodSeconds | The period of the readiness probe | int | Any | 10 |
logging.level | The logging level of the microservice | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
asset.cache.lru.size | The size of the LRU cache | int | Any | 1000 |
workers.channel.size | Size in messages for each worker’s channel | int | Any | 10000 |
workers.goroutines.multiplier | The multiplier of the number of goroutines. The total number of goroutines is determined by the CPU count times the multiplier | int | Any | 16 |
database.user | The name of the database user for the Kafka to PostgreSQL v2 microservice | string | Any | kafkatopostgresqlv2 |
database.password | The password of the database user for the Kafka to PostgreSQL v2 microservice | string | Any | changemetoo |
metrics
The metrics
section contains the configuration of the metrics CronJob that
sends anonymous usage data.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the metrics microservice | string | Any | ghcr.io/united-manufacturing-hub/metrics |
cronJob.schedule | The schedule of the CronJob | string | Any | 0 */4 * * * (every 4 hours) |
mqtt_broker
The mqtt_broker
section contains the configuration of the
MQTT broker.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the mqtt_broker microservice | string | Any | hivemq/hivemq-ce |
image.tag | The tag of the mqtt_broker microservice. Defaults to 2022.1 if not set | string | Any | 2022.1 |
initContainer | The init container configuration | object | Any | See initContainer section |
persistence.extension.size | The size of the persistence volume for the extensions | string | Any | 100Mi |
persistence.storage.size | The size of the persistence volume for the storage | string | Any | 2Gi |
rbacEnabled | Whether to enable RBAC | bool | true , false | false |
resources.limits.cpu | The CPU limit | string | Any | 700m |
resources.limits.memory | The memory limit | string | Any | 1700Mi |
resources.requests.cpu | The CPU request | string | Any | 300m |
resources.requests.memory | The memory request | string | Any | 1000Mi |
service.mqtt.enabled | Whether to enable the MQTT service | bool | true , false | true |
service.mqtt.port | The port of the MQTT service | int | Any | 1883 |
service.mqtts.cipher_suites | The ciphersuites to enable | string array | Any | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA |
service.mqtts.enabled | Whether to enable the MQTT over TLS service | bool | true , false | true |
service.mqtts.port | The port of the MQTT over TLS service | int | Any | 8883 |
service.mqtts.tls_versions | The TLS versions to enable | string array | Any | TLSv1.3, TLSv1.2 |
service.ws.enabled | Whether to enable the WebSocket service | bool | true , false | false |
service.ws.port | The port of the WebSocket service | int | Any | 8080 |
service.wss.cipher_suites | The ciphersuites to enable | string array | Any | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA |
service.wss.enabled | Whether to enable the WebSocket over TLS service | bool | true , false | false |
service.wss.port | The port of the WebSocket over TLS service | int | Any | 8443 |
service.wss.tls_versions | The TLS versions to enable | string array | Any | TLSv1.3, TLSv1.2 |
initContainer
The initContainer
section contains the configuration for the init containers.
By default, the hivemqextensioninit container is used to initialize the HiveMQ
extensions.
initContainer:
hivemqextensioninit:
image:
repository: unitedmanufacturinghub/hivemq-init
tag: 2.0.0
pullPolicy: IfNotPresent
mqttkafkabridge
The mqttkafkabridge
section contains the configuration of the
MQTT-Kafka bridge.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the MQTT-Kafka bridge | bool | true , false | false |
image.pullPolicy | The pull policy of the mqtt-kafka-bridge microservice | string | Any | IfNotPresent |
image.repository | The image of the mqtt-kafka-bridge microservice | string | Any | ghcr.io/united-manufacturing-hub/mqtt-kafka-bridge |
image.tag | The tag of the mqtt-kafka-bridge microservice. Defaults to Chart version if not set | string | Any | |
initContainer.pullPolicy | The pull policy of the init container | string | Any | IfNotPresent |
initContainer.repository | The image of the init container | string | Any | ghcr.io/united-manufacturing-hub/kafka-init |
initContainer.tag | The tag of the init container. Defaults to Chart version if not set | string | Any | |
kafkaAcceptNoOrigin | Allow access to the Kafka broker without a valid x-trace | bool | true , false | false |
kafkaSenderThreads | The number of threads for sending messages to the Kafka broker | int | Any | 1 |
messageLRUSize | The size of the LRU cache for messages | int | Any | 100000 |
mqtt.encryptedPassword | The encrypted password of the MQTT broker | string | Any | Base 64 encrypted password |
mqtt.password | The password of the MQTT broker | string | Any | INSECURE_INSECURE_INSECURE |
mqttSenderThreads | The number of threads for sending messages to the MQTT broker | int | Any | 1 |
pdb.enabled | Whether to enable the pod disruption budget | bool | true , false | true |
pdb.minAvailable | The minimum number of pods that must be available | int | Any | 1 |
rawMessageLRUSize | The size of the LRU cache for raw messages | int | Any | 100000 |
resources.limits.cpu | The CPU limit | string | Any | 500m |
resources.limits.memory | The memory limit | string | Any | 450Mi |
resources.requests.cpu | The CPU request | string | Any | 400m |
resources.requests.memory | The memory request | string | Any | 300Mi |
nodered
The nodered
section contains the configuration of the
Node-RED microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
env | Environment variables to add to the Pod | object | Any | See env section |
flows | A JSON string containing the flows to import into Node-RED | string | Any | See the documentation |
ingress.enabled | Whether to enable the ingress | bool | true , false | false |
ingress.publicHostSecretName | The secret name of the public host of the Ingress | string | Any | "" |
ingress.publicHost | The public host of the Ingress | string | Any | "" |
mqtt.encryptedPassword | The encrypted password of the MQTT broker | string | Any | Base 64 encrypted password |
port | The port of the Node-RED service | int | Any | 1880 |
serviceType | The type of the service | string | ClusterIP, LoadBalancer | LoadBalancer |
settings | A JSON string containing the settings of Node-RED | string | Any | See the documentation |
storageRequest | The amount of storage for the PersistentVolumeClaim | string | Any | 1Gi |
tag | The Node-RED version | string | Any | 2.0.6 |
timezone | The timezone | string | Any | Berlin/Europe |
env
The env
section contains the environment variables to add to the Pod.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
NODE_RED_ENABLE_SAVE_MODE | Whether to enable the save mode | bool | true , false | false |
opcuasimulator
The opcuasimulator
section contains the configuration of the
OPC UA Simulator microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
certadds.hosts | Hosts to add to the certificate | string | Any | united-manufacturing-hub-opcuasimulator-service |
certadds.ips | IPs to add to the certificate | string | Any | "" |
image | The image of the OPC UA Simulator microservice | string | Any | ghcr.io/united-manufacturing-hub/opcuasimulator |
resources.limits.cpu | The CPU limit | string | Any | 30m |
resources.limits.memory | The memory limit | string | Any | 50Mi |
resources.requests.cpu | The CPU request | string | Any | 10m |
resources.requests.memory | The memory request | string | Any | 20Mi |
service.annotations | The annotations of the service | object | Any | {} |
tag | The tag of the OPC UA Simulator microservice. Defaults to latest if not set | string | Any | 0.1.0 |
packmlmqttsimulator
The packmlmqttsimulator
section contains the configuration of the
PackML MQTT Simulator
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
image.repository | The image of the PackML MQTT Simulator microservice | string | Any | spruiktec/packml-simulator |
image.hash | The hash of the image of the PackML MQTT Simulator microservice | string | Any | 01e2f0da3542f1b4e0de830a8d24135de03fd9174dce184ed329bed3ee688e19 |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
replicas | The number of replicas | int | Any | 1 |
resources.limits.cpu | The CPU limit | string | Any | 30m |
resources.limits.memory | The memory limit | string | Any | 50Mi |
resources.requests.cpu | The CPU request | string | Any | 10m |
resources.requests.memory | The memory request | string | Any | 20Mi |
env | Environment variables to add to the Pod | object | Any | See env section |
env
The env
section contains the environment variables to add to the Pod.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
area | ISA-95 area name of the line | string | Any | DefaultArea |
productionLine | ISA-95 line name of the line | string | Any | DefaultProductionLine |
site | ISA-95 site name of the line | string | Any | testLocation |
mqtt.password | The password of the MQTT broker | string | Any | INSECURE_INSECURE_INSECURE |
mqtt.encryptedPassword | The encrypted password of the MQTT broker | string | Any | Base 64 encrypted password |
redis
The redis
section contains the configuration of the
Redis microservice. This is
based on the official Redis Helm chart.
For more information about the parameters, see the
official documentation.
Here are only the values different from the default ones.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
architecture | Redis architecture | string | standalone, replication | standalone |
auth.existingSecretPasswordKey | Password key to be retrieved from existing secret | string | Any | redispassword |
auth.existingSecret | The name of the existing secret with Redis credentials | string | Any | redis-secret |
commonConfiguration | Common configuration to be added into the ConfigMap | string | Any | See commonConfiguration section |
master.extraFlags | Array with additional command line flags for Redis master | string array | Any | –maxmemory 200mb |
master.livenessProbe.initialDelaySeconds | The initial delay before the liveness probe starts | int | Any | 5 |
master.readinessProbe.initialDelaySeconds | The initial delay before the readiness probe starts | int | Any | 120 |
master.resources.limits.cpu | The CPU limit | string | Any | 100m |
master.resources.limits.memory | The memory limit | string | Any | 100Mi |
master.resources.requests.cpu | The CPU request | string | Any | 50m |
master.resources.requests.memory | The memory request | string | Any | 50Mi |
metrics.enabled | Start a sidecar prometheus exporter to expose Redis metrics | bool | true , false | true |
pdb.create | Whether to create a Pod Disruption Budget | bool | true , false | true |
pdb.minAvailable | Min number of pods that must still be available after the eviction | int | Any | 2 |
serviceAccount.create | Whether to create a service account | bool | true , false | false |
commonConfiguration
The commonConfiguration
section contains the common configuration to be
added into the ConfigMap. For more information, see the
documentation.
# Enable AOF https://redis.io/topics/persistence#append-only-file
appendonly yes
# Disable RDB persistence, AOF persistence already enabled.
save ""
# Backwards compatability with Redis version 6.*
replica-ignore-disk-write-errors yes
redpanda
The redpanda
section contains the configuration of the
Kafka broker. This is
based on the RedPanda chart.
For more information about the parameters, see the
official documentation.
Here are only the values different from the default ones.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
config.cluster.auto_create_topics_enabled | Whether to enable auto creation of topics | bool | true , false | true |
console | The configuration for RedPanda Console | object | Any | See console section |
external.type | The type of Service for external access | string | NodePort, LoadBalancer | NodePort |
fullnameOverride | The full name override | string | Any | united-manufacturing-hub-kafka |
listeners.kafka.port | The port of the Kafka listener | int | Any | 9092 |
rbac.enable | Whether to enable RBAC | bool | true , false | true |
resources.cpu.cores | The number of CPU cores to allocate to the Kafka broker | int | Any | 1 |
resources.memory.container.max | Maximum memory count for each broker | string | Any | 2Gi |
resources.memory.enable_memory_locking | Whether to enable memory locking | bool | true , false | true |
serviceAccount.create | Whether to create a service account | bool | true , false | false |
statefulset.replicas | The number of brokers | int | Any | 1 |
storage.persistentVolume.size | The size of the persistent volume | string | Any | 10Gi |
tls.enabled | Whether to enable TLS | bool | true , false | false |
console
The console
section contains the configuration of the
RedPanda Console.
For more information about the parameters, see the official documentation.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
console.config.kafka.brokers | The list of Kafka brokers | list | Any | united-manufacturing-hub-kafka:9092 |
service.port | The port of the Service to expose | int | Any | 8090 |
service.targetPort | The target port of the Service to expose | int | Any | 8080 |
service.type | The type of Service to expose | string | ClusterIp, NodePort, LoadBalancer | LoadBalancer |
serviceAccount.create | Whether to create a service account | bool | true , false | false |
sensorconnect
The sensorconnect
section contains the configuration of the
Sensorconnect microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
additionalSleepTimePerActivePortMs | Additional sleep time between pollings for each active port in milliseconds | float | Any | 0.0 |
additionalSlowDownMap | JSON map of values, allows to slow down and speed up the polling time of specific sensors | JSON | Any | {} |
allowSubTwentyMs | Whether to allow sub 20ms polling time. Set to 1 to enable. Not recommended | int | 0, 1 | 0 |
deviceFinderTimeSec | Time interval in second between new device discovery | int | Any | 20 |
deviceFinderTimeoutSec | Timeout in second for device discovery. Never set lower than deviceFinderTimeSec | int | Any | 1 |
image | The image of the sensorconnect microservice | string | Any | ghcr.io/united-manufacturing-hub/sensorconnect |
ioddfilepath | The path to the IODD files | string | Any | /ioddfiles |
lowerPollingTime | The lower polling time in milliseconds | int | Any | 100 |
maxSensorErrorCount | The maximum number of sensor errors before the sensor is marked as not responding | int | Any | 50 |
mqtt.encryptedPassword | The encrypted password of the MQTT broker | string | Any | Base 64 encrypted password |
mqtt.password | The password of the MQTT broker | string | Any | INSECURE_INSECURE_INSECURE |
pollingSpeedStepDownMs | The time to subtract from the polling time in milliseconds when a sensor is responding | int | Any | 1 |
pollingSpeedStepUpMs | The time to add to the polling time in milliseconds when a sensor is not responding | int | Any | 20 |
resources.limits.cpu | The CPU limit | string | Any | 100m |
resources.limits.memory | The memory limit | string | Any | 200Mi |
resources.requests.cpu | The CPU request | string | Any | 10m |
resources.requests.memory | The memory request | string | Any | 75Mi |
storageRequest | The amount of storage for the PersistentVolumeClaim | string | Any | 1Gi |
tag | The tag of the sensorconnect microservice. Defaults to Chart version if not set | string | Any | |
upperPollingTime | The upper polling time in milliseconds | int | Any | 1000 |
serviceAccount
The serviceAccount
section contains the configuration of the service account.
See the Kubernetes documentation
for more information.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
create | Whether to create a service account | bool | true , false | true |
timescaledb-single
The timescaledb-single
section contains the configuration of the
TimescaleDB microservice. This
is based on the official TimescaleDB Helm chart.
For more information about the parameters, see the
official documentation.
Here are only the values different from the default ones.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
replicaCount | The number of replicas | int | Any | 1 |
image.repository | The image of the TimescaleDB microservice | string | Any | ghcr.io/united-manufacturing-hub/timescaledb |
image.tag | The Timescaledb-ha version | string | Any | pg13.8-ts2.8.0-p1 |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
patroni.postgresql.create_replica_methods | The replica creation method | string array | Any | basebackup |
postInit | A list of sources that contain post init scripts | object array | Any | See postInit |
service.primary.type | The type of the primary service | string | ClusterIP, NodePort, LoadBalancer | LoadBalancer |
serviceAccount.create | Whether to create a service account | bool | true , false | false |
postInit
The postInit
parameter is a list of references to sources that contain
post init scripts. The scripts are executed after the database is initialized.
postInit:
- configMap:
name: {{ resource type="configmap" name="database" }}
optional: false
- secret:
name: {{ resource type="secret" name="database" }}
optional: false
tulipconnector
The tulipconnector
section contains the configuration of the
Tulip Connector
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
image.repository | The image of the Tulip Connector microservice | string | Any | ghcr.io/united-manufacturing-hub/tulip-connector |
image.tag | The tag of the Tulip Connector microservice. Defaults to latest if not set | string | Any | 0.1.0 |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
replicas | The number of Pod replicas | int | Any | 1 |
env | The environment variables | object | Any | See env |
resources.limits.cpu | The CPU limit | string | Any | 30m |
resources.limits.memory | The memory limit | string | Any | 50Mi |
resources.requests.cpu | The CPU request | string | Any | 10m |
resources.requests.memory | The memory request | string | Any | 20Mi |
env
The env
section contains the configuration of the environment variables to add
to the Pod.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
mode | In which mode to run the Tulip Connector | string | dev, prod | prod |
What’s next
- Take a look at the overview of the architecture.
- Deep dive into the microservices’ reference.
2 - Microservices
This section contains the technical documentation for the microservices that compose the United Manufacturing Hub.
2.1 - Barcodereader
Kubernetes resources
- Deployment:
united-manufacturing-hub-barcodereader
- Secret:
united-manufacturing-hub-barcodereader-secrets
Configuration
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
ASSET_ID | The asset ID, which is used for the topic structure | string | Any | barcodereader |
CUSTOMER_ID | The customer ID, which is used for the topic structure | string | Any | raw |
DEBUG_ENABLE_FGTRACE | Enables the use of the fgtrace library. Not recommended for production | string | true , false | false |
INPUT_DEVICE_NAME | The name of the USB device to use | string | Any | Datalogic ADC, Inc. Handheld Barcode Scanner |
INPUT_DEVICE_PATH | The path of the USB device to use. It is recommended to use a wildcard (for example, /dev/input/event* ) or leave empty | string | Valid Unix device path | "" |
KAFKA_BOOTSTRAP_SERVER | URL of the Kafka broker used, port is required | string | Any | united-manufacturing-hub-kafka:9092 |
LOCATION | The location, which is used for the topic structure | string | Any | barcodereader |
LOGGING_LEVEL | Defines which logging level is used, mostly relevant for developers. | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
MICROSERVICE_NAME | Name of the microservice (used for tracing) | string | Any | united-manufacturing-hub-barcodereader |
SCAN_ONLY | Prevent message broadcasting if enabled | bool | true , false | false |
SERIAL_NUMBER | Serial number of the cluster (used for tracing) | string | Any | defalut |
2.2 - Cache
Kubernetes resources
- StatefulSet:
united-manufacturing-hub-redis-master
- Service:
- Internal ClusterIP:
- Redis:
united-manufacturing-hub-redis-master
at port 6379 - Headless:
united-manufacturing-hub-redis-headless
at port 6379 - Metrics:
united-manufacturing-hub-redis-metrics
at port 6379
- Redis:
- Internal ClusterIP:
- ConfigMap:
- Configuration:
united-manufacturing-hub-redis-configuration
- Health:
united-manufacturing-hub-redis-health
- Scripts:
united-manufacturing-hub-redis-scripts
- Configuration:
- Secret:
redis-secret
- PersistentVolumeClaim:
redis-data-united-manufacturing-hub-redis-master-0
Configuration
You shouldn’t need to configure the cache manually, as it’s configured
automatically when the cluster is deployed. However, if you need to change the
configuration, you can do it by editing the redis
section of the Helm
chart values file.
You can consult the Bitnami Redis chart for more information about the available configuration options.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
ALLOW_EMPTY_PASSWORD | Allow empty password | bool | true , false | false |
BITNAMI_DEBUG | Specify if debug values should be set | bool | true , false | false |
REDIS_PASSWORD | Redis password | string | Any | Random UUID |
REDIS_PORT | Redis port number | int | Any | 6379 |
REDIS_REPLICATION_MODE | Redis replication mode | string | master , slave | master |
REDIS_TLS_ENABLED | Enable TLS | bool | true , false | false |
2.3 - Data Bridge
Kubernetes resources
- Deployment:
united-manufacturing-hub-databridge-0
- Secret:
united-manufacturing-hub-databridge-mqtt-secrets
Configuration
You shouldn’t need to configure the environment variables directly, as they are set by the Helm chart. If you need to change them, you can do so by editing the values in the Helm chart.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
BROKER_A | The address of the source broker. | string | Any | "" |
BROKER_B | The address of the destination broker. | string | Any | "" |
LOGGING_LEVEL | The logging level to use. | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
MESSAGE_LRU_SIZE | The size of the LRU cache used to avoid message looping. Only used with MQTT brokers | int | Any | 1000000 |
MICROSERVICE_NAME | Name of the microservice. Used for tracing. | string | Any | united-manufacturing-hub-databridge |
MQTT_ENABLE_TLS | Whether to enable TLS for the MQTT connection. | bool | true , false | false |
MQTT_PASSWORD | The password to use for the MQTT connection. | string | Any | "" |
PARTITIONS | The number of partitions to use for the destination topic. Only used if the destination broker is Kafka. | int | Greater than 0 | 6 |
POD_NAME | Name of the pod. Used for tracing. | string | Any | united-manufacturing-hub-databridge |
REPLICATION_FACTOR | The replication factor to use for the destination topic. Only used if the destination broker is Kafka. | int | Odd integer | 3 |
SERIAL_NUMBER | Serial number of the cluster. Used for tracing. | string | Any | default |
SPLIT | The nth part of the topic to use as the message key. If the topic is umh/v1/acme/anytown/foo/bar , and SPLIT is 4, then the message key will be foo.bar | int | Greater than 3 | -1 |
TOPIC | The topic to subscribe to. Can be in either MQTT or Kafka form. Wildcards (# for MQTT, .* for Kafka) are allowed in order to subscribe to multiple topics | string | Any | "" |
2.4 - Database
Kubernetes resources
- StatefulSet:
united-manufacturing-hub-timescaledb
- Service:
- Internal ClusterIP for the replicas:
united-manufacturing-hub-replica
at port 5432 - Internal ClusterIP for the config:
united-manufacturing-hub-config
at port 8008 - External LoadBalancer:
united-manufacturing-hub
at port 5432
- Internal ClusterIP for the replicas:
- ConfigMap:
- Patroni:
united-manufacturing-hub-timescaledb-patroni
- Post init:
timescale-post-init
- Postgres BackRest:
united-manufacturing-hub-timescaledb-pgbackrest
- Scripts:
united-manufacturing-hub-timescaledb-scripts
- Patroni:
- Secret:
- Certificate:
united-manufacturing-hub-certificate
- Patroni credentials:
united-manufacturing-hub-credentials
- Users passwords:
timescale-post-init-pw
- Certificate:
- PersistentVolumeClaim:
- Data:
storage-volume-united-manufacturing-hub-timescaledb-0
- WAL-E:
wal-volume-united-manufacturing-hub-timescaledb-0
- Data:
Configuration
There is only one parameter that usually needs to be changed: the password used
to connect to the database. To do so, set the value of the db_password
key in
the _000_commonConfig.datastorage
section of the Helm chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
BOOTSTRAP_FROM_BACKUP | Whether to bootstrap the database from a backup or not. | int | 0, 1 | 0 |
PATRONI_KUBERNETES_LABELS | The labels to use to find the pods of the StatefulSet. | string | Any | {app: united-manufacturing-hub-timescaledb, cluster-name: united-manufacturing-hub, release: united-manufacturing-hub} |
PATRONI_KUBERNETES_NAMESPACE | The namespace in which the StatefulSet is deployed. | string | Any | united-manufacturing-hub |
PATRONI_KUBERNETES_POD_IP | The IP address of the pod. | string | Any | Random IP |
PATRONI_KUBERNETES_PORTS | The ports to use to connect to the pods. | string | Any | [{"name": "postgresql", "port": 5432}] |
PATRONI_NAME | The name of the pod. | string | Any | united-manufacturing-hub-timescaledb-0 |
PATRONI_POSTGRESQL_CONNECT_ADDRESS | The address to use to connect to the database. | string | Any | $(PATRONI_KUBERNETES_POD_IP):5432 |
PATRONI_POSTGRESQL_DATA_DIR | The directory where the database data is stored. | string | Any | /var/lib/postgresql/data |
PATRONI_REPLICATION_PASSWORD | The password to use to connect to the database as a replica. | string | Any | Random 16 characters |
PATRONI_REPLICATION_USERNAME | The username to use to connect to the database as a replica. | string | Any | standby |
PATRONI_RESTAPI_CONNECT_ADDRESS | The address to use to connect to the REST API. | string | Any | $(PATRONI_KUBERNETES_POD_IP):8008 |
PATRONI_SCOPE | The name of the cluster. | string | Any | united-manufacturing-hub |
PATRONI_SUPERUSER_PASSWORD | The password to use to connect to the database as the superuser. | string | Any | Random 16 characters |
PATRONI_admin_OPTIONS | The options to use for the admin user. | string | Comma separated list of options | createrole,createdb |
PATRONI_admin_PASSWORD | The password to use to connect to the database as the admin user. | string | Any | Random 16 characters |
PGBACKREST_CONFIG | The path to the configuration file for Postgres BackRest. | string | Any | /etc/pgbackrest/pgbackrest.conf |
PGDATA | The directory where the database data is stored. | string | Any | $(PATRONI_POSTGRESQL_DATA_DIR) |
PGHOST | The directory of the runnning database | string | Any | /var/run/postgresql |
2.5 - Factoryinsight
Kubernetes resources
- Deployment:
united-manufacturing-hub-factoryinsight-deployment
- Service:
- Internal ClusterIP:
united-manufacturing-hub-factoryinsight-service
at port 80 - External : Access factoryinsight outside the cluster
- Internal ClusterIP:
- Secret:
factoryinsight-secret
Configuration
You shouldn’t need to configure Factoryinsight manually, as it’s configured
automatically when the cluster is deployed. However, if you need to change the
configuration, you can do it by editing the factoryinsight
section of the Helm
chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
CUSTOMER_NAME_{NUMBER} | Specifies a user for the REST API. Multiple users can be set | string | Any | "" |
CUSTOMER_PASSWORD_{NUMBER} | Specifies the password of the user for the REST API | string | Any | "" |
DEBUG_ENABLE_FGTRACE | Enables the use of the fgtrace library. Not recommended for production | string | true , false | false |
DRY_RUN | If enabled, data wont be stored in database | bool | true , false | false |
FACTORYINSIGHT_PASSWORD | Specifies the password for the admin user for the REST API | string | Any | Random UUID |
FACTORYINSIGHT_USER | Specifies the admin user for the REST API | string | Any | factoryinsight |
INSECURE_NO_AUTH | If enabled, no authentication is required for the REST API. Not recommended for production | bool | true , false | false |
LOGGING_LEVEL | Defines which logging level is used, mostly relevant for developers | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
MICROSERVICE_NAME | Name of the microservice. Used for tracing | string | Any | united-manufacturing-hub-factoryinsight |
POSTGRES_DATABASE | Specifies the database name to use | string | Any | factoryinsight |
POSTGRES_HOST | Specifies the database DNS name or IP address | string | Any | united-manufacturing-hub |
POSTGRES_PASSWORD | Specifies the database password to use | string | Any | changeme |
POSTGRES_PORT | Specifies the database port | int | Valid port number | 5432 |
POSTGRES_USER | Specifies the database user to use | string | Any | factoryinsight |
REDIS_PASSWORD | Password to access the redis sentinel | string | Any | Random UUID |
REDIS_URI | The URI of the Redis instance | string | Any | united-manufacturing-hub-redis-headless:6379 |
SERIAL_NUMBER | Serial number of the cluster. Used for tracing | string | Any | default |
VERSION | The version of the API used. Each version also enables all the previous ones | int | Any | 2 |
API documentation
2.6 - Grafana
Kubernetes resources
- Deployment:
united-manufacturing-hub-grafana
- Service:
- External LoadBalancer:
united-manufacturing-hub-grafana
at port 8080
- External LoadBalancer:
- ConfigMap:
united-manufacturing-hub-grafana
- Secret:
grafana-secret
- PersistentVolumeClaim:
united-manufacturing-hub-grafana
Configuration
Grafana is configured through its user interface. The default credentials are found in the grafana-secret Secret.
The Grafana installation that is provided by the United Manufacturing Hub is shipped with a set of preinstalled plugins:
- ACE.SVG by Andrew Rodgers
- Button Panel by CloudSpout LLC
- Button Panel by UMH Systems Gmbh
- Discrete by Natel Energy
- Dynamic Text by Marcus Olsson
- FlowCharting by agent
- Pareto Chart by isaozler
- Pie Chart (old) by Grafana Labs
- Timepicker Buttons Panel by williamvenner
- UMH Datasource by UMH Systems Gmbh
- UMH Datasource v2 by UMH Systems Gmbh
- Untimely by factry
- Worldmap Panel by Grafana Labs
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
FACTORYINSIGHT_APIKEY | The API key to use to authenticate to the Factoryinsight API | string | Any | Base64 encoded string |
FACTORYINSIGHT_BASEURL | The base URL of the Factoryinsight API | string | Any | united-manufacturing-hub-factoryinsight-service |
FACTORYINSIGHT_CUSTOMERID | The customer ID to use to authenticate to the Factoryinsight API | string | Any | factoryinsight |
FACTORYINSIGHT_PASSWORD | The password to use to authenticate to the Factoryinsight API | string | Any | Random UUID |
GF_PATHS_DATA | The path where Grafana will store its data | string | Any | /var/lib/grafana/data |
GF_PATHS_LOGS | The path where Grafana will store its logs | string | Any | /var/log/grafana |
GF_PATHS_PLUGINS | The path where Grafana will store its plugins | string | Any | /var/lib/grafana/plugins |
GF_PATHS_PROVISIONING | The path where Grafana will store its provisioning configuration | string | Any | /etc/grafana/provisioning |
GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS | List of plugin identifiers to allow loading even if they lack a valid signature | string | Comma separated list | umh-datasource,umh-factoryinput-panel,umh-v2-datasource |
GF_SECURITY_ADMIN_PASSWORD | The password of the admin user | string | Any | Random UUID |
GF_SECURITY_ADMIN_USER | The username of the admin user | string | Any | admin |
2.7 - Kafka Bridge
Kubernetes resources
- Deployment:
united-manufacturing-hub-kafkabridge
- Secret:
- Local broker:
united-manufacturing-hub-kafkabridge-secrets-local
- Remote broker:
united-manufacturing-hub-kafkabridge-secrets-remote
- Local broker:
Configuration
You can configure the kafka-bridge microservice by setting the following values in the _000_commonConfig.kafkaBridge section of the Helm chart values file.
kafkaBridge:
enabled: true
remotebootstrapServer: ""
topicmap:
- bidirectional: false
name: HighIntegrity
send_direction: to_remote
topic: ^ia\..+\..+\..+\.((addMaintenanceActivity)|(addOrder)|(addParentToChild)|(addProduct)|(addShift)|(count)|(deleteShiftByAssetIdAndBeginTimestamp)|(deleteShiftById)|(endOrder)|(modifyProducedPieces)|(modifyState)|(productTag)|(productTagString)|(recommendation)|(scrapCount)|(startOrder)|(state)|(uniqueProduct)|(scrapUniqueProduct))$
- bidirectional: false
name: HighThroughput
send_direction: to_remote
topic: ^ia\..+\..+\..+\.(processValue).*$
Topic Map schema
The topic map is a list of objects, each object represents a topic (or a set of topics) that should be forwarded. The following JSON schema describes the structure of the topic map:
{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "array",
"title": "Kafka Topic Map",
"description": "This schema validates valid Kafka topic maps.",
"default": [],
"additionalItems": true,
"items": {
"$id": "#/items",
"anyOf": [
{
"$id": "#/items/anyOf/0",
"type": "object",
"title": "Unidirectional Kafka Topic Map with send direction",
"description": "This schema validates entries, that are unidirectional and have a send direction.",
"default": {},
"examples": [
{
"name": "HighIntegrity",
"topic": "^ia\\..+\\..+\\..+\\.(?!processValue).+$",
"bidirectional": false,
"send_direction": "to_remote"
}
],
"required": [
"name",
"topic",
"bidirectional",
"send_direction"
],
"properties": {
"name": {
"$id": "#/items/anyOf/0/properties/name",
"type": "string",
"title": "Entry Name",
"description": "Name of the map entry, only used for logging & tracing.",
"default": "",
"examples": [
"HighIntegrity"
]
},
"topic": {
"$id": "#/items/anyOf/0/properties/topic",
"type": "string",
"title": "The topic to listen on",
"description": "The topic to listen on, this can be a regular expression.",
"default": "",
"examples": [
"^ia\\..+\\..+\\..+\\.(?!processValue).+$"
]
},
"bidirectional": {
"$id": "#/items/anyOf/0/properties/bidirectional",
"type": "boolean",
"title": "Is the transfer bidirectional?",
"description": "When set to true, the bridge will consume and produce from both brokers",
"default": false,
"examples": [
false
]
},
"send_direction": {
"$id": "#/items/anyOf/0/properties/send_direction",
"type": "string",
"title": "Send direction",
"description": "Can be either 'to_remote' or 'to_local'",
"default": "",
"examples": [
"to_remote",
"to_local"
]
}
},
"additionalProperties": true
},
{
"$id": "#/items/anyOf/1",
"type": "object",
"title": "Bi-directional Kafka Topic Map with send direction",
"description": "This schema validates entries, that are bi-directional.",
"default": {},
"examples": [
{
"name": "HighIntegrity",
"topic": "^ia\\..+\\..+\\..+\\.(?!processValue).+$",
"bidirectional": true
}
],
"required": [
"name",
"topic",
"bidirectional"
],
"properties": {
"name": {
"$id": "#/items/anyOf/1/properties/name",
"type": "string",
"title": "Entry Name",
"description": "Name of the map entry, only used for logging & tracing.",
"default": "",
"examples": [
"HighIntegrity"
]
},
"topic": {
"$id": "#/items/anyOf/1/properties/topic",
"type": "string",
"title": "The topic to listen on",
"description": "The topic to listen on, this can be a regular expression.",
"default": "",
"examples": [
"^ia\\..+\\..+\\..+\\.(?!processValue).+$"
]
},
"bidirectional": {
"$id": "#/items/anyOf/1/properties/bidirectional",
"type": "boolean",
"title": "Is the transfer bidirectional?",
"description": "When set to true, the bridge will consume and produce from both brokers",
"default": false,
"examples": [
true
]
}
},
"additionalProperties": true
}
]
},
"examples": [
{
"name":"HighIntegrity",
"topic":"^ia\\..+\\..+\\..+\\.(?!processValue).+$",
"bidirectional":true
},
{
"name":"HighThroughput",
"topic":"^ia\\..+\\..+\\..+\\.(processValue).*$",
"bidirectional":false,
"send_direction":"to_remote"
}
]
}
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
DEBUG_ENABLE_FGTRACE | Enables the use of the fgtrace library, do not enable in production | string | true , false | false |
KAFKA_GROUP_ID_SUFFIX | Identifier appended to the kafka group ID, usually a serial number | string | Any | defalut |
KAFKA_SSL_KEY_PASSWORD_LOCAL | Password for the SSL key pf the local broker | string | Any | "" |
KAFKA_SSL_KEY_PASSWORD_REMOTE | Password for the SSL key of the remote broker | string | Any | "" |
KAFKA_TOPIC_MAP | A json map of the kafka topics should be forwarded | JSON | See below | {} |
KAKFA_USE_SSL | Enables the use of SSL for the kafka connection | string | true , false | false |
LOCAL_KAFKA_BOOTSTRAP_SERVER | URL of the local kafka broker, port is required | string | Any valid URL | united-manufacturing-hub-kafka:9092 |
LOGGING_LEVEL | Defines which logging level is used, mostly relevant for developers. | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
MICROSERVICE_NAME | Name of the microservice (used for tracing) | string | Any | united-manufacturing-hub-kafka-bridge |
REMOTE_KAFKA_BOOTSTRAP_SERVER | URL of the remote kafka broker | string | Any valid URL | "" |
SERIAL_NUMBER | Serial number of the cluster (used for tracing) | string | Any | defalut |
2.8 - Kafka Broker
Kubernetes resources
- StatefulSet:
united-manufacturing-hub-kafka
- Service:
- Internal ClusterIP (headless):
united-manufacturing-hub-kafka
- External NodePort:
united-manufacturing-hub-kafka-external
at port 9094 for the Kafka API listener, port 9644 for the Admin API listener, port 8083 for the HTTP Proxy listener, and port 8081 for the Schema Registry listener.
- Internal ClusterIP (headless):
- ConfigMap:
united-manufacturing-hub-kafka
- Secret:
united-manufacturing-hub-kafka-sts-lifecycle
- PersistentVolumeClaim:
datadir-united-manufacturing-hub-kafka-0
Configuration
You shouldn’t need to configure the Kafka broker manually, as it’s configured automatically when the cluster is deployed. However, if you need to change the configuration, you can do it by editing the redpanda section of the Helm chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
HOST_IP | The IP address of the host machine. | string | Any | Random IP |
POD_IP | The IP address of the pod. | string | Any | Random IP |
SERVICE_NAME | The name of the service. | string | Any | united-manufacturing-hub-kafka |
2.9 - Kafka Console
Kubernetes resources
- Deployment:
united-manufacturing-hub-console
- Service:
- External LoadBalancer:
united-manufacturing-hub-console
at port 8090
- External LoadBalancer:
- ConfigMap:
united-manufacturing-hub-console
- Secret:
united-manufacturing-hub-console
Configuration
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
LOGIN_JWTSECRET | The secret used to authenticate the communication to the backend. | string | Any | Random string |
2.10 - Kafka to Postgresql
Kubernetes resources
- Deployment:
united-manufacturing-hub-kafkatopostgresql
- Secret:
united-manufacturing-hub-kafkatopostgresql-certificates
Configuration
You shouldn’t need to configure kafka-to-postgresql manually, as it’s configured
automatically when the cluster is deployed. However, if you need to change the
configuration, you can do it by editing the kafkatopostgresql
section of the Helm
chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
DEBUG_ENABLE_FGTRACE | Enables the use of the fgtrace library. Not recommended for production | string | true , false | false |
DRY_RUN | If set to true, the microservice will not write to the database | bool | true , false | false |
KAFKA_BOOTSTRAP_SERVER | URL of the Kafka broker used, port is required | string | Any | united-manufacturing-hub-kafka:9092 |
KAFKA_SSL_KEY_PASSWORD | Key password to decode the SSL private key | string | Any | "" |
LOGGING_LEVEL | Defines which logging level is used, mostly relevant for developers | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
MEMORY_REQUEST | Memory request for the message cache | string | Any | 50Mi |
MICROSERVICE_NAME | Name of the microservice (used for tracing) | string | Any | united-manufacturing-hub-kafkatopostgresql |
POSTGRES_DATABASE | The name of the PostgreSQL database | string | Any | factoryinsight |
POSTGRES_HOST | Hostname of the PostgreSQL database | string | Any | united-manufacturing-hub |
POSTGRES_PASSWORD | The password to use for PostgreSQL connections | string | Any | changeme |
POSTGRES_SSLMODE | If set to true, the PostgreSQL connection will use SSL | string | Any | require |
POSTGRES_USER | The username to use for PostgreSQL connections | string | Any | factoryinsight |
2.11 - Kafka to Postgresql v2
Kubernetes resources
- Deployment:
united-manufacturing-hub-kafkatopostgresqlv2
Configuration
You shouldn’t need to configure kafka-to-postgresql-v2 manually, as it’s configured
automatically when the cluster is deployed. However, if you need to change the
configuration, you can do it by editing the kafkatopostgresqlv2
section of the Helm
chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
KAFKA_BROKERS | Specifies the URLs and required ports of Kafka brokers using the Kafka protocol. | string | Any | united-manufacturing-hub-kafka:9092 |
KAFKA_HTTP_BROKERS | Specifies the URLs and required ports of Kafka brokers using the HTTP protocol. | string | Any | united-manufacturing-hub-kafka:8082 |
LOGGING_LEVEL | Determines the verbosity of the logging output, primarily used for development purposes. | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
POSTGRES_DATABASE | Designates the name of the target PostgreSQL database. | string | Any | umh_v2 |
POSTGRES_HOST | Identifies the hostname for the PostgreSQL database server. | string | Any | united-manufacturing-hub |
POSTGRES_LRU_CACHE_SIZE | Determines the size of the Least Recently Used (LRU) cache for asset ID storage. This cache is optimized for minimal memory usage. | string | Any | 1000 |
POSTGRES_PASSWORD | Sets the password for accessing the PostgreSQL database | string | Any | changemetoo |
POSTGRES_PORT | Specifies the network port for the PostgreSQL database server. | string | Any | 5432 |
POSTGRES_SSL_MODE | Configures the PostgreSQL connection to use SSL if set to ’true'. | string | Any | require |
POSTGRES_USER | Defines the username for PostgreSQL database access. | string | Any | kafkatopostgresqlv2 |
VALUE_CHANNEL_SIZE | Sets the size of the channel for message storage prior to insertion. This parameter is significant for memory consumption | string | Any | 10000 |
WORKER_MULTIPLIER | This multiplier affects the number of workers converting Kafka messages into the PostgreSQL schema. Total workers = cores * multiplier. | string | Any | 16 |
2.12 - MQTT Broker
Kubernetes resources
- StatefulSet:
united-manufacturing-hub-hivemqce
- Service:
- Internal ClusterIP:
- HiveMQ local:
united-manufacturing-hub-hivemq-local-service
at port 1883 (MQTT) and 8883 (MQTT over TLS) - VerneMQ (for backwards compatibility):
united-manufacturing-hub-vernemq
at port 1883 (MQTT) and 8883 (MQTT over TLS) - VerneMQ local (for backwards compatibility):
united-manufacturing-hub-vernemq-local-service
at port 1883 (MQTT) and 8883 (MQTT over TLS)
- HiveMQ local:
- External LoadBalancer:
united-manufacturing-hub-mqtt
at port 1883 (MQTT) and 8883 (MQTT over TLS)
- Internal ClusterIP:
- ConfigMap:
- Configuration:
united-manufacturing-hub-hivemqce-hive
- Credentials:
united-manufacturing-hub-hivemqce-extension
- Configuration:
- Secret:
united-manufacturing-hub-hivemqce-secret-keystore
- PersistentVolumeClaim:
- Data:
united-manufacturing-hub-hivemqce-claim-data
- Extensions:
united-manufacturing-hub-hivemqce-claim-extensions
- Data:
Configuration
Most of the configuration is done through the XML files in the ConfigMaps. The default configuration should be sufficient for most use cases.
The HiveMQ installation of the United Manufacturing Hub comes with these extensions:
- RBAC file extension to manage the authentication and authorizations rules for the broker.
- Prometheus extension to expose metrics for a prometheus applications
- Heartbeat extension to allow for readiness checks
If you want to add more extensions, or to change the configuration, visit the HiveMQ documentation.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
HIVEMQ_ALLOW_ALL_CLIENTS | Whether to allow all clients to connect to the broker | bool | true , false | true |
2.13 - MQTT Kafka Bridge
Kubernetes resources
- Deployment:
united-manufacturing-hub-mqttkafkabridge
- Secret:
- Kafka:
united-manufacturing-hub-mqttkafkabridge-kafka-secrets
- MQTT:
united-manufacturing-hub-mqttkafkabridge-mqtt-secrets
- Kafka:
Configuration
You shouldn’t need to configure mqtt-kafka-bridge manually, as it’s configured
automatically when the cluster is deployed. However, if you need to change the
configuration, you can do it by editing the mqttkafkabridge
section of the Helm
chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
DEBUG_ENABLE_FGTRACE | Enables the use of the fgtrace library. Not recommended for production | string | true , false | false |
INSECURE_SKIP_VERIFY | Skip TLS certificate verification | bool | true , false | true |
KAFKA_BASE_TOPIC | The Kafka base topic | string | Any | ia |
KAFKA_BOOTSTRAP_SERVER | URL of the Kafka broker used, port is required | string | Any | united-manufacturing-hub-kafka:9092 |
KAFKA_LISTEN_TOPIC | Kafka topic to subscribe to. Accept regex values | string | Any | ^ia.+ |
KAFKA_SENDER_THREADS | Number of threads used to send messages to Kafka | int | Any | 1 |
LOGGING_LEVEL | Defines which logging level is used, mostly relevant for developers | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
MESSAGE_LRU_SIZE | Size of the LRU cache used to store messages. This is used to prevent duplicate messages from being sent to Kafka. | int | Any | 100000 |
MICROSERVICE_NAME | Name of the microservice (used for tracing) | string | Any | united-manufacturing-hub-mqttkafkabridge |
MQTT_BROKER_URL | The MQTT broker URL | string | Any | united-manufacturing-hub-mqtt:1883 |
MQTT_CERTIFICATE_NAME | Set to NO_CERT to allow non-encrypted MQTT access, or to USE_TLS to use TLS encryption | string | USE_TLS, NO_CERT | USE_TLS |
MQTT_PASSWORD | Password for the MQTT broker | string | Any | INSECURE_INSECURE_INSECURE |
MQTT_SENDER_THREADS | Number of threads used to send messages to MQTT | int | Any | 1 |
MQTT_TOPIC | MQTT topic to subscribe to. Accept regex values | string | Any | ia/# |
POD_NAME | Name of the pod. Used for tracing | string | Any | united-manufacturing-hub-mqttkafkabridge-Random-ID |
RAW_MESSSAGE_LRU_SIZE | Size of the LRU cache used to store raw messages. This is used to prevent duplicate messages from being sent to Kafka. | int | Any | 100000 |
SERIAL_NUMBER | Serial number of the cluster (used for tracing) | string | Any | default |
2.14 - MQTT Simulator
Kubernetes resources
- Deployment:
united-manufacturing-hub-iotsensorsmqtt
- ConfigMap:
united-manufacturing-hub-iotsensors-mqtt
Configuration
You can change the configuration of the microservice by updating the config.json
file in the ConfigMap.
2.15 - MQTT to Postgresql
2.16 - Node-RED
Kubernetes resources
- StatefulSet:
united-manufacturing-hub-nodered
- Service:
- External LoadBalancer:
united-manufacturing-hub-nodered-service
at port 1880
- External LoadBalancer:
- ConfigMap:
- Configuration:
united-manufacturing-hub-nodered-config
- Flows:
united-manufacturing-hub-nodered-flows
- Configuration:
- Secret:
united-manufacturing-hub-nodered-secrets
- PersistentVolumeClaim:
united-manufacturing-hub-nodered-claim
Configuration
You can enable the nodered microservice and decide if you want to use the default flows in the _000_commonConfig.dataprocessing.nodered section of the Helm chart values.
All the other values are set by default and you can find them in the Danger Zone section of the Helm chart values.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
NODE_RED_ENABLE_SAFE_MODE | Enable safe mode, useful in case of broken flows | boolean | true , false | false |
TZ | The timezone used by Node-RED | string | Any | Berlin/Europe |
2.17 - OPCUA Simulator
Kubernetes resources
- Deployment:
united-manufacturing-hub-opcuasimulator-deployment
- Service:
- External LoadBalancer:
united-manufacturing-hub-opcuasimulator-service
at port 46010
- External LoadBalancer:
- ConfigMap:
united-manufacturing-hub-opcuasimulator-config
Configuration
You can change the configuration of the microservice by updating the config.json
file in the ConfigMap.
2.18 - PackML Simulator
Kubernetes resources
- Deployment:
united-manufacturing-hub-packmlmqttsimulator
Configuration
You shouldn’t need to configure PackML Simulator manually, as it’s configured
automatically when the cluster is deployed. However, if you need to change the
configuration, you can do it by editing the packmlmqttsimulator
section of the
Helm chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
AREA | ISA-95 area name of the line | string | Any | DefaultArea |
LINE | ISA-95 line name of the line | string | Any | DefaultProductionLine |
MQTT_PASSWORD | Password for the MQTT broker. Leave empty if the server does not manage permissions | string | Any | INSECURE_INSECURE_INSECURE |
MQTT_URL | Server URL of the MQTT server | string | Any | mqtt://united-manufacturing-hub-mqtt:1883 |
MQTT_USERNAME | Name for the MQTT broker. Leave empty if the server does not manage permissions | string | Any | PACKMLSIMULATOR |
SITE | ISA-95 site name of the line | string | Any | testLocation |
2.19 - Sensorconnect
Kubernetes resources
- StatefulSet:
united-manufacturing-hub-sensorconnect
- Secret:
- Kafka:
united-manufacturing-hub-sensorconnect-kafka-secrets
- MQTT:
united-manufacturing-hub-sensorconnect-mqtt-secrets
- Kafka:
- PersistentVolumeClaim:
united-manufacturing-hub-sensorconnect-claim
Configuration
You can configure the IP range to scan for gateways, and which message broker to use, by setting the values of the parameters in the _000_commonConfig.datasources.sensorconnect section of the Helm chart values file.
The default values of the other parameters are usually good for most use cases, but you can change them in the Danger Zone section of the Helm chart values file.
If you want to increase the polling speed of the sensors, you can do so by
setting the sensorconnect.lowerPollingTime
parameter to a lower value. This
can cause the ifm IO-link master to become unresponsive, if its firmware is
not up to date.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
ADDITIONAL_SLEEP_TIME_PER_ACTIVE_PORT_MS | Additional sleep time between pollings for each active port | float | Any | 0.0 |
ADDITIONAL_SLOWDOWN_MAP | JSON map of values, allows to slow down and speed up the polling time of specific sensors | JSON | See below | [] |
DEBUG_ENABLE_FGTRACE | Enables the use of the fgtrace library. Not recommended for production | string | true, false | false |
DEVICE_FINDER_TIMEOUT_SEC | HTTP timeout in seconds for finding new devices | int | Any | 1 |
DEVICE_FINDER_TIME_SEC | Time interval in seconds for finding new devices | int | Any | 20 |
IODD_FILE_PATH | Filesystem path where to store IODD files | string | Any valid Unix path | /ioddfiles |
IP_RANGE | The IP range to scan for new sensor | string | Any valid IP in CIDR notation | 192.168.10.1/24 |
KAFKA_BOOTSTRAP_SERVER | URL of the Kafka broker. Port is required | string | Any | united-manufacturing-hub-kafka:9092 |
KAFKA_SSL_KEY_PASSWORD | The encrypted password of the SSL key. If empty, no password is used | string | Any | "" |
KAFKA_USE_SSL | Set to true to use SSL encryption for the connection to the Kafka broker | string | true , false | false |
LOGGING_LEVEL | Defines which logging level is used, mostly relevant for developers | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
LOWER_POLLING_TIME_MS | Time in milliseconds to define the lower bound of time between sensor polling | int | Any | 100 |
MAX_SENSOR_ERROR_COUNT | Amount of errors before a sensor is temporarily disabled | int | Any | 50 |
MICROSERVICE_NAME | Name of the microservice (used for tracing) | string | Any | united-manufacturing-hub-sensorconnect |
MQTT_BROKER_URL | URL of the MQTT broker. Port is required | string | Any | united-manufacturing-hub-mqtt:1883 |
MQTT_CERTIFICATE_NAME | Set to NO_CERT to allow non-encrypted MQTT access, or to USE_TLS to use TLS encryption | string | USE_TLS, NO_CERT | USE_TLS |
MQTT_PASSWORD | Password for the MQTT broker | string | Any | INSECURE_INSECURE_INSECURE |
POD_NAME | Name of the pod (used for tracing) | string | Any | united-manufacturing-hub-sensorconnect-0 |
POLLING_SPEED_STEP_DOWN_MS | Time in milliseconds subtracted from the polling interval after a successful polling | int | Any | 1 |
POLLING_SPEED_STEP_UP_MS | Time in milliseconds added to the polling interval after a failed polling | int | Any | 20 |
SENSOR_INITIAL_POLLING_TIME_MS | Amount of time in milliseconds before starting to request sensor data. Must be higher than LOWER_POLLING_TIME_MS | int | Any | 100 |
SUB_TWENTY_MS | Set to 1 to allow LOWER_POLLING_TIME_MS of under 20 ms. This is not recommended as it might lead to the gateway becoming unresponsive until a manual reboot | int | 0, 1 | 0 |
TEST | If enabled, the microservice will use a test IODD file from the filesystem to use with a mocked sensor. Only useful for development. | string | true, false | false |
TRANSMITTERID | Serial number of the cluster (used for tracing) | string | Any | default |
UPPER_POLLING_TIME_MS | Time in milliseconds to define the upper bound of time between sensor polling | int | Any | 1000 |
USE_KAFKA | If enabled, uses Kafka as a message broker | string | true, false | true |
USE_MQTT | If enabled, uses MQTT as a message broker | string | true, false | false |
Slowdown map
The ADDITIONAL_SLOWDOWN_MAP
environment variable allows you to slow down and
speed up the polling time of specific sensors. It is a JSON array of values, with
the following structure:
[
{
"serialnumber": "000200610104",
"slowdown_ms": -10
},
{
"url": "http://192.168.0.13",
"slowdown_ms": 20
},
{
"productcode": "AL13500",
"slowdown_ms": 20.01
}
]
2.20 - Tulip Connector
Kubernetes resources
- Deployment:
united-manufacturing-hub-tulip-connector-deployment
- Service:
- Internal ClusterIP:
united-manufacturing-hub-tulip-connector-service
at port 80
- Internal ClusterIP:
- Ingress:
united-manufacturing-hub-tulip-connector-ingress
Configuration
You can enable the tulip-connector and set the domain for the ingress by editing the values in the _000_commonConfig.tulipconnector section of the Helm chart values file.
Environment variables
Variable name | Description | Type | Allowed values | Default |
---|---|---|---|---|
FACTORYINSIGHT_PASSWORD | Specifies the password for the admin user for the REST API | string | Any | Random UUID |
FACTORYINSIGHT_URL | Specifies the URL of the factoryinsight microservice. | string | Any | http://united-manufacturing-hub-factoryinsight-service |
FACTORYINSIGHT_USER | Specifies the admin user for the REST API | string | Any | factoryinsight |
MODE | Specifies the mode that the service will run in. Change only during development | string | dev, prod | prod |