1 ================================
2 ONAP MultiCloud Deployment Guide
3 ================================
5 prepare docker environment
6 ~~~~~~~~~~~~~~~~~~~~~~~~~~
8 Please refer to onap deployment in kubernetes website(https://wiki.onap.org/display/DW/ONAP+on+Kubernetes)
9 to setup kubernets cluster.
12 After installing kubectl and helm, execute "kubectl cluster-info" command to verify your kubernets cluster.
14 Clone oom project: git clone http://gerrit.onap.org/r/oom
15 Source the setenv.bash script in /oom/kubernetes/oneclick/, it will set your helm list of components to start/delete
16 Run the one time config pod - which mounts the volume /dockerdata/ contained in the pod config-init.
18 .. code-block:: console
20 $ cd oom/kubernetes/config
21 $ cp onap-parameters-sample.yaml onap-parameters.yaml
22 $ ./createConfig.sh -n onap
24 wait for "onap" namespace created, pod "config-init" created
26 .. code-block:: console
28 $ kubectl get namespaces
29 +------------+------------+------+
30 | NAME | STATUS | AGE |
31 +------------+------------+------+
33 |kube-public Active 10d |
34 |kube-system Active 10d |
36 +------------+------------+------+
41 first run kube2msb container.
43 .. code-block:: console
45 $ cd oom/kubernetes/oneclick
46 $ ./createAll.bash -n onap -a kube2msb
50 .. code-block:: console
52 $ ./createAll.bash -n onap -a msb
56 .. code-block:: console
58 $ ./createAll.bash -n onap -a aai
61 Finally run multicloud container
63 .. code-block:: console
65 $ ./createAll.bash -n onap -a multicloud
69 .. code-block:: console
71 $ kubectl get pods --all-namespaces
72 +---------------+---------------------------------------+--------+-----------+----------+-----+
73 |NAMESPACE | NAME | READY | STATUS |RESTARTS | AGE |
74 +---------------+---------------------------------------+--------+-----------+----------+-----+
75 |kube-system heapster-4285517626-2k4l1 1/1 Running 1 9d |
76 |kube-system kube-dns-2514474280-mxh18 3/3 Running 3 9d |
77 |kube-system kubernetes-dashboard-716739405-jl6mk 1/1 Running 1 9d |
78 |kube-system monitoring-grafana-3552275057-hrpn5 1/1 Running 1 9d |
79 |kube-system monitoring-influxdb-4110454889-t8tpv 1/1 Running 1 9d |
80 |kube-system tiller-deploy-737598192-8q523 1/1 Running 1 9d |
81 |onap-aai aai-resources-837807428-2t158 1/1 Running 0 2d |
82 |onap-aai aai-service-3869033750-1nvg5 1/1 Running 0 2d |
83 |onap-aai aai-traversal-50329389-gnsnk 1/1 Running 0 2d |
84 |onap-aai data-router-2254557428-zwxx1 1/1 Running 0 2d |
85 |onap-aai elasticsearch-622738319-sx6q1 1/1 Running 0 2d |
86 |onap-aai gremlin-671060974-npsg5 1/1 Running 0 2d |
87 |onap-aai hbase-3690059193-2pjc5 1/1 Running 0 2d |
88 |onap-aai model-loader-service-849987455-w6vwn 1/1 Running 0 2d |
89 |onap-aai search-data-service-4105978183-p1nnj 1/1 Running 0 2d |
90 |onap-aai sparky-be-2696729089-mcjbw 1/1 Running 0 2d |
91 |onap-kube2msb kube2msb-registrator-1600827891-1s3s4 1/1 Running 3 7d |
92 |onap-msb msb-consul-3388279333-hbr16 1/1 Running 0 2d |
93 |onap-msb msb-discovery-1109629174-t14q8 1/1 Running 0 2d |
94 |onap-msb msb-eag-3969419634-2fdnr 1/1 Running 0 2d |
95 |onap-msb msb-iag-1114772402-sjlww 1/1 Running 0 2d |
96 |onap-multicloud framework-1225620501-9567n 1/1 Running 0 21h |
97 |onap-multicloud multicloud-vio-269945856-rl6w6 1/1 Running 0 21h |
98 +---------------+---------------------------------------+--------+-----------+----------+-----+
100 get cluster-ip and port
102 .. code-block:: console
104 $ kubectl get svc --all-namespaces
105 +---------------+----------------------+---------------+-------------+-------------------------------------------------------------------+--------+
106 | NAMESPACE | NAME | CLUSTER-IP | EXTERNAL-IP | PORT(S) | AGE |
107 +---------------+----------------------+---------------+-------------+-------------------------------------------------------------------+--------+
108 |default kubernetes 10.43.0.1 <none> 443/TCP 10d |
109 |kube-system heapster 10.43.96.134 <none> 80/TCP 10d |
110 |kube-system kube-dns 10.43.0.10 <none> 53/UDP,53/TCP 10d |
111 |kube-system kubernetes-dashboard 10.43.9.43 <none> 9090/TCP 10d |
112 |kube-system monitoring-grafana 10.43.210.16 <none> 80/TCP 10d |
113 |kube-system monitoring-influxdb 10.43.32.60 <none> 8086/TCP 10d |
114 |kube-system tiller-deploy 10.43.84.208 <none> 44134/TCP 10d |
115 |onap-aai aai-resources None <none> 8447/TCP,5005/TCP 2d |
116 |onap-aai aai-service 10.43.88.92 <nodes> 8443:30233/TCP,8080:30232/TCP 2d |
117 |onap-aai aai-traversal None <none> 8446/TCP,5005/TCP 2d |
118 |onap-aai elasticsearch None <none> 9200/TCP 2d |
119 |onap-aai gremlin None <none> 8182/TCP 2d |
120 |onap-aai hbase None <none> 2181/TCP,8080/TCP,8085/TCP,9090/TCP,16000/TCP,16010/TCP,16201/TCP 2d |
121 |onap-aai model-loader-service 10.43.172.213 <nodes> 8443:30229/TCP,8080:30210/TCP 2d |
122 |onap-aai search-data-service None <none> 9509/TCP 2d |
123 |onap-aai sparky-be None <none> 9517/TCP 2d |
124 |onap-msb msb-consul 10.43.41.203 <nodes> 8500:30500/TCP 2d |
125 |onap-msb msb-discovery 10.43.6.205 <nodes> 10081:30081/TCP 2d |
126 |onap-msb msb-eag 10.43.81.104 <nodes> 80:30082/TCP 2d |
127 |onap-msb msb-iag 10.43.188.78 <nodes> 80:30080/TCP 2d |
128 |onap-multicloud framework 10.43.97.54 <nodes> 9001:30291/TCP 21h |
129 |onap-multicloud multicloud-vio 10.43.230.197 <nodes> 9004:30294/TCP 21h |
130 +---------------+----------------------+---------------+-------------+-------------------------------------------------------------------+--------+
133 Now msb,aai and multicloud container are online, navigate to http://msb_docker_host_ip:30081/iui/microservices/index.html,
134 you can see multicloud endpoint have been registered.
136 No Service Name Version NameSpace Url Protocol Visualrange Control
137 1 multicloud v0 /api/multicloud/v0 REST InSystem
138 2 multicloud-vio v0 /api/multicloud-vio/v0 REST InSystem
140 Then register vio information into AAI service with region name "vmware" and region id "vio"
142 .. code-block:: console
144 $ curl -X PUT -H "Authorization: Basic QUFJOkFBSQ==" -H "Content-Type: application/json" -H "X-TransactionId:get_aai_subcr" \
145 https://aai_resource_docker_host_ip:30233/aai/v01/cloud-infrastructure/cloud-regions/cloud-region/vmware/vio \
147 "cloud-type": "vmware",
148 "cloud-region-version": "4.0",
149 "esr-system-info-list": {
152 "esr-system-info-id": "123-456",
153 "system-name": "vim-vio",
154 "system-type": "vim",
156 "user-name": "admin",
157 "password": "vmware",
158 "service-url": "<keystone auth url>",
159 "cloud-domain": "default",
160 "default-tenant": "admin",
161 "ssl-insecure": false
170 The env HOST_IP is msb-iag service cluster-ip value is "10.43.188.78"(see it above).
171 The vimid is "vmware_vio" the registered name in aai.
177 # send request to multicloud-framework(broker) service to get token
179 .. code-block:: console
181 $ curl -X POST -d @test.json -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud/v0/<vimid>/identity/auth/tokens
183 test.json content example:
188 "auth": sudo pip install virtualenv{
189 "scope": {"project": {"id": “<project-id>”}},
192 "password": {"user": {"domain": {"name": “<doman-name>”}, "password": “<user-password>”, "name": “<user-name>”}}, "methods": ["password"]
199 There are a large amounts of data including service endpoint, user information, etc.
200 For our testing We take nova and identity service endpoint address and auth token which is in response header named “X-Subject-Token”.
202 # you can find the endpoint url namespace is "api/multicloiud-vio/v0", it represent the multicloud-vio service, So
203 requests sending to mulitcloud-vio will be forwarded to backend VIO openstack.
207 http://$HOST_IP/api/multicloud-vio/v0/<vimid>/identity
210 http://$HOST_IP/api/multicloud-vio/v0/<vimid>/compute/<user-tenantid>
216 Use identity’s endpoint: http://$HOST_IP/api/multicloud-vio/v0/<vimid>/identity/
218 .. code-block:: console
220 $ curl -X GET -H 'X-Auth-Token:<token>' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/identity/projects
226 Use nova’s endpoint: http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<user-tenantid>
229 .. code-block:: console
231 $ curl -X GET -H 'X-Auth-Token:<token>' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/os-hypervisors/detail
234 List instance of user’s project
235 --------------------------------
237 .. code-block:: console
239 $ curl -X GET -H 'X-Auth-Token:<token>' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers
245 you need to input <server-id> in url path.
247 .. code-block:: console
249 $ curl -X GET -H 'X-Auth-Token:<token>' http://$HOST_IP/api/multicloud-vio/v0/vimid/nova/tenantid/servers/<server-id>
255 you need to input <server-id> in url path
257 .. code-block:: console
259 $ curl -X POST -d '{"os-stop":null}' -H 'X-Auth-Token:<token>' -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers/<server-id>/action
265 you need to input <server-id> in url path
267 .. code-block:: console
269 $ curl -X POST -d '{"os-start":null}' -H 'X-Auth-Token:<token>' -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers/<server-id>/action
275 you need to input <server-id> in url path
277 .. code-block:: console
279 $ curl -X POST -d '{"suspend":null}' -H 'X-Auth-Token:<token>' -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers/<server-id>/action
285 you need to input <server-id> in url path
287 .. code-block:: console
289 $ curl -X POST -d '{"resume":null}' -H 'X-Auth-Token:<token>' -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers/<server-id>/action
295 you need to input <server-id> in url path
297 .. code-block:: console
299 $ curl -X POST -d '{"pause":null}' -H 'X-Auth-Token:<token>' -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers/<server-id>/action
305 you need to input <server-id> in url path
307 .. code-block:: console
309 $ curl -X POST -d '{"unpause":null}' -H 'X-Auth-Token:<token> -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers/<server-id>/action
315 you need to input <server-id> in url path
317 .. code-block:: console
319 $ curl -X POST -d '{"reboot":{"type":"HARD"}}' -H 'X-Auth-Token:<token> -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/nova/<tenantid>/servers/<server-id>/action
325 create uploading image task by image url:
327 .. code-block:: console
328 $ curl -X POST -d '{"input": {"image_properties":
329 {"container_format": "bare", "name": "<image_name>"},
330 "import_from_format": "<disk_format>",
331 "import_from": "<image_url>"},
333 -H 'X-Auth-Token:<token>' -H 'Content-Type:application/json' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/glance/v2/tasks
335 get the taskid from response body,then query the task status by taskid.
337 .. code-block:: console
338 $ curl -X GET -H 'X-Auth-Token:<token>' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/glance/v2/tasks/<taskid>
340 You can see the description and properties of task in response body,if 'status' is success, it will show image_id in
343 query the image status by image_id
345 .. code-block:: console
346 $ curl -X GET -H 'X-Auth-Token:<token>' http://$HOST_IP/api/multicloud-vio/v0/<vimid>/glance/v2/images/<image_id>