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