blob: 423c995e5aa24e907fa971ecdc9002076b225889 [file] [log] [blame]
Andy Bavierf73c3d22021-08-30 10:29:06 -07001.. vim: syntax=rst
2
3Setting Up Aether-in-a-Box
4==========================
5
Andy Bavier840e0b42021-09-16 17:10:23 -07006Aether-in-a-Box (AiaB) provides an easy way to deploy Aether's SD-CORE and ROC
7components, and then run basic tests to validate the installation.
8This guide describes the steps to set up AiaB.
Andy Bavierf73c3d22021-08-30 10:29:06 -07009
Andy Bavier840e0b42021-09-16 17:10:23 -070010AiaB can be set up with a 4G or 5G SD-CORE. In either case, SD-CORE configuration
11can be done with or without the ROC. The ROC
12provides an interactive GUI for examining and changing the configuration, and is used to
13manage the production Aether; it can be deployed to test the integration between
14ROC and SD-CORE. If the ROC is not deployed, a simple tool called SimApp
15is used to configure the required state in SD-CORE for testing core functionality.
16
17Helm charts are the primary method of installing the SD-CORE and ROC resources.
18AiaB offers a great deal of flexibility regarding which Helm chart versions to install:
19
20* Local definitions of charts (for testing Helm chart changes)
21* Latest published charts (for deploying a development version of Aether)
22* Specified versions of charts (for deploying a specific Aether release)
23
24AiaB can be run on a bare metal machine or VM. System prerequisites:
Andy Bavierf73c3d22021-08-30 10:29:06 -070025
26* Ubuntu 18.04
27* Kernel 4.15 or later
28* Haswell CPU or newer
29
30Clone Repositories
31------------------
32
Andy Bavier840e0b42021-09-16 17:10:23 -070033To initialize the AiaB environment, first clone the following repository
34using your Gerrit ID::
Andy Bavierf73c3d22021-08-30 10:29:06 -070035
Andy Bavier840e0b42021-09-16 17:10:23 -070036 cd ~
37 git clone "ssh://<username>@gerrit.opencord.org:29418/aether-in-a-box"
38
39If you are going to install AiaB using published Helm charts, you can proceed to the
40next section.
41
42If you wish to install SD-CORE from local Helm charts, clone these additional repositories::
43
44 mkdir -p ~/cord
45 cd ~/cord
Andy Bavier7ff674f2021-11-05 12:47:17 -070046 git clone "ssh://<username>@gerrit.opencord.org:29418/sdcore-helm-charts"
Andy Bavierf73c3d22021-08-30 10:29:06 -070047 git clone "ssh://<username>@gerrit.opencord.org:29418/aether-helm-charts"
48
Andy Bavier112a33c2021-11-11 11:13:49 -070049If you wish to install the ROC from local Helm charts, clone this::
Andy Bavier840e0b42021-09-16 17:10:23 -070050
51 mkdir -p ~/cord
52 cd ~/cord
Andy Baviere86261e2021-09-21 11:05:18 -070053 git clone "ssh://<username>@gerrit.opencord.org:29418/roc-helm-charts"
Andy Bavier840e0b42021-09-16 17:10:23 -070054
55Now change to *~/aether-in-a-box* directory.
Andy Bavierf73c3d22021-08-30 10:29:06 -070056
57Set up Authentication Tokens
58----------------------------
59
Andy Bavier840e0b42021-09-16 17:10:23 -070060Edit the file *configs/authentication*.
Andy Bavierf73c3d22021-08-30 10:29:06 -070061
62Fill out REGISTRY_USERNAME and REGISTRY_CLI_SECRET as follows:
63
64* Log into the `Aether Harbor Registry <https://registry.aetherproject.org>`_ using your Crowd credentials
65* Select *User Profile* from the drop-down menu in the upper right corner
66* For REGISTRY_USERNAME, use the *Username* in your profile
67* Copy the *CLI secret* to the clipboard and paste to REGISTRY_CLI_SECRET
68
Andy Bavier7ff674f2021-11-05 12:47:17 -070069Also fill out REPO_USERNAME and REPO_PASSWORD with the information needed to authenticate
70with Aether's Helm chart repositories.
Andy Bavierf73c3d22021-08-30 10:29:06 -070071
Andy Bavier840e0b42021-09-16 17:10:23 -070072If you have already set up AiaB but you used incorrect credentials, first clean up AiaB as described
73in the `Cleanup`_ section, then edit *configs/authentication* and re-build AiaB.
Andy Bavierf73c3d22021-08-30 10:29:06 -070074
Andy Bavier840e0b42021-09-16 17:10:23 -070075Installing the ROC
76------------------
Andy Bavierf73c3d22021-08-30 10:29:06 -070077
Andy Bavier840e0b42021-09-16 17:10:23 -070078Note that you must install the ROC *before* installing SD-CORE.
79If you are not using the ROC to configure SD-CORE, you can skip this step.
Andy Bavierf73c3d22021-08-30 10:29:06 -070080
Andy Bavier840e0b42021-09-16 17:10:23 -070081First choose whether you will install the 4G or 5G SD-CORE. To install the ROC to
82configure the 4G SD-CORE::
Andy Bavierf73c3d22021-08-30 10:29:06 -070083
Andy Bavier840e0b42021-09-16 17:10:23 -070084 make roc-4g-models
85
86To install the ROC to configure the 5G SD-CORE::
87
88 make roc-5g-models
89
90By default the above commands install the ROC from the local charts in the Git repos cloned
91earlier. In order to install the ROC using the latest published charts, add *CHARTS=latest*
92to the command, e.g.,::
93
94 CHARTS=latest make roc-4g-models
95
Andy Baviere86261e2021-09-21 11:05:18 -070096To install the Aether 1.5 release, add *CHARTS=release-1.5*::
Andy Bavier840e0b42021-09-16 17:10:23 -070097
Andy Baviere86261e2021-09-21 11:05:18 -070098 CHARTS=release-1.5 make roc-4g-models
Andy Bavier840e0b42021-09-16 17:10:23 -070099
100Start the 4G SD-CORE
101--------------------
102
103If you are installing the 5G SD-CORE, you can skip this step.
104
105To deploy the 4G SD-CORE and run a simple ping test::
106
107 make test
108
109By default the above commands install the 4G SD-CORE from the local charts in the Git repos cloned
110earlier. In order to install the SD-CORE using the latest published charts, add *CHARTS=latest*
111to the command, e.g.,::
112
113 CHARTS=latest make test
114
Andy Baviere86261e2021-09-21 11:05:18 -0700115To install the Aether 1.5 release, add *CHARTS=release-1.5*::
Andy Bavierf73c3d22021-08-30 10:29:06 -0700116
Andy Baviere86261e2021-09-21 11:05:18 -0700117 CHARTS=release-1.5 make test
Andy Bavierf73c3d22021-08-30 10:29:06 -0700118
Andy Bavier840e0b42021-09-16 17:10:23 -0700119Start the 5G SD-CORE
120--------------------
Andy Bavierf73c3d22021-08-30 10:29:06 -0700121
Andy Bavier840e0b42021-09-16 17:10:23 -0700122If you have already installed the 4G SD-CORE, you must skip this step. Only one version of
123the SD-CORE can be installed at a time.
Andy Bavierf73c3d22021-08-30 10:29:06 -0700124
Andy Bavier840e0b42021-09-16 17:10:23 -0700125To deploy the 5G SD-CORE::
Andy Bavierf73c3d22021-08-30 10:29:06 -0700126
Andy Bavier840e0b42021-09-16 17:10:23 -0700127 make 5gc
Andy Bavierf73c3d22021-08-30 10:29:06 -0700128
Andy Bavier840e0b42021-09-16 17:10:23 -0700129By default the above commands install the 5G SD-CORE from the local charts in the Git repos cloned
130earlier. In order to install the SD-CORE using the latest published charts, add *CHARTS=latest*
131to the command, e.g.,::
Andy Bavierf73c3d22021-08-30 10:29:06 -0700132
Andy Bavier840e0b42021-09-16 17:10:23 -0700133 CHARTS=latest make 5gc
Andy Bavierf73c3d22021-08-30 10:29:06 -0700134
Andy Baviere86261e2021-09-21 11:05:18 -0700135To install the Aether 1.5 release, add *CHARTS=release-1.5*::
Andy Bavierf73c3d22021-08-30 10:29:06 -0700136
Andy Baviere86261e2021-09-21 11:05:18 -0700137 CHARTS=release-1.5 make 5gc
Andy Bavierf73c3d22021-08-30 10:29:06 -0700138
139You can use *gnbsim* to test 5G functionality. For example, to run the 5G user registration::
140
141 kubectl -n omec exec gnbsim-0 -- /go/src/gnbsim/gnbsim register
142
Andy Bavier840e0b42021-09-16 17:10:23 -0700143Currently there is no ping test for the 5G SD-CORE.
Andy Bavierf73c3d22021-08-30 10:29:06 -0700144
Andy Bavier840e0b42021-09-16 17:10:23 -0700145Cleanup
146-------
Andy Bavierf73c3d22021-08-30 10:29:06 -0700147
Andy Bavier840e0b42021-09-16 17:10:23 -0700148The first time you build AiaB, it takes a while because it sets up the Kubernetes cluster.
149Subsequent builds will be much faster if you follow these steps to clean up the Helm charts without
150destroying the Kubernetes cluster.
Andy Bavierf73c3d22021-08-30 10:29:06 -0700151
Andy Bavier840e0b42021-09-16 17:10:23 -0700152* Clean up the 4G SD-CORE: *make reset-test*
153* Clean up the 5G SD-CORE: *make reset-5g-test*
154* Clean up the ROC: *make roc-clean*
155
156It's normal for the above commands to take a minute or two to complete.
157
158As an example, suppose that you want to test the 4G SD-CORE with the ROC, and then the 5G SD-CORE
159with the ROC. You could run these commands::
160
161 CHARTS=latest make roc-4g-models # Install ROC with 4G configuration
162 CHARTS=latest make test # Install 4G SD-CORE and run ping test
163 make reset-test
164 make roc-clean
165 CHARTS=latest make roc-5g-models # Install ROC with 5G configuration
166 CHARTS=latest make 5gc # Install 5G SD-CORE
167 make reset-5g-test
168 make roc-clean
169
170Developer Loop
171--------------
172
173Suppose you wish to test a new build of a 5G SD-CORE services. You can deploy custom images
174by editing `~/aether-in-a-box/5g-core-values.yaml`, for example::
Andy Bavierf73c3d22021-08-30 10:29:06 -0700175
176 images:
177 tags:
178 webui: registry.aetherproject.org/omecproject/5gc-webui:onf-release3.0.5-roc-935305f
179 pullPolicy: IfNotPresent
Andy Bavierf73c3d22021-08-30 10:29:06 -0700180
Andy Bavier840e0b42021-09-16 17:10:23 -0700181To upgrade a running 5G SD-CORE with the new image, or to deploy the 5G SD-CORE with the image::
Andy Bavierf73c3d22021-08-30 10:29:06 -0700182
Andy Bavierf73c3d22021-08-30 10:29:06 -0700183 make 5gc
Andy Bavier840e0b42021-09-16 17:10:23 -0700184
185Troubleshooting / Known Issues
186------------------------------
187
188If you suspect a problem, first verify that all pods are in Running state::
189
190 kubectl -n omec get pods
191 kubectl -n aether-roc get pods
192
193If the pods are stuck in ImagePullBackOff state, then it's likely an issue with credentials. See the
194`Set up Authentication Tokens`_ section.
195
1964G Test Fails
197^^^^^^^^^^^^^
198Occasionally *make test* (for 4G) fails for unknown reasons; this is true regardless of which Helm charts are used.
199If this happens, first try cleaning up AiaB and re-running the test. If *make test* fails consistently, check
200whether the configuration has been pushed to the SD-CORE::
201
202 kubectl -n omec logs config4g-0 | grep "Successfully"
203
204You should see that a device group and slice has been pushed::
205
206 [INFO][WebUI][CONFIG] Successfully posted message for device group 4g-oaisim-user to main config thread
207 [INFO][WebUI][CONFIG] Successfully posted message for slice default to main config thread
208
209Then tail the *config4g-0* log and make sure that the configuration has been successfully pushed to all
210SD-CORE components.
211
2125G Test Fails
213^^^^^^^^^^^^^
214Currently the 5G *gnbsim* does not support data packets, though the UE can successfully register.
215For example the *gnbsim register* command gets stuck here::
216
217 ip address in string 172.250.0.1
218 err <nil>
219 UE address - 172.250.0.1
220 Assigned address to UE address 172.250.0.1
221 sent message NGAP-PDU Session Resource Setup Response
222 Failed to write gtpu packet
223 Sent uplink gtpu packet
224 Failed to write gtpu packet
225 Sent uplink gtpu packet
226 Failed to write gtpu packet
227 Sent uplink gtpu packet
228
229Fixing this is work-in-progress.