Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Introduction

The guide covers the installation details for common components for ELIOT which are applicable the Blueprints ELIOT IOT Gateway and ELIOT SD-WAN.

...

For KubeEdge the connection between the ELIOT Manager and ELIOT Edge Node is being established via Web Socket. Currently KubeEdge does not support Container Networking Interface.

How to use this document

The document includes details of prerequisites /pre-installation, installation and uninstalls steps.

...

For Installation, there are two mode Auto Deployment installation script steps and manual installation.

Deployment Architecture

For Release 1.0 the Deployment Architecture consists of two nodes  ELIOT Manager and a single ELIOT Edge Node.

ELIOT Manager acts as the Controller Node managing the ELIOT Edge Node(s) and the containerized applications running on the various ELIOT Edge Nodes.

Pre-Installation Requirements

Hardware Requirements

Note

Number of Hardware requirements depends mainly on the Use Case Scenario. A use case can have one to multiple ELIOT Edge Nodes

Note: For ELIOT Release 1.0 ELIOT Manager is acting a dual role Jump server (to execute the setup script) and as the Kubernetes Master. Also currently the below hardware capability are mentioned for the Virtual Machines.

...

ELIOT Edge Node - Ubuntu OS 16.04 / 18.04 installed with networking capability and internet capability.

Minimum Hardware Requirements

ELIOT Manager
HW AspectRequirements
# of Node(s)A virtualized machine hosted in any Cloud Provider having internet connectivity.
CPUMinimum 1 socket x86_AMD64 or ARM64 with Virtualization support.
RAM

4 GB, it depends on the number of ELIOT Edge nodes which will be managed by ELIOT Manager.

For Deployment in Development environment 8 GB is sufficient.


Disk120 GB ~ 512GB (Depending on the overall ELIOT Topology)
Networks1

...

ELIOT Edge Node(s)
HW AspectRequirements
# of Node(s)1 Eliot Edge Node
CPUMinimum 1 socket x86_AMD64 or ARM64.
RAM

1 GB, it depends on the number of ELIOT Edge nodes which will be managed by ELIOT Manager.

For Deployment in Development environment 4 GB is sufficient.


Disk20 GB ~ 256 GB
Network1

Recommended Hardware Requirements

ELIOT Manager
HW AspectRequirements
ccA virtualized machine hosted in any Cloud Provider having internet connectivity.
CPUMinimum 1 socket x86_AMD64 or ARM64 with Virtualization support.
RAM

8 GB ~ 64 GB it depends on the number of ELIOT Edge nodes which will be managed by ELIOT Manager.

For Deployment in Development environment 4 GB is sufficient.


Disk120 GB ~ 512GB (Depending on the overall ELIOT Topology)
Networks2 to 4 Network Interfaces with public IP.

...

ELIOT Edge Node(s)
HW Aspect

#of Node(s)

1 Eliot Edge Node
CPUMinimum 1 socket x86_AMD64 or ARM64 with Virtualization support.
RAM

2 GB ~ 16 GB it depends on the number of ELIOT Edge nodes which will be managed by ELIOT Manager.

For Deployment in Development environment 4 GB is sufficient


Disk20 GB ~ 256GB (Depending on the overall ELIOT Topology)
Networks2 Network Interfaces .

Software Prerequisites

  • Virtual Machines preinstalled with Ubuntu 16.04
  • root user created in the ELIOT Manager and ELIOT Edge Node
  • SSH Server running in both the Nodes.
  • sshpass installed in ELIOT Manager
  • scp installed in ELIOT Manager and ELIOT Edge Node
  • GO Lang installed in ELIOT Manager and ELIOT Edge Node (Note : This is required when we are setting up the ELIOT using KubeEdge.)
  • git should be installed in ELIOT Manager and ELIOT Edge Node.

Database Prerequisites

Schema scripts

N/A

Other Installation Requirements

Jump Host Requirements

N/A

Network Requirements

  • Internet Connectivity in both ELIOT Manager and ELIOT Edge Node
  • ELIOT Manager and ELIOT Node should be able to ping each other. Same network

Bare Metal Node Requirements

N/A

Execution Requirements (Bare Metal Only)

N/A

Installation High-Level Overview

In ELIOT Release 1.0 for deployment 2 Ubuntu 16.04 Virtual Machines are used.

...

  • ELIOT Deployment using Kubernetes. 
  • ELIOT Deployment using KubeEdge

Bare Metal Deployment Guide

Install Bare Metal Jump Host

Currently ELIOT Deployment have been done in Virtual Machines only but the installation steps and scripts will hold good for execution in Bare Metal also if the hardware and software prerequisites are met.

Creating a Node Inventory File

N/A

Creating the Settings Files

N/A

Running

N/A

Virtual Deployment Guide

For Virtual Deployment two Ubuntu VM's are required one for ELIOT Manager and ELIOT Edge Node both the node should have internet connectivity , network interface and network connectivity between the two VM's

Standard Deployment Overview

ELIOT Portal Setup:

ELIOT Portal Front-End:

Pre-requisites - Open source softwares required:

...

Angular8                                                    -     8.2.2 / any latest version

Install nvm - Node Version Manager

Node Version Manager helps to manage the version of node and also used to switch between the versions with ease.

...

Note

Please check the installation of nvm using then proceed

nvm --version command should output the version of node version manager

Install nodejs server

Nodejs will play the role of server to run our ELIOT Portal UI

...

Note

$ nvm install node

If the above command is issued instead of the mentioned command, it will install the latest versions of npm and node server

Please check the installation of node and npm using 

root@akraino-slave-001:# npm --version
root@akraino-slave-001:# node --version

npm --version command should display the version of npm

node --verison should display version of node

Install Angular 8:

Angular 8 is a open source framework used to create responsive dynamic single page web applications.  It internally uses typescript.  

...

No Format
root@akraino-slave-001:# npm install -g @angular/cli@latest
Setup ELIOT Portal by downloading the node modules as dependencies:

ELIOT portal UI code of angular8 requires some dependency packages of node modules. By executing the following commands, dependency node modules will get downloaded automatically

...

Note

Default, it will start the UI on 4200 port

https://localhost:4200


ELIOT Portal Backend Setup:

The ELIOT Portal Back-End module has to be executed on the ELIOT Manager Node. The backend server will receive REST API requests from ELIOT Frontend and response back the results of the ELIOT Cluster.

...

Code Block
languagebash
titleStart ELIOT Backend
root@akraino-slave-001:# git clone "https://gerrit/akraino.org/r/eliot" [If this step is already executed can be ignored]
root@akraino-slave-001:# cd eliot/releases/v1.1.0/eliotui/be/
root@akraino-slave-001:# tar -xvzf eliotui-be-$version-$OS-$ARCH.tar.gz
root@akraino-slave-001:# jar -jar eliotk8sclient.jar. [The command will start the Spring Boot Application.]

ELIOT Minimal OS setup:

              In ELIOT , we are minimalising the CentOS Minimal iso by removing the unnecessary packages and we have builded Bootable iso.  ELIOT Minimal OS helps to make nodes as Lightweight and also increases the  productivity of Edge Nodes.  ELIOT Nodes will ideally use Minimal OS.   


Download ELIOT Minimal OS:

Download the ELIOT Minimal OS from ftp server and store the iso.  

For ELIOT edge nodes, we can use ELIOT Minimal OS .  Then, ELIOT topology can be setup as described below in ELIOT Deployment section.


Create VM's from ELIOT Minimal OS iso:

Vm's can be created on Edge nodes using Virtual Box as well as other VM creator tools.  

...

Note

While installing select Network & Host Name → Ethernet as ON

ELIOT Minimal OS currently tested on Virtual Environment only.

ELIOT Deployment using Kubernetes

Clone the ELIOT git repo in ELIOT Manager node. It will create eliot folder, for executing the script go to $HOME/eliot/scripts folder.

...

No Format
root@akraino-slave-001:~/eliot/scripts#./setup.sh

ELIOT Deployment using KubeEdge

Clone the ELIOT git repo in ELIOT Manager node. It will create eliot folder, for executing the script go to $HOME/eliot/scripts/src folder.

...

No Format
root@akraino-slave-001:#git clone "https://gerrit.akraino.org/r/eliot" 
root@akraino-slave-001:#cd eliot/scripts/ 
root@akraino-slave-001:~/eliot/scripts#vim config_kubeedge
root@akraino-slave-001:~/eliot/scripts#./kubeedge_setup.sh


Snapshot Deployment Overview

There are two images created for Manager and Node machines. These are .qcow2 files. After deploying the VMs using these images, your setup for ELIOT is ready in minutes. Following is the link to the document to use these images:

         https://docs.google.com/document/d/1TwtDRvxJ_0IFzc5KvO7aaOh3If-jhpCSrccjttQA4LE/edit?usp=sharing

Special Requirements for Virtual Deployments

N/A

Install Jump Host

N/A

Verifying the Setup - VM's

N/A

Upstream Deployment Guide

Upstream Deployment Key Features

N/A

Special Requirements for Upstream Deployments

N/A

Scenarios and Deploy Settings for Upstream Deployments

N/A

Including Upstream Patches with Deployment

N/A

Running

N/A

Interacting with Containerized Overcloud

N/A

Verifying the Setup

Verifying ELIOT Kubernetes Deployment

The setup.sh script will install the ELIOT Manager and one ELIOT Edge Node. After script execution is completed the kubernetes cluster setup can be checked by executing kubectl get nodes. It will show both the ELIOT Manager and the ELIOT Edge Node as ready.

The setup script also deploys NGINX server on the ELIOT Edge Node and verifies whether its deployed successful or not.

Developer  Guide and Troubleshooting

Uninstall Guide

Following two files can be used to revert the changes made by ELIOT deployment through kubernetes.

  1. kubernetes_reset.sh:
    Purpose: There were certain issues occurring when the setup.sh file was executed again on the same setup. it threw error saying ‘the file/port in already in use’ when setup.sh file was executed again.
    Solution: A list was prepared for errors occurring on re-execution of setup.sh file. To fix them, some commands were executed manually to reset the changes. Once the list was finalized, these were consolidated in a .sh file. The file is in eliot/scripts/ folder.
    What it does:
    -- Resets kubeadm changes on both Manager and Edge Node machine.
    -- Installs iptables, ipvsadm required to restart kubectl service on both Manager and Edge Node machine.
    -- Restarts kubelet service on both Manager and Edge Node machine.
    -- Releases the port 10250 on both Manager and Edge Node machine.
    -- Deletes kubernetes file on Edge Node machine.

  2. kubernetes_cleanup.sh
    Purpose: There was no file to rollback the changes done by setup.sh.
    Solution: A list of changes done by setup.sh file was prepared and then commands were written to rollback those installations and changes. The file is in eliot/scripts/ folder.
    What it does:
    -- Uninstalls Docker, Kubernetes, Kubectl, Kubeadm, Kubelet on both Manager and Edge Node machine.
    -- Resets kubeadm changes on both Manager and Edge Node machine.
    -- Installs iptables, ipvsadm required to restart kubectl service on both Manager and Edge Node machine.
    -- Restarts kubelet service on both Manager and Edge Node machine.
    -- Releases the port 10250 on both Manager and Edge Node machine.

Troubleshooting

N/A

Error Message Guide

N/A

Maintenance

Blueprint Package Maintenance

Software maintenance

N/A

Hardware maintenance

N/A

Blueprint Deployment Maintenance

N/A

Frequently Asked Questions

N/A

License

Any software developed by the "Akraino ELIOT" Project is licensed under the
Apache License, Version 2.0 (the "License");
you may not use the content of this software bundle except in compliance with the License.
You may obtain a copy of the License at <https://www.apache.org/licenses/LICENSE-2.0>

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

References


Definitions, acronyms and abbreviations