| <!doctype html> |
| <html lang="en"> |
| |
| <head> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
| |
| <link rel="stylesheet" href="/packages/assets/bootstrap/bootstrap.min.css"> |
| |
| <title>Cloud</title> |
| |
| <link rel="stylesheet" href="/packages/assets/css/style.css"> |
| <script src="/packages/assets/js/code.js"></script> |
| |
| <meta name="twitter:card" content="summary"/> |
| <meta name="twitter:image" content="https://eclipse.org/packages/images/icon/twitter_icon.png"/> |
| <meta name="twitter:title" content="Telemetry end-to-end | Cloud"/> |
| <meta name="twitter:description" content="Installations instructions for the Telemetry end-to-end package."/> |
| |
| |
| <link rel="icon" type="image/svg+xml" href="/packages/images/icon/icon.svg" sizes="any"> |
| <link rel="icon" href="/packages/images/icon/icon.png" sizes="192x192"> |
| <link rel="apple-touch-icon-precomposed" href="/packages/images/icon/icon_apple.png" sizes="180x180"> |
| |
| </head> |
| |
| <body> |
| |
| <header> |
| <nav class="navbar navbar-expand-md fixed-top navbar-light bg-light"> |
| <div class="container"> |
| <a class="navbar-brand" href="/packages/"> |
| <img src="/packages/images/icon_brand_navbar.svg" width="30" height="30" alt="Eclipse IoT Packages™"> |
| </a> |
| <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> |
| <span class="navbar-toggler-icon"></span> |
| </button> |
| <div class="collapse navbar-collapse" id="navbarCollapse"> |
| <ul class="navbar-nav mr-auto"><li class="nav-item"> |
| <a |
| class="nav-link" |
| href="/packages/">Home</a> |
| </li> |
| <li class="nav-item"> |
| <a |
| class="nav-link" |
| href="/packages/about/">About</a> |
| </li> |
| <li class="nav-item"> |
| <a |
| class="nav-link" |
| href="/packages/faq/">FAQ</a> |
| </li> |
| <li class="nav-item"> |
| <a |
| class="nav-link" |
| href="/packages/contribute/">Contribute</a> |
| </li> |
| <li class="nav-item"> |
| <a |
| class="nav-link" |
| href="/packages/prereqs/">Prerequisites</a> |
| </li> |
| <li class="nav-item"> |
| <a |
| class="nav-link" |
| href="/packages/repository/">Repository</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </nav></header> |
| |
| <main id="main" role="main" > |
| |
| |
| <div><div class="container mt-5"> |
| <div class="row"> |
| <div class="col-12 col-sm-9 col-xl-8"> |
| <h1>Telemetry end-to-end</h1> |
| <p class="lead">A package showing telemetry data acquisition end-to-end: Microcontroller firmware to cloud side data processing, using Drogue IoT and Apache Kafka in the process.</p></div> |
| |
| <div class="col-12 col-sm-3 col-xl-4 d-flex flex-sm-row-reverse"> |
| <img alt="Page logo" src="/packages/packages/telemetry-e2e/images/telemetry-e2e-logo.svg" class="img-fluid m-lg-3 d-block align-self-center " style="max-height: 10rem;"/> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div class="container"> |
| |
| <nav class="nav nav-pills nav-fill mt-2 mb-5"><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/">Overview</a><a class="nav-item nav-link active" href="/packages/packages/telemetry-e2e/10-installation-cloud/">Cloud</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/20-installation-gateway/">Gateway</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/30-installation-device/">Device</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/40-using/">Using it</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/50-understand/">Understanding it</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/60-alternatives/">Alternatives</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/70-cheating/">Cheating</a><a class="nav-item nav-link " href="/packages/packages/telemetry-e2e/90-learn/">Learn more</a></nav> |
| <div class="row"> |
| |
| <div class="col-12 col-md-8 col-lg-9"> |
| |
| <p>You will need a Kubernetes instance, the <code class="language-plaintext highlighter-rouge">kubectl</code> and the <code class="language-plaintext highlighter-rouge">helm</code> tool in order to deploy this package. |
| You will also need to add the Helm chart repository <code class="language-plaintext highlighter-rouge">eclipse-iot</code> to your local setup. Please refer to |
| our <a href="/packages/prereqs">pre-requisites</a> page for details.</p> |
| |
| <p>You might also want to <a href="https://github.com/drogue-iot/drg#installation">install the Drogue IoT command line tool</a> named <code class="language-plaintext highlighter-rouge">drg</code>.</p> |
| |
| <p>While technically any Kubernetes cluster will do, this tutorial focuses on Minikube to keep things as simple |
| as possible. When using Kind or any other Kubernetes cluster, some commands might need to be tweaked a bit.</p> |
| |
| <h2 id="minikube">Minikube</h2> |
| |
| <p>The following command starts up a Minikube cluster suitable for this package:</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>minikube start --cpus 4 --memory 8192 --disk-size 20gb --addons ingress |
| </code></pre></div> </div> |
| |
| <p>Be sure the run the load balancer tunnel, once the instance is started:</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>minikube tunnel # do not abort this command or close the terminal it is running in |
| </code></pre></div> </div> |
| |
| <h2 id="check-access">Check access</h2> |
| |
| <p>Be sure that you are logged in to your Kubernetes cluster:</p> |
| |
| <div class="clipboard"><pre><code>kubectl version</code></pre></div> |
| |
| <p>This should print out the version of the client, but must also print out the version of the server.</p> |
| |
| <p><details><summary>Example output</summary><div> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"clean", BuildDate:"2021-09-15T21:38:50Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"} |
| Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"clean", BuildDate:"2021-09-15T21:32:41Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"} |
| </code></pre></div> </div> |
| </div></details></p> |
| |
| <h2 id="install-the-package">Install the package</h2> |
| |
| <p>This package consists of multiple components. Some of them are installed in the Kubernetes cluster, while the |
| IoT gateway and the device firmware are naturally installed in dedicated devices.</p> |
| |
| <p>This page describes the installation of the cluster components, which is orchestrated using an overarching Helm |
| chart.</p> |
| |
| <p>Assuming you are using Minikube, or have full cluster access, you can simply install this be running the following |
| Helm command:</p> |
| |
| <div class="clipboard"><pre><code>DOMAIN=.$(minikube ip).nip.io |
| helm upgrade --install eclipse-iot-telemetry eclipse-iot/telemetry-e2e \ |
| --timeout 30m \ |
| --set global.domain=$DOMAIN</code></pre></div> |
| |
| <div role="alert" class="alert alert-warning"><h4 class="alert-heading">Ingress validation error </h4> |
| |
| It may be that the deployment fails due to some "ingress" validation error. This is a know issue in the |
| NGINX ingress controllers (see <a class="alert-link" href="https://github.com/kubernetes/ingress-nginx/issues/6245" target="_blank">#6245</a>). Unfortunately, |
| there is currently no proper fix for this. |
| |
| <hr /> |
| |
| <p>However, a workaround exists. You can delete the validation webhook causing the issue:</p> |
| <div class="clipboard"><pre><code>kubectl delete validatingwebhookconfigurations ingress-nginx-admission</code></pre></div> |
| |
| <p class="mb-0">After that, re-run the <code>helm upgrade</code> command above.</p> |
| |
| </div> |
| |
| <h2 id="be-patient">Be patient</h2> |
| |
| <p>Depending on your internet speed and overall I/O and CPU performance, this installation may take a bit. Normally it |
| will finish in around 15 minutes.</p> |
| |
| <p>Assuming you have the <code class="language-plaintext highlighter-rouge">watch</code> command, you can watch the progress using the following command:</p> |
| |
| <div class="clipboard"><pre><code>watch kubectl get pods</code></pre></div> |
| |
| <h2 id="once-it-is-ready">Once it is ready</h2> |
| |
| <p>Once the installation is ready, the Helm command will print out some details on the installation.</p> |
| |
| <p>This will also give you the URL to the web console and the command as well as the access credentials.</p> |
| |
| <h2 id="what-is-next">What is next?</h2> |
| |
| <p>Go to the next page and set up the IoT gateway.</p> |
| |
| </div> |
| |
| <div class="col-12 col-md-4 col-lg-3 |
| |
| "> |
| |
| <div class="card req-card"> |
| <div class="card-header text-center"><h5>Requirements</h5></div> |
| <ul class="list-group list-group-flush"> |
| |
| |
| |
| |
| |
| |
| <li class="list-group-item"> |
| |
| <dl class="row"> |
| <dt class="col-sm-6">Kubernetes</dt> |
| <dd class="col-sm-6 text-right">1.19.x</dd> |
| </dl> |
| |
| </li> |
| |
| |
| |
| |
| <li class="list-group-item"> |
| |
| <dl class="row"> |
| <dt class="col-sm-6">CPUs</dt> |
| <dd class="col-sm-6 text-right">4</dd> |
| </dl> |
| |
| </li> |
| |
| |
| |
| |
| <li class="list-group-item"> |
| |
| <dl class="row"> |
| <dt class="col-sm-6">Memory</dt> |
| <dd class="col-sm-6 text-right">8192 MiB</dd> |
| </dl> |
| |
| </li> |
| |
| |
| |
| |
| <li class="list-group-item"> |
| |
| <dl class="row"> |
| <dt class="col-sm-6">Disk</dt> |
| <dd class="col-sm-6 text-right">20 GiB</dd> |
| </dl> |
| |
| </li> |
| |
| |
| </ul> |
| |
| <div class="card-body"><p>Will require cluster admin privileges and an active Ingress controller.</p> <p>You will also need a micro:bit v2 and a Raspberry Pi 3+ to get the most out of this package.</p></div> |
| |
| </div> |
| |
| <p> |
| |
| |
| <div class="position-sticky" style="top: 4rem;"> |
| |
| |
| <aside> |
| <div class="card"> |
| <div class="card-body"> |
| <h5 class="card-title">Table of contents</h5> |
| <div id="toc" class="toc"></div> |
| </div> |
| </div> |
| </aside> |
| |
| <script>generateToc("#toc", "h2[id], h3[id], h4[id]");</script> |
| |
| |
| </div> |
| |
| |
| |
| </p> |
| |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| </main> |
| |
| <footer class="page-footer"> |
| |
| <div class="container"> |
| |
| <div class="row"> |
| |
| |
| |
| |
| |
| <div class="col-6 col-md"> |
| |
| |
| <h5>Eclipse IoT Packages</h5> |
| <ul class="list-unstyled"> |
| |
| <li> |
| <a class="text-muted" href="/packages/">Home</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="/packages/about">About</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="/packages/contribute">Contribute</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://eclipse.org/security">Security</a> |
| </li> |
| |
| </ul> |
| |
| </div> |
| |
| |
| <div class="col-6 col-md"> |
| |
| |
| <h5>Eclipse IoT</h5> |
| <ul class="list-unstyled"> |
| |
| <li> |
| <a class="text-muted" href="https://iot.eclipse.org">Top Level Project</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/org/workinggroups/iotwg_charter.php">Working group</a> |
| </li> |
| |
| </ul> |
| |
| </div> |
| |
| |
| <div class="col-6 col-md"> |
| |
| |
| <h5>Legal</h5> |
| <ul class="list-unstyled"> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/legal/privacy.php">Privacy Policy</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/legal/termsofuse.php">Terms of Use</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/legal/copyright.php">Copyright Agent</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/legal/epl-2.0/">Eclipse Public License</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/legal">Legal Resources</a> |
| </li> |
| |
| </ul> |
| |
| </div> |
| |
| |
| <div class="col-6 col-md"> |
| |
| |
| <h5>Eclipse Foundation</h5> |
| <ul class="list-unstyled"> |
| |
| <li> |
| <a class="text-muted" href="https://eclipse.org/org">About us</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/org/foundation/contact.php">Contact us</a> |
| </li> |
| |
| <li> |
| <a class="text-muted" href="https://www.eclipse.org/org/foundation/directors.php">Board of Directors</a> |
| </li> |
| |
| </ul> |
| |
| </div> |
| |
| |
| |
| </div> |
| |
| |
| <div class="row"> |
| <div class="col-12 col-md text-muted">Copyright © Eclipse Foundation, Inc. All Rights Reserved.</div> |
| </div> |
| |
| |
| </div> |
| |
| </footer> |
| |
| |
| <script src="/packages/assets/popper.min.js"></script> |
| <script src="/packages/assets/jquery.min.js"></script> |
| <script src="/packages/assets/bootstrap/bootstrap.min.js"></script> |
| |
| <script src="/packages/assets/clipboard.min.js"></script> |
| <script src="/packages/assets/clipboard.js"></script> |
| |
| </body> |
| |
| </html> |