d573c94bb0732edf8fd1da3905c04db506cd9ffe
[oom.git] / docs / oom_quickstart_guide.rst
1 .. This work is licensed under a
2 .. Creative Commons Attribution 4.0 International License.
3 .. http://creativecommons.org/licenses/by/4.0
4 .. Copyright 2019-2020 Amdocs, Bell Canada, Orange, Samsung
5 .. _oom_quickstart_guide:
6 .. _quick-start-label:
7
8 OOM Quick Start Guide
9 #####################
10
11 .. figure:: oomLogoV2-medium.png
12    :align: right
13
14 Once a Kubernetes environment is available (follow the instructions in
15 :ref:`cloud-setup-guide-label` if you don't have a cloud environment
16 available), follow the following instructions to deploy ONAP.
17
18 **Step 1.** Clone the OOM repository from ONAP gerrit::
19
20   > git clone -b <BRANCH> http://gerrit.onap.org/r/oom --recurse-submodules
21   > cd oom/kubernetes
22
23 where <BRANCH> can be an official release tag, such as
24
25 * 4.0.0-ONAP for Dublin
26 * 5.0.1-ONAP for El Alto
27 * 6.0.0 for Frankfurt
28 * 7.0.0 for Guilin
29 * 8.0.0 for Honolulu
30
31 **Step 2.** Install Helm Plugins required to deploy ONAP::
32
33   > cp -R ~/oom/kubernetes/helm/plugins/ ~/.local/share/helm/plugins
34   > helm plugin install https://github.com/chartmuseum/helm-push.git
35
36 **Step 3.** Install Chartmuseum::
37
38   > curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/linux/amd64/chartmuseum
39   > chmod +x ./chartmuseum
40   > mv ./chartmuseum /usr/local/bin
41
42 **Step 4.** Install Cert-Manager::
43
44   > kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
45
46 More details can be found :doc:`here <oom_setup_paas>`.
47
48 **Step 5.** Customize the Helm charts like `oom/kubernetes/onap/values.yaml` or
49 an override file like `onap-all.yaml`, `onap-vfw.yaml` or `openstack.yaml` file
50 to suit your deployment with items like the OpenStack tenant information.
51
52 .. note::
53   Standard and example override files (e.g. `onap-all.yaml`, `openstack.yaml`) can be found in
54   the `oom/kubernetes/onap/resources/overrides/` directory.
55
56
57  a. You may want to selectively enable or disable ONAP components by changing
58     the ``enabled: true/false`` flags.
59
60
61  b. Encrypt the OpenStack password using the shell tool for Robot and put it in
62     the Robot Helm charts or Robot section of `openstack.yaml`
63
64
65  c. Encrypt the OpenStack password using the java based script for SO Helm charts
66     or SO section of `openstack.yaml`.
67
68
69  d. Update the OpenStack parameters that will be used by Robot, SO and APPC Helm
70     charts or use an override file to replace them.
71
72  e. Add in the command line a value for the global master password (global.masterPassword).
73
74
75
76 a. Enabling/Disabling Components:
77 Here is an example of the nominal entries that need to be provided.
78 We have different values file available for different contexts.
79
80 .. literalinclude:: ../kubernetes/onap/values.yaml
81    :language: yaml
82
83
84 b. Generating ROBOT Encrypted Password:
85 The Robot encrypted Password uses the same encryption.key as SO but an
86 openssl algorithm that works with the python based Robot Framework.
87
88 .. note::
89   To generate Robot ``openStackEncryptedPasswordHere``::
90
91     cd so/resources/config/mso/
92     /oom/kubernetes/so/resources/config/mso# echo -n "<openstack tenant password>" | openssl aes-128-ecb -e -K `cat encryption.key` -nosalt | xxd -c 256 -p``
93
94 c. Generating SO Encrypted Password:
95 The SO Encrypted Password uses a java based encryption utility since the
96 Java encryption library is not easy to integrate with openssl/python that
97 Robot uses in Dublin and upper versions.
98
99 .. note::
100   To generate SO ``openStackEncryptedPasswordHere`` and ``openStackSoEncryptedPassword``
101   ensure `default-jdk` is installed::
102
103     apt-get update; apt-get install default-jdk
104
105   Then execute::
106
107     SO_ENCRYPTION_KEY=`cat ~/oom/kubernetes/so/resources/config/mso/encryption.key`
108     OS_PASSWORD=XXXX_OS_CLEARTESTPASSWORD_XXXX
109
110     git clone http://gerrit.onap.org/r/integration
111     cd integration/deployment/heat/onap-rke/scripts
112
113     javac Crypto.java
114     java Crypto "$OS_PASSWORD" "$SO_ENCRYPTION_KEY"
115
116 d. Update the OpenStack parameters:
117
118 There are assumptions in the demonstration VNF Heat templates about the
119 networking available in the environment. To get the most value out of these
120 templates and the automation that can help confirm the setup is correct, please
121 observe the following constraints.
122
123
124 ``openStackPublicNetId:``
125   This network should allow Heat templates to add interfaces.
126   This need not be an external network, floating IPs can be assigned to the
127   ports on the VMs that are created by the heat template but its important that
128   neutron allow ports to be created on them.
129
130 ``openStackPrivateNetCidr: "10.0.0.0/16"``
131   This ip address block is used to assign OA&M addresses on VNFs to allow ONAP
132   connectivity. The demonstration Heat templates assume that 10.0 prefix can be
133   used by the VNFs and the demonstration ip addressing plan embodied in the
134   preload template prevent conflicts when instantiating the various VNFs. If
135   you need to change this, you will need to modify the preload data in the
136   Robot Helm chart like integration_preload_parameters.py and the
137   demo/heat/preload_data in the Robot container. The size of the CIDR should
138   be sufficient for ONAP and the VMs you expect to create.
139
140 ``openStackOamNetworkCidrPrefix: "10.0"``
141   This ip prefix mush match the openStackPrivateNetCidr and is a helper
142   variable to some of the Robot scripts for demonstration. A production
143   deployment need not worry about this setting but for the demonstration VNFs
144   the ip asssignment strategy assumes 10.0 ip prefix.
145
146 Example Keystone v2.0
147
148 .. literalinclude:: example-integration-override.yaml
149    :language: yaml
150
151 Example Keystone v3  (required for Rocky and later releases)
152
153 .. literalinclude:: example-integration-override-v3.yaml
154    :language: yaml
155
156
157 **Step 6.** To setup a local Helm server to server up the ONAP charts::
158
159   > chartmuseum --storage local --storage-local-rootdir ~/helm3-storage -port 8879 &
160
161 Note the port number that is listed and use it in the Helm repo add as
162 follows::
163
164   > helm repo add local http://127.0.0.1:8879
165
166 **Step 7.** Verify your Helm repository setup with::
167
168   > helm repo list
169   NAME   URL
170   local  http://127.0.0.1:8879
171
172 **Step 8.** Build a local Helm repository (from the kubernetes directory)::
173
174   > make SKIP_LINT=TRUE [HELM_BIN=<HELM_PATH>] all ; make SKIP_LINT=TRUE [HELM_BIN=<HELM_PATH>] onap
175
176 `HELM_BIN`
177   Sets the helm binary to be used. The default value use helm from PATH
178
179
180 **Step 9.** Display the onap charts that available to be deployed::
181
182   > helm repo update
183   > helm search repo onap
184
185 .. literalinclude:: helm-search.txt
186
187 .. note::
188   The setup of the Helm repository is a one time activity. If you make changes
189   to your deployment charts or values be sure to use ``make`` to update your
190   local Helm repository.
191
192 **Step 10.** Once the repo is setup, installation of ONAP can be done with a
193 single command
194
195 .. note::
196   The ``--timeout 900s`` is currently required in Dublin and later
197   versions up to address long running initialization tasks for DMaaP
198   and SO. Without this timeout value both applications may fail to
199   deploy.
200
201 .. danger::
202   We've added the master password on the command line.
203   You shouldn't put it in a file for safety reason
204   please don't forget to change the value to something random
205
206   A space is also added in front of the command so "history" doesn't catch it.
207   This masterPassword is very sensitive, please be careful!
208
209
210 To deploy all ONAP applications use this command::
211
212     > cd oom/kubernetes
213     >  helm deploy dev local/onap --namespace onap --create-namespace --set global.masterPassword=myAwesomePasswordThatINeedToChange -f onap/resources/overrides/onap-all.yaml -f onap/resources/overrides/environment.yaml -f onap/resources/overrides/openstack.yaml --timeout 900s
214
215 All override files may be customized (or replaced by other overrides) as per
216 needs.
217
218 `onap-all.yaml`
219   Enables the modules in the ONAP deployment. As ONAP is very modular, it is
220   possible to customize ONAP and disable some components through this
221   configuration file.
222
223 `onap-all-ingress-nginx-vhost.yaml`
224   Alternative version of the `onap-all.yaml` but with global ingress controller
225   enabled. It requires the cluster configured with the nginx ingress controller
226   and load balancer. Please use this file instead `onap-all.yaml` if you want
227   to use experimental ingress controller feature.
228
229 `environment.yaml`
230   Includes configuration values specific to the deployment environment.
231
232   Example: adapt readiness and liveness timers to the level of performance of
233   your infrastructure
234
235 `openstack.yaml`
236   Includes all the OpenStack related information for the default target tenant
237   you want to use to deploy VNFs from ONAP and/or additional parameters for the
238   embedded tests.
239
240 **Step 11.** Verify ONAP installation
241
242 Use the following to monitor your deployment and determine when ONAP is ready
243 for use::
244
245   > kubectl get pods -n onap -o=wide
246
247 .. note::
248   While all pods may be in a Running state, it is not a guarantee that all components are running fine.
249
250   Launch the healthcheck tests using Robot to verify that the components are healthy::
251
252     > ~/oom/kubernetes/robot/ete-k8s.sh onap health
253
254 **Step 12.** Undeploy ONAP
255 ::
256
257   > helm undeploy dev
258
259 More examples of using the deploy and undeploy plugins can be found here: https://wiki.onap.org/display/DW/OOM+Helm+%28un%29Deploy+plugins