Pharos (Service deployment manager/agent)

Description

A lot of edge devices might be placed for the smart factory to process data. And the edge devices can be grouped to support dedicated functions, or can be located hierarchicaly to process data step by step. So the efficient way is need to manage lots of edge device and microservice in the factory. To realize this, two components are being developed for microservice deployment and management in this project. One is service deployment manager and the other one is service deployment agent. The service deployment manager is the administration feature to deploy, update and monitor the microservices in the edge devices in the factory. And the service deployment agent is the control feature to install, run and remove microservices in each eage device. The one manager can administrate the multiple agents in the reachable network.

Features

  • For management of microservice
    • Deploy a container to an Edge device or a group of Edge devices.
    • Create and delete a group of Edge device.
    • Add and remove an Edge device to/from a group of Edge devices.
    • Provides a healthy status(i.e NotReady/Ready) of all registered Edge devices.
  • To run / monitor microservice
    • Docker operations for container management by utilizing “docker-compose” languages.
    • Request a registration to an Edge server for centralized management of service deployment.
    • Send a periodic ping request for its availability to a master.
    • Failover for a case where a running container is unexpectedly terminated.

Design

Pharos consists of Pharos Anchor, Pharos Node, and Web Client application for both of them. Key highlight features for each component are described as follows:

  • Pharos Anchor provides functionalities to deploy, update, terminate a container or containers to a certain edge device or a group of edge devices. Also, this provides APIs to create, update, and delete a group of edge devices which container(s) can be deployed at the same time.
    • Deployed location: a centralized Edge server
    • Role: Edge device group managementservice deployment propagation to each Edge device
  • Pharos Node is intented to be installed in each of Edge devices, which communicates with centralized service deployment management, running in a management server. Once Pharos Anchor sends a request of service deployment to a certain Edge device, the corresponding Pharos Node performs one of Docker operations to pull, run, and stop containers as requested.
    • Deployed location: Every edge device
    • Role: Perform container installationupdate, and termination as requests by master
  • Web Client application for Pharos Anchor and Pharos Node : A web based GUI-Tool for Pharos

Code repository

https://github.com/edgexfoundry-holding/system-pharos-anchor-go

https://github.com/edgexfoundry-holding/system-pharos-node-go

https://github.com/edgexfoundry-holding/system-pharos-web-client

Current status

Pharos Anchor, Pharos Node are available in GoLang. Web Client application for Pharos is also available.