Helm Chart
42 minute read
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.
- factoryinput: provides REST endpoints for MQTT messages.
- factoryinsight: provides REST endpoints to fetch data and calculate KPIs.
- grafanaproxy: provides a proxy to the backend services.
- 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.
- mqttbridge: connects MQTT brokers on different Kubernetes clusters.
- 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 and factoryinput.
- _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.factoryinput.cert
parameter the cert
parameter is nested inside the tls.factoryinput
section, and the factoryinput
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 |
kafkaStateDetector | The configuration for the Kafka state detector. | object | See below | See below |
metrics.enabled | Whether to enable the anonymous metrics service or not. | bool | true or false | true |
mqttBridge | The configuration for the MQTT bridge. | object | See below | See below |
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.factoryinput.cert | The certificate used for the factoryinput microservice | string | Any | "" |
tls.factoryinput.key | The key used for the factoryinput microservice | 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.mqtt_bridge.local_cert | The certificate used for the local mqttbridge broker | string | Any | "" |
tls.mqtt_bridge.local_key | The key used for the local mqttbridge broker | string | Any | "" |
tls.mqtt_bridge.remote_cert | The certificate used for the remote mqttbridge broker | string | Any | "" |
tls.mqtt_bridge.remote_key | The key used for the remote mqttbridge broker | 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 mqttbridge broker. If empty, no password is used | string | Any | "" |
tls.kafkabridge.sslKeyPemLocal | The private key for the SSL certificate of the local mqttbridge broker | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kafkabridge.sslCertificatePemLocal | The private SSL certificate for the local mqttbridge broker | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkabridge.sslCACertRemote | The CA certificate for the remote mqttbridge broker | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkabridge.sslCertificatePemRemote | The private SSL certificate for the remote mqttbridge broker | string | Any | —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– |
tls.kafkabridge.sslKeyPasswordRemote | The encrypted password of the SSL key for the remote mqttbridge broker. If empty, no password is used | string | Any | "" |
tls.kafkabridge.sslKeyPemRemote | The private key for the SSL certificate of the remote mqttbridge 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.kafkastatedetector.sslKeyPassword | The encrypted password of the SSL key for the kafkastatedetector microservice. If empty, no password is used | string | Any | "" |
tls.kafkastatedetector.sslKeyPem | The private key for the SSL certificate of the kafkastatedetector microservice | string | Any | —–BEGIN PRIVATE KEY—– … —–END PRIVATE KEY—– |
tls.kafkastatedetector.sslCertificatePem | The private SSL certificate for the kafkastatedetector 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 |
Data input
The _000_commonConfig.datainput
section contains the configuration of the
microservices used to input 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.datainput
section./
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the data input microservices | bool | true , false | false |
MQTT Bridge
The _000_commonConfig.mqttBridge
section contains the configuration of the
mqtt-bridge microservice,
responsible for bridging MQTT brokers in different Kubernetes clusters.
The following table lists the configurable parameters of the
_000_commonConfig.mqttBridge
section.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the mqtt-bridge microservice | bool | true , false | false |
localSubTopic | The topic that the local MQTT broker subscribes to | string | Any valid MQTT topic | ia/factoryinsight |
localPubTopic | The topic that the local MQTT broker publishes to | string | Any valid MQTT topic | ia/factoryinsight |
oneWay | Whether to enable one-way communication, from local to remote | bool | true , false | true |
remoteBrokerUrl | The URL of the remote MQTT broker | string | Any valid MQTT broker URL | ssl://united-manufacturing-hub-mqtt.united-manufacturing-hub:8883 |
remoteBrokerSSLEnables | Whether to enable SSL for the remote MQTT broker | bool | true , false | true |
remoteSubTopic | The topic that the remote MQTT broker subscribes to | string | Any valid MQTT topic | ia |
remotePubTopic | The topic that the remote MQTT broker publishes to | string | Any valid MQTT topic | ia/factoryinsight |
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.
Kafka State Detector
The _000_commonConfig.kafkaStateDetector
section contains the configuration
of the kafka-state-detector
microservice, responsible for detecting the state of the Kafka broker.
The following table lists the configurable parameters of the
_000_commonConfig.kafkaStateDetector
section.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the kafka-state-detector microservice | bool | true , false | false |
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 |
factoryinput | Configuration for factoryinput |
factoryinsight | Configuration for factoryinsight |
grafana | Configuration for Grafana |
grafanaproxy | Configuration for the Grafana proxy |
iotsensorsmqtt | Configuration for the IoTSensorsMQTT simulator |
kafkabridge | Configuration for kafka-bridge |
kafkastatedetector | Configuration for kafka-state-detector |
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 |
mqttbridge | Configuration for mqtt-bridge |
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 |
factoryinput
The factoryinput
section contains the advanced configuration of the
factoryinput
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the factoryinput microservice | bool | true , false | false |
env | The environment variables | object | Any | See env section |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the factoryinput microservice | string | Any | ghcr.io/united-manufacturing-hub/factoryinput |
image.tag | The tag of the factoryinput microservice. Defaults to Chart version if not set | string | Any | |
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 |
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 |
service.annotations | Annotations to add to the factoryinput Service | object | Any | {} |
storageRequest | The amount of storage for the PersistentVolumeClaim | string | Any | 1Gi |
user | The user of factoryinput | string | Any | factoryinsight |
env
The env
section contains the configuration of the environment variables to add
to the Pod.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
loggingLevel | The logging level of the factoryinput microservice | string | PRODUCTION, DEVELOPMENT | PRODUCTION |
mqttQueueHandler | Number of queue workers to spawn | int | 0-65535 | 10 |
version | The version of the API used. Each version also enables all the previous ones | int | Any | 2 |
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-factoryinput-panel,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
grafanaproxy
The grafanaproxy
section contains the configuration of the
Grafana proxy
microservice.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
enabled | Whether to enable the Grafana proxy microservice | bool | true , false | true |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the grafana-proxy microservice | string | Any | ghcr.io/united-manufacturing-hub/barcodereader |
image.tag | The tag of the grafana-proxy microservice. Defaults to Chart version if not set | string | Any | |
replicas | The number of Pod replicas | int | Any | 1 |
service.annotations | Annotations to add to the service | object | Any | {} |
service.port | The port of the service | int | Any | 2096 |
service.type | The type of the service | string | ClusterIP, LoadBalancer | LoadBalancer |
service.targetPort | The target port of the service | int | Any | 80 |
service.protocol | The protocol of the service | string | TCP, UDP | TCP |
service.name | The name of the port of the service | string | Any | service |
resources.limits.cpu | The CPU limit | string | Any | 300m |
resources.requests.cpu | The CPU request | string | Any | 100m |
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 |
kafkastatedetector
The kafkastatedetector
section contains the configuration of the
Kafka state detector.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
activityEnabled | Controls whether to check the activity of the Kafka broker | bool | true , false | true |
anomalyEnabled | Controls whether to check for anomalies in the Kafka broker | bool | true , false | true |
enabled | Whether to enable the Kafka state detector | bool | true , false | true |
image.pullPolicy | The image pull policy | string | Always, IfNotPresent, Never | IfNotPresent |
image.repository | The image of the kafkastatedetector microservice | string | Any | ghcr.io/united-manufacturing-hub/kafka-state-detector |
image.tag | The tag of the kafkastatedetector microservice. 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
mqttbridge
The mqttbridge
section contains the configuration of the
MQTT bridge.
Parameter | Description | Type | Allowed values | Default |
---|---|---|---|---|
image | The image of the mqtt-bridge microservice | string | Any | ghcr.io/united-manufacturing-hub/mqtt-bridge |
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 | 200m |
resources.limits.memory | The memory limit | string | Any | 100Mi |
resources.requests.cpu | The CPU request | string | Any | 100m |
resources.requests.memory | The memory request | string | Any | 20Mi |
storageRequest | The amount of storage for the PersistentVolumeClaim | string | Any | 1Gi |
tag | The tag of the mqtt-bridge microservice. Defaults to Chart version if not set | string | Any |
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.