[ICN-233] OpenNESS gap for Cross-Node communication Created: 09/Jan/20 Updated: 16/Jul/20 Resolved: 17/Jan/20 |
|
| Status: | Done |
| Project: | Integrated Cloud Native NFV |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Task | Priority: | High |
| Reporter: | Huifeng Le | Assignee: | Chenjie Xu |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Epic Link: | OpenNESS integration in ICN |
| Sprint: | ICN Sprint 10 |
| Description |
|
Investigate Cross-Node (e.g. producer/consumer communication) gap for OpenNESS integration |
| Comments |
| Comment by Chenjie Xu [ 17/Jan/20 ] |
|
The gap analysis has been added to the Akraino ICN OpenNESS wiki page as following: |
| Comment by Chenjie Xu [ 13/Jan/20 ] |
|
By changing the common name and myURN of openvino consumer, openvino-cons-app and openvino-cons-app2 will use different version of docker image openvino-cons-app, and they both can run and consume the same producer. The logs are below: [root@master consumer]# kubectl get pod [root@master consumer]# kubectl logs openvino-cons-app [root@master consumer]# kubectl logs openvino-cons-app2 [root@master consumer]# kubectl describe pod openvino-cons-app | grep Image [root@master consumer]# kubectl describe pod openvino-cons-app2 | grep Image |
| Comment by Chenjie Xu [ 13/Jan/20 ] |
|
A map is used to store consumer connections as following: The common name is used as the key of the map: As the openvino-cons-app and openvino-cons-app2 is 2 instances of the same microservice, they share the same common name. When openvino-cons-app2 starts successfully and try to register with eaa, eaa will detect whether this common name has registerd or not as following: |
| Comment by Chenjie Xu [ 10/Jan/20 ] |
|
Finding a bug within openness: For example:
The logs are below: [root@master consumer]# kubectl get pod -o wide |
| Comment by Chenjie Xu [ 10/Jan/20 ] |
|
Because edge apps on different edge node all can access service eaa, the consumer can consume the service provided by producer which is on a different node. For example: |
| Comment by Chenjie Xu [ 10/Jan/20 ] |
|
eaa is deployed as a deployment and only 1 eaa will be deployed: Because all edge apps will access only 1 eaa, it doesn't matter that eaa is stateful. For example: node1 node2 |
| Comment by Chenjie Xu [ 10/Jan/20 ] |
|
Edge apps will access eaa through eaa.openness (name.namespace) which is a kubernetes service: For example: as following links show, openvino consumer will access http://eaa.openness:443/auth for authentication. |
| Comment by Chenjie Xu [ 10/Jan/20 ] |
|
Edge applications must introduce themselves to OpenNESS framework and identify if they would like to activate new edge services or consume an existing service. Edge Application Agent (EAA) component is the handler of all the edge applications hosted by the OpenNESS edge node and acts as their point-of-contact. OpenNESS-awareness involves (a) authentication, (b) service activation/deactivation, (c) service discovery, (d) service subscription, and (e) Websocket connection establishment. The Websocket connection retains a channel for EAA for notification forwarding to pre-subscribed consumer applications. Notifications are generated by "producer" edge applications and absorbed by "consumer" edge applications. The sequence of operations for the producer application:
The sequence of operations for the consumer application:
|