summaryrefslogtreecommitdiffstats
path: root/docs/MultiCloud-Architecture.rst
blob: 56a3cc6ae13d7db1bc1e759c2b743bd71dbe1b94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
..
 This work is licensed under a Creative Commons Attribution 4.0
 International License.
 Copyright (c) 2018 Wind River Systems, Inc.

============================
ONAP MultiCloud Architecture
============================

Value Proposition
-----------------

ONAP MultiCloud project aims to mediate most interactions (if not all of them)
between ONAP and any underlying VIM or Cloud to:

* enable ONAP to deploy and run on multiple infrastructure environments
* provide a Cloud Mediation Layer supporting multiple infrastructures and
  network backends so as to effectively prevents vendor lock-in
* 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

Besides that, ONAP MultiCloud project enables

* infrastructure providers exposing infrastructure's resources and features
  to ONAP for optimization of homing and placement of VNFs
* support the closed control loop remediation over infrastructure resources

High Level Architecture and Workflows
-------------------------------------

The following high level architecture and workflow diagram depicts how
ONAP MultiCloud is designed and integrated into ONAP end to end workflow

.. image:: ./images/mc-arch-workflow.png
    :alt: Multicloud icons in MSB
    :width: 975
    :height: 293
    :align: center

Components:
~~~~~~~~~~~
**Broker:**

A single broker deployed as micro-service exposes following functionalities:

* Expose metadata list of supported plugins to ESR
* Route and forward API requests to appropriate plugin by looking up AAI cloud
  region with ID of the cloud region
* Dispatch capacity checking API to all related plugins


**Plugin(s):**

Plugin adapts API requests to corresponding VIM/Cloud.

There are multiple plugins deployed as micro-services available:

* Plugin for Wind River: Adapt to Wind River Titanium Cloud R3, R4 or R5
* Plugin for Ocata/Pike: Adapt to Vanilla OpenStack Releases: Ocata, Pike
* Plugin for VIO: Adapt to VMware VIO
* Plugin for Azure: Adapt to Microsoft Azure Cloud.
* Plugin for kubernetes: Adapt to Kubernetes clusters

Dependencies:
~~~~~~~~~~~~~

* MultiCloud micro-services exposed services via MSB
* MultiCloud relies on MSB for API forwarding between broker and plugin
  micro-services
* MultiCloud micro-services relies on AAI for any persistent data storage.
  e.g. AAI Cloud Region Object


Workflow elaboration:
~~~~~~~~~~~~~~~~~~~~~

0) OOM Deploys ONAP MultiCloud services
#) ONAP users on-boards underlying VIM or Cloud instances via ONAP ESR GUI.
    ESR creates AAI cloud region object and requests MultiCloud to update the
    cloud region with discovered infrastructure's resources and capabilities

#) SDC distributes Service Model and VNF artifacts

#) ONAP users deploy services, instantiate VNF

#) ONAP SO consult OOF for VNF homing and placement hints, OOF matches the
    VNF's requirement and cloud region's capabilities and resources to select
    the best candidates for VNF homing.OOF also consult MultiCloud for checking
    the capacity for VNF placement.

#) The VNF instantiating
    The VNF instantiating approach varies with different use case (or VNF
    artifacts type):

      In case of VIM/Cloud specific artifact type, e.g. HEAT templates, SO
      invokes MultiCloud directly to instantiate the VNF.

      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.

      The interaction between SDN-C and MultiCloud is not yet designed.

#) MultiCloud also supports close loop remediation by relaying FCAPS events
   and stream to DCAE VES collector.

#) APP-C might request MultiCloud to perform resource level remediation

API pattern:
~~~~~~~~~~~~
MultiCloud broker exposes API exposed with namespace and version as below:

::

    api/multicloud/v1/

MultiCloud Plugins expose their API with namespace and version as below:

::

    api/multicloud-titaniumcloud/v1/
    api/multicloud-ocata/v1/
    api/multicloud-vio/v1/
    api/multicloud-azure/v1/
    api/multicloud-k8s/v1/


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.

::

    api/multicloud/v1/{cloud-owner}/{cloud-region-id}

MultiCloud services are registered into MSB so they can be discovered/reached
via MSB API gateway.

::

    e.g. POST msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/infra_workload


API catalogs
~~~~~~~~~~~~

The Northbound APIs can be cataloged as following

1) Common MultiCloud functionalities

 **API swagger:**
 API swagger is used for Health Check as well

2) Infrastructure Provider registration
    The infrastructure provider registration API is to trigger the discovery
    and registration of infrastructure capabilities (e.g. HPA capabilities)
    and resource.

3) Template level APIs
    Template level APIs are the integrating point between SO and MultiCloud
    which offloads the LCM of infrastructure workload from SO

4) Atomic resource level APIs:

  This set of API falls into either catalog of following

   **Proxy of OpenStack services**

    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

    The API works the same way as native OpenStack API except the difference of
    endpionts [1]_.

   **Legacy Abstract APIs for VF-C**

    The legacy abstract APIs for VF-C are inherited from OPEN-O project which
    abstracted the OpenStack service APIs.

5) Placement Optimization APIs:
     Aggregate Resource Checking APIs help OOF to optimize the placement of
     VNF over underlying VIM/Cloud

6) FCAPS configuration APIs:
    FCAPS Configuration APIs allow users to configure the MultiCloud FCAPS
    relaying services.


Terminology
-----------

* ONAP MultiCloud, ONAP Multi-VIM/Cloud, ONAP MultiVIM refer to the same
  project in ONAP.

* MultiCloud framework is the repo for source code, MultiCloud broker is the
  entity built from framework


References
----------

.. [1] https://wiki.onap.org/download/attachments/8227952/OANP_MultiCloud_R1_service_proxy_design.docx?version=1&modificationDate=1531281181000&api=v2