{"id":27827,"date":"2021-04-12T07:31:08","date_gmt":"2021-04-12T05:31:08","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=21113"},"modified":"2022-11-21T11:59:10","modified_gmt":"2022-11-21T10:59:10","slug":"introduction-to-iofog","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/","title":{"rendered":"Introduction to ioFog"},"content":{"rendered":"<p>ioFog is an edge computing platform for deploying and managing microservices. It is backed by several contributors, most notably the Eclipse Foundation.<\/p>\n<p>In this blog post I want to show you how to set up an ioFog network with its basic components.<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#Edge-Computing\" >Edge Computing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#Getting-started\" >Getting started<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#Deploying-the-components\" >Deploying the components<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#Deploying-microservices\" >Deploying microservices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#Taking-it-to-the-cloud\" >Taking it to the cloud<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#Where-to-go-from-here\" >Where to go from here?<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Edge-Computing\"><\/span>Edge Computing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Edge Computing is a pattern in network design that aims to bring computing capabilities closer to where they are needed \u2013 in an effort to reduce bandwidth requirements and latency. This design lends itself well to IoT use cases and has often been adopted for IoT networks. The IoT use case sees sensors and other devices connected to edge nodes that are physically close to them. Edge nodes can be powerful enough to run computations such as analytics on the collected data. The results of those calculations are then sent to the controller nodes, either located in the cloud or in an on-location data center.<\/p>\n<p>If you want to learn more about the concept of edge computing, take a look at <a href=\"https:\/\/www.inovex.de\/blog\/edge-computing-introduction\/\">this blog article<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Getting-started\"><\/span>Getting started<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>For first trying out ioFog I recommend you start with a local installation which uses Docker to deploy its components. We start by installing <code>iofogctl<\/code>, the ioFog command line interface. As you can probably guess from the name, it is inspired by <code>kubectl<\/code>. If you are on a debian-based Linux, you can install it using these commands:<\/p>\n<pre class=\"lang:sh decode:true\">curl https:\/\/packagecloud.io\/install\/repositories\/iofog\/iofogctl\/script.deb.sh | sudo bash\r\nsudo apt-get install iofogctl=2.0.2<\/pre>\n<p>The instructions for other systems can be found <a href=\"https:\/\/iofog.org\/docs\/2\/getting-started\/quick-start-local.html\">here<\/a>.<\/p>\n<p>A quick <code>iofog version<\/code> should print out a version number, confirming a successful installation.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Deploying-the-components\"><\/span>Deploying the components<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>First up is the controller. It is the heart of an ioFog edge network. It handles agents, microservices and users. To deploy the controller, create a file named <code>quickstart.yml<\/code> and paste in the following content:<\/p>\n<pre class=\"lang:yaml decode:true\" title=\"quickstart.yml\">---\r\napiVersion: iofog.org\/v2\r\nkind: LocalControlPlane\r\nmetadata:\r\n  name: ecn\r\nspec:\r\n  iofogUser:\r\n    name: &lt;name&gt;\r\n    surname: &lt;surname&gt;\r\n    email: &lt;email&gt;\r\n    password: &lt;password&gt;\r\n  controller:\r\n    container:\r\n      image: iofog\/controller:2.0.1\r\n---\r\napiVersion: iofog.org\/v2\r\nkind: LocalAgent\r\nmetadata:\r\n  name: local-agent\r\nspec:\r\n  container:\r\n    image: iofog\/agent:2.0.2<\/pre>\n<p>Pick your own names, e-mail address (does not have to be a real one) and password. As you can see, the file structure is also very similar to Kubernetes. The other thing to note here is that we are defining two components at once: the controller and an agent named &#8222;local-agent&#8220;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-21171\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-300x94.png\" alt=\"Abbildung zu ioFoq Architecture\" width=\"300\" height=\"94\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-300x94.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-1024x320.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-768x240.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-1536x481.png 1536w, https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-2048x641.png 2048w, https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-1920x601.png 1920w, https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-400x125.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/iofog-architecture-360x113.png 360w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The agents are the worker nodes of the ioFog edge network. They are responsible for managing the Docker containers and images. Agents are commonly deployed to the very edge of the network, communicating with sensors and providing the means to process your data.<\/p>\n<p>Start the deployment using <code>iofogctl deploy -f quickstart.yml<\/code>. Give it a few seconds to deploy, then check the output of <code>iofogctl get all<\/code>. It should look similar to this:<\/p>\n<pre class=\"lang:sh decode:true\">NAMESPACE\r\ndefault\r\n\r\nCONTROLLER      STATUS          AGE             UPTIME          VERSION         ADDR            PORT\r\nlocal           online          17m46s          17m49s          2.0.1           0.0.0.0         51121\r\n\r\nAGENT           STATUS          AGE             UPTIME          VERSION         ADDR\r\nlocal-agent     RUNNING         17m45s          14m13s          2.0.2           localhost\r\n\r\nAPPLICATION     RUNNING         MICROSERVICES\r\n\r\nMICROSERVICE    STATUS          AGENT           VOLUMES         PORTS\r\n\r\nVOLUME          SOURCE          DESTINATION     PERMISSIONS     AGENTS\r\n\r\nROUTE           SOURCE MSVC     DEST MSVC<\/pre>\n<p>Since we are running a local deployment, both the controller and agent are running locally in Docker containers. If you are curious, take a look at your running containers. <code>docker ps<\/code> will show three containers related to ioFog.<\/p>\n<pre class=\"lang:sh decode:true\">CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                          NAMES\r\nea574d03ed20        iofog\/router:latest      \"\/qpid-dispatch\/rout\u2026\"   12 minutes ago      Up 12 minutes       0.0.0.0:5672-&gt;5672\/tcp, 0.0.0.0:56721-56722-&gt;56721-56722\/tcp   iofog_Tj4gzmwMNzpCJFLNjDNdYJhg8jzh7L7C\r\n3c5d0d5b848b        iofog\/agent:2.0.2        \"sh \/start.sh\"           14 minutes ago      Up 14 minutes                                                                      iofog-agent\r\ne2e8689a48cb        iofog\/controller:2.0.1   \"node \/usr\/local\/lib\u2026\"   18 minutes ago      Up 18 minutes       0.0.0.0:51121-&gt;51121\/tcp, 0.0.0.0:8008-&gt;80\/tcp                 iofog-controller<\/pre>\n<p>Additionally to the controller and agent, there is also a container for the router. The router is created automatically and its purpose is to enable microservices to communicate with each other. It also provides proxy services, which are needed to route requests coming from outside of the edge network.<\/p>\n<p>With these steps completed, we have a functional edge computing network.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Deploying-microservices\"><\/span>Deploying microservices<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>On to deploying our first microservice. The <a href=\"https:\/\/iofog.org\/docs\/2\/getting-started\/quick-start-local.html\">ioFog documentation<\/a> provides a simple microservice example that generates mock heart rate monitoring data. We will use this template in our deployment. Create a file called <code>quickstart-app.yml<\/code> and paste in the following:<\/p>\n<pre class=\"lang:yaml decode:true\" title=\"quickstart-app.yml\">---\r\napiVersion: iofog.org\/v2\r\nkind: Application\r\nmetadata:\r\n  name: health-care-wearable\r\nspec:\r\n  microservices:\r\n  - name: heart-rate-monitor\r\n    agent:\r\n        name: local-agent\r\n      config:\r\n          bluetoothEnabled: false\r\n          abstractedHardwareEnabled: false\r\n    images:\r\n        arm: edgeworx\/healthcare-heart-rate:arm-v1\r\n      x86: edgeworx\/healthcare-heart-rate:x86-v1\r\n      registry: remote\r\n    container:\r\n      rootHostAccess: false\r\n      ports: []\r\n    config:\r\n        test_mode: true\r\n        data_label: Anonymous_Person\r\n  - name: heart-rate-viewer\r\n    agent:\r\n        name: local-agent\r\n    images:\r\n        arm: edgeworx\/healthcare-heart-rate-ui:arm\r\n        x86: edgeworx\/healthcare-heart-rate-ui:x86\r\n      registry: remote\r\n    container:\r\n        rootHostAccess: false\r\n      ports:\r\n        - external: 5000\r\n        internal: 80\r\n        public: 5000\r\n      env:\r\n        - key: BASE_URL\r\n        value: http:\/\/localhost:8080\/data\r\n  routes:\r\n  - name: monitor-to-viewer\r\n    from: heart-rate-monitor\r\n    to: heart-rate-viewer<\/pre>\n<p>As you can see, there are two microservices being created. One that generates the mock data and another that displays it. We also create a route to connect these two microservices together. Deploy the microservices using <code>iofogctl deploy -f quickstart-apps.yml<\/code>. You can check for the status using <code>iofogctl get microservices<\/code>. After the images have been pulled, the services should become available:<\/p>\n<pre class=\"lang:sh decode:true\">NAMESPACE\r\ndefault\r\n\r\nMICROSERVICE            STATUS          AGENT           VOLUMES         PORTS\r\nheart-rate-monitor      RUNNING         local-agent\r\nheart-rate-viewer       RUNNING         local-agent                     5000:80<\/pre>\n<p>You can now view the heart rate monitor web service at http:\/\/localhost:5000. You should see a graph displaying the data that is sent by the heart rate monitor microservice via our route.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-21154 size-large aligncenter\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-12_114517_1167x537-1024x471.png\" alt=\"\" width=\"1024\" height=\"471\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-12_114517_1167x537-1024x471.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-12_114517_1167x537-300x138.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-12_114517_1167x537-768x353.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-12_114517_1167x537-400x184.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-12_114517_1167x537-360x166.png 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-12_114517_1167x537.png 1167w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Communication between the viewer and monitor microservice is done via the ioFog SDK. You can use the SDK when writing your own microservices. It is available for multiple languages, including C#, C, C++, Go, Java, JavaScript and Python. Microservices do not have to use the SDK but it simplifies communication between ioFog nodes.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Taking-it-to-the-cloud\"><\/span>Taking it to the cloud<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Up until now, our deployment has been local only. If we think in terms of real world scenarios, our agents would be as close to the sensors as possible. That way, latency would be minimized and the aggregated data could be sent off to the controller which is usually hosted in the cloud or a remote data center. Putting the heart rate monitor web service onto a different host (or the cloud) would also make sense. We would then be able to call our heart rate dashboard from anywhere.<\/p>\n<p>Before we continue, it is best to clean up our local deployment using <code>iofogctl delete all<\/code>. If you do not clean up, you might get errors in iofogctl after deploying the remote controller. Right now, using remote resources together with local resources does not seem to work. It is also not intended to be used like that since the local deployment is more of a demonstration of ioFog.<\/p>\n<p>iofogctl uses SSH to connect to remote hosts. Copy your SSH key to each host you want to connect to. Your user also needs to have root privileges, as some commands that iofogctl issues need it. In order for that to work properly, you also need to have a password-less sudo setup.<\/p>\n<p>Another thing to look out for is that the controller uses the ports 51121 and 80. Take note if you are already running a webserver on this machine.<\/p>\n<p>Again, we will start with the controller: create a file <code>remotecontroller.yml<\/code> with the following contents:<\/p>\n<pre class=\"lang:yaml decode:true\" title=\"remotecontroller.yml\">---\r\napiVersion: iofog.org\/v2\r\nkind: ControlPlane\r\nmetadata:\r\n  name: remotecontroller\r\nspec:\r\n  iofogUser:\r\n    name: &lt;name&gt;\r\n    surname: &lt;surname&gt;\r\n    email: &lt;email&gt;\r\n    password: &lt;password&gt;\r\n  controllers:\r\n  - name: controller-1\r\n    host: &lt;ip address&gt;\r\n    ssh:\r\n      user: &lt;username&gt;\r\n      keyFile: ~\/.ssh\/id_rsa<\/pre>\n<p>Fill in the placeholders with your details. Pay special attention to the SSH section. The user and key that you give here has to have access to your remote host. Deploy the changes using <code>iofogctl deploy -f remotecontroller.yml<\/code>.<\/p>\n<pre class=\"lang:sh decode:true\">NAMESPACE\r\ndefault\r\n\r\nCONTROLLER      STATUS          AGE             UPTIME          VERSION         ADDR            PORT\r\ncontroller-1    online          -               24m4s           2.0.1           192.168.122.107 51121<\/pre>\n<p>Now we need a new agent. We cannot use our existing one, because that one was a LocalAgent. Create a file <code>remoteagent.yml<\/code> to create a remote agent.<\/p>\n<pre class=\"lang:yaml decode:true\" title=\"remoteagent.yml\">---\r\napiVersion: iofog.org\/v2\r\nkind: Agent\r\nmetadata:\r\n  name: agent-1\r\nspec:\r\n  host: &lt;ip address&gt;\r\n  ssh:\r\n    user: &lt;username&gt;\r\n    keyFile: ~\/.ssh\/id_rsa<\/pre>\n<p>Note that you cannot deploy the agent on the same host that you deployed the controller on. Agents always have to run on their own host.<\/p>\n<p>Now we can deploy the heart rate microservices. We can use the old <code>quickstart-app.yml<\/code> file with one modification: Replace the agent with your agent name (in our example \u201cagent-1\u201c).<\/p>\n<pre class=\"minimize:true lang:yaml decode:true\" title=\"quickstart-app.yml\">---\r\napiVersion: iofog.org\/v2\r\nkind: Application\r\nmetadata:\r\n  name: health-care-wearable\r\nspec:\r\n  microservices:\r\n  - name: heart-rate-monitor\r\n    agent:\r\n        name: agent-1\r\n      config:\r\n          bluetoothEnabled: false\r\n          abstractedHardwareEnabled: false\r\n    images:\r\n        arm: edgeworx\/healthcare-heart-rate:arm-v1\r\n      x86: edgeworx\/healthcare-heart-rate:x86-v1\r\n      registry: remote\r\n    container:\r\n      rootHostAccess: false\r\n      ports: []\r\n    config:\r\n        test_mode: true\r\n        data_label: Anonymous_Person\r\n  - name: heart-rate-viewer\r\n    agent:\r\n        name: agent-1\r\n    images:\r\n        arm: edgeworx\/healthcare-heart-rate-ui:arm\r\n        x86: edgeworx\/healthcare-heart-rate-ui:x86\r\n      registry: remote\r\n    container:\r\n        rootHostAccess: false\r\n      ports:\r\n        - external: 5000\r\n        internal: 80\r\n        public: 5000\r\n      env:\r\n        - key: BASE_URL\r\n        value: http:\/\/localhost:8080\/data\r\n  routes:\r\n  - name: monitor-to-viewer\r\n    from: heart-rate-monitor\r\n    to: heart-rate-viewer<\/pre>\n<p>Deploy the microservices as usual with <code>iofogctl deploy<\/code>.<\/p>\n<pre class=\"lang:sh decode:true\">NAMESPACE\r\ndefault\r\n\r\nMICROSERVICE            STATUS          AGENT           VOLUMES         PORTS\r\nheart-rate-monitor      RUNNING         agent-1\r\nheart-rate-viewer       RUNNING         agent-1                         5000:80<\/pre>\n<p>The microservices are now running on our remote agent and you should be able to access the heart rate viewer on port 5000 on the remote agent.<\/p>\n<p>If you were wondering why the controller needs port 80, try browsing to that address. Use the credentials defined in <code>remotecontroller.yml<\/code> to log in. You should see the ioFog dashboard giving you a nice overview of your resources.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21155 size-fusion-1200\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020-12-13_133727_1919x815-1200x510.png\" alt=\"\" width=\"1200\" height=\"510\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Where-to-go-from-here\"><\/span>Where to go from here?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This concludes the basic setup of an ioFog network. If you want to take the next step, consider looking into <a href=\"https:\/\/iofog.org\/docs\/2\/developing-microservices\/overview.html\">creating your own microservices<\/a>. If you need some inspiration, take a look at the example microservices in the <a href=\"https:\/\/github.com\/eclipse-iofog\/example-microservices\">ioFog GitHub repository<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ioFog is an edge computing platform for deploying and managing microservices. It is backed by several contributors, most notably the Eclipse Foundation. In this blog post I want to show you how to set up an ioFog network with its basic components.<\/p>\n","protected":false},"author":195,"featured_media":21172,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[585,74],"service":[505,712],"coauthors":[{"id":195,"display_name":"Bernhard Willinger","user_nicename":"bwillinger"}],"class_list":["post-27827","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-embedded-systems","tag-iot","service-embedded-systems","service-internet-of-things-iot"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introduction to ioFog - inovex GmbH<\/title>\n<meta name=\"description\" content=\"ioFog is an edge computing platform for deploying and managing microservices. In this blog post I want to show you how to set up an ioFog network with its basic components.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduction to ioFog - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"ioFog is an edge computing platform for deploying and managing microservices. In this blog post I want to show you how to set up an ioFog network with its basic components.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-12T05:31:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-21T10:59:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bernhard Willinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bernhard Willinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Bernhard Willinger\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/\"},\"author\":{\"name\":\"Bernhard Willinger\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/314c9014146dc562c313819cf5eb830f\"},\"headline\":\"Introduction to ioFog\",\"datePublished\":\"2021-04-12T05:31:08+00:00\",\"dateModified\":\"2022-11-21T10:59:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/\"},\"wordCount\":1157,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/intro-to-iofog.png\",\"keywords\":[\"Embedded Systems\",\"IoT\"],\"articleSection\":[\"English Content\",\"General\",\"Infrastructure\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/\",\"name\":\"Introduction to ioFog - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/intro-to-iofog.png\",\"datePublished\":\"2021-04-12T05:31:08+00:00\",\"dateModified\":\"2022-11-21T10:59:10+00:00\",\"description\":\"ioFog is an edge computing platform for deploying and managing microservices. In this blog post I want to show you how to set up an ioFog network with its basic components.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/intro-to-iofog.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/intro-to-iofog.png\",\"width\":1920,\"height\":1080,\"caption\":\"Intro to ioFog Logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/introduction-to-iofog\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to ioFog\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/314c9014146dc562c313819cf5eb830f\",\"name\":\"Bernhard Willinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a7bff22b7dae9ee3294e34cc7ac6de902d730e04614a30861d61dc22f8d26d84?s=96&d=retro&r=gb9df4f73c65406b3e9e904c34d2df071\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a7bff22b7dae9ee3294e34cc7ac6de902d730e04614a30861d61dc22f8d26d84?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a7bff22b7dae9ee3294e34cc7ac6de902d730e04614a30861d61dc22f8d26d84?s=96&d=retro&r=g\",\"caption\":\"Bernhard Willinger\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/bwillinger\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introduction to ioFog - inovex GmbH","description":"ioFog is an edge computing platform for deploying and managing microservices. In this blog post I want to show you how to set up an ioFog network with its basic components.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/","og_locale":"de_DE","og_type":"article","og_title":"Introduction to ioFog - inovex GmbH","og_description":"ioFog is an edge computing platform for deploying and managing microservices. In this blog post I want to show you how to set up an ioFog network with its basic components.","og_url":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2021-04-12T05:31:08+00:00","article_modified_time":"2022-11-21T10:59:10+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog.png","type":"image\/png"}],"author":"Bernhard Willinger","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Bernhard Willinger","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten","Written by":"Bernhard Willinger"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/"},"author":{"name":"Bernhard Willinger","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/314c9014146dc562c313819cf5eb830f"},"headline":"Introduction to ioFog","datePublished":"2021-04-12T05:31:08+00:00","dateModified":"2022-11-21T10:59:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/"},"wordCount":1157,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog.png","keywords":["Embedded Systems","IoT"],"articleSection":["English Content","General","Infrastructure"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/","url":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/","name":"Introduction to ioFog - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog.png","datePublished":"2021-04-12T05:31:08+00:00","dateModified":"2022-11-21T10:59:10+00:00","description":"ioFog is an edge computing platform for deploying and managing microservices. In this blog post I want to show you how to set up an ioFog network with its basic components.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/intro-to-iofog.png","width":1920,"height":1080,"caption":"Intro to ioFog Logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/introduction-to-iofog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Introduction to ioFog"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/314c9014146dc562c313819cf5eb830f","name":"Bernhard Willinger","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/a7bff22b7dae9ee3294e34cc7ac6de902d730e04614a30861d61dc22f8d26d84?s=96&d=retro&r=gb9df4f73c65406b3e9e904c34d2df071","url":"https:\/\/secure.gravatar.com\/avatar\/a7bff22b7dae9ee3294e34cc7ac6de902d730e04614a30861d61dc22f8d26d84?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a7bff22b7dae9ee3294e34cc7ac6de902d730e04614a30861d61dc22f8d26d84?s=96&d=retro&r=g","caption":"Bernhard Willinger"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/bwillinger\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/27827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/195"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=27827"}],"version-history":[{"count":3,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/27827\/revisions"}],"predecessor-version":[{"id":38959,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/27827\/revisions\/38959"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/21172"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=27827"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=27827"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=27827"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=27827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}