a3a19229c3a8c2e0b7caa7d7afc62600ce5a3c03
[it/dep.git] / smo-install / README.md
1 # O-RAN SMO Package
2
3 This project uses different helm charts from different Linux Foundation projects and integrate them into a unique SMO deployment.
4 <p>The ONAP and ORAN project helm charts are built and then configured by using "helm override" so that it represents a valid ORAN SMO installation.</p>
5 <p>It contains also provisioning scripts that can be used to bootstrap the platform and execute test use cases, network simulators, a1 simulators, cnf network simulators, etc ...</p>
6
7 <strong>Note:</strong>
8 The CNF part is still a "work in progress" so not well documented, it's a DU/RU/topology server deployment done by ONAP SO instantiation.
9 It has been created out of the ONAP vfirewall use case.
10
11 ## Quick Installation on blank node
12 * Setup a VM with 40GB Memory, 6VCPU, 60GB of disk space.
13 * Install an ubuntu live server 20.04 LTS (https://releases.ubuntu.com/20.04/ubuntu-20.04.3-live-server-amd64.iso)
14 * Install snap and restart the shell session: sudo apt-get install snapd -y
15 * Execute the following commands being logged as root:
16
17
18         ```git clone --recursive https://github.com/sebdet/oran-deployment.git```
19
20         ```./dep/smo-install/scripts/layer-0/0-setup-microk8s.sh```
21
22         ```./dep/smo-install/scripts/layer-0/0-setup-charts-museum.sh```
23
24         ```./dep/smo-install/scripts/layer-0/0-setup-helm3.sh```
25
26         ```./dep/smo-install/scripts/layer-1/1-build-all-charts.sh```
27
28         ```./dep/smo-install/scripts/layer-2/2-install-oran.sh```
29
30         Verify pods:
31
32         ```kubectl get pods -n onap && kubectl get pods -n nonrtric```
33
34         When all pods in "onap" and "nonrtric" namespaces are well up & running:
35
36         ```./dep/smo-install/scripts/layer-2/2-install-simulators.sh```
37
38 ## Quick Installation on existing kubernetes
39 * Ensure you have at least 20GB Memory, 6VCPU, 60GB of disk space.
40 * Execute the following commands being logged as root:
41
42         ```git clone --recursive "https://gerrit.o-ran-sc.org/r/it/dep"```
43
44         ```./dep/smo-install/scripts/layer-0/0-setup-charts-museum.sh```
45
46         ```./dep/smo-install/scripts/layer-0/0-setup-helm3.sh```
47
48         ```./dep/smo-install/scripts/layer-1/1-build-all-charts.sh```
49
50         ```./dep/smo-install/scripts/layer-2/2-install-oran.sh```
51
52         Verify pods:
53
54         ```kubectl get pods -n onap && kubectl get pods -n nonrtric```
55
56         When all pods in "onap" and "nonrtric" namespaces are well up & running:
57
58         ```./smo-install/scripts/layer-2/2-install-simulators.sh```
59
60         Verify pods:
61
62         ```kubectl get pods -n onap && kubectl get pods -n nonrtric```
63
64         When all pods in "onap" and "nonrtric" namespaces are well up & running:
65
66         ```./dep/smo-install/scripts/layer-2/2-install-simulators.sh```
67
68
69 ## Structure
70 The user entry point is located in the <strong>scripts</strong> folder
71
72 ```
73 .
74 ├── cnf                           <-- CNF packages that can be deployed by ONAP (Work In Progress, so not yet well documented)
75 │   └── du-ru-simulators              <--- The CNF package containing DU/RU/Topology server simulators
76 ├── helm-override         <-- The Configuration of the different HELM charts used in SMO package
77 │   ├── network-simulators-override.yaml              <--- Standard config for the network simulators
78 │   ├── network-simulators-topology-override.yaml     <--- Network simulator topology example that can be changed
79 │   ├── onap-override-cnf.yaml                <--- A medium ONAP config ready for CNF deployment
80 │   ├── onap-override.yaml            <--- A minimal ONAP config for SMO package
81 │   └── oran-override.yaml            <--- A minimal ORAN config for SMO package
82 ├── LICENSE
83 ├── multicloud-k8s                <-- Git SUBMODULE required for KUD installation
84 ├── onap_oom                      <-- Git SUBMODULE required for ONAP installation
85 ├── oran_oom                      <-- ORAN Charts
86 │   ├── a1controller
87 │   ├── a1simulator
88 │   ├── aux-common
89 │   ├── controlpanel
90 │   ├── dist
91 │   ├── dmaapadapterservice
92 │   ├── du-simulator
93 │   ├── enrichmentservice
94 │   ├── Makefile              <-- ORAN Makefile to build all ORAN Charts
95 │   ├── nonrtric
96 │   ├── nonrtric-common
97 │   ├── nonrtricgateway
98 │   ├── oru-app
99 │   ├── policymanagementservice
100 │   ├── rappcatalogueservice
101 │   ├── ric-common
102 │   ├── ru-du-simulators
103 │   ├── ru-simulator
104 │   ├── topology
105 │   └── topology-server
106 ├── README.md
107 ├── scripts                       <-- All installation scripts (USER ENTRY POINT)
108 │   ├── layer-0                               <--- Scripts to setup Node
109 │   │   ├── 0-setup-charts-museum.sh              <--- Setup ChartMuseum
110 │   │   └── 0-setup-kud-node.sh                   <--- Setup K8S node with ONAP Multicloud KUD installation
111 │   │   └── 0-setup-microk8s.sh           <--- Setup K8S node with MicroK8S installation
112 │   │   └── 0-setup-helm3.sh                      <--- Setup HELM3
113 │   ├── layer-1                               <--- Scripts to prepare for the SMO installation
114 │   │   └── 1-build-all-charts.sh         <--- Build all HELM charts and upload them to ChartMuseum
115 │   ├── layer-2                               <--- Scripts to install SMO package
116 │   │   ├── 2-install-nonrtric-only.sh            <--- Install SMO NONRTRIC k8s namespace only
117 │   │   ├── 2-install-oran-cnf.sh         <--- Install SMO full with ONAP CNF features
118 │   │   ├── 2-install-oran.sh                     <--- Install SMO minimal
119 │   │   └── 2-install-simulators.sh               <--- Install Network simulator (RU/DU/Topology Server)
120 │   │   └── 2-upgrade-simulators.sh               <--- Upgrade the simulators install at runtime when changes are done on override files
121 │   ├── sub-scripts                   <--- Sub-Scripts used by the main layer-0, layer-1, layer-2
122 │   │   ├── clean-up.sh
123 │   │   ├── install-nonrtric.sh
124 │   │   ├── install-onap.sh
125 │   │   ├── install-simulators.sh
126 │   │   ├── uninstall-nonrtric.sh
127 │   │   ├── uninstall-onap.sh
128 │   │   └── uninstall-simulators.sh
129 │   └── uninstall-all.sh              <--- Uninstall ALL SMO K8S namespaces and cleanup K8S
130 └── test                  <-- Scripts to test the SMO installation (Work In Progress, so not yet well documented)
131     ├── a1-validation                     <--- Test nonrtric A1 interface (https://wiki.o-ran-sc.org/display/RICNR/Testing+End+to+End+call+in+release+D)
132     │   ├── data
133     │   ├── subscripts
134     │   └── validate-a1.sh
135     ├── apex-policy-test          <--- Test apex policy (https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=35881325, it requires simulators to be up)
136     │   ├── apex-policy-test.sh
137     │   └── data
138     ├── enable-sim-fault-report           <--- Enable the fault reporting of the network simulators by SDNC
139     │   ├── data
140     │   └── enable-network-sim-fault-reporting.sh
141     └── pythonsdk                 <--- Test based on ONAP Python SDK to validate O1 and A1
142         ├── oran-tests.xml
143         ├── Pipfile.lock
144         ├── README.md
145         ├── src
146         ├── test.json
147         ├── tox.ini
148         └── unit-tests
149
150 ```
151 ## Download:
152 Use git clone to get it on your server (github ssh key config is required):
153
154 ```git clone --recursive git@github.com:gmngueko/oran-deployment.git```
155
156
157 <strong>Note:</strong> The current repository has multiple sub git submodules, therefore the <strong>--recursive</strong> flag is absolutely <strong>REQUIRED</strong>
158
159 ## Requirements:
160 * K8S node setup with Helm 3 and Kubectl properly configured (tested with <strong>K8S v1.21.5</strong> and <strong>HELM v3.5.4</strong>).
161   FOR K8S installation, multiple options are available:
162         - MicroK8S standalone deployment:
163
164                 ```./dep/smo-install/scripts/layer-0/0-setup-microk8s.sh```
165
166                 OR this wiki can help to setup it (<strong>Section 1, 2 and 3</strong>): https://wiki.onap.org/display/DW/Deploy+OOM+and+SDC+%28or+ONAP%29+on+a+single+VM+with+microk8s+-+Honolulu+Setup
167
168         - KubeSpray using ONAP multicloud KUD (https://git.onap.org/multicloud/k8s/tree/kud) installation by executing(this is required for ONAP CNF deployments):
169
170             ```./dep/smo-install/scripts/layer-0/0-setup-kud-node.sh```
171
172
173         - Use an existing K8S installation (Cloud, etc ...).
174         - ....
175
176 * ChartMuseum to store the HELM charts on the server, multiple options are available:
177         - Execute the install script:
178
179                 ```./dep/smo-install/scripts/layer-0/0-setup-charts-museum.sh```
180
181                 ```./dep/smo-install/scripts/layer-0/0-setup-helm3.sh```
182
183         - Install chartmuseum manually on port 18080 (https://chartmuseum.com/#Instructions, https://github.com/helm/chartmuseum)
184
185 ## Configuration:
186 In the ./helm-override/ folder the helm config that are used by the SMO installation.
187 <p>Different flavors are preconfigured, and should NOT be changed unless you intentionally want to updates some configurations.
188
189 ## Installation:
190 * Build ONAP/ORAN charts
191
192         ```./dep/smo-install/scripts/layer-1/1-build-all-charts.sh```
193
194 * Choose the installation:
195         - ONAP + ORAN "nonrtric" <strong>(RECOMMENDED ONE)</strong>:
196
197                 ```./dep/smo-install/scripts/layer-2/2-install-oran.sh```
198         - ORAN "nonrtric" part only(To work with ONAP):
199
200                 ```./dep/smo-install/scripts/layer-2/2-install-nonrtric-only.sh```
201
202         - ORAN "nonrtric" standalone:
203
204                 ```./dep/smo-install/scripts/layer-2/2-install-nonrtric-only.sh standalone-nonrtric```
205
206         - ONAP CNF + ORAN "nonrtric" (This must still be documented properly):
207
208                 ```./dep/smo-install/scripts/layer-2/2-install-oran-cnf.sh```
209
210
211
212 * Install the network simulators (DU/RU/Topo):
213         - When all pods in "onap" and "nonrtric" namespaces are well up & running:
214
215                 ```kubectl get pods -n onap && kubectl get pods -n nonrtric```
216
217         - Execute the install script:
218
219                 ```./dep/smo-install/scripts/layer-2/2-install-simulators.sh```
220
221         - Check the simulators status:
222
223                 ```kubectl get pods -n network```
224
225         Note: The simulators topology can be customized in the file ./smo-install/helm-override/network-simulators-topology-override.yaml
226
227 ## Platform access points:
228 * SDNR WEB:
229         https://<K8SServerIP>:30205/odlux/index.html
230 * NONRTRIC Dashboard:
231         http://<K8SServerIP>:30091/
232   More to come ...
233
234 ## Uninstallation:
235 * Execute
236
237         ```./dep/smo-install/scripts/uninstall-all.sh```