3e6c57d5feb8090b3afcfb033a165da9e8bb9dc3
[ric-plt/ric-dep.git] / docs / installation-ric.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3 .. ===============LICENSE_START=======================================================
4 .. Copyright (C) 2019-2020 AT&T Intellectual Property
5 .. ===================================================================================
6 .. This documentation file is distributed under the Creative Commons Attribution
7 .. 4.0 International License (the "License"); you may not use this file except in
8 .. compliance with the License.  You may obtain a copy of the License at
9 ..
10 .. http://creativecommons.org/licenses/by/4.0
11 ..
12 .. This file is distributed on an "AS IS" BASIS,
13 .. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 .. See the License for the specific language governing permissions and
15 .. limitations under the License.
16 .. ===============LICENSE_END=========================================================
17
18
19 Getting and Preparing Deployment Scripts
20 ----------------------------------------
21
22 Clone the ric-plt/dep git repository that has deployment scripts and support files on the target VM.
23
24 ::
25
26   % git clone "https://gerrit.o-ran-sc.org/r/ric-plt/ric-dep"
27
28
29 .. code:: bash
30
31   git clone "https://gerrit.o-ran-sc.org/r/ric-plt/ric-dep"
32
33 Modify the deployment recipe
34 ----------------------------
35
36 Edit the recipe files ./RECIPE_EXAMPLE/example_recipe_latest_stable.yaml (which is 
37 a softlink that points to the latest release version). "example_recipe_latest_unstable.yaml
38 points to the latest example file that is under current development.
39
40 .. code:: bash
41
42   extsvcplt:
43     ricip: ""
44     auxip: ""
45
46 - Deployment scripts support both helm v2 and v3. The deployment script will determine the helm version installed in cluster during the deployment.
47 - To specify which version of the RIC platform components will be deployed, update the RIC platform component container tags in their corresponding section.
48 - You can specify which docker registry will be used for each component. If the docker registry requires login credential, you can add the credential in the following section. Please note that the installation suite has already included credentials for O-RAN Linux Foundation docker registries. Please do not create duplicate entries.
49
50 .. code:: bash
51
52   docker-credential:
53     enabled: true
54     credential:
55       SOME_KEY_NAME:
56         registry: ""
57         credential:
58           user: ""
59           password: ""
60           email: ""
61
62 For more advanced recipe configuration options, please refer to the recipe configuration guideline.
63
64
65 Deploying the Infrastructure and Platform Groups
66 ------------------------------------------------
67
68 Copy the ric-common helm charts for it/dep, configure the helm repo and start local helm server
69
70 .. code:: bash
71
72    git clone "https://gerrit.o-ran-sc.org/r/it/dep"
73    HELM_HOME=$(helm home)
74    COMMON_CHART_VERSION=$(cat dep/ric-common/Common-Template/helm/ric-common/Chart.yaml | grep version | awk '{print $2}')
75    helm package -d /tmp dep/ric-common/Common-Template/helm/ric-common
76    cp /tmp/ric-common-$COMMON_CHART_VERSION.tgz $HELM_HOME/repository/local/
77    helm repo index $HELM_HOME/repository/local/
78    helm serve >& /dev/null &
79    helm repo remove local
80    helm repo add local http://127.0.0.1:8879/charts
81
82
83 After the recipes are edited and helm started, the Near Realtime RIC platform is ready to be deployed.
84
85 .. code:: bash
86
87   cd ric-dep/bin
88   ./install -f ../RECIPE_EXAMPLE/PLATFORM/example_recipe_latest_stable.yaml
89
90
91 Checking the Deployment Status
92 ------------------------------
93
94 Now check the deployment status after a short wait. Results similar to the
95 output shown below indicate a complete and successful deployment. Check the
96 STATUS column from both kubectl outputs to ensure that all are either
97 "Completed" or "Running", and that none are "Error" or "ImagePullBackOff".
98
99 .. code::
100
101   # helm list
102   NAME                  REVISION        UPDATED                         STATUS          CHART                   APP VERSION     NAMESPACE
103   r3-a1mediator         1               Thu Jan 23 14:29:12 2020        DEPLOYED        a1mediator-3.0.0        1.0             ricplt
104   r3-appmgr             1               Thu Jan 23 14:28:14 2020        DEPLOYED        appmgr-3.0.0            1.0             ricplt
105   r3-dbaas1             1               Thu Jan 23 14:28:40 2020        DEPLOYED        dbaas1-3.0.0            1.0             ricplt
106   r3-e2mgr              1               Thu Jan 23 14:28:52 2020        DEPLOYED        e2mgr-3.0.0             1.0             ricplt
107   r3-e2term             1               Thu Jan 23 14:29:04 2020        DEPLOYED        e2term-3.0.0            1.0             ricplt
108   r3-infrastructure     1               Thu Jan 23 14:28:02 2020        DEPLOYED        infrastructure-3.0.0    1.0             ricplt
109   r3-jaegeradapter      1               Thu Jan 23 14:29:47 2020        DEPLOYED        jaegeradapter-3.0.0     1.0             ricplt
110   r3-rsm                1               Thu Jan 23 14:29:39 2020        DEPLOYED        rsm-3.0.0               1.0             ricplt
111   r3-rtmgr              1               Thu Jan 23 14:28:27 2020        DEPLOYED        rtmgr-3.0.0             1.0             ricplt
112   r3-submgr             1               Thu Jan 23 14:29:23 2020        DEPLOYED        submgr-3.0.0            1.0             ricplt
113   r3-vespamgr           1               Thu Jan 23 14:29:31 2020        DEPLOYED        vespamgr-3.0.0          1.0             ricplt
114
115   # kubectl get pods -n ricplt
116   NAME                                               READY   STATUS             RESTARTS   AGE
117   deployment-ricplt-a1mediator-69f6d68fb4-7trcl      1/1     Running            0          159m
118   deployment-ricplt-appmgr-845d85c989-qxd98          2/2     Running            0          160m
119   deployment-ricplt-dbaas-7c44fb4697-flplq           1/1     Running            0          159m
120   deployment-ricplt-e2mgr-569fb7588b-wrxrd           1/1     Running            0          159m
121   deployment-ricplt-e2term-alpha-db949d978-rnd2r     1/1     Running            0          159m
122   deployment-ricplt-jaegeradapter-585b4f8d69-tmx7c   1/1     Running            0          158m
123   deployment-ricplt-rsm-755f7c5c85-j7fgf             1/1     Running            0          158m
124   deployment-ricplt-rtmgr-c7cdb5b58-2tk4z            1/1     Running            0          160m
125   deployment-ricplt-submgr-5b4864dcd7-zwknw          1/1     Running            0          159m
126   deployment-ricplt-vespamgr-864f95c9c9-5wth4        1/1     Running            0          158m
127   r3-infrastructure-kong-68f5fd46dd-lpwvd            2/2     Running            3          160m
128
129   # kubectl get pods -n ricinfra
130   NAME                                        READY   STATUS      RESTARTS   AGE
131   deployment-tiller-ricxapp-d4f98ff65-9q6nb   1/1     Running     0          163m
132   tiller-secret-generator-plpbf               0/1     Completed   0          163m
133
134 Checking Container Health
135 -------------------------
136
137 Check the health of the application manager platform component by querying it
138 via the ingress controller using the following command.
139
140 .. code:: bash
141
142   % curl -v http://localhost:32080/appmgr/ric/v1/health/ready
143
144 The output should look as follows.
145
146 .. code::
147
148   *   Trying 10.0.2.100...
149   * TCP_NODELAY set
150   * Connected to 10.0.2.100 (10.0.2.100) port 32080 (#0)
151   > GET /appmgr/ric/v1/health/ready HTTP/1.1
152   > Host: 10.0.2.100:32080
153   > User-Agent: curl/7.58.0
154   > Accept: */*
155   >
156   < HTTP/1.1 200 OK
157   < Content-Type: application/json
158   < Content-Length: 0
159   < Connection: keep-alive
160   < Date: Wed, 22 Jan 2020 20:55:39 GMT
161   < X-Kong-Upstream-Latency: 0
162   < X-Kong-Proxy-Latency: 2
163   < Via: kong/1.3.1
164   <
165   * Connection #0 to host 10.0.2.100 left intact
166
167
168 Undeploying the Infrastructure and Platform Groups
169 --------------------------------------------------
170
171 To undeploy all the containers, perform the following steps in a root shell
172 within the it-dep repository.
173
174 .. code:: bash
175
176   # cd bin
177   # ./uninstall
178
179 Results similar to below indicate a complete and successful cleanup.
180
181 .. code::
182
183   # ./undeploy-ric-platform
184   Undeploying RIC platform components [appmgr rtmgr dbaas1 e2mgr e2term a1mediator submgr vespamgr rsm jaegeradapter infrastructure]
185   release "r3-appmgr" deleted
186   release "r3-rtmgr" deleted
187   release "r3-dbaas1" deleted
188   release "r3-e2mgr" deleted
189   release "r3-e2term" deleted
190   release "r3-a1mediator" deleted
191   release "r3-submgr" deleted
192   release "r3-vespamgr" deleted
193   release "r3-rsm" deleted
194   release "r3-jaegeradapter" deleted
195   release "r3-infrastructure" deleted
196   configmap "ricplt-recipe" deleted
197   namespace "ricxapp" deleted
198   namespace "ricinfra" deleted
199   namespace "ricplt" deleted
200
201
202 Restarting the VM
203 -----------------
204
205 After a reboot of the VM, and a suitable delay for initialization,
206 all the containers should be running again as shown above.
207
208 RIC Applications
209 ----------------
210
211 .. include:: installation-xapps.rst
212
213 OPTIONALLY use Redis Cluster (instead of Redis standalone)
214 ----------------------------------------------------------
215
216 .. include:: installation-rediscluster.rst