Introduction
...
Note: For Development environment two nodes is sufficient, where one node plays a dual role of One-Click Deployment Node and Master Node with other as IotGateway Node.
Figure: ELIOT Deployment Architecture
Note: ELIOT IotGateway Blueprint Deployment has been tested on Cloud VM and is not tested on Bare-Metal Environment. Though, theoretically deployment should work in bare metal, provided hardware and software prerequisites are met. Kindly refer R5 - Test Documentation of Edge Lightweight IotGateway (ELIOT) to get details on the tested deployment.
...
The minimum number of nodes required for a complete ELIOT Topology is three2. (Bare-Metal or Virtual Machines)
...
For Virtual Deployment minimum three2 Virtual machines, following are the virtual machines(OCD and Master on same node) and their usage
No | Usage |
---|---|
1 | One Click Deployment Node |
2 | ELIOT Master Node |
3 | IotGateway Node |
...
root@akraino-mec-0002:~# vi eliot-inventory.ini
For Edge Gallery installation:
MUNO-Mode:
Execute the below command:
cd eliot/blueprints/iotgateway/playbooks
ansible-playbook -i 4. Modify other configuration files
Edit the configuration file so that the IP addresses of the OCD, ELIOT Master Node, and IotGateway Node are <ocp_ip>, <master_ip>, and <edge_ip> respectively.
An example of the description of the configuration file when the admin password of HARBOR is <password> is shown below.
$ eliot/blueprints/iotgateway/playbooks/muno-config/controller/hosts-muno-controller eliot-eg-muno-controller.yml --extra-vars "operation=install" -e "ansible_user=root"ansible-playbook -i
[master]
<master_ip>
$ eliot/blueprints/iotgateway/playbooks/muno-config/edge/hosts-muno-edge eliot-eg-muno-edge.yml --extra-vars "operation=install" -e "ansible_user=root"
For AIO mode:
Execute the below command
cd ealt-edge/ocd/infra/playbooks
root@akraino-mec-0001:~#ansible-playbook eliot-eg-aio-latest.yml -i hosts-aio --extra-vars "operation=install" -e ansible_user=root"
FOR ELIOT Stack:
Execute the below command
Setup environment -
root@akraino-mec-0001:~# ansible-playbook eliot-all.yml -i eliot-inventory.ini --extra-vars "operation=install"
Once the execution is completed in console will see prompt "ELIOTEdge Environment Installed , Components Install ELIOT Master and EDGE Nodes Successfully"
Snapshot Deployment Overview
N/A
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 IotGateway Deployment
Currently the verification is manually done.
- Login to the Master Node and check whether K8S cluster is installed.
- Check the below mentioned components and services are running as Pods / Services in Kubernetes cluster
- Edge Gallery
- grafana
- rabbitmq
- cadvisor
- edgex
- Hawkbit
- opc-ua
- Login to Edge Host and verify the worker node setup
Components and Services running in ELIOT Master Node
Components and Services running ELIOT IotGateway/ Edge Node
Developer Guide and Troubleshooting
Uninstall Guide
Using Ansible Playbooks
controller/var.yml
HARBOR_ADMIN_PASSWORD: <password>
# Could be true or false
# true: Deploy k8s NFS Server to keep the persistence of all pods' data
# false: No need to keep the persistence of all pods' data
# ENABLE_PERSISTENCE: true
ENABLE_PERSISTENCE: false
# ip for portals, will be set to private IP of master node default or
# reset it to be the public IP of master node here
# PORTAL_IP: xxx.xxx.xxx.xxx
PORTAL_IP: <master_ip>
$ eliot/blueprints/iotgateway/playbooks/muno-config/edge/hosts-muno-edge
[master]
<edge_ip>
$ eliot/blueprints/iotgateway/playbooks/muno-config/edge/var.yml
HARBOR_ADMIN_PASSWORD: <password>
# Could be true or false
# true: Deploy k8s NFS Server to keep the persistence of all pods' data
# false: No need to keep the persistence of all pods' data
ENABLE_PERSISTENCE: false
# ip for portals, will be set to private IP of master node default or
# reset it to be the public IP of master node here
# PORTAL_IP: xxx.xxx.xxx.xxx
# NIC name of master node
# If master node is with single NIC, not need to set it here and will get
# the default NIC name during the run time
# If master node is with multiple NICs, should set it here to be
# 2 different NICs
# EG_NODE_EDGE_MP1: eth0
# EG_NODE_EDGE_MM5: eth0
OCD_IP: <ocp_ip>
5.Send the git clone file from OCD to ELIOT Master Node and IotGateway Node.
$ scp -r ./eliot <node_ip>:~
For Edge Gallery installation:
Select one of Multi Node Inventory Mode (MUNO-Mode) or All in one mode (AIO mode) and install it.
MUNO-Mode:
Execute the below command:
cd eliot/blueprints/iotgateway/playbooks
ansible-playbook -i muno-config/controller/hosts-muno-controller eliot-eg-muno-controller.yml --extra-vars "operation=install" -e "ansible_user=root"
ansible-playbook -i muno-config/edge/hosts-muno-edge eliot-eg-muno-edge.yml --extra-vars "operation=install" -e "ansible_user=root"
For AIO mode:
Execute the below command
cd ealt-edge/ocd/infra/playbooks
root@akraino-mec-0001:~#ansible-playbook eliot-eg-aio-latest.yml -i hosts-aio --extra-vars "operation=install" -e ansible_user=root"
FOR ELIOT Stack:
Execute the below command
Setup environment -
root@akraino-mec-0001:~# ansible-playbook eliot-all.yml -i eliot-inventory.ini --extra-vars "operation=install"
Once the execution is completed in console will see prompt "ELIOTEdge Environment Installed , Components Install ELIOT Master and EDGE Nodes Successfully"
Snapshot Deployment Overview
N/A
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 IotGateway Deployment
Currently the verification is manually done.
- Login to the Master Node and check whether K8S cluster is installed.
- Check the below mentioned components and services are running as Pods / Services in Kubernetes cluster
- Edge Gallery
- grafana
- rabbitmq
- cadvisor
- edgex
- Hawkbit
- opc-ua
- Login to Edge Host and verify the worker node setup
Components and Services running in ELIOT Master Node
Components and Services running ELIOT IotGateway/ Edge Node
Deploy Application in ELIOT
- Login to MECM Portal https://ip:30093
1.1 click on Systems ->App LCM ->New Registration
Name: Applcm(any general name)
IP: applcm"public ip"
Port: 30204
1.2. Click on Systems ->App Rule -> New Registration
Name: Apprule(any general name)
IP: applcm"public ip"
Port: 30206
1.3. click on Systems ->App Store ->New Registration
App Store Name: appstore(any general name)
IP: Appstore public ip
Port: 30099
Appstore Repo: {HarborIP:443}(192.168.1.1:443)
Repo Name: appstore(any general name)
Repo Username: admin(harbor user name)
Repo Password: Harbor12345(harbor password)
Vendor: vendor(any general name)
2. Login to Developer Portal https://ip:30092
2.1. Add sandbox env to deploy application before publish
Click System ->Host Management ->Add Host
Name: general name
System: k8s
Lcmip: sandbox ip(for testing purpose can provide edge ip, if no sandbox env)
mecHost: sandbox ip(for testing purpose can provide edge ip, if no sandbox env)
Port: 31252
Protocol: https
Architecture: X86
Status: Normal
Port Range: leave as it is
Address: Bangalore
UploadConfig File: upload sandboxenvkubeconfig file
2.2 Click on Workspace -> Create Project -> Application Integration -> Start
- Provide App Name, Version, Provider, Workload Type, Architecture, Industry, Type.
- Upload Icon, provide Description. And click on confirm.
2.3. Now click on Deployment Test.
- Upload Docker images directly from portal by clicking on Upload App Image
Or, directly push Docker images to Harbor repo (takes lesser time, preferred)
- Click next, upload deployment yaml file now.
- After config upload, click next and click start deployment
- After Deployment is success, click on Release Recourses
Note:
- While Deployment test if any error happens, open ATP portal (https://ip:30094) in another tab of browser, sing in, come back to developer portal and re run deployment test
- gitee.com/edgegallery/applications repo provides, A lot of applications with their logo, deployment yaml & user guides
2.4. Now click on Application Release
Upload file for Application Description
Click save config, click Next Step, click Start Test, scroll down to find & click Start Test button, click Next Step, click publish to publish application to appstore.
3. Login to MECM Portal https://ip:30093
3.1. Add k8s node:
Click on Edge Nodes ->New Rgistration
VM: k8s
Name: edge1
IP: edge public ip
Location: select from drop down
Address: yanta
Coordinates: 116.39,39.90
Architecture: x86
Capabilities: select none
MEPM: select applcm node from dropdown
3.2. Download /root/.kube/config file from edge node
And click on Upload config file to upload.
Developer Guide and Troubleshooting
Uninstall Guide
Using Ansible Playbooks
root@akraino-mec-0001:~#ansible-playbook eliot-all-uninstall.yml -i eliot-inventory.ini --extra-vars "operation=uninstall"
For MUNO Mode
root@akraino-mec-0001:~#ansible-playbook -i muno-config/controller/hosts-muno-controller eliot-eg-muno-controller.yml --extra-vars "operation=uninstall" -e "ansible_user=root"
root@akraino-mec-0001:~#ansible-playbook -i muno-config/edge/hosts-muno-edge eliot-eg-muno-edge.yml --extra-vars "operation=uninstall" -e "ansible_user=root"
For AIO Mode
root@akraino-mec-0001:~#ansible-playbook -i hosts-aio eliot-alleg-aio-uninstalllatest.yml -i eliot-inventory.ini --extra-vars "operation=uninstall" -e "ansible_user=root"
Troubleshooting
Error Message Guide
...
S. No | Software | Type | Version | License | Remarks |
1. | Docker | CRI | 18.09 | Apache 2.0 license | No code modifications done |
2. | Kubernetes | Orchestration | v1.18.7 | Apache 2.0 license | No code modifications done |
3. | Edge Gallery | Open Source MEC Platform | 1.1.1 | Apache 2.0 license | Open Source MEC Platform |
4. | Grafana | Monitoring | 7.1.1 | Apache 2.0 license |
EDGE / IotGateway Node
S. No | Software | Type | Version | License Information | Remarks |
1. | Docker | CRI | 18.09 | Apache 2.0 license | No code modifications done |
2. | K8s | Orchestration | 1.18.7 | Apache 2.0 license | No code modifications done |
3. | Edge Gallery | Open Source MEC Platform | 1.1.1 | Apache 2.0 license | No code modifications done |
4. | cAdvisor | Container Metrics | v0.36.0 | Apache 2.0 license | No code modifications done |
5. | RabbitMQ | Message Broker | 3.7 | Mozilla Public License | No code modifications done. RabbitMQ image is deployed as is. |
6. | Prometheus | Metrics Collector | 9.3.1 | Apache 2.0 license | Code part of Edge Gallery |
7. | OPC-UA | IoT Protocol | Geneva | Apache 2.0 license | Upstream |
11 | EdgeX | Services | Edinburgh | Apache 2.0 license | Upstream |
References
...