Skip to content

tum-gis/tum-gis-iot-stack-k8s

Repository files navigation

TUM-GIS IoT Stack for Kubernetes

an application stack for managing, integrating, storing, and visualizing sensor data with open standards and tools based on OGC SensorThingsAPI

Report bug · Request feature

GitHub Workflow Status
DOI

💤 TL;DR

Deploy the IoT-Stack in a Kubernetes cluster with ingress-nginx and cert-manager available, and a FQDN (e.g. www.my-iot-stack.de) pointing to your Ingress controller.

helm repo add iot-stack https://tum-gis.github.io/tum-gis-iot-stack-k8s
helm repo update
helm install iot iot-stack/tum-gis-iot-stack-k8s \
  -n iot-stack --create-namespace \
  --atomic --wait \
  --set 'global.ingress.domains={www.my-iot-stack.de}' \
  --set 'global.ingress.certManager.issuerEmail=myemailaddress@example.de'

The default username and password for all services is: user: admin, pwd: changeMe.

For local testing check out the examples.

Note: To try out alpha/beta releases, add the --devel option to the helm install command.

📖 Table of content

📥 Application stack

  • Fraunhofer IOSB FROST-Server: Server implementation of the OGC SensorThings API with HTTP and MQTT endpoint.

  • PostgreSQL/PostGIS: Database backend for the FROST-Server. The chart offers two options:

  • Grafana: Data visualization and dashboards.

  • Node-RED: Wiring together hardware devices, APIs and online services.

  • caddy: Webserver for hosting web content like documentations or landing pages for the deployment.

  • NGINX Ingress Controller: Route traffic to the applications of the stack. Optional dependency, often provided in your cluster.

  • cert-manager: Automatic SSL certificate issuing from e.g. Let's Encrypt. Optional dependency, often provided in your cluster.

❓ Getting started

To get this up an running in seconds, check out the examples. You will find examples for:

📃 Documentation

The documentation of the chart is located in the chart directory: charts/tum-gis-iot-stack-k8s

The documentation for internal dependencies is located in their folders too:

External dependencies are documented here:

🚀 Usage

  1. Get a fully-qualified domain name (FQDN) and configure it to point to the public IP address of the LoadBalancer service of your Nginx ingress controller.

  2. Add and update Helm repo

    helm repo add iot-stack https://tum-gis.github.io/tum-gis-iot-stack-k8s
    helm repo update
  3. Adapt settings according to your needs e.g. in values.yml or create a local values.yml to overwrite settings. Examples e.g. for a local testing deployment are are available in examples. values.yml is documented in charts/tum-gis-iot-stack-k8s.

  4. Install stack

    helm install iot iot-stack/tum-gis-iot-stack-k8s \
      -n iot-stack --create-namespace \
      --atomic --wait \
      --values my-values.yml

🛠️ Contributing

Bug fixes, issue reports and contributions are greatly appreciated.

Repository setup

Build Chart documentation

The documentation of this chart is located in this repository in the charts/tum-gis-iot-stack-k8s folder and consists of Markdown files, that are generated using norwoodj/helm-docs. To keep the documentation in sync with the source files, it is recommended to use pre-commit to automatically update the docs with every commit.

To generate a markdown documentation for this chart using norwoodj/helm-docs run this from the repo root.

docker run --rm --volume "$PWD/charts/tum-gis-iot-stack-k8s:/helm-docs" -u $(id -u) jnorwood/helm-docs:latest

Contributors

🎓 Research

This chart was developed for the course Geo Sensor Networks and the Internet of Things.

Cite this repository

To cite this repository, please use the DOI provided by Zenodo. If you want to reference a specific release version of the software, click the badge and navigate to the desired version on the page.

DOI

📝 License

This Helm chart is distributed under the Apache License 2.0. See LICENSE for more information.

🤝 Thanks

  • Fraunhofer IOSB for their great implementation of the OGC SensorThingsAPI.