Details
-
Type:
Story
-
Status: Done
-
Resolution: Done
-
Fix Version/s: None
-
Component/s: SUIT
-
Labels:
-
Story Points:4
-
Epic Link:
-
Sprint:SUIT Sprint 2019-02
-
Team:Science User Interface
Description
After discussion with Google experts, they suggested us to look into an alternative way for server discovery to replace the needs of multicast. (Multicast does not work in GKE if the Firefly server pods are on different nodes).
http://www.smartjava.org/content/service-discovery-docker-and-consul-part-1/
This will involve modifying Firefly to read the configuration at build time to decide on the library to use for service auto discovery. When it is in k8s environment, other software package may need to be installed. We need to document this in SUIT deployment procedure DM-16670
At the discussion, we talked about replacing the current multicast based discovery mechanism with something else. Ideas include etcd, redis, and consul. Upon review, I think the most straight-forward approach with the least learning curve is redis. The purpose of this external service is to store the information of active firefly instances. Nothing fancy.
We will deploy one redis container as a known service for which multiple firefly containers will register to.
This requires adding redis to our kubernetes deployment, which is simple.
The bulk of the work is to implement the new discovery mechanism and testing it. Because this involves integrating with third-party interfaces, there may be unforeseeable obstacles.
My best guess is around 2 weeks.