The guide covers the installation details for common components for ELIOT which are applicable the Blueprints ELIOT IOT Gateway and ELIOT SD-WAN.
This guide provides the information for setting up the ELIOT Environment which includes ELIOT Manager and ELIOT Edge Node(s) with details of software and hardware specifications.
For Release-2.0 the scope of the guide covers two ELIOT deployments one is using Kubernetes and the other one using Kubeedge (Lightweight Kubernetes).
The common components include ELIOT Lightweight Tailored OS, ELIOT UI , ELIOT Command Line Interface to bootstrap the ELIOT Cluster Installation.
The ELIOT Manager can be any Cloud Virtual Machine having Ubuntu OS 16.04 and should be able to ping and SSH to the Eliot Edge Node. The ELIOT Edge Node will be a Virtual Machine having Ubuntu 0S 16.04.
For Kubernetes setup Kubeadm tool is being used and for Container Networking Interface Calico plugin is being used.
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.
The document includes details of prerequisites /pre-installation, installation and uninstalls steps.
The prerequisites and pre-installation software and hardware should be ready before executing the installation steps.
For Installation, there are two mode Auto Deployment installation script steps and manual installation.
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.
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 Manager - One VM - 8 vCPU - 32 GB RAM (can be hosted in any cloud provider) with Ubuntu OS having internet and network connectivity with ELIOT Edge Node.
ELIOT Edge Node - Ubuntu OS 16.04 / 18.04 installed with networking capability and internet capability.
ELIOT Manager | |
---|---|
HW Aspect | Requirements |
# of Node(s) | A virtualized machine hosted in any Cloud Provider having internet connectivity. |
CPU | Minimum 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. |
Disk | 120 GB ~ 512GB (Depending on the overall ELIOT Topology) |
Networks | 1 |
ELIOT Edge Node(s) | |
---|---|
HW Aspect | Requirements |
# of Node(s) | 1 Eliot Edge Node |
CPU | Minimum 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. |
Disk | 20 GB ~ 256 GB |
Network | 1 |
ELIOT Manager | |
---|---|
HW Aspect | Requirements |
cc | A virtualized machine hosted in any Cloud Provider having internet connectivity. |
CPU | Minimum 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. |
Disk | 120 GB ~ 512GB (Depending on the overall ELIOT Topology) |
Networks | 2 to 4 Network Interfaces with public IP. |
ELIOT Edge Node(s) | |
---|---|
HW Aspect | |
#of Node(s) | 1 Eliot Edge Node |
CPU | Minimum 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 |
Disk | 20 GB ~ 256GB (Depending on the overall ELIOT Topology) |
Networks | 2 Network Interfaces . |
N/A
N/A
N/A
N/A
In ELIOT Release 1.0 for deployment 2 Ubuntu 16.04 Virtual Machines are used.
The steps includes to setup the following two environments :
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.
N/A
N/A
N/A
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
Pre-requisites - Open source softwares required:
Node Packet Manager ( npm ) - 6.10.2 / any latest version
Node.js - 12.9.0 / any latest version
Angular8 - 8.2.2 / any latest version
Node Version Manager helps to manage the version of node and also used to switch between the versions with ease.
root@akraino-slave-001:$ curl https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash |
Close and reopen the terminal.
root@akraino-slave-001:$ source ~/.profile root@akraino-slave-001:$ nvm --version |
Please check the installation of nvm using then proceed nvm --version command should output the version of node version manager |
Nodejs will play the role of server to run our ELIOT Portal UI
Below command will install latest version of npm (Node Packet manager) and nodejs
root@akraino-slave-001:# nvm install v12.9.0 |
$ 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 npm --version command should display the version of npm node --verison should display version of node |
Angular 8 is a open source framework used to create responsive dynamic single page web applications. It internally uses typescript.
Below command will install Angular 8 which is an open source software distribution by google
root@akraino-slave-001:# npm install -g @angular/cli@latest |
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
root@akraino-slave-001:# git clone "https://gerrit/akraino.org/r/eliot" root@akraino-slave-001:# cd eliot/common/eliot-ui/frontend-src root@akraino-slave-001:# npm install root@akraino-slave-001:# npm start |
Default, it will start the UI on 4200 port https://localhost:4200 |
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.
The ELIOT Portal Backend module has to be installed only after the ELIOT Cluster has been setup or at least the ELIOT Manager with running Kubernetes Cluster. In the ELIOT Manager node kubernetes config file should be present in $HOME/.kube folder with admin access. |
Software Prerequisites:
1. Java Version 1.8 [ https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html]
Note: Other software prerequisites are similar to the one mentioned required for ELIOT Manager node.
Steps to Run ELIOT UI Backend Server:
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.] |
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 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.
Vm's can be created on Edge nodes using Virtual Box as well as other VM creator tools.
Virtual Box is a powerful Virtualization Open source tool ( Professional solution ). Below are the procedures to create ELIOT Edge VM's using Virtual box
Note: Configuring Network will give you proper IP for your created ELIOT Node
Repeat the same procedure to create number of ELIOT Nodes
While installing select Network & Host Name → Ethernet as ON ELIOT Minimal OS currently tested on Virtual Environment only. |
Clone the ELIOT git repo in ELIOT Manager node. It will create eliot folder, for executing the script go to $HOME/eliot/scripts folder.
Edit the nodelist file with ELIOT Edge Node details. Replace the below contents with the actual value with '|' separated.
The below details are required in the setup.sh for sshpass command. The details are required by sshpass to login to ELIOT Edge Node from ELIOT Manager and execute the deployment scripts in the ELIOT Edge Node.
<eliotedgenodeusername>|<eliotedgenodeip>|<eliotedgenodepassword>
The ELIOT Edge Node should be reachable from ELIOT Manager and ssh should work from ELIOT Manager to ELIOT Edge node as a prerequisite.
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 nodelist |
After editing the nodelist file , execute the setup.sh script. The setup.sh script internally installs Docker and Kubernetes with Calico CNI plugin and RBAC for authorization.
root@akraino-slave-001:~/eliot/scripts#./setup.sh |
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.
Edit the config_kubeedge file with ELIOT Manager and ELIOT Edge Node
The format of config_kubeedge file is as follows :
edgenodeusr=""
edgenodeip=""
edgenodepassword=""
masternodeusr=""
masternodeip=""
masternodepassword=""
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 |
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
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
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.
Following two files can be used to revert the changes made by ELIOT deployment through kubernetes.
N/A
N/A
N/A
N/A
N/A
N/A
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.