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