diff --git a/charts/hono/Chart.yaml b/charts/hono/Chart.yaml
new file mode 100644
index 00000000..f42608dc
--- /dev/null
+++ b/charts/hono/Chart.yaml
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2019, 2020 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+# Version of the Helm chart, by default, this will be the Maven project version
+version: 2.0.0
+# Version of the application being deployed by the chart
+appVersion: 1.0.2
+name: hono
+description: Scalable IoT messaging platform
+keywords:
+ - IoT
+ - messaging
+home: https://www.eclipse.org/hono/
+sources:
+ - https://github.com/eclipse/hono
+ - https://github.com/eclipse/packages
+icon: https://raw.githubusercontent.com/eclipse/hono/master/logo/SVG-1-1/HONO-Logo_Bild_s-135x125px.svg
+maintainers:
+ - name: dejanb
+ email: dbosanac@redhat.com
+ - name: ctron
+ email: jreimann@redhat.com
diff --git a/charts/hono/config/artemis/artemis-bootstrap.xml b/charts/hono/config/artemis/artemis-bootstrap.xml
new file mode 100644
index 00000000..2d2db7c1
--- /dev/null
+++ b/charts/hono/config/artemis/artemis-bootstrap.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charts/hono/config/artemis/artemis-broker.xml b/charts/hono/config/artemis/artemis-broker.xml
new file mode 100644
index 00000000..6af4438b
--- /dev/null
+++ b/charts/hono/config/artemis/artemis-broker.xml
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+ hono-broker
+
+ true
+
+
+ NIO
+
+ ./data/paging
+
+ ./data/bindings
+
+ ./data/journal
+
+ ./data/large-messages
+
+ true
+
+ 2
+
+ -1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 132000
+
+
+
+ 5000
+
+
+ 90
+
+
+ 100Mb
+
+
+
+
+
+ tcp://0.0.0.0:5671?protocols=AMQP;sslEnabled=true;keyStorePath=file:/etc/hono/artemisKeyStore.p12;keyStorePassword=artemiskeys;needClientAuth=true;trustStorePath=file:/etc/hono/trustStore.jks;trustStorePassword=honotrust
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DLQ
+ ExpiryQueue
+ 0
+
+ -1
+ 10
+ PAGE
+ true
+ true
+ true
+ true
+
+
+
+ DLQ
+ ExpiryQueue
+ 0
+
+ -1
+ 10
+ PAGE
+ true
+ true
+ true
+ true
+
+
+
+
+ /
+
+
+
+
\ No newline at end of file
diff --git a/charts/hono/config/artemis/artemis-roles.properties b/charts/hono/config/artemis/artemis-roles.properties
new file mode 100644
index 00000000..cb58a86e
--- /dev/null
+++ b/charts/hono/config/artemis/artemis-roles.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2016, 2018 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+admin=artemis
\ No newline at end of file
diff --git a/charts/hono/config/artemis/artemis-users.properties b/charts/hono/config/artemis/artemis-users.properties
new file mode 100644
index 00000000..3dc998d5
--- /dev/null
+++ b/charts/hono/config/artemis/artemis-users.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2016, 2018 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+artemis=artemis
\ No newline at end of file
diff --git a/charts/hono/config/artemis/artemis.profile b/charts/hono/config/artemis/artemis.profile
new file mode 100644
index 00000000..d5d82f7a
--- /dev/null
+++ b/charts/hono/config/artemis/artemis.profile
@@ -0,0 +1,45 @@
+###############################################################################
+# Copyright (c) 2016, 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+ARTEMIS_HOME='/maven'
+ARTEMIS_INSTANCE='/opt/artemis'
+
+# The logging config will need an URI
+# this will be encoded in case you use spaces or special characters
+# on your directory structure
+ARTEMIS_INSTANCE_URI='file:/opt/artemis/'
+
+# Cluster Properties: Used to pass arguments to ActiveMQ Artemis which can be referenced in broker.xml
+#ARTEMIS_CLUSTER_PROPS="-Dactivemq.remoting.default.port=61617 -Dactivemq.remoting.amqp.port=5673 -Dactivemq.remoting.stomp.port=61614 -Dactivemq.remoting.hornetq.port=5446"
+
+
+# Java Opts (set max heap to ~70% of available memory)
+JAVA_ARGS=" -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+PrintClassHistogram -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -Xms128M -Xmx360M"
+
+#
+# There might be options that you only want to enable on specifc commands, like setting a JMX port
+# See https://issues.apache.org/jira/browse/ARTEMIS-318
+#if [ "$1" = "run" ]; then
+# JAVA_ARGS="$JAVA_ARGS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1098 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
+#fi
+
+#
+# Logs Safepoints JVM pauses: Uncomment to enable them
+# In addition to the traditional GC logs you could enable some JVM flags to know any meaningful and "hidden" pause that could
+# affect the latencies of the services delivered by the broker, including those that are not reported by the classic GC logs
+# and dependent by JVM background work (eg method deoptimizations, lock unbiasing, JNI, counted loops and obviously GC activity).
+# Replace "all_pauses.log" with the file name you want to log to.
+# JAVA_ARGS="$JAVA_ARGS -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+LogVMOutput -XX:LogFile=all_pauses.log"
+
+# Debug args: Uncomment to enable debug
+#DEBUG_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
diff --git a/charts/hono/config/artemis/logging.properties b/charts/hono/config/artemis/logging.properties
new file mode 100644
index 00000000..61a5e28f
--- /dev/null
+++ b/charts/hono/config/artemis/logging.properties
@@ -0,0 +1,49 @@
+###############################################################################
+# Copyright (c) 2016, 2018 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+# Additional logger names to configure (root logger is always configured)
+# Root logger option
+loggers=org.eclipse.jetty,org.jboss.logging,org.apache.activemq.artemis.core.server,org.apache.activemq.artemis.utils,org.apache.activemq.artemis.journal,org.apache.activemq.artemis.jms.server,org.apache.activemq.artemis.integration.bootstrap
+
+# Root logger level
+logger.level=INFO
+# ActiveMQ Artemis logger levels
+logger.org.apache.activemq.artemis.core.server.level=INFO
+logger.org.apache.activemq.artemis.journal.level=INFO
+logger.org.apache.activemq.artemis.utils.level=INFO
+logger.org.apache.activemq.artemis.jms.level=INFO
+logger.org.apache.activemq.artemis.integration.bootstrap.level=INFO
+logger.org.eclipse.jetty.level=WARN
+# Root logger handlers
+logger.handlers=FILE,CONSOLE
+
+# Console handler configuration
+handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler
+handler.CONSOLE.properties=autoFlush
+handler.CONSOLE.level=DEBUG
+handler.CONSOLE.autoFlush=true
+handler.CONSOLE.formatter=PATTERN
+
+# File handler configuration
+handler.FILE=org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
+handler.FILE.level=DEBUG
+handler.FILE.properties=suffix,append,autoFlush,fileName
+handler.FILE.suffix=.yyyy-MM-dd
+handler.FILE.append=true
+handler.FILE.autoFlush=true
+handler.FILE.fileName=${artemis.instance}/log/artemis.log
+handler.FILE.formatter=PATTERN
+
+# Formatter pattern configuration
+formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter
+formatter.PATTERN.properties=pattern
+formatter.PATTERN.pattern=%d{HH:mm:ss,SSS} %-5p [%c] %s%E%n
diff --git a/charts/hono/config/artemis/login.config b/charts/hono/config/artemis/login.config
new file mode 100644
index 00000000..1ee9f256
--- /dev/null
+++ b/charts/hono/config/artemis/login.config
@@ -0,0 +1,12 @@
+activemq {
+ org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule sufficient
+ debug=false
+ reload=true
+ org.apache.activemq.jaas.properties.user="artemis-users.properties"
+ org.apache.activemq.jaas.properties.role="artemis-roles.properties";
+
+ org.apache.activemq.artemis.spi.core.security.jaas.GuestLoginModule sufficient
+ debug=false
+ org.apache.activemq.jaas.guest.user="admin"
+ org.apache.activemq.jaas.guest.role="amq";
+};
\ No newline at end of file
diff --git a/charts/hono/config/grafana/dashboard-definitions/jvm-details.json b/charts/hono/config/grafana/dashboard-definitions/jvm-details.json
new file mode 100644
index 00000000..c22ec04d
--- /dev/null
+++ b/charts/hono/config/grafana/dashboard-definitions/jvm-details.json
@@ -0,0 +1,1185 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "iteration": 1543834182381,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 94,
+ "panels": [],
+ "title": "Memory",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 11,
+ "x": 0,
+ "y": 1
+ },
+ "id": 74,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "used"
+ },
+ {
+ "alias": "max",
+ "color": "#ffffff",
+ "fill": 0,
+ "linewidth": 3
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(jvm_memory_used_bytes{host=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "used",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(jvm_memory_max_bytes{host=~\"$instance\"})",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "max",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "JVM memory",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "decimals": 0,
+ "format": "percentunit",
+ "gauge": {
+ "maxValue": 1,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 3,
+ "x": 11,
+ "y": 1
+ },
+ "hideTimeOverride": true,
+ "id": 75,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(jvm_memory_used_bytes{host=~\"$instance\"})\n/\nsum(jvm_memory_max_bytes{host=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": ".7,.9",
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "JVM memory usage",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 10,
+ "x": 14,
+ "y": 1
+ },
+ "id": 83,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/Allocated.*/",
+ "yaxis": 2
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(jvm_gc_pause_seconds_sum{host=~\"$instance\"}[$__interval]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "GC Pause - {{host}}",
+ "refId": "A"
+ },
+ {
+ "expr": "rate(jvm_gc_memory_promoted_bytes_total{host=~\"$instance\"}[$__interval])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "Allocated - {{host}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "JVM GC",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 9
+ },
+ "id": 96,
+ "panels": [],
+ "title": "CPU",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 9,
+ "w": 11,
+ "x": 0,
+ "y": 10
+ },
+ "id": 80,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "process_cpu_usage{host=~\"$instance\"}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "process - {{host}}",
+ "refId": "A"
+ },
+ {
+ "expr": "system_cpu_usage{host=~\"$instance\"}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "system - {{host}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percentunit",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 11,
+ "y": 10
+ },
+ "id": 82,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(system_cpu_count{host=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "CPUs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 9,
+ "w": 10,
+ "x": 14,
+ "y": 10
+ },
+ "id": 86,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "process_files_open_files{host=~\"$instance\"}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "open files - {{host}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Open Files",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 11,
+ "y": 13
+ },
+ "id": 78,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(jvm_threads_live_threads{host=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Threads",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 19
+ },
+ "id": 92,
+ "panels": [],
+ "title": "Logs",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 11,
+ "x": 0,
+ "y": 20
+ },
+ "id": 84,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "trace",
+ "color": "#cffaff",
+ "zindex": -3
+ },
+ {
+ "alias": "debug",
+ "color": "#65c5db",
+ "zindex": -2
+ },
+ {
+ "alias": "info",
+ "color": "#f4d598",
+ "zindex": -1
+ },
+ {
+ "alias": "warn",
+ "color": "#c15c17",
+ "zindex": 0
+ },
+ {
+ "alias": "error",
+ "color": "#bf1b00",
+ "zindex": 1
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "rate(logback_events_total{host=~\"$instance\"}[$__interval])",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "{{level}} - {{host}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "logback",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 11,
+ "y": 20
+ },
+ "id": 87,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(increase(logback_events_total{level=~\"debug|trace\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Trace | Debug",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 11,
+ "y": 22
+ },
+ "id": 88,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(increase(logback_events_total{level=\"info\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Info",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 11,
+ "y": 24
+ },
+ "id": 89,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(increase(logback_events_total{level=\"warn\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Warning",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 11,
+ "y": 26
+ },
+ "id": 90,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(increase(logback_events_total{level=\"error\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Error",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ }
+ ],
+ "refresh": "10s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": "$__all"
+ },
+ "datasource": "hono_metrics",
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": false,
+ "name": "instance",
+ "options": [],
+ "query": "label_values(jvm_threads_peak_threads,host)",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-6h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "JVM details",
+ "uid": "9kSOf0fiz",
+ "version": 1
+}
diff --git a/charts/hono/config/grafana/dashboard-definitions/message-details.json b/charts/hono/config/grafana/dashboard-definitions/message-details.json
new file mode 100644
index 00000000..43694093
--- /dev/null
+++ b/charts/hono/config/grafana/dashboard-definitions/message-details.json
@@ -0,0 +1,1009 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "iteration": 1549025382653,
+ "links": [],
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 20,
+ "x": 0,
+ "y": 0
+ },
+ "id": 2,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{status=\"forwarded\",component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Succeeded",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ops",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "ops",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 20,
+ "y": 0
+ },
+ "id": 8,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(rate(hono_messages_received_seconds_count{status=\"forwarded\",component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "avg",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "ops",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 20,
+ "y": 2
+ },
+ "id": 9,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(rate(hono_messages_received_seconds_count{status=\"forwarded\",component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "5m",
+ "title": "avg",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "ops",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 20,
+ "y": 4
+ },
+ "id": 10,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(rate(hono_messages_received_seconds_count{status=\"forwarded\",component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "15m",
+ "title": "avg",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 20,
+ "x": 0,
+ "y": 6
+ },
+ "id": 3,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{component_name=~\"$componentname\",type=~\"$type\",status=\"forwarded\",tenant=~\"$tenant\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{component_name=~\"$componentname\",type=~\"$type\",status=\"undeliverable\",tenant=~\"$tenant\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{component_name=~\"$componentname\",type=~\"$type\",status=\"unprocessable\",tenant=~\"$tenant\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Payload",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "Bps",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 20,
+ "y": 6
+ },
+ "id": 11,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(rate(hono_messages_payload_bytes_sum{component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "1m",
+ "title": "avg",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "Bps",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 20,
+ "y": 8
+ },
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(rate(hono_messages_payload_bytes_sum{component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "5m",
+ "title": "avg",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "format": "Bps",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 20,
+ "y": 10
+ },
+ "id": 13,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(rate(hono_messages_payload_bytes_sum{component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": "15m",
+ "title": "avg",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 20,
+ "x": 0,
+ "y": 12
+ },
+ "id": 4,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{component_name=~\"$componentname\",type=~\"$type\",status=\"undeliverable\",tenant=~\"$tenant\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{component_name=~\"$componentname\",type=~\"$type\",status=\"unprocessable\",tenant=~\"$tenant\",host=~\"$instance\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Failed",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ops",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "#299c46",
+ "#e5ac0e",
+ "#d44a3a"
+ ],
+ "datasource": "hono_metrics",
+ "decimals": 0,
+ "format": "percent",
+ "gauge": {
+ "maxValue": 30,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 20,
+ "y": 12
+ },
+ "id": 6,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "(sum(rate(hono_messages_received_seconds_count{component_name=~\"$componentname\",type=~\"$type\",status!=\"forwarded\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval]))\n/\n sum(rate(hono_messages_received_seconds_count{component_name=~\"$componentname\",type=~\"$type\",tenant=~\"$tenant\",host=~\"$instance\"}[$__interval])))\n* 100\n",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "5,15",
+ "title": "Failure Rate",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "0%",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ }
+ ],
+ "refresh": "10s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": "hono_metrics",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Adapter",
+ "multi": true,
+ "name": "componentname",
+ "options": [],
+ "query": "label_values(hono_messages_received_seconds_count,component_name)",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "current": {
+ "text": "",
+ "value": ""
+ },
+ "hide": 0,
+ "label": "Tenant",
+ "name": "tenant",
+ "options": [
+ {
+ "text": ".+",
+ "value": ".+"
+ }
+ ],
+ "query": ".+",
+ "skipUrlSync": false,
+ "type": "textbox"
+ },
+ {
+ "allValue": null,
+ "current": {
+ "tags": [],
+ "text": "All",
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": "hono_metrics",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Type",
+ "multi": true,
+ "name": "type",
+ "options": [],
+ "query": "label_values(hono_messages_received_seconds_count,type)",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "text": "All",
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": "hono_metrics",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Instance",
+ "multi": true,
+ "name": "instance",
+ "options": [],
+ "query": "label_values(hono_messages_received_seconds_count,host)",
+ "refresh": 2,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-30m",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "",
+ "title": "Message details",
+ "uid": "rcEOBABmk",
+ "version": 1
+}
diff --git a/charts/hono/config/grafana/dashboard-definitions/overview.json b/charts/hono/config/grafana/dashboard-definitions/overview.json
new file mode 100644
index 00000000..a9c44c1f
--- /dev/null
+++ b/charts/hono/config/grafana/dashboard-definitions/overview.json
@@ -0,0 +1,1187 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 0,
+ "links": [
+ {
+ "icon": "external link",
+ "tags": [],
+ "title": "Eclipse Honoâ„¢",
+ "tooltip": "",
+ "type": "link",
+ "url": "https://eclipse.org/hono"
+ },
+ {
+ "asDropdown": true,
+ "icon": "external link",
+ "tags": [],
+ "title": "Dashboards",
+ "type": "dashboards"
+ }
+ ],
+ "panels": [
+ {
+ "content": "
\n Telemetry\n
",
+ "description": "",
+ "gridPos": {
+ "h": 2,
+ "w": 8,
+ "x": 0,
+ "y": 0
+ },
+ "id": 8,
+ "links": [],
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "content": "\n Events\n
",
+ "gridPos": {
+ "h": 2,
+ "w": 8,
+ "x": 8,
+ "y": 0
+ },
+ "id": 12,
+ "links": [],
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "content": "\n Commands\n
",
+ "gridPos": {
+ "h": 2,
+ "w": 8,
+ "x": 16,
+ "y": 0
+ },
+ "id": 15,
+ "links": [],
+ "mode": "html",
+ "title": "",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of telemetry messages received from devices",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 2
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashboard": "Message details",
+ "includeVars": true,
+ "keepTime": true,
+ "params": "var-type=telemetry",
+ "targetBlank": true,
+ "title": "Message details",
+ "type": "dashboard",
+ "url": "/d/rcEOBABmk/message-details"
+ }
+ ],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "processed",
+ "color": "#629e51",
+ "zindex": -1
+ },
+ {
+ "alias": "unprocessed",
+ "color": "#bf1b00",
+ "zindex": 1
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{type=\"telemetry\",status=\"unprocessable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "C"
+ },
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{type=\"telemetry\",status=\"undeliverable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{type=\"telemetry\",status=\"forwarded\"}[$__range]))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "messages",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "messages/sec",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of events received from devices",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 2
+ },
+ "id": 17,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [
+ {
+ "dashboard": "Message details",
+ "includeVars": true,
+ "keepTime": true,
+ "params": "type=event",
+ "targetBlank": true,
+ "title": "Message details",
+ "type": "dashboard",
+ "url": "/d/rcEOBABmk/message-details"
+ }
+ ],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "processed",
+ "color": "#629e51",
+ "zindex": -1
+ },
+ {
+ "alias": "unprocessed",
+ "color": "#bf1b00",
+ "zindex": 1
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{type=\"event\",status=\"unprocessable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "C"
+ },
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{type=\"event\",status=\"undeliverable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(irate(hono_messages_received_seconds_count{type=\"event\",status=\"forwarded\"}[$__range]))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "messages",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "messages/sec",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of commands sent to devices",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 2
+ },
+ "id": 20,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_commands_received_seconds_count{direction=~\"one-way|request\",status=\"unprocessable\"}[$__range]))",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "C"
+ },
+ {
+ "expr": "sum(irate(hono_commands_received_seconds_count{direction=~\"one-way|request\",status=\"undeliverable\"}[$__range]))",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(irate(hono_commands_received_seconds_count{direction=~\"one-way|request\",status=\"forwarded\"}[$__range]))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "messages",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "messages/sec",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "decimals": 1,
+ "format": "none",
+ "label": "bytes/sec",
+ "logBase": 10,
+ "max": null,
+ "min": "0",
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of data received from devices as payload of telemetry messages",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 10
+ },
+ "id": 55,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{type=\"telemetry\",status=\"unprocessable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "C"
+ },
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{type=\"telemetry\",status=\"undeliverable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{type=\"telemetry\",status=\"forwarded\"}[$__range]))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "payload",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "bytes/sec",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of data received from devices as payload of events",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 10
+ },
+ "id": 59,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{type=\"event\",status=\"unprocessable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "C"
+ },
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{type=\"event\",status=\"undeliverable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(irate(hono_messages_payload_bytes_sum{type=\"event\",status=\"forwarded\"}[$__range]))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "payload",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "bytes/sec",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of data sent to devices as payload of commands",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 10
+ },
+ "id": 60,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(irate(hono_commands_payload_bytes_sum{direction=~\"one-way|request\",status=\"unprocessable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "unprocessable",
+ "refId": "C"
+ },
+ {
+ "expr": "sum(irate(hono_commands_payload_bytes_sum{direction=~\"one-way|request\",status=\"undeliverable\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "undeliverable",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(irate(hono_commands_payload_bytes_sum{direction=~\"one-way|request\",status=\"forwarded\"}[$__range]))",
+ "format": "time_series",
+ "instant": false,
+ "intervalFactor": 1,
+ "legendFormat": "forwarded",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "payload",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "bytes/sec",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of valid telemetry messages received from devices which could not be delivered downstream",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 18
+ },
+ "id": 61,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(100 * sum(irate(hono_messages_received_seconds_count{type=\"telemetry\",qos=\"0\",status=\"undeliverable\"}[$__range])))\n/\nsum(irate(hono_messages_received_seconds_count{type=\"telemetry\",qos=\"0\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "QoS 0",
+ "refId": "C"
+ },
+ {
+ "expr": "(100 * sum(irate(hono_messages_received_seconds_count{type=\"telemetry\",qos=\"1\",status=\"undeliverable\"}[$__range])))\n/\nsum(irate(hono_messages_received_seconds_count{type=\"telemetry\",qos=\"1\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "QoS 1",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "warning",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 5,
+ "yaxis": "left"
+ },
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 15,
+ "yaxis": "left"
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "undeliverable rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "percent",
+ "logBase": 10,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of valid events received from devices which could not be delivered downstream",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 18
+ },
+ "id": 62,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(100 * sum(irate(hono_messages_received_seconds_count{type=\"event\",status=\"undeliverable\"}[$__range])))\n/\nsum(irate(hono_messages_received_seconds_count{type=\"event\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "not forwarded",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "warning",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 1,
+ "yaxis": "left"
+ },
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 5,
+ "yaxis": "left"
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "undeliverable rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "percent",
+ "logBase": 10,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "hono_metrics",
+ "description": "average rate of valid commands received from applications which could not be delivered to devices",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 18
+ },
+ "id": 63,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(100 * sum(irate(hono_commands_received_seconds_count{direction=~\"one-way|request\",status=\"undeliverable\"}[$__range])))\n/\nsum(irate(hono_commands_received_seconds_count{direction=\"one-way|request\"}[$__range]))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "not forwarded",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "warning",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 5,
+ "yaxis": "left"
+ },
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 15,
+ "yaxis": "left"
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "undeliverable rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "transparent": false,
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "percent",
+ "logBase": 10,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "columns": [],
+ "datasource": "hono_metrics",
+ "description": "The number of containers running for each service.",
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 5,
+ "w": 8,
+ "x": 0,
+ "y": 26
+ },
+ "id": 65,
+ "links": [],
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Service",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "mappingType": 1,
+ "pattern": "job",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Count",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "Value",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "mappingType": 1,
+ "pattern": "Time",
+ "thresholds": [],
+ "type": "date",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "sum(up) by (job)",
+ "format": "table",
+ "instant": true,
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "title": "Service Instances",
+ "transform": "table",
+ "type": "table"
+ }
+ ],
+ "refresh": "10s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": []
+ },
+ "time": {
+ "from": "now-5m",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Overview",
+ "uid": "QpiDB0Bmz",
+ "version": 1
+}
diff --git a/charts/hono/example/amqp-adapter.credentials b/charts/hono/example/amqp-adapter.credentials
new file mode 100644
index 00000000..afa3b4c4
--- /dev/null
+++ b/charts/hono/example/amqp-adapter.credentials
@@ -0,0 +1,2 @@
+username=amqp-adapter@HONO
+password=amqp-secret
diff --git a/charts/hono/example/coap-adapter.credentials b/charts/hono/example/coap-adapter.credentials
new file mode 100644
index 00000000..57f93b92
--- /dev/null
+++ b/charts/hono/example/coap-adapter.credentials
@@ -0,0 +1,2 @@
+username=coap-adapter@HONO
+password=coap-secret
diff --git a/charts/hono/example/example-credentials.json b/charts/hono/example/example-credentials.json
new file mode 100644
index 00000000..13a69015
--- /dev/null
+++ b/charts/hono/example/example-credentials.json
@@ -0,0 +1,62 @@
+[
+ {
+ "tenant": "DEFAULT_TENANT",
+ "credentials": [
+ {
+ "device-id": "4711",
+ "type": "hashed-password",
+ "auth-id": "sensor1",
+ "enabled": true,
+ "secrets": [
+ {
+ "not-before": "2017-05-01T14:00:00+01:00",
+ "not-after": "2037-06-01T14:00:00+01:00",
+ "hash-function": "bcrypt",
+ "comment": "pwd: hono-secret",
+ "pwd-hash": "$2a$10$N7UMjhZ2hYx.yuvW9WVXZ.4y33mr6MvnpAsZ8wgLHnkamH2tZ1jD."
+ }
+ ]
+ },
+ {
+ "device-id": "gw-1",
+ "type": "hashed-password",
+ "auth-id": "gw",
+ "enabled": true,
+ "secrets": [
+ {
+ "not-before": "2018-01-01T00:00:00+01:00",
+ "not-after": "2037-06-01T14:00:00+01:00",
+ "hash-function": "bcrypt",
+ "comment": "pwd: gw-secret",
+ "pwd-hash": "$2a$10$GMcN0iV9gJV7L1sH6J82Xebc1C7CGJ..Rbs./vcTuTuxPEgS9DOa6"
+ }
+ ]
+ },
+ {
+ "device-id" : "4711",
+ "type" : "psk",
+ "auth-id" : "sensor1",
+ "enabled" : true,
+ "secrets" : [
+ {
+ "not-before": "2018-01-01T00:00:00+01:00",
+ "not-after": "2037-06-01T14:00:00+01:00",
+ "comment": "coap preshared key: coap-secret",
+ "key" : "Y29hcC1zZWNyZXQ="
+ }
+ ]
+ },
+ {
+ "device-id": "4711",
+ "type": "x509-cert",
+ "auth-id": "CN=Device 4711,OU=Hono,O=Eclipse IoT,L=Ottawa,C=CA",
+ "enabled": true,
+ "secrets": [
+ {
+ "comment": "The secrets array must contain an object, which can be empty."
+ }
+ ]
+ }
+ ]
+ }
+]
diff --git a/charts/hono/example/example-device-identities.json b/charts/hono/example/example-device-identities.json
new file mode 100644
index 00000000..80e9ef5f
--- /dev/null
+++ b/charts/hono/example/example-device-identities.json
@@ -0,0 +1,36 @@
+[
+ {
+ "tenant": "DEFAULT_TENANT",
+ "devices": [
+ {
+ "device-id": "4711",
+ "data": {
+ "enabled": true,
+ "comment": [
+ "messages published without a content type will get the default type defined below",
+ "non-standard properties ('importance') will be added to the message's application-properties"
+ ],
+ "defaults": {
+ "content-type": "application/vnd.bumlux",
+ "importance": "high"
+ }
+ }
+ },
+ {
+ "device-id": "4712",
+ "data": {
+ "enabled": true,
+ "comment": ["this device connects only via the gateway indicated by the 'via' property","therefore, no credentials are registered for the device"],
+ "via":"gw-1"
+ }
+ },
+ {
+ "device-id": "gw-1",
+ "comment": "this device is authorized to publish data on behalf of device 4712",
+ "data": {
+ "enabled": true
+ }
+ }
+ ]
+ }
+]
diff --git a/charts/hono/example/example-permissions.json b/charts/hono/example/example-permissions.json
new file mode 100644
index 00000000..0d3e36bd
--- /dev/null
+++ b/charts/hono/example/example-permissions.json
@@ -0,0 +1,128 @@
+{
+ "roles": {
+ "protocol-adapter": [
+ {
+ "resource": "telemetry/*",
+ "activities": [ "WRITE" ]
+ },
+ {
+ "resource": "event/*",
+ "activities": [ "WRITE" ]
+ },
+ {
+ "resource": "registration/*",
+ "activities": [ "READ", "WRITE" ]
+ },
+ {
+ "operation": "registration/*:assert",
+ "activities": [ "EXECUTE" ]
+ },
+ {
+ "operation": "registration/*:get",
+ "activities": [ "EXECUTE" ]
+ },
+ {
+ "resource": "credentials/*",
+ "activities": [ "READ", "WRITE" ]
+ },
+ {
+ "operation": "credentials/*:get",
+ "activities": [ "EXECUTE" ]
+ },
+ {
+ "resource": "tenant",
+ "activities": [ "READ", "WRITE" ]
+ },
+ {
+ "operation": "tenant/*:*",
+ "activities": [ "EXECUTE" ]
+ },
+ {
+ "resource": "device_con/*",
+ "activities": [ "READ", "WRITE" ]
+ },
+ {
+ "operation": "device_con/*:*",
+ "activities": [ "EXECUTE" ]
+ }
+ ],
+ "device-manager": [
+ {
+ "resource": "registration/*",
+ "activities": [ "READ", "WRITE" ]
+ },
+ {
+ "operation": "registration/*:*",
+ "activities": [ "EXECUTE" ]
+ }
+ ],
+ "application": [
+ {
+ "resource": "telemetry/*",
+ "activities": [ "READ" ]
+ },
+ {
+ "resource": "event/*",
+ "activities": [ "READ" ]
+ },
+ {
+ "resource": "control/*",
+ "activities": [ "READ", "WRITE" ]
+ },
+ {
+ "resource": "command/*",
+ "activities": [ "WRITE" ]
+ },
+ {
+ "resource": "command_response/*",
+ "activities": [ "READ" ]
+ }
+ ]
+ },
+ "users": {
+ "coap-adapter@HONO": {
+ "mechanism": "PLAIN",
+ "password": "coap-secret",
+ "authorities": [ "hono-component", "protocol-adapter" ]
+ },
+ "http-adapter@HONO": {
+ "mechanism": "PLAIN",
+ "password": "http-secret",
+ "authorities": [ "hono-component", "protocol-adapter" ]
+ },
+ "lora-adapter@HONO": {
+ "mechanism": "PLAIN",
+ "password": "lora-secret",
+ "authorities": [ "hono-component", "protocol-adapter" ]
+ },
+ "mqtt-adapter@HONO": {
+ "mechanism": "PLAIN",
+ "password": "mqtt-secret",
+ "authorities": [ "hono-component", "protocol-adapter" ]
+ },
+ "amqp-adapter@HONO": {
+ "mechanism": "PLAIN",
+ "password": "amqp-secret",
+ "authorities": [ "hono-component", "protocol-adapter" ]
+ },
+ "kura-adapter@HONO": {
+ "mechanism": "PLAIN",
+ "password": "kura-secret",
+ "authorities": [ "hono-component", "protocol-adapter" ]
+ },
+ "hono-client@HONO": {
+ "mechanism": "PLAIN",
+ "password": "secret",
+ "authorities": [ "protocol-adapter", "device-manager" ]
+ },
+ "device-registry": {
+ "mechanism": "EXTERNAL",
+ "authorities": []
+ },
+ "consumer@HONO": {
+ "mechanism": "PLAIN",
+ "password": "verysecret",
+ "authorities": [ "application" ]
+ }
+ }
+}
diff --git a/charts/hono/example/example-tenants.json b/charts/hono/example/example-tenants.json
new file mode 100644
index 00000000..f5fe86b2
--- /dev/null
+++ b/charts/hono/example/example-tenants.json
@@ -0,0 +1,41 @@
+[
+ {
+ "tenant-id": "DEFAULT_TENANT",
+ "trusted-ca": [
+ {
+ "subject-dn": "CN=DEFAULT_TENANT_CA,OU=Hono,O=Eclipse IoT,L=Ottawa,C=CA",
+ "public-key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElkwCSPlO563eQb6ONdULAISm2XngGGSoAAz+I1s8zkS9guPUpNKoxeczLtKlObelHqBgIZtRXdrPRgXidGOnmQ==",
+ "algorithm": "EC",
+ "not-before": "2019-09-18T10:35:40+02:00",
+ "not-after": "2020-09-17T10:35:40+02:00"
+ }
+ ],
+ "enabled": true
+ },
+ {
+ "tenant-id": "HTTP_TENANT",
+ "enabled": true,
+ "adapters": [
+ {
+ "type": "hono-http",
+ "enabled": true,
+ "device-authentication-required": true
+ },
+ {
+ "type": "hono-mqtt",
+ "enabled": false,
+ "device-authentication-required": true
+ },
+ {
+ "type": "hono-kura",
+ "enabled": false,
+ "device-authentication-required": true
+ },
+ {
+ "type": "hono-coap",
+ "enabled": false,
+ "device-authentication-required": true
+ }
+ ]
+ }
+]
diff --git a/charts/hono/example/http-adapter.credentials b/charts/hono/example/http-adapter.credentials
new file mode 100644
index 00000000..a9e27a8d
--- /dev/null
+++ b/charts/hono/example/http-adapter.credentials
@@ -0,0 +1,2 @@
+username=http-adapter@HONO
+password=http-secret
diff --git a/charts/hono/example/kura-adapter.credentials b/charts/hono/example/kura-adapter.credentials
new file mode 100644
index 00000000..5c6536bd
--- /dev/null
+++ b/charts/hono/example/kura-adapter.credentials
@@ -0,0 +1,2 @@
+username=kura-adapter@HONO
+password=kura-secret
diff --git a/charts/hono/example/lora-adapter.credentials b/charts/hono/example/lora-adapter.credentials
new file mode 100644
index 00000000..53fcdbf9
--- /dev/null
+++ b/charts/hono/example/lora-adapter.credentials
@@ -0,0 +1,2 @@
+username=lora-adapter@HONO
+password=lora-secret
diff --git a/charts/hono/example/mqtt-adapter.credentials b/charts/hono/example/mqtt-adapter.credentials
new file mode 100644
index 00000000..4379f0ca
--- /dev/null
+++ b/charts/hono/example/mqtt-adapter.credentials
@@ -0,0 +1,2 @@
+username=mqtt-adapter@HONO
+password=mqtt-secret
diff --git a/charts/hono/hono-demo-certs-jar/amqp-adapter-cert.pem b/charts/hono/hono-demo-certs-jar/amqp-adapter-cert.pem
new file mode 100644
index 00000000..40249b9d
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/amqp-adapter-cert.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIICPTCCAeOgAwIBAgIJAIAzeQIsnyXzMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFoxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRUwEwYDVQQDDAxhbXFwLWFkYXB0
+ZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQPbvPLmvMjc7qbh5mmm27WAjSW
+2CJQvs2qVaCGd8dj2gDHVtjPdw2xgWyzlThtnSfgYu/rTq7SGhSsm4omEWm6o4Gb
+MIGYMB0GA1UdDgQWBBTpbcFGcu7I7dBsx50Poq95L/xl6jALBgNVHQ8EBAMCA6gw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEsGA1UdEQREMEKCF2hvbm8t
+YWRhcHRlci1hbXFwLXZlcnR4ghxob25vLWFkYXB0ZXItYW1xcC12ZXJ0eC5ob25v
+gglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSAAwRQIgJ9fhN9eIuNDqVrsLfzsWheHR
+VjljahX4GVyQNGVGOJICIQDKKVX4Yg9uU2IusYQ7bCCqJuWWxWMj68BHBjJD2ttF
+nA==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/amqp-adapter-key.pem b/charts/hono/hono-demo-certs-jar/amqp-adapter-key.pem
new file mode 100644
index 00000000..82b8f2ee
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/amqp-adapter-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8bMs7pAYYoiH6Vgq
+dTNVA0zOcsfsL+OwXbA4b4a1NuKhRANCAAQPbvPLmvMjc7qbh5mmm27WAjSW2CJQ
+vs2qVaCGd8dj2gDHVtjPdw2xgWyzlThtnSfgYu/rTq7SGhSsm4omEWm6
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/amqpKeyStore.p12 b/charts/hono/hono-demo-certs-jar/amqpKeyStore.p12
new file mode 100644
index 00000000..305a5634
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/amqpKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/artemis-cert.pem b/charts/hono/hono-demo-certs-jar/artemis-cert.pem
new file mode 100644
index 00000000..418f2570
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/artemis-cert.pem
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIICIjCCAcigAwIBAgIJAIAzeQIsnyXxMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFUxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRAwDgYDVQQDDAdhcnRlbWlzMFkw
+EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40PfD8H2zxV/63S3kMHOB3U/vyI1Zi+6
+Joh3CRR1AavRrFn5B/iPCtVquzy6Jnsm3TcUsaoZHRb9+RVmWuOU9KOBhTCBgjAd
+BgNVHQ4EFgQUBzO+nMoEyVVSoR7wuDt7+tZIsYswCwYDVR0PBAQDAgOoMB0GA1Ud
+JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjA1BgNVHREELjAsggxob25vLWFydGVt
+aXOCEWhvbm8tYXJ0ZW1pcy5ob25vgglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSAAw
+RQIgOTTzLf4foIXD9N+jzIR5mhd8KOXHQAyGRfS6lprRm9UCIQCw2AJUIucdV/Ka
+re1earEHa78GXwsTqkrFpZxV7IYFKg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/artemis-key.pem b/charts/hono/hono-demo-certs-jar/artemis-key.pem
new file mode 100644
index 00000000..fe11c927
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/artemis-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg5WjPTQ8EkD28ckDt
+cOV4HJXQ9TTn2QQlX6rjM9LsZP6hRANCAATjQ98PwfbPFX/rdLeQwc4HdT+/IjVm
+L7omiHcJFHUBq9GsWfkH+I8K1Wq7PLomeybdNxSxqhkdFv35FWZa45T0
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/artemisKeyStore.p12 b/charts/hono/hono-demo-certs-jar/artemisKeyStore.p12
new file mode 100644
index 00000000..55677d20
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/artemisKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/auth-server-cert.pem b/charts/hono/hono-demo-certs-jar/auth-server-cert.pem
new file mode 100644
index 00000000..c8c4e818
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/auth-server-cert.pem
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIICMTCCAdagAwIBAgIJAIAzeQIsnyXqMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFkxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRQwEgYDVQQDDAthdXRoLXNlcnZl
+cjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGAGHzTzj6V/qb3GbKJPqEaUSRiu
+xiUS3SYpQKP00XIEaUM92hEmiV94vgFxnryso/YTtFubZMxTUib6i0tZwVyjgY8w
+gYwwHQYDVR0OBBYEFOX+j/RvG379cxy/MOoVkZ/wYou3MAsGA1UdDwQEAwIDqDAd
+BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPwYDVR0RBDgwNoIRaG9uby1z
+ZXJ2aWNlLWF1dGiCFmhvbm8tc2VydmljZS1hdXRoLmhvbm+CCWxvY2FsaG9zdDAK
+BggqhkjOPQQDAgNJADBGAiEArBGHfRazHWmSexsf6Jmzc+y/6dVfVBWH+VYSWy1Y
+AdICIQDA8e2CPcMTW1SoaBBOpxozUvsbgxTcsg1H1ojTN4kjKg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/auth-server-key.pem b/charts/hono/hono-demo-certs-jar/auth-server-key.pem
new file mode 100644
index 00000000..ebe6ee36
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/auth-server-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFeEhepquGCf9zXwx
+I4gAUlhbUsyszY60Aliy+lb8VnehRANCAARgBh8084+lf6m9xmyiT6hGlEkYrsYl
+Et0mKUCj9NFyBGlDPdoRJolfeL4BcZ68rKP2E7Rbm2TMU1Im+otLWcFc
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/authServerKeyStore.p12 b/charts/hono/hono-demo-certs-jar/authServerKeyStore.p12
new file mode 100644
index 00000000..905b8b0c
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/authServerKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/ca-cert.pem b/charts/hono/hono-demo-certs-jar/ca-cert.pem
new file mode 100644
index 00000000..4cf508d1
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/ca-cert.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/ca-key.pem b/charts/hono/hono-demo-certs-jar/ca-key.pem
new file mode 100644
index 00000000..8cf4bf52
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/ca-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgctJeP38n/ldOAhHe
+vRljN1lysJzOxc6locpSGlQZHzihRANCAATlwljuPLTSfY+buxrW7FX2bf1K10bS
+RbSN3GTKWluTeVVDIkVUDJV6AoAeTCJq3GfG5o7QgjuOvfxRcaAej0MH
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/coap-adapter-cert.pem b/charts/hono/hono-demo-certs-jar/coap-adapter-cert.pem
new file mode 100644
index 00000000..14e90f8b
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/coap-adapter-cert.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIICPjCCAeOgAwIBAgIJAIAzeQIsnyXyMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFoxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRUwEwYDVQQDDAxjb2FwLWFkYXB0
+ZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQpnimECC9yzzDRh777GU/XnSke
+N7QT5XpWBK9rRI+ZVTNiiMRVzDi84xzaIfjy8gaME2kAtTN6cRDmHRR2CczDo4Gb
+MIGYMB0GA1UdDgQWBBR0PqK90QkfOH0WghhFiZIPC/p5RTALBgNVHQ8EBAMCA6gw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEsGA1UdEQREMEKCF2hvbm8t
+YWRhcHRlci1jb2FwLXZlcnR4ghxob25vLWFkYXB0ZXItY29hcC12ZXJ0eC5ob25v
+gglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSQAwRgIhAJuWYhbBWEhvVAnrak2UX/aB
+GaiNj5abeT1MHT/DbUKSAiEAqgt7kdlIX7FgKVVpaFmj0M+CNNMKX16tScJNK/LQ
+gNc=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/coap-adapter-key.pem b/charts/hono/hono-demo-certs-jar/coap-adapter-key.pem
new file mode 100644
index 00000000..0c7975a9
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/coap-adapter-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgdrU4oLMrAV3n3YRj
+JldhTufe/mzAZP3gi7aBhMvVOOChRANCAAQpnimECC9yzzDRh777GU/XnSkeN7QT
+5XpWBK9rRI+ZVTNiiMRVzDi84xzaIfjy8gaME2kAtTN6cRDmHRR2CczD
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/coapKeyStore.p12 b/charts/hono/hono-demo-certs-jar/coapKeyStore.p12
new file mode 100644
index 00000000..545a0eb9
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/coapKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/default_tenant-cert.pem b/charts/hono/hono-demo-certs-jar/default_tenant-cert.pem
new file mode 100644
index 00000000..68c996ed
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/default_tenant-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICEjCCAbmgAwIBAgIUYhyWIMx4xPRdrHGBPvjhAotkivEwCgYIKoZIzj0EAwIw
+XzELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UECgwLRWNsaXBz
+ZSBJb1QxDTALBgNVBAsMBEhvbm8xGjAYBgNVBAMMEURFRkFVTFRfVEVOQU5UX0NB
+MB4XDTE5MDkxODA4MzU0MFoXDTIwMDkxNzA4MzU0MFowXzELMAkGA1UEBhMCQ0Ex
+DzANBgNVBAcMBk90dGF3YTEUMBIGA1UECgwLRWNsaXBzZSBJb1QxDTALBgNVBAsM
+BEhvbm8xGjAYBgNVBAMMEURFRkFVTFRfVEVOQU5UX0NBMFkwEwYHKoZIzj0CAQYI
+KoZIzj0DAQcDQgAElkwCSPlO563eQb6ONdULAISm2XngGGSoAAz+I1s8zkS9guPU
+pNKoxeczLtKlObelHqBgIZtRXdrPRgXidGOnmaNTMFEwHQYDVR0OBBYEFC9Pa5Mf
+pPyg3PsNELICNiANVF5PMB8GA1UdIwQYMBaAFC9Pa5MfpPyg3PsNELICNiANVF5P
+MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDRwAwRAIgHSYrRlLIDt9Xg9gs
+3Mqfr9hQx1COjd7Pz0srm4UxvsUCIB8NldXysBY6Q/lQ9qd9e2+OSHRMv24OBkiY
+UZYGIkBN
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/default_tenant-key.pem b/charts/hono/hono-demo-certs-jar/default_tenant-key.pem
new file mode 100644
index 00000000..51fef6bc
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/default_tenant-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgMkR4fBHPdES2ODgW
+70vqm0GcsFnoSmQipum9uFu9pWuhRANCAASWTAJI+U7nrd5Bvo411QsAhKbZeeAY
+ZKgADP4jWzzORL2C49Sk0qjF5zMu0qU5t6UeoGAhm1Fd2s9GBeJ0Y6eZ
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/device-4711-cert.pem b/charts/hono/hono-demo-certs-jar/device-4711-cert.pem
new file mode 100644
index 00000000..a44b9011
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/device-4711-cert.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIBszCCAVkCFDJrBMmAf9cHJyWRtqts9gwK3gwMMAoGCCqGSM49BAMCMF8xCzAJ
+BgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9U
+MQ0wCwYDVQQLDARIb25vMRowGAYDVQQDDBFERUZBVUxUX1RFTkFOVF9DQTAeFw0x
+OTA5MTgwODM1NDBaFw0yMDA5MTcwODM1NDBaMFkxCzAJBgNVBAYTAkNBMQ8wDQYD
+VQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25v
+MRQwEgYDVQQDDAtEZXZpY2UgNDcxMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
+BPyG69kD48aRL/2VsuT//jbDHLkXn83uqxVRIUCq8Ow0YE9XyOKFto6FEyxPLzSx
+BFwM7UfXA3yXMubhj1ri3mYwCgYIKoZIzj0EAwIDSAAwRQIgDu8w7mvC6K6VwRNf
+G7ZaNge1C4JEOqS6pKVaSWENOkACIQDSU2eUsJJhS067/l9v5axDfCwl/24vssGE
+LPJ/OsfaHg==
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/device-4711-key.pem b/charts/hono/hono-demo-certs-jar/device-4711-key.pem
new file mode 100644
index 00000000..bb117b21
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/device-4711-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg+Xy6K1Cc8wG23i0w
+bvm1r6MmP7HHTkwB21/3d43QezWhRANCAAT8huvZA+PGkS/9lbLk//42wxy5F5/N
+7qsVUSFAqvDsNGBPV8jihbaOhRMsTy80sQRcDO1H1wN8lzLm4Y9a4t5m
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/device-certs.properties b/charts/hono/hono-demo-certs-jar/device-certs.properties
new file mode 100644
index 00000000..1a8735e5
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/device-certs.properties
@@ -0,0 +1 @@
+cert.device-4711.subject=CN=Device 4711,OU=Hono,O=Eclipse IoT,L=Ottawa,C=CA
diff --git a/charts/hono/hono-demo-certs-jar/device-connection-cert.pem b/charts/hono/hono-demo-certs-jar/device-connection-cert.pem
new file mode 100644
index 00000000..04bb21a9
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/device-connection-cert.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIICUDCCAfagAwIBAgIJAIAzeQIsnyXsMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMF8xCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRowGAYDVQQDDBFkZXZpY2UtY29u
+bmVjdGlvbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGNJ9hZ8cZnptrRaf6Jp
+85cqNotZj8KPeu8Cl5XnMcR/FUtyBPQ4Ua9az7CAR5k9RDRdf0Yb7oEmnDfDrZCW
+fC+jgakwgaYwHQYDVR0OBBYEFEum8zsqUiDl6nub5evHvWF98AObMAsGA1UdDwQE
+AwIDqDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwWQYDVR0RBFIwUIIe
+aG9uby1zZXJ2aWNlLWRldmljZS1jb25uZWN0aW9ugiNob25vLXNlcnZpY2UtZGV2
+aWNlLWNvbm5lY3Rpb24uaG9ub4IJbG9jYWxob3N0MAoGCCqGSM49BAMCA0gAMEUC
+IQD7ULJwJ8iMPipW/PX/ByEZLl272UnOrFA6wf6WLjvvCwIgK2LWeUftk0pvHQ+n
+6o4qPBmSD+j+9V6UQ/7d2Zi0Nbg=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/device-connection-key.pem b/charts/hono/hono-demo-certs-jar/device-connection-key.pem
new file mode 100644
index 00000000..7908991e
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/device-connection-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg0CznfQ3m8QNWQ/kP
+XTV/aw4IWzpD/ipcEwe0HQFffSqhRANCAARjSfYWfHGZ6ba0Wn+iafOXKjaLWY/C
+j3rvApeV5zHEfxVLcgT0OFGvWs+wgEeZPUQ0XX9GG+6BJpw3w62Qlnwv
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/device-registry-cert.pem b/charts/hono/hono-demo-certs-jar/device-registry-cert.pem
new file mode 100644
index 00000000..cfacd450
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/device-registry-cert.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIICSjCCAfCgAwIBAgIJAIAzeQIsnyXrMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMF0xCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRgwFgYDVQQDDA9kZXZpY2UtcmVn
+aXN0cnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASSn4d/j7vhQL3mRI3k1CNL
+EpU6LPM9ypji2DAY7T/wxRHzNr1ZYcee6KE2E6KSuVtP5qrvh2nsdQ8lXY+nXZJQ
+o4GlMIGiMB0GA1UdDgQWBBSsXe4xfm/lam1IAnIhlkVI5WyaOTALBgNVHQ8EBAMC
+A6gwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMFUGA1UdEQROMEyCHGhv
+bm8tc2VydmljZS1kZXZpY2UtcmVnaXN0cnmCIWhvbm8tc2VydmljZS1kZXZpY2Ut
+cmVnaXN0cnkuaG9ub4IJbG9jYWxob3N0MAoGCCqGSM49BAMCA0gAMEUCIQDrMZki
+2q9KHdLEHwHLpizvOUwS9zxwvEmgWVAz5SXqEQIgf4swChSfW1RtLrhu8Gq9fs0f
+Nda/ilWCDFbN3g9vpzg=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/device-registry-key.pem b/charts/hono/hono-demo-certs-jar/device-registry-key.pem
new file mode 100644
index 00000000..55f7234d
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/device-registry-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg4tDNgPUVT8xcNd4g
+/1tPCuqsDcJs0tpIsscPVHigq/2hRANCAASSn4d/j7vhQL3mRI3k1CNLEpU6LPM9
+ypji2DAY7T/wxRHzNr1ZYcee6KE2E6KSuVtP5qrvh2nsdQ8lXY+nXZJQ
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/deviceConnectionKeyStore.p12 b/charts/hono/hono-demo-certs-jar/deviceConnectionKeyStore.p12
new file mode 100644
index 00000000..6214de3b
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/deviceConnectionKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/deviceRegistryKeyStore.p12 b/charts/hono/hono-demo-certs-jar/deviceRegistryKeyStore.p12
new file mode 100644
index 00000000..c6c6f2c0
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/deviceRegistryKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/http-adapter-cert.pem b/charts/hono/hono-demo-certs-jar/http-adapter-cert.pem
new file mode 100644
index 00000000..3d628302
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/http-adapter-cert.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIICPTCCAeOgAwIBAgIJAIAzeQIsnyXtMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFoxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRUwEwYDVQQDDAxodHRwLWFkYXB0
+ZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQFXnO/KE7Z004WepuA9web91h4
++AilIlOoCU3DvsgR2euf8TM7c32RnRU72ymfyP4mE5Gr4B4gVDJVxEPIWec+o4Gb
+MIGYMB0GA1UdDgQWBBS0DbIN/bZiFF/Rofwb9A44VF/20jALBgNVHQ8EBAMCA6gw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEsGA1UdEQREMEKCF2hvbm8t
+YWRhcHRlci1odHRwLXZlcnR4ghxob25vLWFkYXB0ZXItaHR0cC12ZXJ0eC5ob25v
+gglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSAAwRQIhANzHxEKVx/kQZXfeDCvntIYe
+XKpAQJYlqBL07mwCwVZdAiBJsARl5Wwoe/l4jIYhTKLNeT+faYx5XwzqObaQmD06
+tw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/http-adapter-key.pem b/charts/hono/hono-demo-certs-jar/http-adapter-key.pem
new file mode 100644
index 00000000..8fd89e51
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/http-adapter-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2NvK//o1lk/JyRH8
+GxQek2owIw5+dvohJ32S2QjSr7ShRANCAAQFXnO/KE7Z004WepuA9web91h4+Ail
+IlOoCU3DvsgR2euf8TM7c32RnRU72ymfyP4mE5Gr4B4gVDJVxEPIWec+
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/httpKeyStore.p12 b/charts/hono/hono-demo-certs-jar/httpKeyStore.p12
new file mode 100644
index 00000000..b0e55179
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/httpKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/kura-adapter-cert.pem b/charts/hono/hono-demo-certs-jar/kura-adapter-cert.pem
new file mode 100644
index 00000000..54d704b4
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/kura-adapter-cert.pem
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIICMjCCAdegAwIBAgIJAIAzeQIsnyXwMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFoxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRUwEwYDVQQDDAxrdXJhLWFkYXB0
+ZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARk9U3dJIr7vwXjFPzaTrTxp8SK
+Xk8C4kZp58YoR1csp4GCCmIR+aatNmGb646J+zO0ycgSnYGKiOI110GmGXONo4GP
+MIGMMB0GA1UdDgQWBBQXWG8mrQXcf+0YFU8foitLO83ENzALBgNVHQ8EBAMCA6gw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMD8GA1UdEQQ4MDaCEWhvbm8t
+YWRhcHRlci1rdXJhghZob25vLWFkYXB0ZXIta3VyYS5ob25vgglsb2NhbGhvc3Qw
+CgYIKoZIzj0EAwIDSQAwRgIhANnWCjuAjeGW6bADtUzg5cSg3cY0J8S97S7qyGzb
+Fjb0AiEAopRjyJ2aaQVeTUV/FUCbbP2DvtblFfz/bs+fqpNqyxY=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/kura-adapter-key.pem b/charts/hono/hono-demo-certs-jar/kura-adapter-key.pem
new file mode 100644
index 00000000..2eba01d9
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/kura-adapter-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgmkZ+DLCS0Ywz8Z2d
+MMrf/HAn36lii0S5IPj4GLhDJ/ahRANCAARk9U3dJIr7vwXjFPzaTrTxp8SKXk8C
+4kZp58YoR1csp4GCCmIR+aatNmGb646J+zO0ycgSnYGKiOI110GmGXON
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/kuraKeyStore.p12 b/charts/hono/hono-demo-certs-jar/kuraKeyStore.p12
new file mode 100644
index 00000000..bdc55951
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/kuraKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/lora-adapter-cert.pem b/charts/hono/hono-demo-certs-jar/lora-adapter-cert.pem
new file mode 100644
index 00000000..af64fa57
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/lora-adapter-cert.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIICPjCCAeOgAwIBAgIJAIAzeQIsnyXuMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFoxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRUwEwYDVQQDDAxsb3JhLWFkYXB0
+ZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQQFfgXcYoV31nqBckCFkZqvs3z
+z8fz6B7UihmmM7qot6Uj/QJGeJrWUgysp+fOpzy2yN1jat5DBVIfSXhWkzqvo4Gb
+MIGYMB0GA1UdDgQWBBSVgtVjBzwaJM1ByFMUL2J6yXJobjALBgNVHQ8EBAMCA6gw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEsGA1UdEQREMEKCF2hvbm8t
+YWRhcHRlci1sb3JhLXZlcnR4ghxob25vLWFkYXB0ZXItbG9yYS12ZXJ0eC5ob25v
+gglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSQAwRgIhAJWa0R+t9O+VgDtle+4cpL0L
+yibW0lZJg80T0p6DP4mwAiEAk2mSEAXl+Xd7rscS/ojZP+qQP6LwYgfzscv0If1s
+SCc=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/lora-adapter-key.pem b/charts/hono/hono-demo-certs-jar/lora-adapter-key.pem
new file mode 100644
index 00000000..d75a3c81
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/lora-adapter-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrYGIozTJxgQC04RC
+xvCC/GrC5eoVBkJPjREqvYT/1VWhRANCAAQQFfgXcYoV31nqBckCFkZqvs3zz8fz
+6B7UihmmM7qot6Uj/QJGeJrWUgysp+fOpzy2yN1jat5DBVIfSXhWkzqv
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/loraKeyStore.p12 b/charts/hono/hono-demo-certs-jar/loraKeyStore.p12
new file mode 100644
index 00000000..5b5b0864
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/loraKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/mqtt-adapter-cert.pem b/charts/hono/hono-demo-certs-jar/mqtt-adapter-cert.pem
new file mode 100644
index 00000000..a30e0cce
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/mqtt-adapter-cert.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIICPTCCAeOgAwIBAgIJAIAzeQIsnyXvMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFoxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMRUwEwYDVQQDDAxtcXR0LWFkYXB0
+ZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQK+D7RE7O8HuKEVeBrC7Ql64RT
+RW+m/4YhMLPajyQQChJzqfqqVAlhNe/hvNrwXl7QbRByjMwLACzc9Iyk2XUco4Gb
+MIGYMB0GA1UdDgQWBBQhOgD5pRY48JkxGtiHInjaLTnQJDALBgNVHQ8EBAMCA6gw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEsGA1UdEQREMEKCF2hvbm8t
+YWRhcHRlci1tcXR0LXZlcnR4ghxob25vLWFkYXB0ZXItbXF0dC12ZXJ0eC5ob25v
+gglsb2NhbGhvc3QwCgYIKoZIzj0EAwIDSAAwRQIhANK+dkEY8QDIzDVbOJ+ASVPW
+vKCIcsb8YIuhixhoI5ZKAiB0VV9d2ZiQ0JHb2Gok/Cl5UziOOFKps9HUwyDjNBbe
+yg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/mqtt-adapter-key.pem b/charts/hono/hono-demo-certs-jar/mqtt-adapter-key.pem
new file mode 100644
index 00000000..e339cdcc
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/mqtt-adapter-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFnx9oCMKtoV+QXQD
+SGBeuQ9uFTYewAeZoqHoYOOYvoyhRANCAAQK+D7RE7O8HuKEVeBrC7Ql64RTRW+m
+/4YhMLPajyQQChJzqfqqVAlhNe/hvNrwXl7QbRByjMwLACzc9Iyk2XUc
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/mqttKeyStore.p12 b/charts/hono/hono-demo-certs-jar/mqttKeyStore.p12
new file mode 100644
index 00000000..dce64e31
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/mqttKeyStore.p12 differ
diff --git a/charts/hono/hono-demo-certs-jar/qdrouter-cert.pem b/charts/hono/hono-demo-certs-jar/qdrouter-cert.pem
new file mode 100644
index 00000000..2420a641
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/qdrouter-cert.pem
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIICMjCCAdmgAwIBAgIJAIAzeQIsnyXpMAoGCCqGSM49BAMCMFAxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQswCQYDVQQDDAJjYTAeFw0xOTA5MTgwODM1NDBaFw0yMDA5MTcw
+ODM1NDBaMFYxCzAJBgNVBAYTAkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoM
+C0VjbGlwc2UgSW9UMQ0wCwYDVQQLDARIb25vMREwDwYDVQQDDAhxZHJvdXRlcjBZ
+MBMGByqGSM49AgEGCCqGSM49AwEHA0IABD0ayRV3rSL7zIkaLG3ToZMQV6aja2+m
+1zei4lj6OVh2PzHSsZgGPCULxDPIxAHBONnLWI7X1fUYuGjd5Pf4aSujgZUwgZIw
+HQYDVR0OBBYEFL2Q1ytYUbYbv3smfR8G+xFTdR7mMAsGA1UdDwQEAwIDqDAdBgNV
+HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwRQYDVR0RBD4wPIIUaG9uby1kaXNw
+YXRjaC1yb3V0ZXKCGWhvbm8tZGlzcGF0Y2gtcm91dGVyLmhvbm+CCWxvY2FsaG9z
+dDAKBggqhkjOPQQDAgNHADBEAiBO4Lgj6vt0goMoYgrOikSuD/nk/k5pdw/kanzT
+hrbMdAIgaMNZEKEZrs3GmkrPtLOqqai8amgyIU1dVn2ORCWhpSU=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/qdrouter-key.pem b/charts/hono/hono-demo-certs-jar/qdrouter-key.pem
new file mode 100644
index 00000000..4f63c8f6
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/qdrouter-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgDgcCoVJ9OXkzved4
+diYWZVHD22N04Wt+xRBJOniMXsihRANCAAQ9GskVd60i+8yJGixt06GTEFemo2tv
+ptc3ouJY+jlYdj8x0rGYBjwlC8QzyMQBwTjZy1iO19X1GLho3eT3+Gkr
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/root-cert.pem b/charts/hono/hono-demo-certs-jar/root-cert.pem
new file mode 100644
index 00000000..34bc6a59
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/root-cert.pem
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE-----
+MIICeDCCAh+gAwIBAgIUEsY2rEzZ/q/HIPtN/epKF0w5IXUwCgYIKoZIzj0EAwIw
+UjELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UECgwLRWNsaXBz
+ZSBJb1QxDTALBgNVBAsMBEhvbm8xDTALBgNVBAMMBHJvb3QwHhcNMTkwOTE4MDgz
+NTM5WhcNMjAwOTE3MDgzNTM5WjBSMQswCQYDVQQGEwJDQTEPMA0GA1UEBwwGT3R0
+YXdhMRQwEgYDVQQKDAtFY2xpcHNlIElvVDENMAsGA1UECwwESG9ubzENMAsGA1UE
+AwwEcm9vdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLJQPgTv/uMcJ8vJd84u
+KAiDJB9dC8TUT/KminxM4M2JrMswkJf0ktyWIBo/yVDZrHyKGcFewTDgJvxMsWai
+7UCjgdIwgc8wHQYDVR0OBBYEFAaiqcuoxAncqH+fK4Xw71fyY1WTMIGPBgNVHSME
+gYcwgYSAFAaiqcuoxAncqH+fK4Xw71fyY1WToVakVDBSMQswCQYDVQQGEwJDQTEP
+MA0GA1UEBwwGT3R0YXdhMRQwEgYDVQQKDAtFY2xpcHNlIElvVDENMAsGA1UECwwE
+SG9ubzENMAsGA1UEAwwEcm9vdIIUEsY2rEzZ/q/HIPtN/epKF0w5IXUwDwYDVR0T
+AQH/BAUwAwEB/zALBgNVHQ8EBAMCAQYwCgYIKoZIzj0EAwIDRwAwRAIgFEC0nsoF
+pixVqUasgYss+DaP03Uh4/GM0Ao07IrAlagCIDxNcl0EL2YKOJF87Kx/hZCBqrEx
+Z5B54VQnuoxHzHi4
+-----END CERTIFICATE-----
diff --git a/charts/hono/hono-demo-certs-jar/root-key.pem b/charts/hono/hono-demo-certs-jar/root-key.pem
new file mode 100644
index 00000000..f6be3507
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/root-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgdO1e04p47n6Se3hh
+KR4Cwufu0F1AUuYUb3HczfRhSeuhRANCAASyUD4E7/7jHCfLyXfOLigIgyQfXQvE
+1E/ypop8TODNiazLMJCX9JLcliAaP8lQ2ax8ihnBXsEw4Cb8TLFmou1A
+-----END PRIVATE KEY-----
diff --git a/charts/hono/hono-demo-certs-jar/trust-anchor.properties b/charts/hono/hono-demo-certs-jar/trust-anchor.properties
new file mode 100644
index 00000000..2eb8e4e4
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/trust-anchor.properties
@@ -0,0 +1,5 @@
+trusted-ca.subject-dn=CN=DEFAULT_TENANT_CA,OU=Hono,O=Eclipse IoT,L=Ottawa,C=CA
+trusted-ca.public-key=MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElkwCSPlO563eQb6ONdULAISm2XngGGSoAAz+I1s8zkS9guPUpNKoxeczLtKlObelHqBgIZtRXdrPRgXidGOnmQ==
+trusted-ca.algorithm=EC
+trusted-ca.not-before=2019-09-18T10:35:40+02:00
+trusted-ca.not-after=2020-09-17T10:35:40+02:00
diff --git a/charts/hono/hono-demo-certs-jar/trustStore.jks b/charts/hono/hono-demo-certs-jar/trustStore.jks
new file mode 100644
index 00000000..94143eff
Binary files /dev/null and b/charts/hono/hono-demo-certs-jar/trustStore.jks differ
diff --git a/charts/hono/hono-demo-certs-jar/trusted-certs.pem b/charts/hono/hono-demo-certs-jar/trusted-certs.pem
new file mode 100644
index 00000000..a14bfc3c
--- /dev/null
+++ b/charts/hono/hono-demo-certs-jar/trusted-certs.pem
@@ -0,0 +1,28 @@
+-----BEGIN CERTIFICATE-----
+MIIB2DCCAX6gAwIBAgIJAJcQk8rv/5TfMAoGCCqGSM49BAMCMFIxCzAJBgNVBAYT
+AkNBMQ8wDQYDVQQHDAZPdHRhd2ExFDASBgNVBAoMC0VjbGlwc2UgSW9UMQ0wCwYD
+VQQLDARIb25vMQ0wCwYDVQQDDARyb290MB4XDTE5MDkxODA4MzUzOVoXDTIwMDkx
+NzA4MzUzOVowUDELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UE
+CgwLRWNsaXBzZSBJb1QxDTALBgNVBAsMBEhvbm8xCzAJBgNVBAMMAmNhMFkwEwYH
+KoZIzj0CAQYIKoZIzj0DAQcDQgAE5cJY7jy00n2Pm7sa1uxV9m39StdG0kW0jdxk
+ylpbk3lVQyJFVAyVegKAHkwiatxnxuaO0II7jr38UXGgHo9DB6M/MD0wHQYDVR0O
+BBYEFH3m8LU+IoU/j5doTyxd4QFTiE5lMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0P
+BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIEZUuvv5X1hOFhkhzQRU6BCyDbCKgdZw
+vH6vn9JaTwjFAiEAtUmtlAPbxwFGJWN8XCP78v50gYgNWXtRDpiqQG99IoA=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICeDCCAh+gAwIBAgIUEsY2rEzZ/q/HIPtN/epKF0w5IXUwCgYIKoZIzj0EAwIw
+UjELMAkGA1UEBhMCQ0ExDzANBgNVBAcMBk90dGF3YTEUMBIGA1UECgwLRWNsaXBz
+ZSBJb1QxDTALBgNVBAsMBEhvbm8xDTALBgNVBAMMBHJvb3QwHhcNMTkwOTE4MDgz
+NTM5WhcNMjAwOTE3MDgzNTM5WjBSMQswCQYDVQQGEwJDQTEPMA0GA1UEBwwGT3R0
+YXdhMRQwEgYDVQQKDAtFY2xpcHNlIElvVDENMAsGA1UECwwESG9ubzENMAsGA1UE
+AwwEcm9vdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLJQPgTv/uMcJ8vJd84u
+KAiDJB9dC8TUT/KminxM4M2JrMswkJf0ktyWIBo/yVDZrHyKGcFewTDgJvxMsWai
+7UCjgdIwgc8wHQYDVR0OBBYEFAaiqcuoxAncqH+fK4Xw71fyY1WTMIGPBgNVHSME
+gYcwgYSAFAaiqcuoxAncqH+fK4Xw71fyY1WToVakVDBSMQswCQYDVQQGEwJDQTEP
+MA0GA1UEBwwGT3R0YXdhMRQwEgYDVQQKDAtFY2xpcHNlIElvVDENMAsGA1UECwwE
+SG9ubzENMAsGA1UEAwwEcm9vdIIUEsY2rEzZ/q/HIPtN/epKF0w5IXUwDwYDVR0T
+AQH/BAUwAwEB/zALBgNVHQ8EBAMCAQYwCgYIKoZIzj0EAwIDRwAwRAIgFEC0nsoF
+pixVqUasgYss+DaP03Uh4/GM0Ao07IrAlagCIDxNcl0EL2YKOJF87Kx/hZCBqrEx
+Z5B54VQnuoxHzHi4
+-----END CERTIFICATE-----
diff --git a/charts/hono/profileDataGrid.yaml b/charts/hono/profileDataGrid.yaml
new file mode 100644
index 00000000..8b74f957
--- /dev/null
+++ b/charts/hono/profileDataGrid.yaml
@@ -0,0 +1,17 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+dataGridExample:
+ enabled: true
+
+deviceConnectionService:
+ enabled: true
diff --git a/charts/hono/profileJaegerBackend.yaml b/charts/hono/profileJaegerBackend.yaml
new file mode 100644
index 00000000..7359699c
--- /dev/null
+++ b/charts/hono/profileJaegerBackend.yaml
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+jaegerBackendExample:
+ enabled: true
+
+ service:
+ annotations: {}
+ loadBalancerIP:
+ nodePort:
+
+ # serviceType defines the type which the created service will have.
+ # The default is "ClusterIP".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: LoadBalancer
\ No newline at end of file
diff --git a/charts/hono/requirements.yaml b/charts/hono/requirements.yaml
new file mode 100644
index 00000000..1fd96b82
--- /dev/null
+++ b/charts/hono/requirements.yaml
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+dependencies:
+ - name: prometheus
+ version: ~9.3.0
+ repository: "https://kubernetes-charts.storage.googleapis.com/"
+ condition: prometheus.createInstance
+ - name: grafana
+ version: ~3.8.15
+ repository: "https://kubernetes-charts.storage.googleapis.com/"
+ condition: grafana.enabled
diff --git a/charts/hono/templates/NOTES.txt b/charts/hono/templates/NOTES.txt
new file mode 100644
index 00000000..29863d3d
--- /dev/null
+++ b/charts/hono/templates/NOTES.txt
@@ -0,0 +1,8 @@
+Thank you for installing {{ .Chart.Name }}.
+
+Your release is named {{ .Release.Name }}.
+
+To learn more about the release, try:
+
+ $ helm status {{ .Release.Name }}
+ $ helm get {{ .Release.Name }}
diff --git a/charts/hono/templates/_helpers.tpl b/charts/hono/templates/_helpers.tpl
new file mode 100644
index 00000000..f9259aaa
--- /dev/null
+++ b/charts/hono/templates/_helpers.tpl
@@ -0,0 +1,399 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "hono.name" -}}
+ {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "hono.fullname" -}}
+ {{- if .Values.fullnameOverride -}}
+ {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+ {{- else -}}
+ {{- $name := default .Chart.Name .Values.nameOverride -}}
+ {{- if contains $name .Release.Name -}}
+ {{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+ {{- else -}}
+ {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+ {{- end -}}
+ {{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "hono.chart" }}
+ {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Add standard labels for resources as recommended by Helm best practices.
+*/}}
+{{- define "hono.std.labels" -}}
+app.kubernetes.io/name: {{ template "hono.name" . }}
+helm.sh/chart: {{ template "hono.chart" . }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+app.kubernetes.io/version: {{ .Chart.AppVersion }}
+{{- end }}
+
+{{/*
+Add standard labels and name for resources as recommended by Helm best practices.
+The scope passed in is expected to be a dict with keys
+- "dot": the "." scope and
+- "name": the value to use for the "name" metadata property
+- "component": the value to use for the "app.kubernetes.io/component" label
+*/}}
+{{- define "hono.metadata" -}}
+name: {{ .dot.Release.Name }}-{{ .name }}
+namespace: {{ .dot.Release.Namespace }}
+labels:
+ app.kubernetes.io/name: {{ template "hono.name" .dot }}
+ helm.sh/chart: {{ template "hono.chart" .dot }}
+ app.kubernetes.io/managed-by: {{ .dot.Release.Service }}
+ app.kubernetes.io/instance: {{ .dot.Release.Name }}
+ app.kubernetes.io/version: {{ .dot.Chart.AppVersion }}
+ {{- if .component }}
+ app.kubernetes.io/component: {{ .component }}
+ {{- end }}
+{{- end }}
+
+{{/*
+Add standard match labels to be used in podTemplateSpecs and serviceMatchers.
+The scope passed in is expected to be a dict with keys
+- "dot": the "." scope and
+- "component": the value of the "app.kubernetes.io/component" label to match
+*/}}
+{{- define "hono.matchLabels" -}}
+app.kubernetes.io/name: {{ template "hono.name" .dot }}
+app.kubernetes.io/instance: {{ .dot.Release.Name }}
+app.kubernetes.io/component: {{ .component }}
+{{- end }}
+
+
+{{/*
+Creates a headless Service for a Hono component.
+The scope passed in is expected to be a dict with keys
+- "dot": the "." scope and
+- "name": the value to use for the "name" metadata property
+- "component": the value of the "app.kubernetes.io/component" label to match
+*/}}
+{{- define "hono.headless.service" }}
+{{- $args := dict "dot" .dot "component" .component "name" (printf "%s-headless" .name) }}
+---
+apiVersion: v1
+kind: Service
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ clusterIP: None
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- end }}
+
+
+{{/*
+Configuration for the health check server of service components.
+If the scope passed in is not 'nil', then its value is
+used as the configuration for the health check server.
+Otherwise, a secure health check server will be configured to bind to all
+interfaces on the default port using the component's key and cert.
+*/}}
+{{- define "hono.healthServerConfig" -}}
+healthCheck:
+{{- if . }}
+ {{- toYaml . | nindent 2 }}
+{{- else }}
+ port: 8088
+ bindAddress: "0.0.0.0"
+ keyPath: "/etc/hono/key.pem"
+ certPath: "/etc/hono/cert.pem"
+{{- end }}
+{{- end }}
+
+
+{{/*
+Configuration for the service clients of protocol adapters.
+The scope passed in is expected to be a dict with keys
+- "dot": the root scope (".") and
+- "component": the name of the adapter
+*/}}
+{{- define "hono.serviceClientConfig" -}}
+{{- $adapter := default "adapter" .component -}}
+messaging:
+{{- if .dot.Values.amqpMessagingNetworkExample.enabled }}
+ name: Hono {{ $adapter }}
+ amqpHostname: hono-internal
+ host: {{ .dot.Release.Name }}-dispatch-router
+ port: 5673
+ keyPath: /etc/hono/key.pem
+ certPath: /etc/hono/cert.pem
+ trustStorePath: /etc/hono/trusted-certs.pem
+ hostnameVerificationRequired: false
+{{- else }}
+ {{- required ".Values.adapters.amqpMessagingNetworkSpec MUST be set if example AQMP Messaging Network is disabled" .dot.Values.adapters.amqpMessagingNetworkSpec | toYaml | nindent 2 }}
+{{- end }}
+command:
+{{- if .dot.Values.amqpMessagingNetworkExample.enabled }}
+ name: Hono {{ $adapter }}
+ amqpHostname: hono-internal
+ host: {{ .dot.Release.Name }}-dispatch-router
+ port: 5673
+ keyPath: /etc/hono/key.pem
+ certPath: /etc/hono/cert.pem
+ trustStorePath: /etc/hono/trusted-certs.pem
+ hostnameVerificationRequired: false
+{{- else }}
+ {{- required ".Values.adapters.commandAndControlSpec MUST be set if example AQMP Messaging Network is disabled" .dot.Values.adapters.commandAndControlSpec | toYaml | nindent 2 }}
+{{- end }}
+tenant:
+{{- if .dot.Values.deviceRegistryExample.enabled }}
+ name: Hono {{ $adapter }}
+ host: {{ .dot.Release.Name }}-service-device-registry
+ port: 5671
+ credentialsPath: /etc/hono/adapter.credentials
+ trustStorePath: /etc/hono/trusted-certs.pem
+ hostnameVerificationRequired: false
+{{- else }}
+ {{- required ".Values.adapters.tenantSpec MUST be set if example Device Registry is disabled" .dot.Values.adapters.tenantSpec | toYaml | nindent 2 }}
+{{- end }}
+registration:
+{{- if .dot.Values.deviceRegistryExample.enabled }}
+ name: Hono {{ $adapter }}
+ host: {{ .dot.Release.Name }}-service-device-registry
+ port: 5671
+ credentialsPath: /etc/hono/adapter.credentials
+ trustStorePath: /etc/hono/trusted-certs.pem
+ hostnameVerificationRequired: false
+{{- else }}
+ {{- required ".Values.adapters.deviceRegistrationSpec MUST be set if example Device Registry is disabled" .dot.Values.adapters.deviceRegistrationSpec | toYaml | nindent 2 }}
+{{- end }}
+credentials:
+{{- if .dot.Values.deviceRegistryExample.enabled }}
+ name: Hono {{ $adapter }}
+ host: {{ .dot.Release.Name }}-service-device-registry
+ port: 5671
+ credentialsPath: /etc/hono/adapter.credentials
+ trustStorePath: /etc/hono/trusted-certs.pem
+ hostnameVerificationRequired: false
+{{- else }}
+ {{- required ".Values.adapters.credentialsSpec MUST be set if example Device Registry is disabled" .dot.Values.adapters.credentialsSpec | toYaml | nindent 2 }}
+{{- end }}
+deviceConnection:
+{{- if .dot.Values.adapters.deviceConnectionSpec }}
+ {{- range $key, $value := .dot.Values.adapters.deviceConnectionSpec }}
+ {{ $key }}: {{ $value }}
+ {{- end }}
+{{- else }}
+ name: Hono {{ $adapter }}
+ {{- if .dot.Values.deviceConnectionService.enabled }}
+ host: {{ .dot.Release.Name }}-service-device-connection
+ {{- else }}
+ {{- if .dot.Values.deviceRegistryExample.enabled }}
+ host: {{ .dot.Release.Name }}-service-device-registry
+ {{- else }}
+ {{- required ".Values.deviceConnectionService.enabled MUST be set to true if example Device Registry is disabled and no other Device Connection service is configured" nil }}
+ {{- end }}
+ {{- end }}
+ port: 5671
+ credentialsPath: /etc/hono/adapter.credentials
+ trustStorePath: /etc/hono/trusted-certs.pem
+ hostnameVerificationRequired: false
+{{- end }}
+{{- end }}
+
+{{/*
+Create a fully qualified Prometheus server name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+*/}}
+{{- define "hono.prometheus.server.fullname" -}}
+{{- if .Values.prometheus.server.fullnameOverride -}}
+{{- .Values.prometheus.server.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default "prometheus" .Values.prometheus.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Values.prometheus.server.name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-%s" .Release.Name $name .Values.prometheus.server.name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+
+{{/*
+Create a scrape job for a service name.
+The scope passed in is expected to be a dict with keys
+- "dot": the root scope (".") and
+- "serviceName": the name of the service to scrape
+
+*/}}
+{{- define "hono.prometheus.scrapeJob" }}
+- job_name: {{ printf "%s-%s" .dot.Release.Name .serviceName }}
+ metrics_path: /prometheus
+ scheme: https
+ tls_config:
+ insecure_skip_verify: true
+ dns_sd_configs:
+ - names:
+ - {{ printf "%s-%s-headless" .dot.Release.Name .serviceName }}
+ type: A
+ port: {{ default 8088 .dot.Values.monitoring.prometheus.port }}
+ refresh_interval: 10s
+{{- end }}
+
+{{/*
+Adds a Jaeger Agent container to a template spec.
+*/}}
+{{- define "hono.jaeger.agent" }}
+{{- $jaegerEnabled := or .Values.jaegerBackendExample.enabled .Values.jaegerAgentConf }}
+{{- if $jaegerEnabled }}
+- name: jaeger-agent-sidecar
+ image: {{ default "jaegertracing/jaeger-agent:1.13.1" .Values.jaegerAgentImage }}
+ ports:
+ - name: agent-compact
+ containerPort: 6831
+ protocol: UDP
+ - name: agent-binary
+ containerPort: 6832
+ protocol: UDP
+ - name: agent-configs
+ containerPort: 5778
+ protocol: TCP
+ readinessProbe:
+ httpGet:
+ path: "/"
+ port: 14271
+ initialDelaySeconds: 5
+ env:
+ {{- if .Values.jaegerBackendExample.enabled }}
+ - name: REPORTER_TYPE
+ value: "tchannel"
+ - name: REPORTER_TCHANNEL_HOST_PORT
+ value: {{ printf "%s-jaeger-collector:14267" .Release.Name | quote }}
+ - name: REPORTER_TCHANNEL_DISCOVERY_MIN_PEERS
+ value: "1"
+ {{- else }}
+ {{- range $key, $value := .Values.jaegerAgentConf }}
+ - name: {{ $key }}
+ value: {{ $value | quote }}
+ {{- end }}
+ {{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Adds Jaeger client configuration to a container's "env" properties.
+The scope passed in is expected to be a dict with keys
+- "dot": the root scope (".") and
+- "name": the value to use for the JAEGER_SERVICE_NAME (prefixed with the release name).
+*/}}
+{{- define "hono.jaeger.clientConf" }}
+{{- $agentHost := printf "%s-jaeger-agent" .dot.Release.Name }}
+- name: JAEGER_SERVICE_NAME
+ value: {{ printf "%s-%s" .dot.Release.Name .name | quote }}
+{{- if .dot.Values.jaegerBackendExample.enabled }}
+- name: JAEGER_SAMPLER_TYPE
+ value: "const"
+- name: JAEGER_SAMPLER_PARAM
+ value: "1"
+{{- end }}
+{{- end }}
+
+{{/*
+Adds volume mounts to a component's container.
+The scope passed in is expected to be a dict with keys
+- "conf": the component's configuration properties as defined in .Values
+- "name": the name of the component.
+*/}}
+{{- define "hono.container.secretVolumeMounts" }}
+- name: {{ printf "%s-conf" .name | quote }}
+ mountPath: "/etc/hono"
+ readOnly: true
+{{- with .conf.extraSecretMounts }}
+{{- range $name,$spec := . }}
+- name: {{ $name | quote }}
+ mountPath: {{ $spec.mountPath | quote }}
+ readOnly: true
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Adds volume declarations to a component's pod spec.
+The scope passed in is expected to be a dict with keys
+- "conf": the component's configuration properties as defined in .Values
+- "name": the name of the component
+- "releaseName": the .Release.Name
+*/}}
+{{- define "hono.pod.secretVolumes" }}
+{{- $volumeName := printf "%s-conf" .name }}
+- name: {{ $volumeName | quote }}
+ secret:
+ secretName: {{ printf "%s-%s" .releaseName $volumeName | quote }}
+{{- with .conf.extraSecretMounts }}
+{{- range $name,$spec := . }}
+- name: {{ $name | quote }}
+ secret:
+ secretName: {{ $spec.secretName | quote }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Render the service type.
+The scope passed in is expected to be a dict with keys
+- "dot": the root scope (".") and
+- "service": the service specific values
+*/}}
+{{- define "hono.service.type" }}
+ {{- if ( eq .dot.Values.platform "openshift" ) }}
+type: NodePort
+ {{- else }}
+type: {{ .service.type }}
+ {{- end }}
+{{- end }}
+
+{{/*
+Render the load balancer IP, if required.
+- "dot": the root scope (".") and
+- "service": the service specific values
+*/}}
+{{- define "hono.service.loadBalancerIP" }}
+ {{- if and (eq .service.type "LoadBalancer") (ne .dot.Values.platform "openshift") }}
+ {{- with .service.loadBalancerIP }}
+loadBalancerIP: {{ . | quote }}
+ {{- end }}
+ {{- end }}
+{{- end }}
+
+{{/*
+Render the node port, if required.
+- "dot": the root scope (".") and
+- "service": the service specific values
+- "port": name of the port
+*/}}
+{{- define "hono.service.nodePort" }}
+ {{- if and (eq .service.type "NodePort") (ne .dot.Values.platform "openshift") }}
+ {{- with (index .service.nodePorts .port) }}
+nodePort: {{ . }}
+ {{- end }}
+ {{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/charts/hono/templates/artemis/artemis-deployment.yaml b/charts/hono/templates/artemis/artemis-deployment.yaml
new file mode 100644
index 00000000..f7d223a8
--- /dev/null
+++ b/charts/hono/templates/artemis/artemis-deployment.yaml
@@ -0,0 +1,74 @@
+{{- if and ( eq .Values.amqpMessagingNetworkExample.enabled true ) ( eq .Values.amqpMessagingNetworkExample.broker.type "artemis" ) }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-broker" "name" "artemis" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ - command:
+ - /opt/artemis/bin/artemis
+ - run
+ - xml:/etc/hono/artemis-bootstrap.xml
+ env:
+ - name: ARTEMIS_CONFIGURATION
+ value: /etc/hono
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ image: {{ .Values.amqpMessagingNetworkExample.broker.artemis.imageName | quote }}
+ ports:
+ - name: amqps
+ containerPort: 5671
+ protocol: TCP
+ imagePullPolicy: IfNotPresent
+ resources:
+ limits:
+ memory: "512Mi"
+ requests:
+ memory: "256Mi"
+ livenessProbe:
+ initialDelaySeconds: 20
+ periodSeconds: 9
+ tcpSocket:
+ port: 5671
+ timeoutSeconds: 1
+ name: apache-activemq-artemis
+ readinessProbe:
+ initialDelaySeconds: 5
+ periodSeconds: 5
+ tcpSocket:
+ port: 5671
+ timeoutSeconds: 1
+ securityContext:
+ privileged: false
+ volumeMounts:
+ - mountPath: /etc/hono
+ name: config
+ readOnly: true
+ volumes:
+ - name: config
+ secret:
+ secretName: {{ .Release.Name }}-artemis-conf
+{{- end }}
diff --git a/charts/hono/templates/artemis/artemis-secret.yaml b/charts/hono/templates/artemis/artemis-secret.yaml
new file mode 100644
index 00000000..665c6918
--- /dev/null
+++ b/charts/hono/templates/artemis/artemis-secret.yaml
@@ -0,0 +1,38 @@
+{{- if and ( eq .Values.amqpMessagingNetworkExample.enabled true ) ( eq .Values.amqpMessagingNetworkExample.broker.type "artemis" ) }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-broker" "name" "artemis-conf" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ "artemis-broker.xml": |
+ {{- .Files.Get "config/artemis/artemis-broker.xml" | nindent 4 }}
+ "artemis-bootstrap.xml": |
+ {{- .Files.Get "config/artemis/artemis-bootstrap.xml" | nindent 4 }}
+ "artemis-users.properties": |
+ {{- .Files.Get "config/artemis/artemis-users.properties" | nindent 4 }}
+ "artemis-roles.properties": |
+ {{- .Files.Get "config/artemis/artemis-roles.properties" | nindent 4 }}
+ "login.config": |
+ {{- .Files.Get "config/artemis/login.config" | nindent 4 }}
+ "logging.properties": |
+ {{- .Files.Get "config/artemis/logging.properties" | nindent 4 }}
+ "artemis.profile": |
+ {{- .Files.Get "config/artemis/artemis.profile" | nindent 4 }}
+data:
+ "artemisKeyStore.p12": {{ .Files.Get "hono-demo-certs-jar/artemisKeyStore.p12" | b64enc }}
+ "trustStore.jks": {{ .Files.Get "hono-demo-certs-jar/trustStore.jks" | b64enc }}
+{{- end }}
diff --git a/charts/hono/templates/artemis/artemis-svc.yaml b/charts/hono/templates/artemis/artemis-svc.yaml
new file mode 100644
index 00000000..eb81d391
--- /dev/null
+++ b/charts/hono/templates/artemis/artemis-svc.yaml
@@ -0,0 +1,27 @@
+{{- if and ( eq .Values.amqpMessagingNetworkExample.enabled true ) ( eq .Values.amqpMessagingNetworkExample.broker.type "artemis" ) }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-broker" "name" "artemis" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ ports:
+ - name: amqps
+ port: 5671
+ protocol: TCP
+ targetPort: amqps
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- end }}
diff --git a/charts/hono/templates/dispatch-router/config/qdrouterd-with-artemis.yaml b/charts/hono/templates/dispatch-router/config/qdrouterd-with-artemis.yaml
new file mode 100644
index 00000000..726d1590
--- /dev/null
+++ b/charts/hono/templates/dispatch-router/config/qdrouterd-with-artemis.yaml
@@ -0,0 +1,153 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- define "hono.qdrouterd-with-artemis.json" -}}
+[
+ ["router", {
+ "id": "Hono.Example.Router",
+ "mode": "standalone",
+ "workerThreads": 3
+ }],
+
+ ["authServicePlugin", {
+ "name": "Hono Auth",
+ "host": "{{ .Release.Name }}-service-auth",
+ "port": 5671,
+ "sslProfile": "internal"
+ }],
+
+ ["sslProfile", {
+ "name": "external",
+ "protocols": "TLSv1.2",
+ "caCertFile": "/etc/hono/trusted-certs.pem",
+ "certFile": "/etc/hono/qdrouter-cert.pem",
+ "privateKeyFile": "/etc/hono/qdrouter-key.pem"
+ }],
+
+ ["sslProfile", {
+ "name": "internal",
+ "protocols": "TLSv1.2",
+ "caCertFile": "/etc/hono/trusted-certs.pem",
+ "certFile": "/etc/hono/qdrouter-cert.pem",
+ "privateKeyFile": "/etc/hono/qdrouter-key.pem",
+ "uidFormat": "ou"
+ }],
+
+ ["listener", {
+ "sslProfile": "external",
+ "requireSsl": true,
+ "host": "0.0.0.0",
+ "port": 5671,
+ "maxSessionFrames": 200,
+ "linkCapacity": 100,
+ "authenticatePeer": true,
+ "saslMechanisms": "PLAIN",
+ "saslPlugin": "Hono Auth"
+ }],
+
+ ["listener", {
+ "host": "0.0.0.0",
+ "port": 5672,
+ "maxSessionFrames": 200,
+ "linkCapacity": 100,
+ "authenticatePeer": true,
+ "saslMechanisms": "PLAIN",
+ "saslPlugin": "Hono Auth"
+ }],
+
+ ["listener", {
+ "sslProfile": "internal",
+ "requireSsl": true,
+ "host": "0.0.0.0",
+ "port": 5673,
+ "maxSessionFrames": 500,
+ "linkCapacity": 100,
+ "authenticatePeer": true,
+ "saslMechanisms": "EXTERNAL"
+ }],
+
+ ["connector", {
+ "sslProfile": "external",
+ "name": "artemis",
+ "port": 5671,
+ "role": "route-container",
+ "host": "{{ .Release.Name }}-artemis",
+ "saslUsername": "artemis",
+ "saslPassword": "artemis",
+ "verifyHostname": false
+ }],
+
+ ["linkRoute", {
+ "prefix": "event/",
+ "direction": "in",
+ "connection": "artemis"
+ }],
+
+ ["linkRoute", {
+ "prefix": "event/",
+ "direction": "out",
+ "connection": "artemis"
+ }],
+
+ ["address", {
+ "prefix": "telemetry/",
+ "distribution": "balanced"
+ }],
+
+ ["address", {
+ "prefix": "event/",
+ "distribution": "balanced"
+ }],
+
+ ["policy", {
+ "maxConnections": 1000,
+ "enableVhostPolicy": true,
+ "defaultVhost": "hono"
+ }],
+
+ ["vhost", {
+ "hostname": "hono",
+ "maxConnections": 500,
+ "maxConnectionsPerUser": 20,
+ "maxConnectionsPerHost": 10,
+ "allowUnknownUser": true,
+ "groups": {
+ "$default": {
+ "remoteHosts": "*",
+ "maxSessions": 10
+ }
+ }
+ }],
+
+ ["vhost", {
+ "hostname": "hono-internal",
+ "maxConnections": 50,
+ "groups": {
+ "Hono": {
+ "users": "Eclipse IoT;Hono",
+ "remoteHosts": "*",
+ "maxSessions": 4,
+ "maxMessageSize": 131072,
+ "allowUserIdProxy": true,
+ "allowAnonymousSender": true,
+ "sources": "control/*, command/*",
+ "targets": "telemetry/*, event/*, control/*, command_response/*"
+ }
+ }
+ }],
+
+ ["log", {
+ "module": "DEFAULT",
+ "enable": "info+"
+ }]
+]
+{{- end }}
diff --git a/charts/hono/templates/dispatch-router/config/qrouterd-with-servicebus.yaml b/charts/hono/templates/dispatch-router/config/qrouterd-with-servicebus.yaml
new file mode 100644
index 00000000..1fc74ed7
--- /dev/null
+++ b/charts/hono/templates/dispatch-router/config/qrouterd-with-servicebus.yaml
@@ -0,0 +1,162 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- define "hono.qdrouterd-with-servicebus.json" -}}
+[
+ ["router", {
+ "id": "Hono.Example.Router",
+ "mode": "standalone",
+ "workerThreads": 3
+ }],
+
+ ["authServicePlugin", {
+ "name": "Hono Auth",
+ "host": "{{ .Release.Name }}-service-auth",
+ "port": 5671,
+ "sslProfile": "internal"
+ }],
+
+ ["sslProfile", {
+ "name": "public",
+ "protocols": "TLSv1.2"
+ }],
+
+ ["sslProfile", {
+ "name": "external",
+ "protocols": "TLSv1.2",
+ "caCertFile": "/etc/hono/trusted-certs.pem",
+ "certFile": "/etc/hono/qdrouter-cert.pem",
+ "privateKeyFile": "/etc/hono/qdrouter-key.pem"
+ }],
+
+ ["sslProfile", {
+ "name": "internal",
+ "protocols": "TLSv1.2",
+ "caCertFile": "/etc/hono/trusted-certs.pem",
+ "certFile": "/etc/hono/qdrouter-cert.pem",
+ "privateKeyFile": "/etc/hono/qdrouter-key.pem",
+ "uidFormat": "ou"
+ }],
+
+ ["listener", {
+ "sslProfile": "external",
+ "requireSsl": true,
+ "host": "0.0.0.0",
+ "port": 5671,
+ "maxSessionFrames": 200,
+ "linkCapacity": 100,
+ "authenticatePeer": true,
+ "saslMechanisms": "PLAIN",
+ "saslPlugin": "Hono Auth"
+ }],
+
+ ["listener", {
+ "host": "0.0.0.0",
+ "port": 5672,
+ "maxSessionFrames": 200,
+ "linkCapacity": 100,
+ "authenticatePeer": true,
+ "saslMechanisms": "PLAIN",
+ "saslPlugin": "Hono Auth"
+ }],
+
+ ["listener", {
+ "sslProfile": "internal",
+ "requireSsl": true,
+ "host": "0.0.0.0",
+ "port": 5673,
+ "maxSessionFrames": 500,
+ "linkCapacity": 100,
+ "authenticatePeer": true,
+ "saslMechanisms": "EXTERNAL"
+ }],
+
+ ["connector", {
+ "sslProfile": "public",
+ "name": "servicebus",
+ "port": 5671,
+ "role": "route-container",
+ "host": {{ .Values.amqpMessagingNetworkExample.broker.servicebus.host | quote }},
+ "idleTimeoutSeconds": 120,
+ "saslMechanisms": "PLAIN",
+ "saslUsername": {{ .Values.amqpMessagingNetworkExample.broker.servicebus.saslUsername | quote }},
+ "saslPassword": {{ .Values.amqpMessagingNetworkExample.broker.servicebus.saslPassword | quote }},
+ "verifyHostname": true
+ }],
+
+ ["linkRoute", {
+ "prefix": "event/",
+ "direction": "in",
+ "delExternalPrefix": "event/",
+ "connection": "servicebus"
+ }],
+
+ ["linkRoute", {
+ "prefix": "event/",
+ "direction": "out",
+ "delExternalPrefix": "event/",
+ "connection": "servicebus"
+ }],
+
+ ["address", {
+ "prefix": "telemetry/",
+ "distribution": "balanced"
+ }],
+
+ ["address", {
+ "prefix": "event/",
+ "distribution": "balanced"
+ }],
+
+ ["policy", {
+ "maxConnections": 1000,
+ "enableVhostPolicy": true,
+ "defaultVhost": "hono"
+ }],
+
+ ["vhost", {
+ "hostname": "hono",
+ "maxConnections": 500,
+ "maxConnectionsPerUser": 20,
+ "maxConnectionsPerHost": 10,
+ "allowUnknownUser": true,
+ "groups": {
+ "$default": {
+ "remoteHosts": "*",
+ "maxSessions": 10
+ }
+ }
+ }],
+
+ ["vhost", {
+ "hostname": "hono-internal",
+ "maxConnections": 50,
+ "groups": {
+ "Hono": {
+ "users": "Eclipse IoT;Hono",
+ "remoteHosts": "*",
+ "maxSessions": 4,
+ "maxMessageSize": 131072,
+ "allowUserIdProxy": true,
+ "allowAnonymousSender": true,
+ "sources": "control/*, command/*",
+ "targets": "telemetry/*, event/*, control/*, command_response/*"
+ }
+ }
+ }],
+
+ ["log", {
+ "module": "DEFAULT",
+ "enable": "info+"
+ }]
+]
+{{- end }}
diff --git a/charts/hono/templates/dispatch-router/dispatch-router-deployment.yaml b/charts/hono/templates/dispatch-router/dispatch-router-deployment.yaml
new file mode 100644
index 00000000..095acd75
--- /dev/null
+++ b/charts/hono/templates/dispatch-router/dispatch-router-deployment.yaml
@@ -0,0 +1,76 @@
+{{- if .Values.amqpMessagingNetworkExample.enabled -}}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-router" "name" "dispatch-router" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ - command:
+ - /sbin/qdrouterd
+ - -c
+ - /etc/hono/qdrouterd-with-{{ .Values.amqpMessagingNetworkExample.broker.type }}.json
+ env:
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ image: {{ .Values.amqpMessagingNetworkExample.dispatchRouter.imageName | quote }}
+ imagePullPolicy: IfNotPresent
+ ports:
+ - name: amqps
+ containerPort: 5671
+ protocol: TCP
+ - name: amqp
+ containerPort: 5672
+ protocol: TCP
+ - name: internal
+ containerPort: 5673
+ protocol: TCP
+ resources:
+ limits:
+ memory: "512Mi"
+ livenessProbe:
+ initialDelaySeconds: 180
+ periodSeconds: 9
+ tcpSocket:
+ port: 5672
+ timeoutSeconds: 1
+ name: apache-qpid-dispatch-router
+ readinessProbe:
+ initialDelaySeconds: 10
+ periodSeconds: 5
+ tcpSocket:
+ port: 5672
+ timeoutSeconds: 1
+ securityContext:
+ privileged: false
+ volumeMounts:
+ - mountPath: /etc/hono
+ name: config
+ readOnly: true
+ volumes:
+ - name: config
+ secret:
+ secretName: {{ .Release.Name }}-dispatch-router-conf
+{{- end }}
diff --git a/charts/hono/templates/dispatch-router/dispatch-router-ext-svc.yaml b/charts/hono/templates/dispatch-router/dispatch-router-ext-svc.yaml
new file mode 100644
index 00000000..e996e5e8
--- /dev/null
+++ b/charts/hono/templates/dispatch-router/dispatch-router-ext-svc.yaml
@@ -0,0 +1,39 @@
+{{- if .Values.amqpMessagingNetworkExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-router" "name" "dispatch-router-ext" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.amqpMessagingNetworkExample.dispatchRouter.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: amqps
+ port: 15671
+ protocol: TCP
+ targetPort: amqps
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.amqpMessagingNetworkExample.dispatchRouter.svc "port" "amqps" ) | nindent 4 }}
+ - name: amqp
+ port: 15672
+ protocol: TCP
+ targetPort: amqp
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.amqpMessagingNetworkExample.dispatchRouter.svc "port" "amqp" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.amqpMessagingNetworkExample.dispatchRouter.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.amqpMessagingNetworkExample.dispatchRouter.svc ) | nindent 2 }}
+{{- end }}
diff --git a/charts/hono/templates/dispatch-router/dispatch-router-route.yaml b/charts/hono/templates/dispatch-router/dispatch-router-route.yaml
new file mode 100644
index 00000000..4f74a757
--- /dev/null
+++ b/charts/hono/templates/dispatch-router/dispatch-router-route.yaml
@@ -0,0 +1,27 @@
+{{- if and .Values.amqpMessagingNetworkExample.enabled (eq .Values.platform "openshift") }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-router" "name" "dispatch-router" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: 5671
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-dispatch-router-ext
+{{- end }}
diff --git a/charts/hono/templates/dispatch-router/dispatch-router-secret.yaml b/charts/hono/templates/dispatch-router/dispatch-router-secret.yaml
new file mode 100644
index 00000000..b73fe05e
--- /dev/null
+++ b/charts/hono/templates/dispatch-router/dispatch-router-secret.yaml
@@ -0,0 +1,28 @@
+{{- if .Values.amqpMessagingNetworkExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $qrouterdConfig := printf "hono.qdrouterd-with-%s.json" .Values.amqpMessagingNetworkExample.broker.type }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-router" "name" "dispatch-router-conf" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ "qdrouterd-with-{{ .Values.amqpMessagingNetworkExample.broker.type }}.json": |
+ {{- include $qrouterdConfig . | nindent 4 }}
+data:
+ "qdrouter-key.pem": {{ .Files.Get "hono-demo-certs-jar/qdrouter-key.pem" | b64enc }}
+ "qdrouter-cert.pem": {{ .Files.Get "hono-demo-certs-jar/qdrouter-cert.pem" | b64enc }}
+ "trusted-certs.pem": {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+{{- end }}
diff --git a/charts/hono/templates/dispatch-router/dispatch-router-svc.yaml b/charts/hono/templates/dispatch-router/dispatch-router-svc.yaml
new file mode 100644
index 00000000..47ee283f
--- /dev/null
+++ b/charts/hono/templates/dispatch-router/dispatch-router-svc.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.amqpMessagingNetworkExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "amqp-messaging-network-router" "name" "dispatch-router" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ ports:
+ - port: 5673
+ protocol: TCP
+ targetPort: internal
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- end }}
diff --git a/charts/hono/templates/example-data-grid/configmap.yaml b/charts/hono/templates/example-data-grid/configmap.yaml
new file mode 100644
index 00000000..7dce7414
--- /dev/null
+++ b/charts/hono/templates/example-data-grid/configmap.yaml
@@ -0,0 +1,564 @@
+{{- if .Values.dataGridExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "data-grid" "name" "data-grid-conf" }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+data:
+ hono-data-grid.xml: |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${jgroups.gossip.initial_hosts:}
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ ${jgroups.azure.storage_account_name:}
+ ${jgroups.azure.storage_access_key:}
+ ${jgroups.azure.container:}
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ ${jgroups.s3.bucket:}
+ ${jgroups.s3.access_key:}
+ ${jgroups.s3.secret_access_key:}
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ ${jgroups.s3.pre_signed_delete_url:}
+ ${jgroups.s3.pre_signed_put_url:}
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ ${jgroups.s3.bucket:}
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ ${jgroups.google.bucket:}
+ ${jgroups.google.access_key:}
+ ${jgroups.google.secret_access_key:}
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 360000
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 360000
+
+
+ ${jgroups.dns_ping.dns_query:}
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{{- end }}
diff --git a/charts/hono/templates/example-data-grid/roles.yaml b/charts/hono/templates/example-data-grid/roles.yaml
new file mode 100644
index 00000000..64e0b609
--- /dev/null
+++ b/charts/hono/templates/example-data-grid/roles.yaml
@@ -0,0 +1,43 @@
+{{- if .Values.dataGridExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "data-grid" "name" "data-grid" }}
+apiVersion: v1
+kind: List
+metadata: {}
+items:
+- apiVersion: v1
+ kind: ServiceAccount
+ metadata:
+ {{- include "hono.metadata" $args | nindent 4 }}
+- apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRole
+ metadata:
+ {{- include "hono.metadata" $args | nindent 4 }}
+ rules:
+ - apiGroups: [""]
+ resources: ["pods"]
+ verbs: ["get", "list"]
+- apiVersion: rbac.authorization.k8s.io/v1
+ kind: ClusterRoleBinding
+ metadata:
+ {{- include "hono.metadata" $args | nindent 4 }}
+ roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: {{ printf "%s-%s" .Release.Name $args.name }}
+ subjects:
+ - kind: ServiceAccount
+ name: {{ printf "%s-%s" .Release.Name $args.name }}
+ namespace: {{ .Release.Namespace }}
+{{- end }}
diff --git a/charts/hono/templates/example-data-grid/service.yaml b/charts/hono/templates/example-data-grid/service.yaml
new file mode 100644
index 00000000..732ed5c6
--- /dev/null
+++ b/charts/hono/templates/example-data-grid/service.yaml
@@ -0,0 +1,33 @@
+{{- if .Values.dataGridExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "data-grid" "name" "data-grid" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ ports:
+ - name: rest
+ port: 8080
+ protocol: TCP
+ targetPort: 8080
+ - name: hotrod
+ port: 11222
+ protocol: TCP
+ targetPort: 11222
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+ sessionAffinity: None
+ clusterIP: None
+{{- end }}
diff --git a/charts/hono/templates/example-data-grid/statefulset.yaml b/charts/hono/templates/example-data-grid/statefulset.yaml
new file mode 100644
index 00000000..50be4174
--- /dev/null
+++ b/charts/hono/templates/example-data-grid/statefulset.yaml
@@ -0,0 +1,85 @@
+{{- if .Values.dataGridExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ {{- $args := dict "dot" . "component" "data-grid" "name" "data-grid" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ serviceName: {{ printf "%s-%s" .Release.Name $args.name }}
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ serviceAccountName: {{ printf "%s-%s" .Release.Name $args.name }}
+ containers:
+ - args:
+ - -c
+ - hono/hono-data-grid.xml
+ - -Djboss.default.jgroups.stack=kubernetes
+ env:
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: KUBERNETES_LABELS
+ value: {{ printf "app.kubernetes.io/component=%s" $args.component }}
+ - name: JDK_JAVA_OPTIONS
+ value: "-XX:MinRAMPercentage=80 -XX:MaxRAMPercentage=80"
+ - name: APP_USER
+ value: {{ .Values.dataGridExample.authUsername | quote }}
+ - name: APP_PASS
+ value: {{ .Values.dataGridExample.authPassword | quote }}
+ image: {{ default "jboss/infinispan-server:9.4.11.Final" .Values.dataGridExample.imageName | quote }}
+ imagePullPolicy: IfNotPresent
+ name: hono-data-grid
+ ports:
+ - containerPort: 8080
+ protocol: TCP
+ - containerPort: 8181
+ protocol: TCP
+ - containerPort: 8888
+ protocol: TCP
+ - containerPort: 9990
+ protocol: TCP
+ - containerPort: 11211
+ protocol: TCP
+ - containerPort: 11222
+ protocol: TCP
+ volumeMounts:
+ - mountPath: /opt/jboss/infinispan-server/standalone/configuration/hono
+ name: conf
+ readOnly: true
+ readinessProbe:
+ exec:
+ command:
+ - /usr/local/bin/is_healthy.sh
+ failureThreshold: 5
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ successThreshold: 1
+ timeoutSeconds: 80
+ resources:
+ limits:
+ memory: "512Mi"
+ terminationMessagePath: /dev/termination-log
+ volumes:
+ - name: conf
+ configMap:
+ name: {{ printf "%s-%s-conf" .Release.Name $args.name }}
+{{- end }}
diff --git a/charts/hono/templates/grafana/grafana-dashboard-configmap.yaml b/charts/hono/templates/grafana/grafana-dashboard-configmap.yaml
new file mode 100644
index 00000000..bff51841
--- /dev/null
+++ b/charts/hono/templates/grafana/grafana-dashboard-configmap.yaml
@@ -0,0 +1,27 @@
+{{- if .Values.grafana.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ {{- $args := dict "dot" . "component" "dashboard" "name" "grafana-dashboards" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ grafana_dashboard: "1"
+data:
+ overview.json: |
+ {{- .Files.Get "config/grafana/dashboard-definitions/overview.json" | nindent 4 }}
+ message-details.json: |
+ {{- .Files.Get "config/grafana/dashboard-definitions/message-details.json" | nindent 4 }}
+ jvm-details.json: |
+ {{- .Files.Get "config/grafana/dashboard-definitions/jvm-details.json" | nindent 4 }}
+{{- end }}
diff --git a/charts/hono/templates/grafana/grafana-datasource-secret.yaml b/charts/hono/templates/grafana/grafana-datasource-secret.yaml
new file mode 100644
index 00000000..ce3a4ebc
--- /dev/null
+++ b/charts/hono/templates/grafana/grafana-datasource-secret.yaml
@@ -0,0 +1,38 @@
+{{- if .Values.grafana.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- $args := dict "dot" . "component" "dashboard" "name" "grafana-datasources" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ grafana_datasource: "1"
+type: Opaque
+stringData:
+ hono-datasources.yaml: |
+ apiVersion: 1
+ datasources:
+ - name: hono_metrics
+ version: 1
+ type: prometheus
+ access: proxy
+ orgId: 1
+ {{- if .Values.prometheus.createInstance }}
+ url: http://{{ template "hono.prometheus.server.fullname" . }}:9090
+ {{- else }}
+ url: http://{{ required "No Prometheus server host set" .Values.prometheus.host }}:{{ default "9090" .Values.prometheus.port }}
+ {{- end }}
+ basicAuth: false
+ isDefault: true
+ editable: true
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-amqp/headless-svc.yaml b/charts/hono/templates/hono-adapter-amqp/headless-svc.yaml
new file mode 100644
index 00000000..363d8f8d
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-amqp/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if .Values.prometheus.createInstance }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-amqp-vertx" "name" "adapter-amqp-vertx" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-deployment.yaml b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-deployment.yaml
new file mode 100644
index 00000000..7295475f
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-deployment.yaml
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-amqp-vertx" "name" "adapter-amqp-vertx" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.adapters.amqp.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-adapter-amqp-vertx
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: amqps
+ containerPort: 5671
+ protocol: TCP
+ - name: amqp
+ containerPort: 5672
+ protocol: TCP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.adapters.amqp ) | indent 8 }}
+ resources:
+ limits:
+ memory: "256Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.adapters.amqp ) | indent 6 }}
diff --git a/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-route.yaml b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-route.yaml
new file mode 100644
index 00000000..c1bc1add
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-route.yaml
@@ -0,0 +1,25 @@
+{{- if eq .Values.platform "openshift" }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-amqp-vertx" "name" "adapter-amqp-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: amqp
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-amqp-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-sec-route.yaml b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-sec-route.yaml
new file mode 100644
index 00000000..5485c34f
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-sec-route.yaml
@@ -0,0 +1,27 @@
+{{- if eq .Values.platform "openshift" }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-amqp-vertx" "name" "adapter-amqp-vertx-sec" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: amqps
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-amqp-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-secret.yaml b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-secret.yaml
new file mode 100644
index 00000000..85bff5c4
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-secret.yaml
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-amqp-vertx" "name" "adapter-amqp-vertx-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.adapters.amqp.hono.app.maxInstances }}
+ amqp:
+ {{- if .Values.adapters.amqp.hono.amqp }}
+ {{- .Values.adapters.amqp.hono.amqp | toYaml | nindent 8 }}
+ {{- else }}
+ bindAddress: "0.0.0.0"
+ keyPath: "/etc/hono/key.pem"
+ certPath: "/etc/hono/cert.pem"
+ insecurePortEnabled: true
+ insecurePortBindAddress: "0.0.0.0"
+ tenantIdleTimeout: {{ .Values.adapters.defaultTenantIdleTimeout | quote }}
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.adapters.amqp.hono.healthCheck | nindent 6 }}
+ {{- include "hono.serviceClientConfig" $args | nindent 6 }}
+{{- if not .Values.adapters.amqp.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/amqp-adapter-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/amqp-adapter-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ adapter.credentials: {{ .Files.Get "example/amqp-adapter.credentials" | b64enc }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-svc.yaml b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-svc.yaml
new file mode 100644
index 00000000..07827a1a
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-amqp/hono-adapter-amqp-vertx-svc.yaml
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-amqp-vertx" "name" "adapter-amqp-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.adapters.amqp.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: amqp
+ port: 5672
+ protocol: TCP
+ targetPort: amqp
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.amqp.svc "port" "amqp" ) | nindent 4 }}
+ - name: amqps
+ port: 5671
+ protocol: TCP
+ targetPort: amqps
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.amqp.svc "port" "amqps" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.adapters.amqp.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.adapters.amqp.svc ) | nindent 2 }}
diff --git a/charts/hono/templates/hono-adapter-coap/headless-svc.yaml b/charts/hono/templates/hono-adapter-coap/headless-svc.yaml
new file mode 100644
index 00000000..9ced7665
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-coap/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if and .Values.prometheus.createInstance .Values.adapters.coap.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-coap-vertx" "name" "adapter-coap-vertx" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-deployment.yaml b/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-deployment.yaml
new file mode 100644
index 00000000..9ef65141
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-deployment.yaml
@@ -0,0 +1,78 @@
+{{- if .Values.adapters.coap.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-coap-vertx" "name" "adapter-coap-vertx" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.adapters.coap.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-adapter-coap-vertx
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: coap
+ containerPort: 5683
+ protocol: UDP
+ - name: coaps
+ containerPort: 5684
+ protocol: UDP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.adapters.coap ) | indent 8 }}
+ resources:
+ limits:
+ memory: "256Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.adapters.coap ) | indent 6 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-secret.yaml b/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-secret.yaml
new file mode 100644
index 00000000..b7e1d697
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-secret.yaml
@@ -0,0 +1,41 @@
+{{- if .Values.adapters.coap.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-coap-vertx" "name" "adapter-coap-vertx-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.adapters.coap.hono.app.maxInstances }}
+ coap:
+ {{- if .Values.adapters.coap.hono.coap }}
+ {{- .Values.adapters.coap.hono.coap | toYaml | nindent 8 }}
+ {{- else }}
+ bindAddress: "0.0.0.0"
+ tenantIdleTimeout: {{ .Values.adapters.defaultTenantIdleTimeout | quote }}
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.adapters.coap.hono.healthCheck | nindent 6 }}
+ {{- include "hono.serviceClientConfig" $args | nindent 6 }}
+{{- if not .Values.adapters.coap.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/coap-adapter-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/coap-adapter-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ adapter.credentials: {{ .Files.Get "example/coap-adapter.credentials" | b64enc }}
+{{- end }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-svc.yaml b/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-svc.yaml
new file mode 100644
index 00000000..78f1c798
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-coap/hono-adapter-coap-vertx-svc.yaml
@@ -0,0 +1,40 @@
+{{- if .Values.adapters.coap.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-coap-vertx" "name" "adapter-coap-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.adapters.coap.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+
+spec:
+ ports:
+ - name: coap
+ port: 5683
+ protocol: UDP
+ targetPort: coap
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.coap.svc "port" "coap" ) | nindent 4 }}
+ - name: coaps
+ port: 5684
+ protocol: UDP
+ targetPort: coaps
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.coap.svc "port" "coaps" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.adapters.coap.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.adapters.coap.svc ) | nindent 2 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-http/headless-svc.yaml b/charts/hono/templates/hono-adapter-http/headless-svc.yaml
new file mode 100644
index 00000000..cabc82f9
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-http/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if .Values.prometheus.createInstance }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-http-vertx" "name" "adapter-http-vertx" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-deployment.yaml b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-deployment.yaml
new file mode 100644
index 00000000..b5600fda
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-deployment.yaml
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-http-vertx" "name" "adapter-http-vertx" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.adapters.http.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-adapter-http-vertx
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: http
+ containerPort: 8080
+ protocol: TCP
+ - name: https
+ containerPort: 8443
+ protocol: TCP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.adapters.http ) | indent 8 }}
+ resources:
+ limits:
+ memory: "256Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.adapters.http ) | indent 6 }}
diff --git a/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-route.yaml b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-route.yaml
new file mode 100644
index 00000000..6e788c3a
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-route.yaml
@@ -0,0 +1,25 @@
+{{- if eq .Values.platform "openshift" }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-http-vertx" "name" "adapter-http-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: http
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-http-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-sec-route.yaml b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-sec-route.yaml
new file mode 100644
index 00000000..881ff862
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-sec-route.yaml
@@ -0,0 +1,27 @@
+{{- if eq .Values.platform "openshift" }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-http-vertx" "name" "adapter-http-vertx-sec" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: https
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-http-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-secret.yaml b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-secret.yaml
new file mode 100644
index 00000000..e57cb880
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-secret.yaml
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-http-vertx" "name" "adapter-http-vertx-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.adapters.http.hono.app.maxInstances }}
+ http:
+ {{- if .Values.adapters.http.hono.http }}
+ {{- .Values.adapters.http.hono.http | toYaml | nindent 8 }}
+ {{- else }}
+ bindAddress: 0.0.0.0
+ insecurePortBindAddress: 0.0.0.0
+ insecurePortEnabled: true
+ keyPath: /etc/hono/key.pem
+ certPath: /etc/hono/cert.pem
+ tenantIdleTimeout: {{ .Values.adapters.defaultTenantIdleTimeout | quote }}
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.adapters.http.hono.healthCheck | nindent 6 }}
+ {{- include "hono.serviceClientConfig" $args | nindent 6 }}
+{{- if not .Values.adapters.http.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/http-adapter-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/http-adapter-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ adapter.credentials: {{ .Files.Get "example/http-adapter.credentials" | b64enc }}
+{{- end }}
\ No newline at end of file
diff --git a/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-svc.yaml b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-svc.yaml
new file mode 100644
index 00000000..5fcf8773
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-http/hono-adapter-http-vertx-svc.yaml
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-http-vertx" "name" "adapter-http-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.adapters.http.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: http
+ port: 8080
+ protocol: TCP
+ targetPort: http
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.http.svc "port" "http" ) | nindent 4 }}
+ - name: https
+ port: 8443
+ protocol: TCP
+ targetPort: https
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.http.svc "port" "https" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.adapters.http.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.adapters.http.svc ) | nindent 2 }}
diff --git a/charts/hono/templates/hono-adapter-kura/headless-svc.yaml b/charts/hono/templates/hono-adapter-kura/headless-svc.yaml
new file mode 100644
index 00000000..2f0ecfc9
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-kura/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if and .Values.prometheus.createInstance .Values.adapters.kura.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-kura" "name" "adapter-kura" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-deployment.yaml b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-deployment.yaml
new file mode 100644
index 00000000..87036fd8
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-deployment.yaml
@@ -0,0 +1,78 @@
+{{- if .Values.adapters.kura.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-kura" "name" "adapter-kura" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.adapters.kura.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-adapter-kura
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: mqtt
+ containerPort: 1883
+ protocol: TCP
+ - name: secure-mqtt
+ containerPort: 8883
+ protocol: TCP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.adapters.kura ) | indent 8 }}
+ resources:
+ limits:
+ memory: "256Mi"
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.adapters.kura ) | indent 6 }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-route.yaml b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-route.yaml
new file mode 100644
index 00000000..60204290
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-route.yaml
@@ -0,0 +1,25 @@
+{{- if and (eq .Values.platform "openshift") .Values.adapters.kura.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-kura" "name" "adapter-kura" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: 1883
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-kura
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-sec-route.yaml b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-sec-route.yaml
new file mode 100644
index 00000000..f1d8515c
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-sec-route.yaml
@@ -0,0 +1,27 @@
+{{- if and (eq .Values.platform "openshift") .Values.adapters.kura.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-kura" "name" "adapter-kura-sec" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: 8883
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-kura
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-secret.yaml b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-secret.yaml
new file mode 100644
index 00000000..0590fc65
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-secret.yaml
@@ -0,0 +1,45 @@
+{{- if .Values.adapters.kura.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-kura" "name" "adapter-kura-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.adapters.kura.hono.app.maxInstances }}
+ kura:
+ {{- if .Values.adapters.kura.hono.kura }}
+ {{- .Values.adapters.kura.hono.kura | toYaml | nindent 8 }}
+ {{- else }}
+ bindAddress: 0.0.0.0
+ insecurePortBindAddress: 0.0.0.0
+ insecurePortEnabled: true
+ keyPath: /etc/hono/key.pem
+ certPath: /etc/hono/cert.pem
+ tenantIdleTimeout: {{ .Values.adapters.defaultTenantIdleTimeout | quote }}
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.adapters.kura.hono.healthCheck | nindent 6 }}
+ {{- include "hono.serviceClientConfig" $args | nindent 6 }}
+{{- if not .Values.adapters.kura.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/kura-adapter-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/kura-adapter-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ adapter.credentials: {{ .Files.Get "example/kura-adapter.credentials" | b64enc }}
+{{- end }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-svc.yaml b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-svc.yaml
new file mode 100644
index 00000000..918cffdf
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-kura/hono-adapter-kura-svc.yaml
@@ -0,0 +1,39 @@
+{{- if .Values.adapters.kura.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-kura" "name" "adapter-kura" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.adapters.kura.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: mqtt
+ port: 1883
+ protocol: TCP
+ targetPort: mqtt
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.kura.svc "port" "mqtt" ) | nindent 4 }}
+ - name: secure-mqtt
+ port: 8883
+ protocol: TCP
+ targetPort: secure-mqtt
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.kura.svc "port" "mqtts" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.adapters.kura.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.adapters.kura.svc ) | nindent 2 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-lora/headless-svc.yaml b/charts/hono/templates/hono-adapter-lora/headless-svc.yaml
new file mode 100644
index 00000000..5595fcf3
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-lora/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if and .Values.prometheus.createInstance .Values.adapters.lora.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-lora-vertx" "name" "adapter-lora-vertx" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-deployment.yaml b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-deployment.yaml
new file mode 100644
index 00000000..4428557a
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-deployment.yaml
@@ -0,0 +1,78 @@
+{{- if .Values.adapters.lora.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-lora-vertx" "name" "adapter-lora-vertx" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.adapters.lora.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-adapter-lora-vertx
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: http
+ containerPort: 8080
+ protocol: TCP
+ - name: https
+ containerPort: 8443
+ protocol: TCP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.adapters.lora ) | indent 8 }}
+ resources:
+ limits:
+ memory: "256Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.adapters.lora ) | indent 6 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-route.yaml b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-route.yaml
new file mode 100644
index 00000000..1f8012e9
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-route.yaml
@@ -0,0 +1,25 @@
+{{- if and (eq .Values.platform "openshift") .Values.adapters.lora.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-lora-vertx" "name" "adapter-lora-vertx" }}
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: http
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-lora-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-sec-route.yaml b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-sec-route.yaml
new file mode 100644
index 00000000..e5b97b5f
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-sec-route.yaml
@@ -0,0 +1,27 @@
+{{- if and (eq .Values.platform "openshift") .Values.adapters.lora.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-lora-vertx" "name" "adapter-lora-vertx-sec" }}
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: https
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-lora-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-secret.yaml b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-secret.yaml
new file mode 100644
index 00000000..f71aa69d
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-secret.yaml
@@ -0,0 +1,44 @@
+{{- if .Values.adapters.lora.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-lora-vertx" "name" "adapter-lora-vertx-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.adapters.lora.hono.app.maxInstances }}
+ lora:
+ {{- if .Values.adapters.lora.hono.lora }}
+ {{- .Values.adapters.lora.hono.lora | toYaml | nindent 8 }}
+ {{- else }}
+ bindAddress: "0.0.0.0"
+ keyPath: "/etc/hono/key.pem"
+ certPath: "/etc/hono/cert.pem"
+ insecurePortEnabled: true
+ insecurePortBindAddress: "0.0.0.0"
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.adapters.lora.hono.healthCheck | nindent 6 }}
+ {{- include "hono.serviceClientConfig" $args | nindent 6 }}
+{{- if not .Values.adapters.lora.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/lora-adapter-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/lora-adapter-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ adapter.credentials: {{ .Files.Get "example/lora-adapter.credentials" | b64enc }}
+{{- end }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-svc.yaml b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-svc.yaml
new file mode 100644
index 00000000..e2800ec8
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-lora/hono-adapter-lora-vertx-svc.yaml
@@ -0,0 +1,39 @@
+{{- if .Values.adapters.lora.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-lora-vertx" "name" "adapter-lora-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.adapters.lora.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: http
+ port: 8080
+ protocol: TCP
+ targetPort: http
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.lora.svc "port" "http" ) | nindent 4 }}
+ - name: https
+ port: 8443
+ protocol: TCP
+ targetPort: https
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.lora.svc "port" "https" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.adapters.lora.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.adapters.lora.svc ) | nindent 2 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-mqtt/headless-svc.yaml b/charts/hono/templates/hono-adapter-mqtt/headless-svc.yaml
new file mode 100644
index 00000000..54df06dc
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-mqtt/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if .Values.prometheus.createInstance }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-mqtt-vertx" "name" "adapter-mqtt-vertx" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-deployment.yaml b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-deployment.yaml
new file mode 100644
index 00000000..71a9809d
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-deployment.yaml
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-mqtt-vertx" "name" "adapter-mqtt-vertx" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.adapters.mqtt.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-adapter-mqtt-vertx
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: mqtt
+ containerPort: 1883
+ protocol: TCP
+ - name: secure-mqtt
+ containerPort: 8883
+ protocol: TCP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.adapters.mqtt ) | indent 8 }}
+ resources:
+ limits:
+ memory: "256Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.adapters.mqtt ) | indent 6 }}
diff --git a/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-route.yaml b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-route.yaml
new file mode 100644
index 00000000..2476203d
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-route.yaml
@@ -0,0 +1,25 @@
+{{- if eq .Values.platform "openshift" }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-mqtt-vertx" "name" "adapter-mqtt-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: mqtt
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-mqtt-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-sec-route.yaml b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-sec-route.yaml
new file mode 100644
index 00000000..f2715db7
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-sec-route.yaml
@@ -0,0 +1,27 @@
+{{- if eq .Values.platform "openshift" }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-mqtt-vertx" "name" "adapter-mqtt-vertx-sec" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: secure-mqtt
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-adapter-mqtt-vertx
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-secret.yaml b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-secret.yaml
new file mode 100644
index 00000000..11dda279
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-secret.yaml
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "adapter-mqtt-vertx" "name" "adapter-mqtt-vertx-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.adapters.mqtt.hono.app.maxInstances }}
+ mqtt:
+ {{- if .Values.adapters.mqtt.hono.mqtt }}
+ {{- .Values.adapters.mqtt.hono.mqtt | toYaml | nindent 8 }}
+ {{- else }}
+ bindAddress: 0.0.0.0
+ insecurePortBindAddress: 0.0.0.0
+ insecurePortEnabled: true
+ keyPath: /etc/hono/key.pem
+ certPath: /etc/hono/cert.pem
+ tenantIdleTimeout: {{ .Values.adapters.defaultTenantIdleTimeout | quote }}
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.adapters.mqtt.hono.healthCheck | nindent 6 }}
+ {{- include "hono.serviceClientConfig" $args | nindent 6 }}
+{{- if not .Values.adapters.mqtt.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/mqtt-adapter-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/mqtt-adapter-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ adapter.credentials: {{ .Files.Get "example/mqtt-adapter.credentials" | b64enc }}
+{{- end }}
diff --git a/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-svc.yaml b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-svc.yaml
new file mode 100644
index 00000000..fd3f7167
--- /dev/null
+++ b/charts/hono/templates/hono-adapter-mqtt/hono-adapter-mqtt-vertx-svc.yaml
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "adapter-mqtt-vertx" "name" "adapter-mqtt-vertx" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.adapters.mqtt.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: mqtt
+ port: 1883
+ protocol: TCP
+ targetPort: mqtt
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.mqtt.svc "port" "mqtt" ) | nindent 4 }}
+ - name: secure-mqtt
+ port: 8883
+ protocol: TCP
+ targetPort: secure-mqtt
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.adapters.mqtt.svc "port" "mqtts" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.adapters.mqtt.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.adapters.mqtt.svc ) | nindent 2 }}
diff --git a/charts/hono/templates/hono-service-auth/headless-svc.yaml b/charts/hono/templates/hono-service-auth/headless-svc.yaml
new file mode 100644
index 00000000..ef0af311
--- /dev/null
+++ b/charts/hono/templates/hono-service-auth/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if .Values.prometheus.createInstance }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-auth" "name" "service-auth" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-service-auth/hono-service-auth-deployment.yaml b/charts/hono/templates/hono-service-auth/hono-service-auth-deployment.yaml
new file mode 100644
index 00000000..cb8dd963
--- /dev/null
+++ b/charts/hono/templates/hono-service-auth/hono-service-auth-deployment.yaml
@@ -0,0 +1,74 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-auth" "name" "service-auth" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ - image: {{ .Values.authServer.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-service-auth
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: amqps
+ containerPort: 5671
+ protocol: TCP
+ - name: amqp
+ containerPort: 5672
+ protocol: TCP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: authentication-impl,dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.authServer ) | indent 8 }}
+ resources:
+ limits:
+ memory: "196Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.authServer ) | indent 6 }}
diff --git a/charts/hono/templates/hono-service-auth/hono-service-auth-route.yaml b/charts/hono/templates/hono-service-auth/hono-service-auth-route.yaml
new file mode 100644
index 00000000..fb073bf3
--- /dev/null
+++ b/charts/hono/templates/hono-service-auth/hono-service-auth-route.yaml
@@ -0,0 +1,27 @@
+{{- if eq .Values.platform "openshift" }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "service-auth" "name" "service-auth" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: amqps
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-service-auth
+{{- end }}
diff --git a/charts/hono/templates/hono-service-auth/hono-service-auth-secret.yaml b/charts/hono/templates/hono-service-auth/hono-service-auth-secret.yaml
new file mode 100644
index 00000000..d7acbfa3
--- /dev/null
+++ b/charts/hono/templates/hono-service-auth/hono-service-auth-secret.yaml
@@ -0,0 +1,49 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-auth" "name" "service-auth-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.authServer.hono.app.maxInstances }}
+ auth:
+ amqp:
+ {{- if .Values.authServer.hono.auth.amqp }}
+ {{- .Values.authServer.hono.auth.amqp | toYaml | nindent 10 }}
+ {{- else }}
+ bindAddress: "0.0.0.0"
+ keyPath: "/etc/hono/key.pem"
+ certPath: "/etc/hono/cert.pem"
+ trustStorePath: "/etc/hono/trusted-certs.pem"
+ insecurePortBindAddress: "0.0.0.0"
+ insecurePortEnabled: true
+ {{- end }}
+ svc:
+ {{- if .Values.authServer.hono.auth.svc }}
+ {{- .Values.authServer.hono.auth.svc | toYaml | nindent 10 }}
+ {{- else }}
+ permissionsPath: "file:///etc/hono/permissions.json"
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.authServer.hono.healthServer | nindent 6 }}
+{{- if not .Values.authServer.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/auth-server-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/auth-server-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ permissions.json: {{ .Files.Get "example/example-permissions.json" | b64enc }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-auth/hono-service-auth-svc.yaml b/charts/hono/templates/hono-service-auth/hono-service-auth-svc.yaml
new file mode 100644
index 00000000..08005cda
--- /dev/null
+++ b/charts/hono/templates/hono-service-auth/hono-service-auth-svc.yaml
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "service-auth" "name" "service-auth" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ ports:
+ - name: amqps
+ port: 5671
+ protocol: TCP
+ targetPort: amqps
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
diff --git a/charts/hono/templates/hono-service-device-connection/headless-svc.yaml b/charts/hono/templates/hono-service-device-connection/headless-svc.yaml
new file mode 100644
index 00000000..cdb8c643
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-connection/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if and .Values.prometheus.createInstance .Values.deviceConnectionService.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-device-connection" "name" "service-device-connection" }}
+{{- include "hono.headless.service" $args }}
+{{ end }}
diff --git a/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-deployment.yaml b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-deployment.yaml
new file mode 100644
index 00000000..d7774b9d
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-deployment.yaml
@@ -0,0 +1,78 @@
+{{- if .Values.deviceConnectionService.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-device-connection" "name" "service-device-connection" }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.deviceConnectionService.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-service-device-connection
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: amqps
+ containerPort: 5671
+ protocol: TCP
+ - name: amqp
+ containerPort: 5672
+ protocol: TCP
+ securityContext:
+ privileged: false
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: prod
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.deviceConnectionService ) | indent 8 }}
+ resources:
+ limits:
+ memory: "256Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 90
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 30
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.deviceConnectionService ) | indent 6 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-route.yaml b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-route.yaml
new file mode 100644
index 00000000..2dcd9de3
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-route.yaml
@@ -0,0 +1,25 @@
+{{if and (eq .Values.platform "openshift") .Values.deviceConnectionService.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "service-device-connection" "name" "service-device-connection" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: 5671
+ to:
+ kind: Service
+ name: {{ .Release.Name}}-service-device-connection
+{{end}}
diff --git a/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-secret.yaml b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-secret.yaml
new file mode 100644
index 00000000..53287e8d
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-secret.yaml
@@ -0,0 +1,70 @@
+{{- if .Values.deviceConnectionService.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-device-connection" "name" "service-device-connection-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ application.yml: |
+ hono:
+ app:
+ maxInstances: {{ .Values.deviceConnectionService.hono.app.maxInstances }}
+ startupTimeout: {{ .Values.deviceConnectionService.hono.app.startupTimeout }}
+ auth:
+ {{- if .Values.deviceConnectionService.hono.auth }}
+ {{- .Values.deviceConnectionService.hono.auth | toYaml | nindent 8 }}
+ {{- else }}
+ host: {{ printf "%s-service-auth" .Release.Name | quote }}
+ port: 5671
+ trustStorePath: "/etc/hono/trusted-certs.pem"
+ hostnameVerificationRequired: false
+ name: {{ printf "Hono %s" $args.component | quote }}
+ validation:
+ certPath: "/etc/hono/auth-server-cert.pem"
+ {{- end }}
+ deviceConnection:
+ amqp:
+ {{- if .Values.deviceConnectionService.hono.deviceConnection.amqp }}
+ {{- .Values.deviceConnectionService.hono.deviceConnection.amqp | toYaml | nindent 10 }}
+ {{- else }}
+ bindAddress: "0.0.0.0"
+ keyPath: "/etc/hono/key.pem"
+ certPath: "/etc/hono/cert.pem"
+ {{- end }}
+ remote:
+ {{- if .Values.deviceConnectionService.hono.deviceConnection.remote }}
+ {{ .Values.deviceConnectionService.hono.deviceConnection.remote | toYaml | indent 10 }}
+ {{- else }}
+ {{- if .Values.dataGridExample.enabled }}
+ {{- $serverName := printf "%s-data-grid" .Release.Name }}
+ serverList: {{ printf "%s:11222" $serverName | quote }}
+ authServerName: {{ $serverName | quote }}
+ authUsername: "hono"
+ authPassword: "hono-secret"
+ maxRetries: 100
+ {{- else }}
+ {{- required "A .Values.deviceConnectionService.hono.deviceConnection.remote needs to be set when deploying the (production) Device Connection service" .Values.deviceConnectionService.hono.deviceConnection.remote }}
+ {{- end }}
+ {{- end }}
+ {{- include "hono.healthServerConfig" .Values.deviceConnectionService.hono.healthCheck | nindent 6 }}
+{{- if not .Values.deviceConnectionService.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/device-connection-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/device-connection-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ auth-server-cert.pem: {{ .Files.Get "hono-demo-certs-jar/auth-server-cert.pem" | b64enc }}
+{{- end }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-svc.yaml b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-svc.yaml
new file mode 100644
index 00000000..456952d4
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-connection/hono-service-device-connection-svc.yaml
@@ -0,0 +1,31 @@
+{{- if .Values.deviceConnectionService.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "service-device-connection" "name" "service-device-connection" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.deviceConnectionService.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: amqps
+ port: 5671
+ protocol: TCP
+ targetPort: amqps
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/headless-svc.yaml b/charts/hono/templates/hono-service-device-registry/headless-svc.yaml
new file mode 100644
index 00000000..654dc293
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/headless-svc.yaml
@@ -0,0 +1,16 @@
+{{- if and .Values.prometheus.createInstance .Values.deviceRegistryExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry" }}
+{{- include "hono.headless.service" $args }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-amqps-route.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-amqps-route.yaml
new file mode 100644
index 00000000..4d35f578
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-amqps-route.yaml
@@ -0,0 +1,27 @@
+{{- if and .Values.deviceRegistryExample.enabled ( eq .Values.platform "openshift" ) }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry-amqps" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: amqps
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-service-device-registry
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-deployment.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-deployment.yaml
new file mode 100644
index 00000000..9a3aae8a
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-deployment.yaml
@@ -0,0 +1,108 @@
+{{- if .Values.deviceRegistryExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry" }}
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ serviceName: {{ printf "%s-headless" $args.name }}
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ spec:
+ {{- if .Values.deviceRegistryExample.data.resetOnStartup }}
+ initContainers:
+ # this container is used to copy example data from a secret to files
+ # in a persistent volume
+ - name: copy-example-data
+ image: busybox
+ command:
+ - sh
+ - -c
+ - cp -u /tmp/hono/{{ .Values.deviceRegistryExample.data.devicesFile }} /var/lib/hono/device-registry/device-identities.json;
+ cp -u /tmp/hono/{{ .Values.deviceRegistryExample.data.credentialsFile }} /var/lib/hono/device-registry/credentials.json;
+ cp -u /tmp/hono/{{ .Values.deviceRegistryExample.data.tenantsFile }} /var/lib/hono/device-registry/tenants.json
+ volumeMounts:
+ - name: {{ default ( printf "%s-conf" $args.name ) .Values.deviceRegistryExample.data.volumeName | quote }}
+ mountPath: "/tmp/hono"
+ - name: "registry"
+ mountPath: "/var/lib/hono/device-registry"
+ {{- end }}
+ containers:
+ {{- include "hono.jaeger.agent" . | indent 6 }}
+ - image: {{ .Values.deviceRegistryExample.imageName }}
+ imagePullPolicy: IfNotPresent
+ name: eclipse-hono-service-device-registry
+ ports:
+ - name: health
+ containerPort: {{ .Values.healthCheckPort }}
+ protocol: TCP
+ - name: http
+ containerPort: 8080
+ protocol: TCP
+ - name: https
+ containerPort: 8443
+ protocol: TCP
+ - name: amqps
+ containerPort: 5671
+ protocol: TCP
+ - name: amqp
+ containerPort: 5672
+ protocol: TCP
+ env:
+ - name: SPRING_CONFIG_LOCATION
+ value: file:///etc/hono/
+ - name: SPRING_PROFILES_ACTIVE
+ value: dev
+ - name: LOGGING_CONFIG
+ value: classpath:logback-spring.xml
+ - name: _JAVA_OPTIONS
+ value: "{{ .Values.defaultJavaOptions }}"
+ - name: KUBERNETES_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ {{- include "hono.jaeger.clientConf" $args | indent 8 }}
+ securityContext:
+ privileged: false
+ volumeMounts:
+ {{- include "hono.container.secretVolumeMounts" ( dict "name" $args.name "conf" .Values.deviceRegistryExample ) | indent 8 }}
+ - name: "registry"
+ mountPath: "/var/lib/hono/device-registry"
+ resources:
+ limits:
+ memory: "256Mi"
+ livenessProbe:
+ httpGet:
+ path: /liveness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 180
+ readinessProbe:
+ httpGet:
+ path: /readiness
+ port: {{ .Values.healthCheckPort }}
+ scheme: HTTPS
+ initialDelaySeconds: 10
+ volumes:
+ {{- include "hono.pod.secretVolumes" ( dict "releaseName" .Release.Name "name" $args.name "conf" .Values.deviceRegistryExample ) | indent 6 }}
+ - name: "registry"
+ persistentVolumeClaim:
+ claimName: {{ printf "%s-%s" .Release.Name $args.name | quote }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-ext-svc.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-ext-svc.yaml
new file mode 100644
index 00000000..2a2e020c
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-ext-svc.yaml
@@ -0,0 +1,39 @@
+{{- if .Values.deviceRegistryExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry-ext" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.deviceRegistryExample.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: http
+ port: 28080
+ protocol: TCP
+ targetPort: http
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.deviceRegistryExample.svc "port" "http" ) | nindent 4 }}
+ - name: https
+ port: 28443
+ protocol: TCP
+ targetPort: https
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.deviceRegistryExample.svc "port" "https" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.deviceRegistryExample.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.deviceRegistryExample.svc ) | nindent 2 }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-http-route.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-http-route.yaml
new file mode 100644
index 00000000..1b7b0a14
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-http-route.yaml
@@ -0,0 +1,25 @@
+{{- if and .Values.deviceRegistryExample.enabled ( eq .Values.platform "openshift" ) }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry-http" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: amqps
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-service-device-registry
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-https-route.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-https-route.yaml
new file mode 100644
index 00000000..eba3e15c
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-https-route.yaml
@@ -0,0 +1,27 @@
+{{- if and .Values.deviceRegistryExample.enabled ( eq .Values.platform "openshift" ) }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ {{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry-https" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ port:
+ targetPort: https
+ tls:
+ termination: passthrough
+ to:
+ kind: Service
+ name: {{ .Release.Name }}-service-device-registry
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-pvc.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-pvc.yaml
new file mode 100644
index 00000000..eeeffaae
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-pvc.yaml
@@ -0,0 +1,28 @@
+{{- if .Values.deviceRegistryExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry" }}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ accessModes:
+ - ReadWriteOnce
+ {{- with .Values.deviceRegistryExample.storageClass }}
+ storageClassName: {{ . | quote }}
+ {{- end }}
+ resources:
+ requests:
+ storage: 1Mi
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-secret.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-secret.yaml
new file mode 100644
index 00000000..07ea0826
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-secret.yaml
@@ -0,0 +1,83 @@
+{{- if .Values.deviceRegistryExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+{{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry-conf" }}
+apiVersion: v1
+kind: Secret
+metadata:
+ {{- include "hono.metadata" $args | nindent 2 }}
+type: Opaque
+stringData:
+ {{- if not .Values.deviceRegistryExample.data.volumeName }}
+ {{ .Values.deviceRegistryExample.data.devicesFile }}: |
+ {{- .Files.Get "example/example-device-identities.json" | nindent 4 }}
+ {{ .Values.deviceRegistryExample.data.credentialsFile }}: |
+ {{- .Files.Get "example/example-credentials.json" | nindent 4 }}
+ {{ .Values.deviceRegistryExample.data.tenantsFile }}: |
+ {{- .Files.Get "example/example-tenants.json" | nindent 4 }}
+ {{- end }}
+ application.yml: |
+ hono:
+ app:
+ maxInstances: 1
+ auth:
+ {{- if .Values.deviceRegistryExample.hono.auth }}
+ {{- .Values.deviceRegistryExample.hono.auth | toYaml | nindent 8 }}
+ {{- else }}
+ host: {{ printf "%s-service-auth" .Release.Name | quote }}
+ port: 5671
+ trustStorePath: "/etc/hono/trusted-certs.pem"
+ hostnameVerificationRequired: false
+ name: {{ printf "Hono %s" $args.component | quote }}
+ validation:
+ certPath: "/etc/hono/auth-server-cert.pem"
+ {{- end }}
+ registry:
+ amqp:
+ {{- if .Values.deviceRegistryExample.hono.registry.amqp }}
+ {{- .Values.deviceRegistryExample.hono.registry.amqp | toYaml | nindent 10 }}
+ {{- else }}
+ bindAddress: "0.0.0.0"
+ keyPath: "/etc/hono/key.pem"
+ certPath: "/etc/hono/cert.pem"
+ {{- end }}
+ rest:
+ {{- if .Values.deviceRegistryExample.hono.registry.rest }}
+ {{- .Values.deviceRegistryExample.hono.registry.rest | toYaml | nindent 10 }}
+ {{- else }}
+ bindAddress: "0.0.0.0"
+ keyPath: "/etc/hono/key.pem"
+ certPath: "/etc/hono/cert.pem"
+ insecurePortEnabled: true
+ insecurePortBindAddress: "0.0.0.0"
+ {{- end }}
+ svc:
+ filename: "/var/lib/hono/device-registry/device-identities.json"
+ saveToFile: true
+ credentials:
+ svc:
+ filename: "/var/lib/hono/device-registry/credentials.json"
+ saveToFile: true
+ tenant:
+ svc:
+ filename: "/var/lib/hono/device-registry/tenants.json"
+ saveToFile: true
+ {{- include "hono.healthServerConfig" .Values.deviceRegistryExample.hono.healthCheck | nindent 6 }}
+{{- if not .Values.deviceRegistryExample.extraSecretMounts }}
+data:
+ key.pem: {{ .Files.Get "hono-demo-certs-jar/device-registry-key.pem" | b64enc }}
+ cert.pem: {{ .Files.Get "hono-demo-certs-jar/device-registry-cert.pem" | b64enc }}
+ trusted-certs.pem: {{ .Files.Get "hono-demo-certs-jar/trusted-certs.pem" | b64enc }}
+ auth-server-cert.pem: {{ .Files.Get "hono-demo-certs-jar/auth-server-cert.pem" | b64enc }}
+{{- end }}
+{{- end }}
diff --git a/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-svc.yaml b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-svc.yaml
new file mode 100644
index 00000000..8daf380e
--- /dev/null
+++ b/charts/hono/templates/hono-service-device-registry/hono-service-device-registry-svc.yaml
@@ -0,0 +1,31 @@
+{{- if .Values.deviceRegistryExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "service-device-registry" "name" "service-device-registry" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ ports:
+ - name: amqps
+ port: 5671
+ protocol: TCP
+ targetPort: amqps
+ - name: https
+ port: 8443
+ protocol: TCP
+ targetPort: https
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- end }}
diff --git a/charts/hono/templates/jaeger/jaeger-collector-service.yaml b/charts/hono/templates/jaeger/jaeger-collector-service.yaml
new file mode 100644
index 00000000..e70c1f5a
--- /dev/null
+++ b/charts/hono/templates/jaeger/jaeger-collector-service.yaml
@@ -0,0 +1,32 @@
+{{- if .Values.jaegerBackendExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "tracing" "name" "jaeger-collector" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ ports:
+ - name: jaeger-collector-tchannel
+ port: 14267
+ protocol: TCP
+ targetPort: 14267
+ - name: jaeger-collector-http
+ port: 14268
+ protocol: TCP
+ targetPort: 14268
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+ type: ClusterIP
+{{- end }}
diff --git a/charts/hono/templates/jaeger/jaeger-deployment.yaml b/charts/hono/templates/jaeger/jaeger-deployment.yaml
new file mode 100644
index 00000000..4fc9061f
--- /dev/null
+++ b/charts/hono/templates/jaeger/jaeger-deployment.yaml
@@ -0,0 +1,53 @@
+{{- if .Values.jaegerBackendExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- $args := dict "dot" . "component" "tracing" "name" "jaeger-all-in-one" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ {{- include "hono.matchLabels" $args | nindent 6 }}
+ template:
+ metadata:
+ {{- include "hono.metadata" $args | nindent 6 }}
+ annotations:
+ prometheus.io/scrape: "true"
+ prometheus.io/port: "16686"
+ spec:
+ containers:
+ - env:
+ - name: MEMORY_MAX_TRACES
+ value: "100000"
+ image: {{ default "jaegertracing/all-in-one:1.13.1" .Values.jaegerBackendExample.allInOneImage }}
+ name: jaeger
+ ports:
+ - containerPort: 5775
+ protocol: UDP
+ - containerPort: 6831
+ protocol: UDP
+ - containerPort: 6832
+ protocol: UDP
+ - containerPort: 5778
+ protocol: TCP
+ - containerPort: 16686
+ protocol: TCP
+ readinessProbe:
+ httpGet:
+ path: "/"
+ port: 14269
+ initialDelaySeconds: 5
+{{- end }}
diff --git a/charts/hono/templates/jaeger/jaeger-query-service.yaml b/charts/hono/templates/jaeger/jaeger-query-service.yaml
new file mode 100644
index 00000000..85d3c154
--- /dev/null
+++ b/charts/hono/templates/jaeger/jaeger-query-service.yaml
@@ -0,0 +1,34 @@
+{{- if .Values.jaegerBackendExample.enabled }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: Service
+metadata:
+ {{- $args := dict "dot" . "component" "tracing" "name" "jaeger-query" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+ {{- with .Values.jaegerBackendExample.svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ ports:
+ - name: query-http
+ port: 80
+ protocol: TCP
+ targetPort: 16686
+ {{- include "hono.service.nodePort" (dict "dot" . "service" .Values.jaegerBackendExample.svc "port" "http" ) | nindent 4 }}
+ selector:
+ {{- include "hono.matchLabels" $args | nindent 4 }}
+{{- include "hono.service.type" (dict "dot" . "service" .Values.jaegerBackendExample.svc ) | nindent 2 }}
+{{- include "hono.service.loadBalancerIP" (dict "dot" . "service" .Values.jaegerBackendExample.svc ) | nindent 2 }}
+{{- end }}
diff --git a/charts/hono/templates/prometheus/prometheus-config.yaml b/charts/hono/templates/prometheus/prometheus-config.yaml
new file mode 100644
index 00000000..e1c69e78
--- /dev/null
+++ b/charts/hono/templates/prometheus/prometheus-config.yaml
@@ -0,0 +1,51 @@
+{{- if .Values.prometheus.createInstance }}
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ {{- $args := dict "dot" . "component" "metrics" "name" "prometheus-config" }}
+ {{- include "hono.metadata" $args | nindent 2 }}
+data:
+ rules: |
+ {{ "" }}
+ alerts: |
+ {{ "" }}
+ prometheus.yml: |
+ global:
+ {{- .Values.prometheus.server.global | toYaml | nindent 6 }}
+ rule_files:
+ - /etc/config/rules
+ - /etc/config/alerts
+
+ scrape_configs:
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "service-auth") | nindent 4 }}
+ {{- if .Values.deviceRegistryExample.enabled }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "service-device-registry") | nindent 4 }}
+ {{- end }}
+ {{- if .Values.deviceConnectionService.enabled }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "service-device-connection") | nindent 4 }}
+ {{- end }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "adapter-amqp-vertx") | nindent 4 }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "adapter-http-vertx") | nindent 4 }}
+ {{- if .Values.adapters.lora.enabled }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "adapter-lora-vertx") | nindent 4 }}
+ {{- end }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "adapter-mqtt-vertx") | nindent 4 }}
+ {{- if .Values.adapters.kura.enabled }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "adapter-kura") | nindent 4 }}
+ {{- end }}
+ {{- if .Values.adapters.coap.enabled }}
+ {{- include "hono.prometheus.scrapeJob" (dict "dot" . "serviceName" "adapter-coap-vertx") | nindent 4 }}
+ {{- end }}
+{{ end }}
diff --git a/charts/hono/values.yaml b/charts/hono/values.yaml
new file mode 100644
index 00000000..d9a90ba7
--- /dev/null
+++ b/charts/hono/values.yaml
@@ -0,0 +1,897 @@
+#
+# Copyright (c) 2019 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License 2.0 which is available at
+# http://www.eclipse.org/legal/epl-2.0
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+
+# Default values for eclipse-hono.
+# Declare variables to be passed into your templates.
+
+amqpMessagingNetworkExample:
+ # enabled indicates whether the example AMQP Messaging Network
+ # consisting of a single Dispatch Router and Broker should be
+ # deployed and used. By default an internal Broker is deployed.
+ # As alternative an external Broker can be configured as well.
+ enabled: true
+ # dispatchRouter.imageName contains the name (including tag)
+ # of the container image to use for the example AQMP Messaging Network Router.
+ dispatchRouter:
+ imageName: quay.io/enmasse/qdrouterd-base:1.7.0
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ amqps: 30671
+ amqp: 30672
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # AMQP Messaging Network Broker configuration.
+ broker:
+ type: artemis
+ artemis:
+ # imageName contains the name (including tag) of the container
+ # image to use for the example AMQP Messaging Network Broker
+ imageName: enmasseproject/activemq-artemis:2.2.0-4
+ # Azure Service Bus as alternative to self-hosted Artemis ActiveMQ for event persistence
+ servicebus:
+ saslUsername:
+ saslPassword:
+ host:
+
+dataGridExample:
+ # enabled indicates whether the example data grid
+ # should be deployed and used.
+ # The default value of this property is false which is consistent with
+ # the default value (false) of the "deviceConnectionService.enabled" property,
+ # resulting in the in-memory implementation of the Device Connection
+ # service provided by the example device registry being used by default.
+ enabled: false
+ # imageName contains the name (including tag)
+ # of the container image to use for the example data grid.
+ imageName: jboss/infinispan-server:9.4.11.Final
+
+
+jaegerBackendExample:
+
+ # enabled indicates whether the example Jaeger all-in-one
+ # back end should be deployed and used.
+ enabled: false
+ # allInOneImage contains the name (including tag)
+ # of the container image to use for the example Jaeger back end.
+ allInOneImage: jaegertracing/all-in-one:1.13.1
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ http: 36686
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+# jaegerAgentImage contains the name (including tag)
+# of the container image to use for the Jaeger Agent sidecar deployed
+# with Hono's components.
+jaegerAgentImage: jaegertracing/jaeger-agent:1.13.1
+# jaegerAgentConf contains environment variables for configuring the Jaeger Agent sidecar container
+# that is deployed with each of Hono's components.
+# The Jaeger Agent sidecar container is deployed with standard properties if
+# "jaegerBackendExample.enabled" is set to true.
+# Otherwise the sidecar container is deployed using the environment variables contained
+# in this property (if not nil).
+# Please refer to https://www.jaegertracing.io/docs/1.13/cli/ for syntax and semantics
+# of environment variables.
+jaegerAgentConf:
+# REPORTER_TYPE: tchannel
+# REPORTER_TCHANNEL_HOST_PORT: my-jaeger-collector:14267
+# REPORTER_TCHANNEL_DISCOVERY_MIN_PEERS: 1
+
+# defaultJavaOptions contains options to pass to the JVM when starting
+# up Hono's containers
+defaultJavaOptions: -XX:MinRAMPercentage=80 -XX:MaxRAMPercentage=80
+
+# the port that the Hono components' Prometheus scraping endpoint is exposed on
+monitoring:
+ prometheus:
+ port: 8088
+
+# healthCheckPort is the port that the Hono components bind their health check
+# server to.
+healthCheckPort: 8088
+
+# platform indicates the type of container orchestration platform we are deploying to.
+# Supported values are:
+# - openshift
+# - kubernetes
+#
+# When setting to "openshift", Route resources will also be deployed.
+platform: kubernetes
+
+# Configuration properties for protocol adapters.
+adapters:
+
+ # amqpMessagingNetworkSpec contains Hono client properties used by all protocol
+ # adapters for connecting to the AMQP Messaging Network to forward downstream messages to.
+ # This property MUST be set if "amqpMessagingNetworkDeployExample" is set to false.
+ # Please refer to https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/
+ # for a description of supported properties.
+ # amqpMessagingNetworkSpec:
+ # host: my-amqp-host
+ # port: 5671
+ # trustStorePath: /etc/conf/amqp-trust-store.pem
+ # credentialsPath: /etc/conf/amqp-credentials.properties
+
+ # commandAndControlSpec contains Hono client properties used by all protocol
+ # adapters for connecting to the AMQP Messaging Network which is used by applications
+ # to send commands to devices.
+ # This property MUST be set if "amqpMessagingNetworkDeployExample" is set to false.
+ # Please refer to https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/
+ # for a description of supported properties.
+ # commandAndControlSpec:
+
+ # tenantSpec contains Hono client properties used by all protocol adapters for
+ # connecting to the Tenant service.
+ # This property MUST be set if "deviceRegistryExample.enabled" is set to false.
+ # Please refer to https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/
+ # for a description of supported properties.
+ # tenantSpec:
+
+ # deviceRegistrationSpec contains Hono client properties used by all protocol adapters for
+ # connecting to the Device Registration service.
+ # This property MUST be set if "deviceRegistryExample.enabled" is set to false.
+ # Please refer to https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/
+ # for a description of supported properties.
+ # deviceRegistrationSpec:
+
+ # credentialsSpec contains Hono client properties used by all protocol adapters for
+ # connecting to the Credentials service.
+ # This property MUST be set if "deviceRegistryExample.enabled" is set to false.
+ # Please refer to https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/
+ # for a description of supported properties.
+ # credentialsSpec:
+
+ # deviceConnectionSpec contains Hono client properties used by all protocol adapters for
+ # connecting to the Device Connection service.
+ # This property MUST be set if "deviceRegistryExample.enabled" and
+ # "deviceConnectionService.enabled" are both set to false.
+ # Please refer to https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/
+ # for a description of supported properties.
+ # deviceConnectionSpec:
+
+ # tenantIdleTimeout contains the amount of time of inactivity after
+ # which protocol adapters close tenant specific links to services they
+ # interact with.
+ # Please refer to the Spring Boot documentation for the supported syntax:
+ # https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-conversion-duration
+ defaultTenantIdleTimeout: "1h"
+
+ amqp:
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the AMQP adapter
+ imageName: index.docker.io/eclipse/hono-adapter-amqp-vertx:1.0.2
+
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ amqps: 32671
+ amqp: 32672
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # adapter's container filesystem. The files from the secret(s) can
+ # then be used in e.g. the service client specs.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the adapter has been deployed to.
+ # If this property is set then the example key, cert, trust store and credentials
+ # will not be included in the adapters "config" secret, i.e. the extra
+ # secret(s) defiend here need to include these artifacts if the adapter should
+ # use TLS and/or credentials for authentication.
+ # extraSecretMounts:
+ # passwords:
+ # secretName: "my-passwords"
+ # mountPath: "/etc/pwd"
+ # other:
+ # secretName: "other-stuff"
+ # mountPath: "/etc/other"
+
+ # hono contains the adapter's configuration properties as defined in
+ # https://www.eclipse.org/hono/docs/admin-guide/amqp-adapter-config/
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+
+ # amqp contains configuration properties for the adapter's
+ # exposed AMQP endpoints.
+ # If not set, the adapter by default exposes the secure and insecure ports
+ # using an example key and certificate.
+ amqp:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # healthCheck contains configuration properties for the adapter's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the adapter's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+ coap:
+ # enabled indicates if Hono's (experimental) CoAP adapter should be deployed.
+ # Note that this requires building the corresponding container image manually because
+ # there is no official image available from Docker Hub (yet).
+ enabled: false
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the CoAP adapter
+ imageName: index.docker.io/eclipse/hono-adapter-coap-vertx:1.0.2
+
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ coap: 30683
+ coaps: 30684
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # adapter's container filesystem. The files from the secret(s) can
+ # then be used in e.g. the service client specs.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the adapter has been deployed to.
+ # If this property is set then the example key, cert, trust store and credentials
+ # will not be included in the adapters "config" secret, i.e. the extra
+ # secret(s) defiend here need to include these artifacts if the adapter should
+ # use TLS and/or credentials for authentication.
+ # extraSecretMounts:
+ # passwords:
+ # secretName: "my-passwords"
+ # mountPath: "/etc/pwd"
+ # other:
+ # secretName: "other-stuff"
+ # mountPath: "/etc/other"
+
+ # hono contains the adapter's configuration properties
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+
+ # healthCheck contains configuration properties for the adapter's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the adapter's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+ http:
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the HTTP adapter
+ imageName: index.docker.io/eclipse/hono-adapter-http-vertx:1.0.2
+
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ http: 30080
+ https: 30443
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # adapter's container filesystem. The files from the secret(s) can
+ # then be used in e.g. the service client specs.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the adapter has been deployed to.
+ # If this property is set then the example key, cert, trust store and credentials
+ # will not be included in the adapters "config" secret, i.e. the extra
+ # secret(s) defiend here need to include these artifacts if the adapter should
+ # use TLS and/or credentials for authentication.
+ # extraSecretMounts:
+ # passwords:
+ # secretName: "my-passwords"
+ # mountPath: "/etc/pwd"
+ # other:
+ # secretName: "other-stuff"
+ # mountPath: "/etc/other"
+
+ # hono contains the adapter's configuration properties as defined in
+ # https://www.eclipse.org/hono/docs/admin-guide/http-adapter-config/
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+
+ # http contains configuration properties for the adapter's
+ # exposed HTTP endpoints.
+ # If not set, the adapter by default exposes the secure and insecure ports
+ # using an example key and certificate.
+ http:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # healthCheck contains configuration properties for the adapter's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the adapter's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+ lora:
+ # enabled indicates if Hono's Lora adapter should be deployed.
+ enabled: false
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the LoRa adapter
+ imageName: index.docker.io/eclipse/hono-adapter-lora-vertx:1.0.2
+
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ http: 32080
+ https: 32443
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # adapter's container filesystem. The files from the secret(s) can
+ # then be used in e.g. the service client specs.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the adapter has been deployed to.
+ # If this property is set then the example key, cert, trust store and credentials
+ # will not be included in the adapters "config" secret, i.e. the extra
+ # secret(s) defiend here need to include these artifacts if the adapter should
+ # use TLS and/or credentials for authentication.
+ # extraSecretMounts:
+ # passwords:
+ # secretName: "my-passwords"
+ # mountPath: "/etc/pwd"
+ # other:
+ # secretName: "other-stuff"
+ # mountPath: "/etc/other"
+
+ # hono contains the adapter's configuration properties
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+
+ # lora contains configuration properties for the adapter's
+ # exposed HTTP endpoints.
+ # If not set, the adapter by default exposes the secure and insecure ports
+ # using an example key and certificate.
+ lora:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # healthCheck contains configuration properties for the adapter's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the adapter's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+ mqtt:
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the MQTT adapter
+ imageName: index.docker.io/eclipse/hono-adapter-mqtt-vertx:1.0.2
+
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ mqtt: 31883
+ mqtts: 30883
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # adapter's container filesystem. The files from the secret(s) can
+ # then be used in e.g. the service client specs.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the adapter has been deployed to.
+ # If this property is set then the example key, cert, trust store and credentials
+ # will not be included in the adapters "config" secret, i.e. the extra
+ # secret(s) defiend here need to include these artifacts if the adapter should
+ # use TLS and/or credentials for authentication.
+ # extraSecretMounts:
+ # passwords:
+ # secretName: "my-passwords"
+ # mountPath: "/etc/pwd"
+ # other:
+ # secretName: "other-stuff"
+ # mountPath: "/etc/other"
+
+ # hono contains the adapter's configuration properties as defined in
+ # https://www.eclipse.org/hono/docs/admin-guide/mqtt-adapter-config/
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+
+ # http contains configuration properties for the adapter's
+ # exposed MQTT endpoints.
+ # If not set, the adapter by default exposes the secure and insecure ports
+ # using an example key and certificate.
+ mqtt:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # healthCheck contains configuration properties for the adapter's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the adapter's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+ kura:
+ # enabled indicates if Hono's (deprecated) Kura adapter should be deployed.
+ enabled: false
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the Kura adapter
+ imageName: index.docker.io/eclipse/hono-adapter-kura:1.0.2
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ mqtt: 31884
+ mqtts: 30884
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # adapter's container filesystem. The files from the secret(s) can
+ # then be used in e.g. the service client specs.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the adapter has been deployed to.
+ # If this property is set then the example key, cert, trust store and credentials
+ # will not be included in the adapters "config" secret, i.e. the extra
+ # secret(s) defiend here need to include these artifacts if the adapter should
+ # use TLS and/or credentials for authentication.
+ # extraSecretMounts:
+ # passwords:
+ # secretName: "my-passwords"
+ # mountPath: "/etc/pwd"
+ # other:
+ # secretName: "other-stuff"
+ # mountPath: "/etc/other"
+
+ # hono contains the adapter's configuration properties as defined in
+ # https://www.eclipse.org/hono/docs/admin-guide/kura-adapter-config/
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+
+ # http contains configuration properties for the adapter's
+ # exposed MQTT endpoints.
+ # If not set, the adapter by default exposes the secure and insecure ports
+ # using an example key and certificate.
+ kura:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # healthCheck contains configuration properties for the adapter's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the adapter's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+
+# authServer contains configuration properties for the Auth Server component.
+authServer:
+
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the Auth Server
+ imageName: index.docker.io/eclipse/hono-service-auth:1.0.2
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # Auth Server's' container filesystem. The files from the secret(s) can
+ # then be used in e.g. the configuration of the server's exposed ports.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the server has been deployed to.
+ # If this property is set then the example key, cert, trust store and credentials
+ # will not be included in the Auth Server's' "config" secret, i.e. the extra
+ # secret(s) defined here need to include these artifacts if the Auth Server should
+ # use TLS and/or credentials for authentication.
+ # extraSecretMounts:
+ # passwords:
+ # secretName: "my-passwords"
+ # mountPath: "/etc/pwd"
+ # other:
+ # secretName: "other-stuff"
+ # mountPath: "/etc/other"
+
+ # hono contains the Auth Server's configuration properties as defined in
+ # https://www.eclipse.org/hono/docs/admin-guide/auth-server-config/
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+ auth:
+ # svc contains configuration properties for the server
+ # If not set, the sever by default loads permissions from
+ # /etc/hono/permissions.json and issues tokens with a lifetime of 1h
+ svc:
+ # permissionsPath: "file:///etc/hono/permissions.json"
+ # signing:
+ # tokenExpiration contains the number of seconds after which tokens issued
+ # by the Auth server will expire.
+ # tokenExpiration: 3600
+ # amqp contains configuration properties for the server's
+ # exposed AMQP endpoints.
+ # If not set, the sever by default exposes the secure and insecure ports
+ # using an example key and certificate.
+ amqp:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # healthCheck contains configuration properties for the service's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the service's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+
+# deviceRegistryExample contains configuration properties for the
+# example Device Registry.
+deviceRegistryExample:
+
+ # enabled indicates whether the example Device Registry
+ # should be deployed and used.
+ # If this property is set to false, then the protocol adapters need to be
+ # explicitly configured for connecting to the Tenant, Device Registration,
+ # Credentials and Device Connection services using properties
+ # - "adapters.tenantSpec"
+ # - "adapters.deviceRegistrationSpec"
+ # - "adapters.credentialsSpec"
+ # - "adapters.deviceConnectionSpec"
+ enabled: true
+
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the example Device Registry
+ imageName: index.docker.io/eclipse/hono-service-device-registry:1.0.2
+
+ svc:
+ annotations: {}
+ loadBalancerIP:
+ nodePorts:
+ http: 31080
+ https: 31443
+
+ # serviceType defines the type which the created service will have.
+ # The default is "NodePort".
+ # Note: This property will be ignored when deploying to platform "openshift".
+ type: NodePort
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # Device Registry's' container filesystem. The files from the secret(s) can
+ # then be used in e.g. the configuration of the server's exposed ports.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the server has been deployed to.
+ # If this property is set then the example key, cert, trust store and example
+ # data files will not be included in the Registry's "config" secret, i.e. the extra
+ # secret(s) defined here need to include these artifacts if the Device Registry should
+ # use TLS and/or other example data.
+ # extraSecretMounts:
+ # tls:
+ # secretName: "key-material"
+ # mountPath: "/etc/tls"
+ # data:
+ # secretName: "example-data"
+ # mountPath: "/etc/data"
+
+ # data defines the location of files containing data
+ # that should be used to initialize the example Device Registry during startup.
+ # The files are ource from where
+ data:
+ # volumeName contains the name of the service pod's volume that has been created for the
+ # secret containing the example data files.
+ # If not set, the files will be read from the volume created from the registry's default "conf" secret.
+ # Otherwise, the volume name needs to match the name used in the extraSecretMounts for the
+ # secret containing the data.
+ # volumeName:
+ # tenantsFile inidicates the name of the file that is used to initialize the
+ # Tenant service with example tenant data
+ tenantsFile: example-tenants.json
+ # devicesFile inidicates the name of the file that is used to initialize the
+ # Device Registration service with example device data
+ devicesFile: example-device-identities.json
+ # credentialsFile inidicates the name of the file that is used to initialize the
+ # Credentials service with example credentials
+ credentialsFile: example-credentials.json
+ # resetOnStartup indicates whether registration data should be reset to initial
+ # example data when the example Device Registry starts up
+ resetOnStartup: true
+
+ # Persistent volume claim storage class
+ # storageClass:
+
+ # hono contains the Device Registry's configuration properties as defined in
+ # https://www.eclipse.org/hono/docs/admin-guide/device-registry-config/
+ hono:
+ # auth contains Hono client properties used by the example registry for
+ # connecting to the Authentication service.
+ # If not set, the registry by default uses the Auth Server component to
+ # authenticate clients.
+ auth:
+ registry:
+ # amqp contains configuration properties for the server's
+ # exposed AMQP endpoints.
+ # If not set, the registry by default exposes the secure port
+ # using an example key and certificate.
+ amqp:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # rest contains configuration properties for the server's
+ # exposed HTTP endpoints.
+ # If not set, the registry by default exposes the insecure and secure ports
+ # using an example key and certificate.
+ rest:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # healthCheck contains configuration properties for the service's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the service's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+# deviceConnectionService contains configuration properties for the
+# Device Connection service.
+deviceConnectionService:
+
+ # imageName contains the name (including registry and tag)
+ # of the container image to use for the Device Connection service
+ imageName: index.docker.io/eclipse/hono-service-device-connection:1.0.2
+ svc:
+ annotations: {}
+
+ # enabled indicates if the data grid based Device Connection service implementation
+ # should be deployed and used.
+ # If set to false (the default) and "deviceRegistryExample.enabled" is set to true,
+ # the in-memory implementation that is part of the example Device Registry is used.
+ # If set to false (the default) and "deviceRegistryExample.enabled" is also set to false,
+ # then the "adapters.deviceConnectionSpec" is expected to contain the required
+ # Hono client config properties to connect to an already existing Device Connection service.
+ enabled: false
+
+ # extraSecretMounts describes additional secrets that should be mounted into the
+ # service's' container filesystem. The files from the secret(s) can
+ # then be used in e.g. the configuration of the service's exposed ports.
+ # The secrets are expected to exist in the same Kubernetes namespace
+ # as the one that the service has been deployed to.
+ # If this property is set then the example key, cert and trust store will not be
+ # included in the service's "config" secret, i.e. the extra
+ # secret(s) defined here need to include these artifacts if the service should
+ # use TLS and/or other credentials.
+ # extraSecretMounts:
+ # tls:
+ # secretName: "key-material"
+ # mountPath: "/etc/tls"
+
+ # hono contains the service's configuration properties as defined in
+ # https://www.eclipse.org/hono/docs/admin-guide/device-connection-config/
+ hono:
+ app:
+ # maxInstances defines the number of adapter Verticle instances to deploy
+ # to the vert.x runtime during start-up.
+ maxInstances: 1
+ startupTimeout: 180
+ # auth contains Hono client properties used by the service for
+ # connecting to the Authentication service.
+ # If not set, the service by default uses the Auth Server component to
+ # authenticate clients.
+ auth:
+ deviceConnection:
+ # amqp contains configuration properties for the server's
+ # exposed AMQP endpoints.
+ # If not set, the registry by default exposes the secure port
+ # using an example key and certificate.
+ amqp:
+ # insecurePortEnabled: true
+ # insecurePortBindAddress: "0.0.0.0"
+
+ # remote contains properties for configuring the Infinispan Hotrod connection
+ # to the data grid that should be used for storing the device connection data.
+ # This property MUST be set if "deviceConnectionService.enabled" is set to true
+ # and "dataGridExample.enabled" is set to false (the default).
+ # Please refer to https://docs.jboss.org/infinispan/9.4/apidocs/org/infinispan/client/hotrod/configuration/package-summary.html#package.description
+ # for a list of configuration properties.
+ remote:
+ # serverList: hono-data-grid:11222
+ # authServerName: hono-data-grid
+ # authUsername: hono
+ # authPassword: hono-secret
+
+ # healthCheck contains configuration properties for the service's
+ # health check server as defined by
+ # https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#health-check-server-configuration
+ # If not set, a TLS secured health check server is configured listening on
+ # all network interfaces on port 8088 using the service's
+ # example key and cert.'
+ healthCheck:
+ # bindAddress: 0.0.0.0
+ # port: 12000
+ # keyPath: "/etc/config/key.pem"
+ # certPath: "/etc/config/cert.pem"
+
+prometheus:
+ # createInstance indicates whether a Prometheus server should be created
+ # using the Prometheus chart.
+ # Set this property to false if you want to use an already existing server
+ # instead. In that case, set the "name" and "port" properties to the
+ # existing server's host name and port.
+ createInstance: false
+ # host contains the host name of an existing Prometheus server.
+ # This property is used to configure a corresponding datasource in Grafana
+ # if createInstance is set to false.
+ # host:
+ # port contains the port number of an existing Prometheus server.
+ # This property is used to configure a corresponding datasource in Grafana
+ # if createInstance is set to false.
+ # port: 9090
+
+ ## Define serviceAccount names for components. Defaults to component's fully qualified name.
+ ##
+ serviceAccounts:
+ alertmanager:
+ create: false
+ name:
+ kubeStateMetrics:
+ create: false
+ name:
+ nodeExporter:
+ create: false
+ name:
+ pushgateway:
+ create: false
+ name:
+ server:
+ create: true
+ name:
+
+ server:
+ configMapOverrideName: prometheus-config
+ global:
+ scrape_interval: 10s
+ service:
+ servicePort: 9090
+
+ alertmanager:
+ enabled: false
+
+ kubeStateMetrics:
+ enabled: false
+
+ nodeExporter:
+ enabled: false
+
+ pushgateway:
+ enabled: false
+
+grafana:
+ enabled: false
+ adminPassword: admin
+
+ # labels to be added to the Grafana Deployment
+ labels:
+ app.kubernetes.io/name: eclipse-hono
+ app.kubernetes.io/component: dashboard
+
+ # labels to be added to the Grafana Pod(s)
+ podLabels:
+ app.kubernetes.io/name: eclipse-hono
+ app.kubernetes.io/component: dashboard
+
+
+ ## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).
+ ## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
+ ## ref: http://kubernetes.io/docs/user-guide/services/
+ ##
+ service:
+ type: ClusterIP
+ port: 3000
+ targetPort: 3000
+ annotations: {}
+ labels:
+ app.kubernetes.io/name: eclipse-hono
+ app.kubernetes.io/component: dashboard
+
+ ## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders
+ ## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards
+ sidecar:
+ dashboards:
+ enabled: true
+ # label that the configmaps with dashboards are marked with
+ label: grafana_dashboard
+ datasources:
+ enabled: true
+ # label that the configmaps with datasources are marked with
+ label: grafana_datasource
+
+ rbac:
+ namespaced: true