f1c50875b9a6c85b367a44b969e20935d4134f5b
[multicloud/framework.git] / docs / MultiCloud-Architecture.rst
1 ..\r
2  This work is licensed under a Creative Commons Attribution 4.0\r
3  International License.\r
4  Copyright (c) 2018 Wind River Systems, Inc.\r
5 \r
6 ============================\r
7 ONAP MultiCloud Architecture\r
8 ============================\r
9 \r
10 Value Proposition\r
11 -----------------\r
12 \r
13 ONAP MultiCloud project aims to mediate most interactions (if not all of them)\r
14 between ONAP and any underlying VIM or Cloud to:\r
15 \r
16 * enable ONAP to deploy and run on multiple infrastructure environments\r
17 * provide a Cloud Mediation Layer supporting multiple infrastructures and network backends so as to effectively prevents vendor lock-in\r
18 * decouples the evolution of ONAP platform from the evolution of underlying cloud infrastructure, and minimizes the impact on the deployed ONAP while upgrading the underlying cloud infrastructures independently\r
19 \r
20 Besides that, ONAP MultiCloud project enables\r
21 \r
22 * infrastructure providers exposing infrastructure's resources and features to ONAP for optimization of homing and placement of VNFs\r
23 * support the closed control loop remediation over infrastructure resources\r
24 \r
25 High Level Architecture and Workflows\r
26 -------------------------------------\r
27 \r
28 The following high level architecture and workflow diagram depicts how\r
29 ONAP MultiCloud is designed and integrated into ONAP end to end workflow\r
30 \r
31 .. image:: ./images/mc-arch-workflow.png\r
32     :alt: Multicloud icons in MSB\r
33     :width: 975\r
34     :height: 293\r
35     :align: center\r
36 \r
37 Components:\r
38 ~~~~~~~~~~~\r
39 **Broker:**\r
40 \r
41 A single broker deployed as micro-service exposes following functionalities:\r
42 \r
43 * Expose metadata list of supported plugins to ESR\r
44 * Route and forward API requests to appropriate plugin by looking up AAI cloud region with ID of the cloud region\r
45 * Dispatch capacity checking API to all related plugins\r
46 \r
47 \r
48 **Plugin(s):**\r
49 \r
50 Plugin adapts API requests to corresponding VIM/Cloud.\r
51 \r
52 There are multiple plugins deployed as micro-services available:\r
53 \r
54 * Plugin for Wind River: Adapt to Wind River Titanium Cloud R3, R4 or R5\r
55 * Plugin for Ocata/Pike: Adapt to Vanilla OpenStack Releases: Ocata, Pike, and more to come\r
56 * Plugin for VIO: Adapt to VMware VIO\r
57 * Plugin for Azure: Adapt to Microsoft Azure Cloud.\r
58 * Plugin for kubernetes: Adapt to Kubernetes clusters\r
59 \r
60 Dependencies:\r
61 ~~~~~~~~~~~~~\r
62 \r
63 * MultiCloud micro-services exposed services via MSB\r
64 * MultiCloud relies on MSB for API forwarding between broker and plugin micro-services\r
65 * MultiCloud micro-services relies on AAI for any persistent data storage. e.g. AAI Cloud Region Object\r
66 \r
67 \r
68 Workflow elaboration:\r
69 ~~~~~~~~~~~~~~~~~~~~~\r
70 \r
71 0) OOM Deploys ONAP MultiCloud services\r
72 #) ONAP users on-boards underlying VIM or Cloud instances via ONAP ESR GUI Portal.\r
73     ESR creates AAI cloud region object and requests MultiCloud to update the cloud region with discovered infrastructure's resources and capabilities\r
74 \r
75 #) SDC distributes Service Model and VNF artifacts\r
76 \r
77 #) ONAP users deploy services, instantiate VNF\r
78 \r
79 #) ONAP SO consult OOF for VNF homing and placement hints, OOF matches the\r
80     VNF's requirement and cloud region's capabilities and resources to select\r
81     the best candidates for VNF homing.OOF also consult MultiCloud for checking\r
82     the capacity for VNF placement.\r
83 \r
84 #) The VNF instantiating\r
85     The VNF instantiating approach varies with different use case (or VNF artifacts type)\r
86     In case of VIM/Cloud specific artifact type, e.g. HEAT templates, SO invokes MultiCloud directly to instantiate the VNF.\r
87     In case of VNFD in TOSCA artifacts, SO invokes VF-C to decompose the TOSCA artifact to atomic resource level and VF-C invokes MultiCloud for atomic resource instantiating.\r
88     The interaction between SDN-C and MultiCloud is not yet designed.\r
89 \r
90 #) MultiCloud also supports close loop remediation by relaying FCAPS events and stream to DCAE VES collector.\r
91 \r
92 #) APP-C might request MultiCloud to perform resource level remediation\r
93 \r
94 API pattern:\r
95 ~~~~~~~~~~~~\r
96 MultiCloud broker exposes API exposed with namespace and version as below:\r
97 \r
98     api/multicloud/v1/\r
99 \r
100 MultiCloud Plugins expose their API with namespace and version as below:\r
101 \r
102     api/multicloud-titaniumcloud/v1/\r
103 \r
104     api/multicloud-ocata/v1/\r
105 \r
106     api/multicloud-vio/v1/\r
107 \r
108     api/multicloud-azure/v1/\r
109 \r
110     api/multicloud-k8s/v1/\r
111 \r
112 \r
113 For most APIs, the ID of a cloud region follows the API version, with which MultiCloud broker will forward the API to corresponding MultiCloud plugin for handling.\r
114 \r
115     api/multicloud/v1/{cloud-owner}/{cloud-region-id}\r
116 \r
117 MultiCloud services are registered into MSB so they can be discovered/reached via MSB API gateway.\r
118 \r
119     e.g. POST msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/infra_workload\r
120 \r
121 \r
122 \r
123 API catalogs\r
124 ~~~~~~~~~~~~\r
125 \r
126 The Northbound APIs can be cataloged as following\r
127 \r
128 1) Common MultiCloud functionalities\r
129 \r
130  **API swagger:**\r
131  API swagger is used for Health Check as well\r
132 \r
133 2) Infrastructure Provider registration\r
134     The infrastructure provider registration API is to trigger the discovery and registration of infrastructure capabilities (e.g. HPA capabilities) and resource.\r
135 \r
136 3) Template level APIs\r
137     Template level APIs are the integrating point between SO and MultiCloud which offloads the LCM of infrastructure workload from SO\r
138 \r
139 4) Atomic resource level APIs:\r
140 \r
141   This set of API falls into either catalog of following\r
142 \r
143    **Proxy of OpenStack services**\r
144 \r
145     The proxy of OpenStack services exposed all OpenStack services by replacing the endpoints. This is designed to smoothly integrate MultiCloud with existing ONAP projects which have been talking to OpenStack directly. e.g. APPC\r
146 \r
147     The API works the same way as native OpenStack API except the difference of endpionts [1]_.\r
148 \r
149    **Legacy Abstract APIs for VF-C**\r
150 \r
151     The legacy abstract APIs for VF-C are inherited from OPEN-O project which abstracted the OpenStack service APIs.\r
152     The API exposes openstack services with abstract\r
153 \r
154 5) Placement Optimization APIs:\r
155      Aggregate Resource Checking APIs help OOF to optimize the placement of\r
156      VNF over underlying VIM/Cloud\r
157 \r
158 6) FCAPS configuration APIs:\r
159     FCAPS Configuration APIs allow users to configure the MultiCloud FCAPS relaying services.\r
160 \r
161 \r
162 Terminology\r
163 -----------\r
164 \r
165 * ONAP MultiCloud, ONAP Multi-VIM/Cloud, ONAP MultiVIM refer to the same project in ONAP.\r
166 \r
167 * MultiCloud framework is the repo for source code, MultiCloud broker is the entity built from framework\r
168 \r
169 \r
170 References\r
171 ----------\r
172 \r
173 .. [1] https://wiki.onap.org/download/attachments/8227952/OANP_MultiCloud_R1_service_proxy_design.docx?version=1&modificationDate=1531281181000&api=v2